TCP主要提供了检验和、序列号/确认应答、超时重传、最大消息长度、滑动窗口控制等方法实现了可靠性传输。
1、连接管理
TCP使用三次握手喝四次挥手保证可靠地建立连接和释放连接
2、校验和
TCP将保持它首部和数据的校验和。这是一个端到端的校验和,目的是检测数据在传输过程中的任何变化。如果接收端的检验和有差错,TCP将丢弃在这个报文段和不确认收到慈报文段。
3、序列号/确认应答
TCP给发送的每一个包进行编号,接收方会对收到的包进行应答,发送方就会直到接收方是否收到对应的包,如果发现没有收到,就会重发,这样就能保证数据的完整性。
4、流量控制
TCP连接的每一方都有固定大小的缓冲空间,TCP的接收端只允许发送端发送接受端缓冲区能接纳的数据。当接收方来不及处理发送方的数据,能提示发送方降低发送速率,防止丢包。
TCP使用的流量控制协议是可变大小的滑动窗口协议。(TCP利用滑动窗口实现流量控制)
5、最大消息长度
在建立TCP连接的时候,双方约定一个最大的长度(MSS)作为发送单位,重传的时候也是以这个单位来进行重传。理想情况下是该长度的数据刚好不被网络层分块。
6、超时重传
超时重传是指发送出去的数据包到接收到确认包之间的时间,如果超过了这个时间会被认为是丢包了,需要重传。
7、拥塞控制
如果网络非常拥堵,此时再发送数据就会加重网络负担,那么发送的数据段很可能超过了最大生存时间也没有达到接收方,就会产生丢包问题。
为此TCP引入慢启动机制,先发出少量的数据,就像探路一样,先摸清当前的网络拥堵状态后,再决定按照多大的速度传送数据。