TCP流量控制、可靠传输、阻塞控制
流量控制和可靠传输,都是属于传输层的功能
在传输层,使用 TCP 连接的时候,是可以保证端到端的可靠传输的,只要主机 B 发现 TCP 数据传输有差错,就告诉主机A,将有差错的部分重传。直到这部分数据正确传到 B 为止。
TCP连接管理
TCP连接四原组:源地址,源端口,目的地址,目的端口
流量控制
流量控制就是控制发送方数据的发送效率,让接收方来得及接受
停止-等待流量控制
停止等待流量控制是流量控制中,最是简单的控制形式,其工作原理,就是A
发送一帧,要等待到应答信号,才能再传下一帧,不然就一直等下去.
助记: 班长要通知你们班40多个人开会,他就拿出名单来,给每个人挨着发短信,要等这个人回短信了,再给下一个人发。不然就一直等待下去。
滑动窗口流量控制
发送方有一个 发送窗口
,接收方有一个接收窗口
。两个的大小可以不同
-
发送窗口内是
发送了但是还没得到确定的
+允许发送但是还没发送的
,当发送窗口尺寸到最大的时候,就会强行关闭网络层 -
接受只接收窗口内的东西,窗口外的,一律丢弃。
滑动窗口的几个重要特性
- 只有接受窗口往前滑动,发送窗口才有可能向前滑动。
- 接受窗口的大小为
1
的时候,可以保证帧的有效传输。
TCP可靠传输
主要还是基于以字节为单位的滑动窗口。通过 确认
和 超时重传机制
实现。
超时重传就是在规定的时间内,没有接受到确认信息,就会重发该数据帧
对于延迟到达的数据
对于延迟到达的数据,TCP并没有明确的规定,可以直接丢弃,也可以存入缓存中。
- 直接丢弃显然是最简单的方式,但是也是效率最低的。
- 也可以先将接收到的数据,存入接收方的缓存区中,同时要求发送方,重传出错的帧,一旦收到了重传过来的帧,那么就连带其它缓冲区的帧,一起按照正确的顺序传送给主机。
阻塞控制
流量控制和阻塞控制的区别
-
阻塞控制是一个全局性的过程,涉及所有的主机,路由器等。
-
流量控制是指定发送端和接受端之间的点对点的通信量控制
阻塞控制的四种算法
为了避免阻塞,TCP要求维护以下两个窗口
- 接收端窗口:目前接受缓存大小所许诺的最新的窗口值,反映了接口端的容量。
- 阻塞窗口:发送端根据自己估计的网络阻塞程度而设置的窗口值。反映了网络的当前容量
所以发送端发送窗口的上限值
应该是 接收端口 和 阻塞窗口 中较小的一个。
慢开始算法
一开始先设置阻塞窗口为1
,每收到一个新报文段的确定,阻塞窗口就*2。
当阻塞窗口增大到一个阈值的时候,就开始改用 阻塞避免算法
阻塞避免算法
慢开始算法是指数增长,阻塞避免算法是线性增长。
只要出现了网络阻塞(即没有按时收到确认),就将慢开始的阈值设置为阻塞窗口的一半,然后把阻塞窗口重新置为 1
,开始慢算法。
参考文献
https://www.bilibili.com/video/BV194411h71z?share_source=copy_web