Возможности входящего TCP SYNs
Это может быть общий вопрос TCP.
Могу ли я получить TCP SYN пакет на ESTABLISHED соединение ИЛИ соединение в TIME-WAIT государство?
Это возможно?
2 ответа
SYN получил на ESTABLISHED TCP-соединение не должно происходить. Это может быть задержанный пакет, который можно было бы безопасно отбросить.
Возможно закончить с сервером в ESTABLISHED государство и клиент в CLOSED укажите, потеряно ли соединение и истекло ли время ожидания на клиенте, а не на сервере, или перезапущен ли клиент. Попытка открыть новое соединение в этом сценарии приведет к SYN пакет, который будет получен в ESTABLISHED государство. Желаемый результат заключается в том, что старое соединение закрывается, а новое открывается.
Способ достижения желаемого результата заключается в следующем:
- Клиент отправляет
SYNсоздать новое соединение. - Сервер отправляет
ACKдляESTABLISHEDподключение. - Клиент отвечает на
ACKсRSTпакет, вызывающийESTABLISHEDсоединение, чтобы уйти. - Клиент ретранслирует
SYNПакет для создания нового соединения.
SYN пакет получен в TIME_WAIT состояние может возникнуть после того, как сервер закрыл соединение, и клиент открывает новое соединение с теми же номерами портов. Это приведет к открытию нового соединения.
Ни...SYN используется только при первом установлении соединения (трехстороннее рукопожатие) или при разрушении пакета.
В принципе:
SYN (I want to start a connection) -> ACK/SYN (OK, I want to start a connection too) -> ACK (acknowledged connection, ready for data)
Разговор течет с ACK пакеты, отправленные обоими хостами, указывают, что они получили пакеты друг друга.
В конце, FIN отправляется на сервер и TIME_WAIT установлен на сокете. Когда сервер отвечает FIN пакет, сокет освобождается.