MENU

TCP — 順序保証と再送で信頼性を担うトランスポートの基幹

TCP アイキャッチ
TCP

TCP(Transmission Control Protocol)は、データを小さなセグメントに分割し、順序保証と再送制御、フロー制御、輻輳制御を提供する信頼性指向のトランスポート層プロトコルです。1981年9月にIETFのRFC 793として正式化され、ヴィント・サーフとボブ・カーンらが1974年に発表した「A Protocol for Packet Network Intercommunication」の系譜を引き継いでいます。現在のWebやメール、SSHなど大半のアプリケーション通信はTCPに依存しており、IPと並んで「TCP/IP」とまとめて呼ばれるほど、インターネットの土台を支える存在になっています。

目次

この記事の目次

  1. 3-wayハンドシェイクの仕組み
  2. ヴィント・サーフとRFC 793
  3. 輻輳制御とフロー制御
  4. UDPやQUICとの位置づけ
  5. まとめ

3-wayハンドシェイクの仕組み

3-wayハンドシェイクの仕組み

TCPはコネクション指向のプロトコルで、通信を始める前に必ず両端でコネクションを確立します。クライアントが「SYN(synchronize)」フラグを立てたセグメントを初期シーケンス番号と共に送信し、サーバはこれに対して「SYN+ACK」を返し、最後にクライアントが「ACK」を返すという三度のやり取りを行います。この3-wayハンドシェイクによって、両者がお互いの存在と初期シーケンス番号を確認した上で通信を始められます。

コネクションを閉じるときも4回のFIN/ACK交換を行い、双方向のストリームを順に終了させます。確立済みコネクションでは各セグメントにシーケンス番号が振られ、受信側は累積ACKで「ここまで受け取った」と通知します。失われたセグメントは送信側が再送タイマで再送するため、IP層が信頼性のないベストエフォートでも、アプリケーションには順序通り欠落のないバイトストリームが届くという抽象が提供されます。

ヴィント・サーフとRFC 793

ヴィント・サーフとRFC 793

TCPの起源は1974年、ヴィント・サーフとボブ・カーンがIEEE Transactions on Communicationsに発表した「A Protocol for Packet Network Intercommunication」に遡ります。当初は単一プロトコルでしたが、1978年の改訂で「経路選択を担うIP」と「信頼性を担うTCP」に分離され、現在の階層構造になりました。1981年9月、ジョン・ポステル編集のRFC 793として正式に文書化されています。

その後もRFC 1122(ホスト要件)、RFC 5681(輻輳制御)、RFC 7323(高速ネットワーク向け拡張)など数多くの改訂が重ねられ、選択的確認応答(SACK)、ウィンドウスケーリング、タイムスタンプといった機能が追加されました。サーフとカーンは2004年に「インターネットの父」としてチューリング賞を受賞しており、TCPは半世紀近く現役で動き続ける、コンピュータ史上もっとも成功した通信プロトコルの一つです。

輻輳制御とフロー制御

輻輳制御とフロー制御

TCPの真価は、ネットワーク全体を破綻させずに帯域を公平に分け合う輻輳制御アルゴリズムにあります。1988年にヴァン・ジェイコブソンが提案したSlow Start/Congestion Avoidanceは、送信ウィンドウを指数的に増やし、パケットロスを検知すると半減させるという挙動を取り、ネットワークの帯域に自律的にフィットする仕組みを実現しました。RFC 2001以来、これがTCPの標準動作です。

受信側は「あといくつバイトを受け取れるか」を広告するrwnd(受信ウィンドウ)を返し、送信側は輻輳ウィンドウcwndとの小さい方を使って送信レートを決めます。近年はCUBICやLinuxの新標準BBR(2016年、Google)など改良型アルゴリズムが普及しており、高遅延・高帯域回線でも有効活用できるようTCPは今も進化を続けています。

UDPやQUICとの位置づけ

UDPやQUICとの位置づけ

TCPは信頼性を最優先するため、再送や輻輳制御のオーバーヘッドが発生します。リアルタイム音声・動画のように「多少のロスより遅延の少なさが重要」な用途には不向きで、そうした領域ではコネクションレスなUDPが選ばれます。SCTPやDCCPなどの代替も提案されていますが、ファイアウォール越えの問題から普及せず、UDPに機能を載せる方向が主流となりました。

その代表例がQUICで、UDP上にTLSとTCP相当の信頼性・輻輳制御を実装し、ハンドシェイクを1往復まで短縮します。HTTP/3はQUICを採用しており、Webの世界では一部用途でTCPからの置き換えが進んでいます。とはいえSSHやSMTP、データベース接続など長期接続の信頼性が要る分野ではTCPが圧倒的多数で、「TCPの時代は終わった」ではなく「TCPと併存する選択肢が増えた」と捉えるのが妥当です。

まとめ

TCPはRFC 793制定から45年近く経った今も、インターネット通信の信頼性を支える基幹プロトコルです。3-wayハンドシェイクと輻輳制御という基本設計は普遍的で、QUICのような新世代も結局はその知見を継承しています。TCP/IPを理解することは、ネットワーク技術全般を読み解く第一歩として今も変わらない価値を持ちます。

※本記事はIT用語辞典の手書きドラフトです。公開前に最新情報・出典を確認のうえ加筆修正してください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次