1. TCP 可靠性如何保证?
- 信道可靠:用三次握手、四次挥手保证连接正确;
- 数据正确:分区编号、校验和、超时重传;
- 传输控制:流量控制、拥塞控制
2. 重传机制
TCP可靠传输方式是序列号与确认应答。当传送数据包丢失时,会用重传机制解决。常见重传机制有超时重传、快速重传、SACK、D-SACK。
2.1 超时重传
TCP协议要求在发送端每发送一个报文段,就启动一个定时器并等待确认信息;接收端成功接收新数据后返回确认信息。若在定时器超时前数据未能被确认,TCP就认为报文段中的数据已丢失或损坏,需要对报文段中的数据重新组织和重传。
2.2 快速重传
如果收到一个失序的报文段时, TCP需要立刻产生一个ACK,这个ACK不应该被延时,目的在于让对方知道收到一个失序的报文,并告诉对方自己希望收到的报文seq,我们不知道这个重复的ACK的原因,因为还是会等待少量的重复ACK到来,如果连续收到3个或者3个以上的dup ACK,就被判断这个报文被丢失了,于是就需要立即重传丢失的数据段,这个地方不用等待定时器溢出。
3. 滑动窗口协议
在TCP协议中,发送方和接受方通过各自维护自己的缓冲区。通过商定包的重传机制等一系列操作,来解决不可靠的问题。为了增加网络的吞吐量,想将数据包一起发送过去,便产生了“滑动窗口”协议 。