【図解で比較】TCP vs UDP — 通信プロトコルの違いを徹底解説


TCP vs UDP — 通信方式の違い TCP(信頼性重視) 送信者 受信者 SYN SYN+ACK ACK データ送信 ACK(確認応答) ✓ 順序保証・再送あり UDP(速度重視) 送信者 受信者 データ1 データ2 データ3 ✗ 欠落 データ5 ⚡ 低遅延・再送なし
TCP と UDP の通信方式の比較
ひよこ ひよこ
TCPUDPってどっちも通信の仕組みなの?何が違うの?
ペンギン先生 ペンギン先生
どちらもインターネットでデータを送るためのプロトコルだよ。ざっくり言うと、TCPは「確実に届ける配達」、UDPは「とにかく速く投げる配達」だね。
ひよこ ひよこ
確実に届けるって、具体的にはどうやってるの?
ペンギン先生 ペンギン先生
TCPは通信を始める前に「3ウェイハンドシェイク」っていう手順を踏むんだ。送信側が「送っていい?」、受信側が「いいよ、こっちも準備OK」、送信側が「了解!」ってやり取りしてから本番のデータを送るよ。届かなかったデータは自動で再送してくれるんだ。
ひよこ ひよこ
じゃあUDPはそういうのがないの?
ペンギン先生 ペンギン先生
そう、UDPは事前の確認なしにいきなりデータを送りつけるよ。届いたかどうかも確認しない。だから「ファイア・アンド・フォーゲット(撃ちっぱなし)」なんて呼ばれることもあるね。
ひよこ ひよこ
それだと届かなかったらどうするの?困らないのかな?
ペンギン先生 ペンギン先生
用途によるんだよ。たとえばビデオ通話やオンラインゲームでは、1フレーム分のデータが欠けても次のフレームがすぐ来るから、再送を待つより捨てたほうがスムーズなんだ。逆にWebページの表示やファイルのダウンロードは1バイトでも欠けたら困るから、TCPを使うよ。
ひよこ ひよこ
なるほど!速さ重視ならUDP、正確さ重視ならTCPって感じかな?
ペンギン先生 ペンギン先生
その理解でバッチリだよ。TCPはデータの順序も保証してくれるけど、そのぶんオーバーヘッドが大きい。UDPはヘッダがたった8バイトで、TCPの20バイト以上と比べてすごく軽量なんだ。
ひよこ ひよこ
DNSの問い合わせもUDPって聞いたことあるけど、なんでなの?
ペンギン先生 ペンギン先生
DNSは「このドメイン名IPアドレス教えて」っていう小さな問い合わせと応答だけだから、わざわざコネクションを張るオーバーヘッドがもったいないんだ。ただし512バイトを超える応答や、ゾーン転送にはTCPも使われるよ。
ひよこ ひよこ
最近はQUICっていうプロトコルも聞くけど、あれはどっちなの?
ペンギン先生 ペンギン先生
いい質問だね!QUICは実はUDPの上に構築されているんだ。UDP自体には信頼性がないけど、QUICアプリケーション層で再送制御や暗号化を独自に実装しているよ。HTTP/3はこのQUICを使っていて、TCPの「ヘッドオブラインブロッキング」問題を解決しているんだ。
ひよこ ひよこ
ヘッドオブラインブロッキングって何なの?
ペンギン先生 ペンギン先生
TCPは順序を保証するから、途中のパケットが1つ欠けると後続のデータも全部待たされるんだ。これがヘッドオブラインブロッキングだよ。QUICはストリームごとに独立して再送できるから、1つのストリームの遅延が他に影響しないんだ。
ひよこ ひよこ
じゃあ将来的にはTCPからQUICに置き換わっていくのかな?
ペンギン先生 ペンギン先生
Web通信ではその流れが加速しているね。ただ、TCPはカーネルレベルで最適化されていて40年以上の実績があるから、すべてが置き換わるわけじゃない。ちなみにベテランでも意外と知らないんだけど、TCPにはBBRやCUBICといった輻輳制御アルゴリズムがあって、Google内部ではBBRv2への移行でスループットが大幅に改善されたんだよ。プロトコルの選択は「TCP vs UDP」だけじゃなく、輻輳制御の戦略まで含めた設計判断なんだね。