最初の2バイトの後に選択確認応答される1から4ブロックのリストを32ビットの開始/終了ポインタで示す。検査合計方式が変更されて、その検査合計が16ビットより長い場合にこれで検査合計値を示す。他のオプションは既に使われていないもの、実験的なもの、標準になっていないものなどである。プロトコル操作[編集]3ウェイ・ハンドシェイクにおける典型的な状態遷移。遷移に使われるソケット呼び出しを付記した。通信終了の際の、ソケットを閉じるまでの典型的な状態遷移。TCPプロトコル操作は3つのフェーズに分けられる。コネクションは多段階のハンドシェイクプロセスで正しく確立する必要があり(コネクション確立フェーズ)、その後「データ転送フェーズ」に入る。データ転送が完了したら「コネクション終了フェーズ」で仮想回線を閉じ、確保していたリソースを解放する。TCPコネクションはオペレーティングシステムがソケットというプログラミングインタフェースを通して管理する。TCPコネクションが存在する間、以下のような状態間で遷移する[12]。サーバの場合、任意のリモートクライアントからのコネクション要求を待ち受ける。SYNフラグとACKフラグをセットしたTCPセグメントを相手側が送ってくるのを待つ状態(通常、クライアント側)。コネクション確立要求に対して確認応答を返した後、相手側が確認応答を返してくるのを待つ状態(通常、サーバ側)。相手側とコネクションが確立し、指定ポートでのデータの送受信が可能な状態。FINフラグをセットしたTCPセグメントを先に相手に送り、確認応答が返ってくるのを待つ状態。FINに対する確認応答を受け取り、相手からのFINを待つ状態。相手から先にFINを受け取り、アプリケーションがクローズ可能となるのを待つ状態。クローズ可能になったら相手にFINに対する確認応答を送る。FINセグメントを送って、その確認応答を待っている状態。「FIN-WAIT2」でFINセグメントを受信し、確認応答を返した状態。相手が確認応答を受信完了することを保証するため、十分な時間待つ。コネクションがクローズした状態。コネクション確立[編集]詳細は「3ウェイ・ハンドシェイク」を参照コネクションを確立する際、TCPでは3ウェイ・ハンドシェイクを行う。クライアントがサーバと接続する前、サーバはコネクション可能なようにポートをバインドしておかなければならない。これをパッシブ・オープンと呼ぶ。サーバ側がパッシブ・オープンになっていれば、クライアントはアクティブ・オープンを開始できる。コネクションを確立するための3ウェイ・ハンドシェイクは次のようになる。クライアントはサーバにSYNを送り、アクティブ・オープンを行う。クライアントはこの際に無作為な値Aを選び、SYNセグメントのシーケンス番号とする。それに対してサーバはSYN+ACKを返す。