为什么TCP的三次握手会在执行时碰撞序列号?

Wit*_*292 5 tcp handshake

为什么TCP三次握手在初始握手期间执行时碰到序列号?这比仅仅保留确认号等于序列号更好吗?

建立连接

Client sends SYN,A
Server responds with SYN-ACK,A+1,B
Client confirms with ACK,B+1
Run Code Online (Sandbox Code Playgroud)

怎么比这更好

Client sends SYN,A
Server responds with SYN-ACK,A,B
Client confirms with ACK,B
Run Code Online (Sandbox Code Playgroud)

Mat*_*Mat 5

这是因为设置标志ACK时该字段的含义是:ACK

\n\n
\n

确认号(32 位)\xe2\x80\x93 如果设置了 ACK 标志,则该字段的值是接收方期望的下一个序列号。

\n
\n\n

如果它没有设置为(初始序列号+1),则这将不一致地意味着既确认SYN(必须在该数据包中设置SYNACK标志)又表示它再次期待该序列号(即尚未收到它)。

\n