Концепция времени молчания TCP
Если при аварийном прекращении работы хост не сохраняет никакой информации о последних номерах последовательности, переданных во время активного (т.е. не закрытого) соединения, при отправке любых сегментов TCP будет происходить задержка на период не менее согласованного времени MSL внутренней системы, частью которой является хост. Реализаторы TCP могут нарушать ограничение "времени молчания", но они рискуют тем, что некоторые получатели в Интернете старые данные будут принимать как новые, или отвергать новые данные как старые дубликаты.
TCP использует пространство номеров последовательности всякий раз, когда сегмент формируется и вводится в очередь сетевого вывода на хосте источника. Обнаружение дубликатов и алгоритм упорядочивания в протоколе TCP опирается на уникальное связывание данных сегмента с пространством последовательности, при условии, что номера последовательности не переберут все 2*а значения, прежде чем данные сегмента, связанные с этими номерами последовательности, будут доставлены и подтверждены получателем, и все двойные копии сегментов "исчезнут" из Интернета. Без такого предположения двум различным сегментам TCP могли бы быть присвоены одинаковые или перекрывающиеся номера последовательности, вызывая путаницу у получателя в определении, какие данные являются новыми, а какие старыми. Помните, что каждый сегмент связан с числом порядковых номеров последовательности, равным числу октетов данных в сегменте.
При обычных условиях TCP отслеживает следующий номер последовательности для отправки и самый старый, ожидающий подтверждения, чтобы избежать ошибочного использования номера последовательности, прежде чем первое использование было подтверждено. Однако это не гарантирует, что старые дублирующие данные удаляются из сети. Поэтому пространство последовательности сделано достаточно большим, чтобы сократить вероятность возникновения проблем из-за блуждающего дубликата. При двух Мбит/сек потребуется 4,5 часа для использования 23'' октетов пространства последовательности. Так как максимальное время жизни сегмента в сети, скорее всего, не превышает нескольких десятков секунд, это считается достаточной защитой для будущих сетей, даже если скорости передачи данных вырастут до десятков Мбит/сек. При 100 Мбит/сек время цикла равно 5,4 мин, что, возможно, коротковато, но все еще в пределах разумного.
Однако базовый механизм обнаружения дубликатов и алгоритм упорядочивания в TCP может не сработать, если TCP источника не сохраняет номера последовательности, которые он использовал в последнее время на данном соединении. Например, если бы TCP должен был запускать все соединения с порядкового номера 0, то после аварийного завершения и перезапуска TCP мог бы переформатировать предыдущее соединение (возможно, после разрешения полуоткрытого соединения) и послать пакеты с номерами последовательности, идентичными или перекрывающимися пакетами, все еще находящимися в сети, которые были посланы предыдущей инкарнацией того же соединения. При отсутствии информации о номерах последовательности, использованных определенным соединением, спецификация TCP рекомендует, чтобы источник делал задержку на MSL секунд, прежде чем посылать в соединение сегменты, чтобы дать время сегментам, остающимся в сети от предыдущей инкарнации соединения, исчезнуть из системы. Даже те хосты, которые могут запоминать время дня и использовать его для выбора значений начального номера последовательности, не защищены от этой проблемы (т.е. даже если учитывается время дня для выбора начального номера последовательности в каждой новой инкарнации соединения).
