很多地方说+1是为了确定对方收到了本机发送的数据包,但我个人认为,不+1,直接返回Seq也可以告诉对方我收到了数据包,那为何要多此一举来+1?应该是有其他什么作用吧?
首先在携带有数据时我们的ack=seq+lenth(数据),这样他表示了期待的下一个包的第一个序列号和收到的这个包的数据量,你如果确认号和序列号不发生变化,都一样,你咋知道你收到的是当前包还是之前的包呢,黑书rdt协议到tcp的转化讲的很清楚,你可以看看
感谢,因为这个问题我百度了一下,在这篇文章中找到答案,总结如下:
序列号syn: 标识本报文段,用于处理重复报文,以及确定已接收报文;
确认号ack: 确认号为N, 表示N前面所有的序列已经被接收到(不包括N),以及期望收到的下个序列号。
三次握手开始,其实就是定义了一个初始序列号(syn),确认号ack的回复逻辑,其实就已经开始遵循上面的描述了。