网上没有明确的说明为什么三次握手中为什么确认号和序列号要加一,三次握手如下:
其中客户端的序列号在第二次握手中被服务端的确认号加一,而客户端在第三次握手将自己的序列号加一,在确认号中将服务端的序列号进行加一,那么这些序列号和确认号不加一行不行呢,答案肯定是不行的,这样设计肯定有他的道理。
先来看看实际数据收发的过程:
在图中可以看到序列号和确认号不一定加一,而是和发送和接收的数据有关。如果没有发送数据序列号是要加一的,但如果发送了数据则下一次发送的序列号就不是加一了而是加上发送的数据量,而如果没有接收到数据则确认号是要加一的,但如果收到了数据则下一次发送的确认号就不是加一而是加上收到的数据量。
同理,在四次挥手中也是如此,总结到这样应该就比较清楚了。