可靠性是指 接收方收到的数据是完整、有序、无差错的;
UDP 不可靠是指 接收到的数据可能存在部分丢失,顺序也不一定能保证。
https://blog.csdn.net/qq_46423166/article/details/113622650
- 序列号、确认应答、超时重传:
l 数据到达接收方,接收方需要发出一个确认应答,表示已经收到该数据段,并且确认序号会说明了它下一次需要接受的数据序列号。
l 如果发送方迟迟未收到确认应答,那有可能是发送数据丢失,也可能是确认应答丢失,这时发送方在等待一段时间后会进行重传,超时重传。
l 这个时间是 2*RTT(Round-Trip time)往返时间+偏移量
- 窗口控制、高速重发、快速重传(重复确认应答)
正常情况下收到应答才能发送下一段数据
而窗口的作用就是,在窗口大小内可以无需等待确认 而 连续发送数据,利用窗口控制来提升传输速度。
快重传:
当某个数据段丢失后,接收方会连续传输三个一样的序列号的应答,当接收方收到三次一样的应答之后,会立即进行重传,而不必等待过期时间。
- 拥塞控制:
如果网络延时增加,不能TCP只会重传数据,但是这样会增加网络负担,所以需要拥塞控制。
https://blog.csdn.net/shuxnhs/article/details/80644531
https://blog.csdn.net/qq_46423166/article/details/113447268
https://www.cnblogs.com/tuyang1129/p/12439862.html
拥塞窗口:以字节为单位 发送方的发送窗口,每次可以发送的数据量大小,取决于网络的拥塞程度,最开始为1 MSS(最大报文段长度, Maximum Segment Size)
慢开始门限:起一个界定作用,当拥塞窗口大于慢开始门限后,停止慢开始算法,大部分设置为16.
传输轮次:一个往返时间 RTT,一个拥塞窗口大小的数据 一次发送接收的总共时间。
l 慢开始,一开始一次发送数据量为1,逐次增加(每经过一个 RTT,增加 1),直至达到慢开始门限。这里 每收到一个 ACK 就增加1,但是每次发送的数据量随着 cwnd 而变化,所以其实是指数增长。
l 拥塞避免,拥塞窗口 线性增加,每经过一个 RTT, 增加 1MSS。出现拥塞之后,慢开始门限(ssthresh)值调整为 当前拥塞窗口(cwnd)的一半。然后将拥塞窗口再次变为 1.(判断网络出现拥塞,根据就是没有收到确认)
l 快重传
l 快恢复,(收到三个重复确认, 考虑能收到三个重复确认,说明网络没有出现拥塞)发送方直到只是丢失了个别的报文段,不是执行慢开始,而是执行快速回复算法。 调整新的慢开始门限值为 拥塞窗口的一半,新的拥塞窗口改为和新的慢开始门限值一样。