Повторное упорядочивание сегментов

Когда сервисы отправляют данные по протоколу TCP, сегменты могут быть доставлены на узел назначения в изменённом порядке. Чтобы получатель смог расшифровать изначальное сообщение, данные в этих сегментах повторно собираются в исходном порядке. Для этого в заголовке каждого пакета указываются порядковые номера.

Во время настройки сеанса связи устанавливается начальный порядковый номер сеанса (ISN). Этот номер ISN представляет начальное значение байтов для этого сеанса, которое передаётся получающему приложению. По мере передачи данных во время сеанса порядковый номер увеличивается на число переданных байт. Такое отслеживание байтов данных позволяет однозначно определять и подтверждать каждый сегмент. Можно выяснить, какие сегменты отсутствуют.

Порядковые номера сегментов обеспечивают надёжность, указывая, как необходимо повторно собрать и переупорядочить полученные сегменты, как показано на рисунке.

Получающий TCP-процесс помещает данные из сегмента в получающий буфер. Сегменты располагаются в соответствии с порядковыми номерами и после повторной сборки передаются на уровень приложений. Все сегменты, которые поступают с несоответствующими порядковыми номерами, сохраняются для последующей обработки. Затем, поступая с отсутствующими байтами, сегменты обрабатываются по порядку.