计算机网络 运输层(下)

Posted My heart will go ~~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机网络 运输层(下)相关的知识,希望对你有一定的参考价值。


网络层(中)

8.TCP拥塞控制

拥塞:∑ 对资源需求 > 可用资源 最坏结果:系统崩溃
实际可能原因:点缓存容量太小,链路容量不足,处理机速率太慢,自身就会加剧
但是增加资源也不能解决拥塞:因为网络拥塞是一个非常复杂的问题。

拥塞控制与流量控制的区别:拥塞数据时防止过多数据注入网络,使路由器或链路不致过载,是一个全局性的过程。 流量控制是一直发送端的发送数据速率使接收端来得及接收,是端到端的问题。

8.1 拥塞控制一般原理

前提:网络能够承受现有的网络负荷。分组丢失是网络拥塞的征兆不是原因。拥塞控制本身可能引起网络性能恶化,甚至死锁。
开环控制思路:力求避免发生拥塞。闭环控制思路:发生拥塞后消除拥塞。
闭环控制的措施:1.监测网络系统,以便监测何时、何处发生拥塞。 2. 拥塞信息传送到可采取行动的地方。 3. 调整网络系统以解决问题。
监测网络系统的指标:被丢弃的分组的百分数;平均队列长度;超时重传的分组数;平均分组时延;分组时延的标准差等。
传递拥塞通知:发送通知拥塞发生的分组;在分组中保留表示拥塞状态的字段;周期性地发出探测分组等。
采取行动的时机:过于频繁则会产生不稳定震荡,过于迟缓就不具有任何实用价值。
解决拥塞两条思路:增加网络可用资源;减少用户对资源的需求。

8.2 TCP拥塞控制方法

TCP采用基于窗口的方法进行拥塞控制(属于闭环控制方法)。发送方维持一个拥塞窗口(cwnd),利用cwnd调整网络拥塞。所以发送窗口大小与接收窗口、cwnd有关。
控制原则:网络无拥塞,扩大窗口;出现拥塞,减小窗口。
在这里插入图片描述
拥塞判断:1.重传定时器超时 2.收到三个重复的ACK
四种拥塞控制算法:慢开始,拥塞避免,快重传,快恢复。

一:慢开始
慢开始:有小到大逐渐增大拥塞窗口数值。两个变量:拥塞窗口,慢开始门限(ssthresh)。
cwnd控制方法:每收到一个确认后,拥塞窗口增加最多一个SMSS数值。
在这里插入图片描述
慢开始算法中,每增加一个传输轮次,cwnd就加倍。(即每接收一个确认,拥塞窗口+1)
在这里插入图片描述
在这里插入图片描述
其中,ssthresh用法如下:

  1. 当 cwnd < ssthresh 时,使用慢开始算法。
  2. 当 cwnd > ssthresh 时,使用拥塞避免算法。
  3. 当 cwnd = ssthresh 时,既可使用慢开始算法,也可使用拥塞避免算法。

二:拥塞避免算法
避免拥塞算法中,每经过一个传输 轮次,cwnd=cwnd+1;
在这里插入图片描述

上述两者,只要出现网路拥塞,就执行下面步骤:

  1. ssthresh = max (cwnd/2,2)
  2. cwnd = 1
  3. 执行慢开始算法

