TCP/UDPの仕組み

TCP てぃーしーぴー

TCPTransmission Control Protocolコネクション型信頼性3ウェイハンドシェイクフロー制御
TCPについて教えて

簡単に言うとこんな感じ!

インターネットで「必ず届ける」を約束する配達員みたいなプロトコルだよ。荷物(データ)が届いたか確認して、届いてなければ再送してくれるんだ。Webブラウジングやファイル転送に使われてるんだよ!


TCPとは

TCP(Transmission Control Protocol)は、インターネットのトランスポート層で動作する、信頼性のある通信を保証するプロトコルです。1981年にRFC 793として標準化され、現在もWebブラウジング・電子メール・ファイル転送など、データが確実に届くことが重要なほぼすべての通信に使われています。

TCPの最大の特徴はコネクション型であることです。通信を始める前に送信側と受信側が「3ウェイハンドシェイク」と呼ばれる手順で接続を確立し、データが正しく届いたことを確認しながら通信を進めます。届かなかったデータは自動的に再送されるため、アプリケーション側は「データが届く」ことを前提に実装できます。

一方でこの信頼性保証の仕組みにはオーバーヘッド(余分な処理や通信)が伴います。確認応答や再送の待機時間が発生するため、リアルタイム性が求められる映像配信やゲームでは、より軽量なUDPが選ばれることもあります。


TCPの主な機能

機能説明
コネクション管理3ウェイハンドシェイクで接続確立、4ウェイハンドシェイクで切断
シーケンス番号データに番号を付けて順序を保証する
確認応答(ACK)受信側が「届いた」をACKで通知する
再送制御一定時間ACKが来なければ自動再送する
フロー制御受信側のバッファあふれを防ぐウィンドウ制御
輻輳制御ネットワーク混雑を検知してペースを下げる
チェックサムデータ破損を検出する誤り検出機能

歴史と背景

  • 1974年:Vint CerfとBob KahnがTCP/IPの概念を論文で発表
  • 1981年:RFC 793でTCPが正式標準化。現在も基本仕様は変わっていない
  • 1988年:Van Jacobsonが輻輳制御アルゴリズムを追加(RFC 1122)
  • 2001年:SACK(選択的確認応答)が広く実装される(RFC 2018)
  • 2016年:GoogleがBBRアルゴリズムを発表し輻輳制御が進化
  • 2020年代QUIC(HTTP/3の基盤)がTCPの後継として普及が進む

TCPのセグメント構造

TCPセグメントヘッダ構造 送信元ポート番号(16bit) 宛先ポート番号(16bit) シーケンス番号(32bit) 確認応答番号(32bit) データオフセット 予約/フラグ(SYN/ACK/FIN/RST) ウィンドウサイズ(16bit) チェックサム(16bit) 緊急ポインタ(16bit) オプション(可変長) データ部(ペイロード)

TCPヘッダは最小20バイト(オプションなし)。SYN・ACK・FIN・RSTなどのフラグビットが通信の状態を制御します。


関連する規格・RFC

規格・RFC番号内容
RFC 793TCP の基本仕様
RFC 1122インターネットホスト通信層要件(輻輳制御含む)
RFC 2018TCP選択的確認応答(SACK)
RFC 7323TCP拡張オプション(タイムスタンプ・ウィンドウスケール)
RFC 9293TCPの最新統合仕様(2022年)

関連用語