Ответ сервера в трехстороннем квитировании TCP

Сервер обычно отвечает ACK SYN в трехстороннем квитировании.

Что произошло бы, если бы это просто ответило ACK?

1
задан 09.09.2013, 20:37

1 ответ

Клиент будет ожидать пакета SYN, через некоторое время он будет тайм-аут.

Соответствующим RFC является http://www.faqs.org/rfcs/rfc793.html

Принципиальная причина трехстороннего квитирования состоит в том, чтобы препятствовать тому, чтобы старое дублирующееся инициирование соединения вызвало беспорядок. Для контакта с этим специальное управляющее сообщение, сброс, было разработано. Если получение, TCP находится в несинхронизируемом состоянии (т.е. SYN-ОТПРАВЛЕН, SYN-ПОЛУЧЕН), он возвращается для СЛУШАНИЯ при получении приемлемого сброса. Если TCP находится в одном из синхронизируемых состояний (УСТАНОВЛЕННЫЙ, FIN-WAIT-1, FIN-WAIT-2, ОЖИДАЮТ ЗАВЕРШЕНИЕ, ЗАКРЫТИЕ, последний ACK, ОЖИДАЮТ ВРЕМЯ), это прерывает соединение и сообщает его пользователю. Мы обсуждаем этот последний случай при "полуоткрытых" соединениях ниже.

RFC допускает отдельный ACK и SYN сервером, но отмечает, что они могут быть объединены в единственный пакет. На практике я полагаю, что все общие реализации комбинируют сервер SYN и ACK.

...

У Stevens † есть диаграмма изменения состояний. Это предполагает, что клиент будет тайм-аут к ЗАКРЫТОМУ состоянию и по-видимому попытается установить соединение заново.

Если или конец получит пакеты данных, прежде чем они достигли соединения УСТАНОВЛЕННОЕ состояние, они будут в SYN_SENT или SYN_RCVD соответственно, и они отправят сброс (RST) и (я думаю), перемещаются в ЗАКРЫТЫЙ или СЛУШАЮТ состояние.

† ISBN 0-201 - 63346-9

2
ответ дан 12.12.2019, 12:55

Теги

Похожие вопросы