在这里插入图片描述

  1. 当 TCP 连接进行初始化时,cwnd= 1,ssthresh = 16。
  2. 发送方每收到一个ACK,就把拥塞窗口值加 1,因此cwnd 随着传输轮次按指数规律增长
  3. 圈1,cwnd 增长到 ssthresh 时,执行拥塞避免算法(拥塞窗口线性增长
  4. 圈2,出现网络超时,ssthresh = cwnd / 2 =12,cwnd = 1,慢开始
  5. 圈3,再次cwnd = ssthresh时,避免拥塞算法
  6. 圈4,收到连续3个ACK,发送方执行快重传和快恢复。

三:快重传
连续收到三个ACK,就立即重传。

四:快恢复
收到连续三个重复的确认时,认为网络未拥塞,执行快恢复。

  1. 慢开始门限 ssthresh = 当前拥塞窗口 cwnd / 2 ;
  2. 新拥塞窗口 cwnd = 慢开始门限 ssthresh ;
  3. 执行拥塞避免算法,使拥塞窗口缓慢地线性增大

总结:AIMD算法。
拥塞避免阶段,拥塞窗口线性增大,称为加法增大(AI);出现3个重复确认或超时,门限值为当前窗口值的一半,并大大减小拥塞窗口值,称为乘法减小(MD)。合在一起称为AIMD

发送窗口上限取接收窗口和拥塞窗口中较小的一个。=Min [rwnd, cwnd]

8.3 主动列队管理AQM

问题:如果路由器处理某些分组的时间很长,就会造成发送方超时、重传。会使TCP连接发送端认为网络拥塞,但实际并未拥塞。对其影响最大的是路由器的分组丢弃策略。
解决:路由器按照”先进先出(FIFO)“处理分组。列队满了之后,后来的分组被丢弃(尾部丢弃策略)。这就会使发送方超时重传,使TCP进入拥塞控制的慢开始,使发送方降低数据发送速率到很小的值。
更严重的是,TCP中的报文段很多是复用在网络IP数据报中传送的,如果尾部丢弃就会影响很多条TCP,从而使很多TCP连接慢开始。上述现象称为全局同步。

AQM:针对上面的问题,在列队长度达到警惕值时主动丢弃到达的分组。
实现方法:RED(随机早期监测)
队列长度最小门限 THmin 和最大门限 Thmax 。RED 对每一个到达的分组都先计算平均队列长度 LAV 。

  1. 若平均队列长度小于最小门限 THmin,则将新到达的分组放入队列进行排队。
  2. 若平均队列长度超过最大门限 Thmax ,则将新到达的分组丢弃。
  3. 若平均队列长度在最小门限 THmin 和最大门限 Thmax 之间,则按照某一概率 p 将新到达的分组丢弃。
    在这里插入图片描述
    但是经过多年实践,RED效果不理想,但对路由器进行AQM是必要的,而新的方法还在实验阶段。

9. TCP的运输连接管理

运输连接的三个阶段:连接建立,数据传送,连接释放。
要解决三个问题:1. 每一方能确知对方的的存在 2. 允许双方协商一些参数 3. 能够对运输实体资源进行分配。
客户服务器方式:(TCP的建立采取的方式)主动发起建立连接的应用进程的叫客户。被动等待连接的是服务器。

9.1 TCP 的连接建立

TCP建立连接的过程叫做握手:在客户端和服务器之间交换三个TCP报文段,主要是为了防止已失效的连接请求报文段突然又传送到来从而产生错误,甚至死锁。

9.2TCP 的连接释放

TCP连接释放过程较为复杂,传输结束后双方都可释放连接,四报文握手。
A必须等待2MSL的时间,一来为了保证A发送的最后一个ACK报文段能够到达B ,二来为防止“已失效的连接请求报文段”出现在本连接中。

保活计时器:防止在TCP连接出现长时期的空闲。通常设置为2小时,超过两小时没收到客户信息,就发送探测报文段。若发送了10个探测报文段还没有响应,就假定客户出了故障,因而就终止该连接。

9.3 TCP的有限状态机

在这里插入图片描述

  1. 粗实线箭头表示对客户进程的正常变迁。
  2. 粗虚线箭头表示对服务器进程的正常变迁。
  3. 细线箭头表示异常变迁。

以上是关于计算机网络 运输层(下)的主要内容,如果未能解决你的问题,请参考以下文章

运输层知识要点——谢希仁《计算机网络》

计算机网络运输层习题5-13

计算机网络—— 运输层(123):运输层概述运输层端口复用与分用的概念UDP和TCP的对比

计算机网络自顶向下 —— 运输层

计算机网络 —— 运输层

计算机网络-运输层