tcp协议是面向连接的字节流、可靠性传输的传输层通信协议,确保数据的可靠性主要通过一下机制:校验和、确认应答序列号、超时重传、流量控制
校验和:发送方发送数据前计算校验和,计算出校验位;接收方取出校验位同样计算校验和是否相等,不相等则一定传输有问题。
确认应答序列号: 序列号就是对字节的编号,tcp是面向字节流的,对传输的字节都进行流编号,发送方seq表示发送最大的字节编号,ack应答号就是告诉发送方接下来需要发送的字节编号,这样确认序列号不对应说明传输没有到达接收方进行重传。
超时重传:tcp传输基于确认应答和序列号机制,如果在规定时间内没有收到ACK报文,那么会进行重传,有可能接收端没有收到也有可能ACK应答包丢失了。超时时间是动态计算的,会根据实际的网络或状况动态调整。
连接管理:三次握手、四次挥手 保证连接和数据完全接收后断开连接
流量控制:上篇文章说过,通过滑动窗口控制发送和接收方流量的速度避免overflow,在TCP协议的报头信息当中,有一个16位字段的窗口大小,就是接收方还能处理的数据大小,接收端会在确认应答发送ACK报文时,将自己的即时窗口大小填入,并跟随ACK报文一起发送过去。而发送方根据ACK报文里的窗口大小的值的改变进而改变自己的发送速度。
拥塞控制:上篇文章讲的拥塞控制算法保证网络不会发生拥塞,避免网络拥塞,大量的重传。