Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Почему трехстороннее рукопожатие TCP увеличивает порядковый номер при подтверждении?

Автор вопроса: Witness Protection ID 44583292Ответов: 1

Почему трехстороннее рукопожатие TCP увеличивает порядковый номер при подтверждении во время начального рукопожатие? Чем это лучше, чем просто оставить номер подтверждения равным порядковому номеру?

Связь устанавливается с

Client sends SYN,A
Server responds with SYN-ACK,A+1,B
Client confirms with ACK,B+1

Чем это лучше, чем

Client sends SYN,A
Server responds with SYN-ACK,A,B
Client confirms with ACK,B
  • возможный дубликат Почему бит SYN или FIN в сегменте TCP занимает один байт в пространстве порядкового номера? Michael Burr 24.07.2011

tcphandshake

Ответы

Ответ 1 · рейтинг 4 · Mat

Это потому, что поле ACK означает это, когда установлен флаг ACK:

Номер подтверждения (32 бита) - если флаг ACK установлен, то значением этого поля является следующий порядковый номер, который ожидает получатель.

Если он не установлен в (начальный порядковый номер + 1), это будет непоследовательно означать как подтверждение SYN (оба флага SYN, так и ACK должны быть установлены в этом пакете), и сообщение о том, что он снова ожидает этот порядковый номер (т.е. не получил).

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы