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