TCP的核心设计理念:
- 保证可靠性传输。
- 尽可能的提高传送效率。
提高效率的前提是保证可靠性。保证可靠性就必须能及时的发现自己发送的数据是发送成功了还是失败了。
1. 确认应答
在确认应答机制中,TCP将每一个字节的数据都进行了编码(序号),每一个ACK都带有对应的确认序列号(这里的序号不是从1开始的,是通过建立链接的时候协商出来的从哪里开始), 意思是告诉发送者, 我已经收到了哪些数据; 下一次你从哪里开始发.
2.超时重传机制
主机A发送给主机B一段数据,因为网络拥堵等各种原因发生丢包,主机B没有收到主机B,发送给它的数据。主机A在等待了特定的时间之后也没有收到主机B发回的ACK,主机A会进行重新发送。
如果主机B收到了主机A第二次发生的数据,会发回对应的ACK,但是如果网络一直拥堵,主机B一直收不到主机A发送的数据,主机A会每隔一段特定的时间进行重传,而超时时间会一次变长(采用一种悲观特态度面对丢包)。如果累计重传此时到一定的次数,TCP认为网络或者对端主机出现异常,强制关闭连接。
自动去重:以上提到的情况都是发送的