ВРЕМЯ-ПОДОЖДИТЕ соединение отказывается принимать новый SYN, даже если у него есть ISN лагера - PullRequest
0 голосов
/ 27 февраля 2019

Согласно этому сообщению SO Можно ли повторно использовать порт TCP до истечения времени TIME-WAIT? , можно использовать TIME-WAIT, если новый пакет SYN имеет больший ISN.

Но следующее событие SYN не удалось, если он имеет больший ISN, чем старшее соединение.

Detailed info:
Failed SYN: NO(54365) , ISN(3853063683)
Elder connection max packet: NO(50379), ISN(2103445551)

enter image description here

1 Ответ

0 голосов
/ 28 февраля 2019

Понятно.

На сервере и клиенте включена опция 'net.ipv4.tcp_timestamps' (по умолчанию включена под centos).Таким образом, сервер сначала проверит временную метку вновь поступившего SYN (игнорировать ISN сейчас): если он больше соответствующего значения старшего соединения, то сервер повторно использует соединение TIMEWAIT (независимо от того, меньше ли ISN или больше сейчас).иначе считайте его потерянным пакетом старшего соединения и отправьте последний квитанцию ​​старшего соединения (независимо от того, меньше ли ISN или больше сейчас).

Пакет 54365 имеет меньшее значение временной метки (tsval), чемпакет 50379, поэтому он не работает.

Полезно См .: https://vincent.bernat.ch/en/blog/2014-tcp-time-wait-state-linux

...