确认应答(ACK)机制(保障TCP稳定的核心机制)
TCP对每个字节的数据都进行了编号,即为序列号
每一个ACK都带有对应的确认序列号, 意思是告诉发送者, 我已经收到了哪些数据; 下一次你从哪里开始发
确认应答可能带来的问题:
1.发送的数据根本就没有传送到达主机2,因此主机2就不会回传一个确认应答的报文。
2.ACK丢失了
当我们的主机1给主机2发送了数据之后,经过一端时间主机1并没有收到主机2的应答的情况也是有的,所以这个时候为了确保数据的准确到达,TCP就有了超时重传机制
超时重传机制
主机1没有收到主机2的确认应答有以下两种情况:
1.发送的数据根本就没有传送到达主机2,因此主机2就不会回传一个确认应答的报文。
- 主机1发送数据给2之后, 可能因为网络拥堵等原因, 数据无法到达主机2;
- 如果主机1在一个特定时间间隔内没有收到2发来的确认应答, 就会进行重发;
2、,主机A未收到B发来的确认应答,可能是主机2收到了数据也回传了确认应答报文 ,但因为ACK丢失了
- 因此主机B会收到很多重复数据. 那么TCP协议需要能够识别出那些包是重复的包, 并且把重复的丢弃掉
- 这时候我们可以利用前面提到的序列号, 就可以很容易做到去重的效果