セグメントの並べ直し
サービスが TCP を使用してデータを送信すると、セグメントが順不同で宛先に到達する可能性があります。 受信側が元のメッセージを理解できるように、これらのセグメントのデータは元の順序に再構成されます。 これを達成するために、各パケットのヘッダー内でシーケンス番号が割り当てられます。
セッションのセットアップ時に、初期シーケンス番号(Initial Sequence Number; ISN)が設定されます。 この ISN は、このセッションにおいて受信側アプリケーションに送信されるバイトの開始値を表します。 セッション中にデータが送信されていくにつれて、送信されたバイト数だけシーケンス番号が増加していきます。 このデータ バイトの追跡によって、各セグメントを一意に識別して、各セグメントに対して確認応答できるようになるのです。 失われたセグメントも識別できます。
この図は、受信したセグメントをどのように再構成して並べ直すのかを示しています。このとき、セグメントのシーケンス番号が使用され、それによって信頼性が確保されます。
受信側の TCP プロセスは、セグメントのデータを受信バッファに入れます。 セグメントは正しいシーケンス番号順に入れられ、再構成されるとアプリケーション層に渡されます。 到着したセグメントの中にシーケンス番号が非連続のものがあっても、後の処理のために保持されます。 その後、欠けていたバイトのセグメントが到着すると、これらのセグメントが順番に処理されます。