Przestawianie segmentów

Kiedy usługi przesyłają dane za pomocą TCP, segmenty mogą dotrzeć do hosta w innej kolejności niż były nadawane. Aby odbiorca właściwie zrozumiał nadawaną wiadomość, dane w odebranych segmentach są scalane w kolejności, w jakiej zostały wysyłane. Do tego celu używane są numery sekwencyjne, znajdujące się w nagłówku każdego segmentu.

Podczas nawiązywania sesji, ustalany jest początkowy (inicjujący) numer sekwencyjny ISN. Inicjujący numer ISN, reprezentuje początkową ilość w bajtach, które będą przesyłane do docelowej aplikacji. W miarę przesyłania danych, podczas sesji, numer sekwencyjny zwiększany jest o liczbę (bajtów), które zostały wysłane. Ten sposób nadzorowania ilości bajtów danych, umożliwia unikalną identyfikację i potwierdzenie każdego segmentu. Dzięki temu zaginione segmenty mogą być zidentyfikowane.

Na rysunku pokazane jest w jaki sposób numery sekwencyjne poszczególnych segmentów zapewniają niezawodność transmisji, przez wskazanie jaka jest kolejność odebranych segmentów.

Odbierający proces TCP, umieszcza dane z segmentu w buforze odbioru. Segmenty są składane we właściwej kolejności, wynikającej z numeru sekwencyjnego, a następnie przekazane aplikacji. Jeśli odebrane zostaną segmenty, których numery sekwencyjne nie zachowują ciągłości, to zostaną one zatrzymywane (w buforze) w celu późniejszego przetworzenia. Po otrzymaniu brakujących segmentów, dane zostają niezwłocznie ułożone we właściwej kolejności.