Подумайте, почему соединение может получать одинаковые порядковые номера нормально.
Затем рассмотрите, как принимающая система будет обрабатывать пакет с «дублированным» порядковым номером (поскольку передающая система начала повторно использовать порядковые номера в пакетах, этоиспользуя попытку восстановить соединение).
* Редактировать: *
OP говорит:
, но при восстановленииПри соединении, передающая система отправит сегмент с установленным битом кода SYN (и порядковый номер должен быть установлен, разумеется, в 1), разве это (установленный бит кода SYN) сообщит принимающей системе, что новое соединение пытается установить?см. вики для Transmission_Control_Protocol, там говорится, что «только первый пакет, отправленный с каждого конца, должен иметь этот флаг (SYN)».
Но пакеты теряются, задерживаются и приходят не в порядке.Вы не можете просто сказать все, что приходит после того, как пакет с флагом SYN является новым.Допустим, некоторые старые пакеты задерживаются и приходят после установления нового соединения.Как вы можете отличить пакет с порядковым номером 10 от старого или нового соединения?В худшем случае это происходит от старого соединения, и принимающая система принимает его как от нового соединения.Когда приходит новый пакет соединения № 10, он игнорируется как ненужная повторная передача.Поток поврежден без каких-либо указаний на него.
http://www.tcpipguide.com/free/t_TCPConnectionEstablishmentSequenceNumberSynchroniz.htm
... Проблема с запуском каждого соединения с порядковым номером 1 состоит в том, что он представляет возможностьсмешивания сегментов из разных соединений.Предположим, что мы установили TCP-соединение и отправили сегмент, содержащий байты с 1 по 30. Однако возникла проблема с внутренней сетью, которая привела к задержке этого сегмента, и в конечном итоге само TCP-соединение было разорвано.Затем мы установили новое соединение и снова использовали начальный порядковый номер 1. Однако, как только это новое соединение было запущено, обнаружился старый сегмент с байтами от 1 до 30.Другое устройство ошибочно считало бы, что эти байты были частью нового соединения.
... Это всего лишь одна из нескольких похожих проблем, которые могут возникнуть....
Другая проблема с предсказуемым начальным порядковым номером, например, начиная с 1 каждый раз, заключается в том, что предсказуемость представляет уязвимость:
Злоумышленник может написать код для анализа номеров ISN, а затем предсказать номер ISN последующего TCP-соединения на основе номеров ISN, использованных в предыдущих.Это представляет угрозу безопасности, которая использовалась в прошлом (например, в случае знаменитой атаки Митника ).Чтобы победить это, реализации теперь используют случайное число в процессе выбора ISN.
Атака Митника - http://www.cas.mcmaster.ca/wiki/index.php/The_Mitnick_attack