Почему трехстороннее рукопожатие 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
Ответ 1 · рейтинг 4 · Mat
Это потому, что поле ACK означает это, когда установлен флаг ACK:
Номер подтверждения (32 бита) - если флаг ACK установлен, то значением этого поля является следующий порядковый номер, который ожидает получатель.
Если он не установлен в (начальный порядковый номер + 1), это будет непоследовательно означать как подтверждение SYN (оба флага SYN, так и ACK должны быть установлены в этом пакете), и сообщение о том, что он снова ожидает этот порядковый номер (т.е. не получил).