5項目組でコネクションを識別する
ポートとホストのIPアドレスは48ビットの一意なエンド・ポイントを形成するものである。ポートとホストのIPアドレス識別するものである。このコネクション識別は、五つの情報、すなわち、プロトコル(TCP)、送信元IPアドレス、送信元ポート番号、宛先IPアドレス、宛先ポート番号からなるので5項目組(5tuple)と呼ばれる。
順序番号と確認通知番号 次に期待するバイトを指定
順序番号と確認通知番号フィールドはその名の通りのものである。ただし、確認通知番号は次に受信することを期待するバイトを指定するもので、最後に受信したバイトを示すものではない。
累積確認通知 ロスした番号のままで止まる
また、それまでに受信したデータを一つの数に要約しているので累積確認通知(cumulative acknowledgement)と呼ばれる。あるデータがロスすると、それ以降のデータが正しく届いたとしても、累積確認通知番号は増えずに、ロスしたデータの番号のままである。順序番号と確認通知番号は両方とも32ビット長であり、TCPストリームのすべてのデータに順序番号が付けられる。
MSSによりセグメントの大きさを変更する
各ホストが受け入れられるMSS(Maximum Segment Size:最大セグメント・サイズ)である。ヘッダーは20バイトの大きさを持つので、大きなセグメントは小さなものよりも効率的である。しかし、大きなセグメントを与えないホストもあるかもしれない。コネクション設定時に両端がこのオプションを使用しない場合、デフォルト設定、つまり536バイトのペイロードで送信する。
ウインドウ・スケール(window scale)・オプション ウインドウ幅の変更ができる
ウインドウ幅はフィールドは、送信者が送ることができるバイト数を通知するもの
ウインドウ・スケール(window scale)・オプションを使えば、送信者と受信者がウインドウ・スケール・ファクタを交渉して決定できる。両端のウィンドウ幅フィールドを最大14ビットまで左にシフトすることができるので、230バイトまでのウィンドウ幅が利用できる。ほとんどのTCP実装がこのオプションをサポートしている。
タイムスタンプ 送信側で送られた時刻、受信側でエコーされた時刻を知る
タイムスタンプ(timestamp)・オプションを用いると、送信側で送られた時刻、受信側でエコーされた時刻を知ることができる。コネクション確立の時や、往復時間の標本を撮るときには、各パケットにつけられる。
ロスしたが新しい順序番号で届いたときに使う使うSACK
SACK(Selective ACKnowledgement:選択確認応答)オプションは、受信側が持って順序番号の範囲を送信側に知らせる。確認通知番号を保管するものであり、あるパケットがロスしたが、そのパケットより新しい順序番号のパケットが届いている場合に用いられる。