【てぃーしーぴーゆーでぃーぴー】

TCP / UDP とは?

最終更新:
💡 順序をそろえるTCPと、データグラムを送るUDP

IPの上でアプリ間のデータを運ぶトランスポートプロトコル。TCPは接続を確立し、再送などで順序のそろったバイト列を提供する。UDPはデータグラム単位で送り、UDP自身は到達・順序・重複排除を保証しない。

📌 このページのポイント
バイト列とデータグラムの違い TCP UDP 接続を確立 接続手順なし 確認応答・再送 UDP自身は 受信アプリへ 再送・順序制御なし 1 2 3 1 3 2? 順序をそろえる バイト列 到達・順序・重複 保証なし UDP上のQUICは独自に再送などを行う HTTP/3はQUICを使う 速度の優劣は環境や構成による
TCPも接続障害時の到達を無条件には保証しない。UDPの上に信頼性のある仕組みを構築することもできる。
ひよこ ひよこ
TCPはどうやって信頼性を持たせるの?
ペンギン先生 ペンギン先生
接続を確立し、データの位置を表す番号や確認応答を使い、失われたデータを再送するよ。受信アプリには順序のそろったバイト列を渡す。ただし回線が切れたままでも必ず届けられるという保証ではなく、接続が失敗して終わることもあるんだ。
ひよこ ひよこ
接続はどう始めるの?
ペンギン先生 ペンギン先生
典型的にはSYN、SYN-ACK、ACKの3ウェイハンドシェイクで開始する。互いの初期の番号を確認する手順だよ。TCPでは送った1回分のデータと、アプリが1回で受け取る範囲が同じになるとは限らないんだ。
ひよこ ひよこ
UDPなら必ず速い?
ペンギン先生 ペンギン先生
UDP自身は接続確立や再送・順序制御を行わないので仕組みは簡素。でも実際の遅延や速度は回線や実装にもよるよ。届かない・順序が違う・重複する場合への対応を、アプリや上位のプロトコルが必要に応じて設計するんだ。
ひよこ ひよこ
ポート番号は何のため?
ペンギン先生 ペンギン先生
同じホストの中で、通信先のアプリやサービスを区別するために使うよ。IPアドレスだけでは、どの通信をどのアプリへ渡すかが決まらない。TCPとUDPはどちらもポート番号を持つんだ。
ひよこ ひよこ
WebはTCP、動画はUDPと覚えればいい?
ペンギン先生 ペンギン先生
用途だけでは決められないよ。たとえばHTTP/3はUDP上のQUICを使う。QUICがストリーム単位の順序や再送などを提供するので、UDPを使う通信でも信頼性を持たせられる。QUICはTCPそのものを載せた仕組みではないんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「TCP/UDP」って出てきたら「順序をそろえたバイト列を運ぶTCPと、データグラムを運ぶUDP」と思えればだいたいOK!
📖 おまけ:英語の意味
「Transmission Control Protocol / User Datagram Protocol」 = 伝送制御プロトコル / ユーザーデータグラムプロトコル
💬 TCPは接続上のデータ列の伝送を制御し、UDPはデータグラム単位で運ぶ。UDPの上に別の制御を加える仕組みもあるよ。

参考資料

← 用語集にもどる