TCP Fast Open
読み:ティースィーピー-ファスト-オプション
外語:TFO:TCP Fast Open
TCPでの通信確立を行なう手順で、従来の3ウェイハンドシェイクに代えて策定中であるもの。略して「TFO」。
概要
従来のTCPでは、3ウェイハンドシェイクとして次の手順が必要だった。
- クライアントは、通信先サーバー対してまずSYNパケットを送る。
- それを受け取ったサーバーはそれに対するACKと、通信先ホストから通信元ホストへのSYNを、SYN+ACKの形で返す
- 最後にクライアントがそれに対するACKをサーバーに返す
これが、接続のたびに必要となっており、時間的ロスが大きかった。TCP Fast Openは、二回目以降は直接接続できるようにする手段を提供する。
特徴
動作
TFOに対応したサーバーは、SYN+ACKを返す際に、TCPオプションの34番でTFOクッキーを返す。
このクッキーは、クライアントのIPアドレスやサーバーシークレットなどからAES-128で作ったもので、同一のクライアント&サーバーで継続して使用できるものである。
TFOに対応したクライアントは、次回より、送りたいデータを直接SYNパケットとし、これにTCPオプションでサーバーより受け取ったTFOクッキーを添付して送信する。こうすることで、TFO対応のサーバーはSYN+ACKとともにレスポンスを返す。
セキュリティ面
TCPに対する攻撃には、TCPコネクションスプーフィング(TCPハイジャック)といった手法がある。
ハイジャック攻撃は、パケットの傍受と解析が必要になるため現実には実施の難易度が高い。しかしTFOの場合、クッキーを作って送りつけるだけなので、攻撃が成立し易い可能性がある。
これに対抗するためには、クッキーが充分に長い必要がある。
将来性
時間的ロスがあるといっても、地球上での通信であればたかが知れている。
TCP Fast Open開発の本来の目的ではないが、1パケットでも減らすことができれば、1回1回の通信に時間が掛かる状況ではメリットが大きい。
例えば地球と月、地球と火星、あるいは惑星間などの通信が遠い将来実現したとして、その時にTCP/IPv6を使用したとする。地球と火星は、宇宙最速である光速で伝播する電波を用いても1回の通信で片道20分、往復40分を要するため、一つでも通信を減らすことは重要である。
このような場合では、あらかじめTFOクッキーを決めておけば、プロトコルをTCPにしても実用面で問題がなくなることになる。
再検索