Сервер обычно отвечает SYN ACK при трехстороннем рукопожатии.
Что произойдет, если он просто ответит ACK?
Сервер обычно отвечает SYN ACK при трехстороннем рукопожатии.
Что произойдет, если он просто ответит ACK?
Клиент будет ждать пакета SYN, через некоторое время он истечет.
Соответствующим RFC является http://www.faqs.org/rfcs/rfc793.html.
Основная причина трехстороннего рукопожатия состоит в том, чтобы не допустить путаницы при инициации старых дублированных соединений. Чтобы справиться с этим, было разработано специальное управляющее сообщение reset. Если принимающий TCP находится в несинхронизированном состоянии (т. Е. SYN-SENT, SYN-RECEIVED), он возвращается к LISTEN при получении приемлемого сброса. Если TCP находится в одном из синхронизированных состояний (ESTABLISHED, FIN-WAIT-1, FIN-WAIT-2, CLOSE-WAIT, CLOSING, LAST-ACK, TIME-WAIT), он прерывает соединение и информирует своего пользователя. Мы обсудим этот последний случай под «полуоткрытыми» связями ниже.
RFC допускает отдельные ACK и SYN сервером, но отмечает, что они могут быть объединены в один пакет. На практике я считаю, что все распространенные реализации объединяют сервер SYN и ACK.
...
Стивенс † имеет диаграмму перехода состояний. Это говорит о том, что клиент переходит в состояние ЗАКРЫТО и, вероятно, попытается установить соединение заново.
Если какой-либо конец получает пакеты данных до того, как они достигнут состояния ESTABLISHED соединения, они будут в состоянии SYN_SENT или SYN_RCVD соответственно, и они отправят сброс (RST) и (я думаю) перейти в состояние ЗАКРЫТО или СЛУШАТЬ.
† ISBN 0-201--63346-9