TCP流量控制、可靠传输、阻塞控制

流量控制和可靠传输,都是属于传输层的功能

在传输层,使用 TCP 连接的时候,是可以保证端到端的可靠传输的,只要主机 B 发现 TCP 数据传输有差错,就告诉主机A,将有差错的部分重传。直到这部分数据正确传到 B 为止。

TCP连接管理

TCP连接四原组:源地址,源端口,目的地址,目的端口

流量控制

流量控制就是控制发送方数据的发送效率,让接收方来得及接受

停止-等待流量控制

停止等待流量控制是流量控制中,最是简单的控制形式,其工作原理,就是A发送一帧,要等待到应答信号,才能再传下一帧,不然就一直等下去.

助记: 班长要通知你们班40多个人开会,他就拿出名单来,给每个人挨着发短信,要等这个人回短信了,再给下一个人发。不然就一直等待下去。

滑动窗口流量控制

发送方有一个 发送窗口,接收方有一个接收窗口。两个的大小可以不同

  • 发送窗口内是 发送了但是还没得到确定的 + 允许发送但是还没发送的,当发送窗口尺寸到最大的时候,就会强行关闭网络层

  • 接受只接收窗口内的东西,窗口外的,一律丢弃。

滑动窗口的几个重要特性

  1. 只有接受窗口往前滑动,发送窗口才有可能向前滑动。
  2. 接受窗口的大小为 1 的时候,可以保证帧的有效传输。

TCP可靠传输

主要还是基于以字节为单位的滑动窗口。通过 确认超时重传机制 实现。

超时重传就是在规定的时间内,没有接受到确认信息,就会重发该数据帧

image

对于延迟到达的数据

对于延迟到达的数据,TCP并没有明确的规定,可以直接丢弃,也可以存入缓存中。

  • 直接丢弃显然是最简单的方式,但是也是效率最低的。
  • 也可以先将接收到的数据,存入接收方的缓存区中,同时要求发送方,重传出错的帧,一旦收到了重传过来的帧,那么就连带其它缓冲区的帧,一起按照正确的顺序传送给主机。

阻塞控制

流量控制和阻塞控制的区别

  • 阻塞控制是一个全局性的过程,涉及所有的主机,路由器等。

  • 流量控制是指定发送端和接受端之间的点对点的通信量控制

阻塞控制的四种算法

为了避免阻塞,TCP要求维护以下两个窗口

  • 接收端窗口:目前接受缓存大小所许诺的最新的窗口值,反映了接口端的容量。
  • 阻塞窗口:发送端根据自己估计的网络阻塞程度而设置的窗口值。反映了网络的当前容量

所以发送端发送窗口的上限值应该是 接收端口阻塞窗口 中较小的一个。

慢开始算法

一开始先设置阻塞窗口为1,每收到一个新报文段的确定,阻塞窗口就*2。

当阻塞窗口增大到一个阈值的时候,就开始改用 阻塞避免算法

阻塞避免算法

image
慢开始算法是指数增长,阻塞避免算法是线性增长。

只要出现了网络阻塞(即没有按时收到确认),就将慢开始的阈值设置为阻塞窗口的一半,然后把阻塞窗口重新置为 1,开始慢算法。

参考文献

https://www.bilibili.com/video/BV194411h71z?share_source=copy_web

posted @ 2021-07-16 16:54  沧海一声笑rush  阅读(409)  评论(0编辑  收藏  举报