TCP/UDPの仕組み

TCP Fast Open てぃーしーぴーふぁすとおーぷん

TCP Fast OpenTFO0-RTTレイテンシ削減SYNクッキー
TCP Fast Openについて教えて

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

TCPの接続確立で毎回やっていた「よろしくね」の往復を省略してデータを一緒に送る技術だよ。常連客が「いつものやつ!」と入店と同時に注文するみたいに、ハンドシェイクとデータ送信をまとめて1往復に減らせるんだ!


TCP Fast Openとは

TCP Fast Open(TFO)は、TCPの接続確立(3ウェイハンドシェイク)にかかる往復遅延を削減する拡張機能です。RFC 7413として2014年に標準化されました。

通常のTCPでは、データ送信前に必ず3ウェイハンドシェイクの1往復(1RTT)が必要です。TFOを使うと、2回目以降の接続ではSYNパケットにデータを含めて送信でき、実質0-RTT(往復なし)でデータ転送を開始できます。

仕組みはTFOクッキーを利用します。初回接続時にサーバーがTFOクッキーをクライアントに発行します。2回目以降はクライアントがSYNにクッキーとデータを同封し、サーバーはクッキーを検証してデータを即座に処理します。


通常TCPとTFOの比較

通常のTCP(1RTT+データ) TCP Fast Open(データ同時送信) CL SV SYN SYN-ACK ACK データ送信 データACK 合計: 2RTT以上 CL SV SYN + クッキー + データ SYN-ACK + データACK + レスポンス 合計: 1RTT(半分以下に!)

歴史と背景

  • 2011年:GoogleがTCPレイテンシ削減のためTFOを提案・実験
  • 2014年:RFC 7413として標準化
  • 2016年:Linux 3.7以降でサポート。macOS 10.11以降でもサポート
  • 2018年:iOSがTFOをサポート開始
  • 現在:Webアクセスの高速化に貢献。ただしミドルボックス(一部のファイアウォール等)との互換性問題がある

注意点・制限

  • セキュリティ:SYNパケットにデータを含めるため、TFOクッキーを盗まれると偽装リクエストのリスクがある
  • 対応環境:クライアント・サーバー双方がTFOをサポートしている必要がある
  • ミドルボックス問題:一部のファイアウォールやロードバランサーがTFOに対応していない場合、通信が失敗することがある

関連する規格・RFC

規格・RFC番号内容
RFC 7413TCP Fast Open の仕様
RFC 793TCP の基本仕様

関連用語