Возможности входящего 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
пакет, сокет освобождается.