TCP 三次握手和四次挥手中的ACK 为什么总是SYN + 1 或者 FIN +1 而不是+ 其他数值?

时间:2022-08-03 17:27:19

TCP 三次握手的时候

1、客户端 向服务端发起连接请求,这个时候客户端将发送一个SYN分节(假设其值为J),它告诉服务端我发送数据的初始序列号将是J。

2、服务端收到这个请求后,必须确认(ACK) 客户的SYN(J+1),同时自己也得发送一个SYN(假设其值为K) 分节,它也是告诉对端我发送数据的初始序列号将是K。

3、客户端收到服务端的确认(ACK=J+1),这个时候客户端还必须向服务端做一个确认SYN(K+1)。

这样三次握手结束,完全连接。

这里面所有的ACK 都是收到的一个SYN 值 + 1,这个+1 是因为SYN 占据一个字节的序列号空间,所以每一个SYN 的ACK 中的确认号都是该SYN的初始序列号+1.

同样的,每一个FIN 的ACK 中的确认号也为该 FIN 的序列号 +1