Интересно, почему мы используем трехстороннее рукопожатие, почему мы просто устанавливаем соединение с двухсторонним рукопожатием.
2 ответа
Из Ответ :
ACK сопровождается порядковыми номерами. RFC довольно четко описывает рукопожатие:
1) A -> B SYN мой порядковый номер X
2) A <- B ACK, ваш порядковый номер - X
3) A <- B SYN мой порядковый номер Y
4) A -> B ACK, ваш порядковый номер - Y
Шаги 2 и 3 объединены в один пакет.
Дело в том, что шаг 4 также используется для перемещения окна TCP.
Включая этот шаг, вы используете обычный протокол в процесс инициализации. По сути, это просто обнуление окон передачи.Вам не заблокирована отправка данных вместе с шагом 4.
Вы можете отправить данные с вашим первым ACK, если хотите, по сути говоря: «Я получил пакеты до Y, вот некоторые данные».
Как мы видим на изображении выше, соединение на стороне клиента завершается, когда клиент получает ACK от сервера, но соединение на стороне сервера все еще остается в незавершенном состоянии, пока сервер не получит ACK со стороны клиента.
Как сказано в комментарии @EJP, нам нужны два порядковых номера, поскольку общие порядковые номера приводят ко многим несоответствиям.
«Потому что, если сервер B никогда не получает ответа от клиента A, откуда сервер B знает, что клиент A может« слышать »то, что он говорит?»
http://forums.anandtech.com/showthread.php?t=2000522
Похожие вопросы
Новые вопросы
networking
Для большинства вопросов программирования используйте тег [network-programming]. Сетевые вопросы, не относящиеся к программированию, не относятся к теме и должны задаваться по вопросам сетевой инженерии, суперпользователя или ошибки сервера Этот тег подходит только для вопросов, касающихся уникальных сетевых потребностей в поддержке разработки программного обеспечения.