【図解で比較】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」だけじゃなく、輻輳制御の戦略まで含めた設計判断なんだね。