2015-06-05 2 views
0

Я понимаю, что в трехстороннем рукопожатии иногда принимающий абонент отправляет пакет SYNACK при установлении соединения (переписывание), но когда он когда-либо отправляет SYN, а затем пакет ACK ?TCP Трехстороннее рукопожатие - Piggybacking ACK

Например:

-> SYN

< -SYN_ACK

-> ACK

против:

-> SYN

< -SYN

-> SYN_ACK

Спасибо!

ответ

4

Нет, это не будет - вот причина, почему

SYN обычно посылается «клиент» (например, ваш браузер.), Когда он хочет, чтобы открыть соединение TCP к серверу (например, ваш веб-сервер.). Сервер не имеет никакого способа «знать», какой клиент хочет открыть соединение (и, следовательно, отправить SYN) ему. Поэтому он не может отправить незапрашиваемый SYN.

SYN и ACK являются флагами, поэтому SYN-ACK с сервера является ACK для SYN (и его SYN) клиента. Технически он может отправлять их отдельно, но при отправке SYN и ACK по отдельности потребуется дополнительная половина тура. (c) SYN ->, < - SYN (s), < -ACK (s), (c) ACK ->), который не достигает большей надежности, чем трехсторонний рукопожатие предлагает. Следовательно, нет смысла делать это.

Сказав это, вы могли бы теоретически разработать протокол с 4-сторонним рукопожатием, но TCP не был разработан так.

Надеюсь, что это поможет.

+0

Спасибо! Это именно то, что я искал! – user1670032

+0

@ user1670032 вы должны отметить это как ответ на свой вопрос – FlySoFast

Смежные вопросы