做兼职上什么网站,哈尔滨做企业网站,工商网站备案查询,wordpress 标签图标文章目录 前言一、TCP流量控制1.1、案例#xff1a;三次流量控制1.2、持续计时器 二、TCP拥塞控制2.1、拥塞控制的指标2.2、慢开始算法和拥塞避免算法2.3、快重传算法和快恢复算法2.4、练习 三、TCP拥塞控制与网际层拥塞控制总结 前言 TCP协议中的流量和拥塞#xff0c;是两个… 文章目录 前言一、TCP流量控制1.1、案例三次流量控制1.2、持续计时器 二、TCP拥塞控制2.1、拥塞控制的指标2.2、慢开始算法和拥塞避免算法2.3、快重传算法和快恢复算法2.4、练习 三、TCP拥塞控制与网际层拥塞控制总结 前言 TCP协议中的流量和拥塞是两个关键的控制指标两者的侧重点也是不一样的
流量控制侧重于控制点对点通信中发送方与接收方的流量保证发送方的发送速率不高于接收方的接收速率避免接收方的缓存溢出。拥塞控制侧重于控制全局网络中的主机路由器按照拥塞控制算法自行控制发送速率。防止过多的数据注入到网络中使网络可以承受现有的负荷。
一、TCP流量控制 流量控制的目的是为了避免发送方的发送速率高于接收方的接收速率具体是接收方根据自己的接收能力控制发送方的发送速率。 控制手段则是通过发送方的发送窗口swnds:send和接收方的接收窗口rwndr:receive。
1.1、案例三次流量控制 TCP流量控制的过程假设我有A和B两台主机A是发送方B是接收方。那么在建立连接时B应该通知A自己的接收窗口是多少A相应地将自己的发送窗口也设置相同的大小 A发送出第一个报文段对应的是1-100 A发送出第二个报文段对应的是101-200 发送第三个报文段丢失 主机B给主机A发送累计确认报文段对seq为201之前的数据进行累计确认 在累计确认的同时接收方通知发送方自己的rwnd大小发生了变更则发送方在将自己发送数据的滑动窗口向前滑动时也要将自己的swnd同步变更当前的rwnd和滑动窗口如图所示这是第一次流量控制的体现 随后发送301~500的数据。 201到300的重传计时器超时了主机A将其重新封装成一个TCP报文段进行发送主机B发送一个确认报文段同时调整自身的接收窗口为100 这是第二次流量控制的体现 最后发送501~600的数据并且接收方进行确认并进行最后一次流量控制将rwnd设置为0表示不再接受数据有可能是因为接收方的缓存区已满。 上述的过程就是一次完整的流量控制。
1.2、持续计时器 接着上面的案例假设最后一次流量控制之后接收方B处理完成了数据缓存区又有了空间准备继续接收发送方A的数据这时B需要再次对A进行流量控制将自身的rwnd调整至300 但是消息在发送的过程中丢失了那么就会出现A一直等待B的非零窗口通知B一直等待A发送消息造成通信死锁的情况。 为了解决这样的问题TCP给每一个连接都设置了一个持续计时器并且规定即使接收窗口值为0也必须接受零窗口探测报文段确认报文段以及携带有紧急数据的报文段 二、TCP拥塞控制 网络拥塞问题是指网络中传输的数据过多超过了网络设备如路由器、交换机或链路的处理能力导致网络性能下降的现象。就像高峰期的马路
如果车数据包太多马路网络就会堵堵车后不仅原来开的慢新车也进不来严重时还可能发生车辆回退丢包、绕路重传甚至“交通瘫痪”网络崩溃。 如果不加以控制导致的就是整个网络的崩溃类似于微服务的雪崩。 拥塞控制的基本方法分为开环控制和闭环控制
开环控制侧重于从设计的角度避免出现拥塞的问题前提是要提前知道进行控制的网络的参数和流量。闭环控制侧重于从运行时的角度避免拥塞的问题即对于网络进行监控及时接受反馈并且调整。 闭环控制又可以分为显式控制算法和隐式控制算法
显式控制算法指的是路由器向源点反馈网络的拥塞状态即路由器拥塞丢弃IP数据报并且通知源站通知同样需要利用网络通信通知的行为可能会造成网络更加拥堵。可以在路由器的转发分组中保留一个字段该字段的值表示网络的拥塞状态。隐式控制算法指的是源站点自己对网络的指标进行观察判断网络是否发生拥塞。TCP使用的就是隐式控制算法。 2.1、拥塞控制的指标 对于发送方而言指标有发送窗口swnds:send拥塞窗口cwndc:crowded对于接收方而言指标有接收窗口rwndr:reveive 只有序号落入swnd的数据发送方才可以进行发送swnd的取值是cwnd和rwnd的最小值。 rwnd用于控制流量cwnd用于控制拥塞
2.2、慢开始算法和拥塞避免算法 慢开始算法和拥塞避免算法通常配合使用这里加入了一个ssthresh慢开始门限的指标 使用慢开始算法和拥塞避免算法组合时首先运用的是慢开始算法将cwnd进行逐次指数累加直到到达ssthresh的值 然后改用拥塞避免算法每个轮次cwnd的值只能 1而不像慢开始算法可以指数增长当发生了重传和报文段丢失的情况说明网络中出现了拥塞就需要调整拥塞窗口cwnd和ssthresh的值然后重新执行慢开始算法。
ssthresh的值调整为发生拥塞时拥塞窗口cwnd值的一半。cwnd的值重置为1。 最终的曲线如下
2.3、快重传算法和快恢复算法 快重传算法和快恢复算法是对于慢开始算法和拥塞避免算法的改进。因为后者可能会存在一个问题也就是如果路由器是因为请求出现了误码才将其丢弃**非网络出现拥塞**源站是无法判断这种情况的会将cwnd的值重置为1重新开始降低了效率。 快重传算法的目的是让发送方尽快知道TCP报文段的丢失从而尽快地进行重新传输就要求接收方在收到消息后立刻进行ack。 如下图如果TCP没有接收到3号报文段就会在后续报文段到达时**发送对未收到报文段的重复确认。**当发送方接收到3次重复确认后就对丢失的报文进行立刻重传接收方在接收到M4后发现M3并没有接收到于是重复确认M2重复确认M2到达3次后发送方立刻重传M2 当发送方接收到3次重复确认后同时也会执行快恢复算法 拥塞避免算法
ssthresh的值调整为cwnd值的一半。cwnd的值调整为cwnd值的一半。 最终的曲线如下图
2.4、练习 这道题的答案是C。拥塞窗口为16KB时发生了超时那么此时的指标
ssthresh16/2 8cwnd1 然后重新使用慢开始算法
RTTcwnd122438到达了ssthresh转换为拥塞避免算法48 1 9 这道题的答案是A。同样地拥塞窗口为8KB时发生了超时那么此时的指标
ssthresh8/2 4cwnd1 然后重新使用慢开始算法
RTTcwnd1224到达了ssthresh转换为拥塞避免算法354657……1012 这一题比上一题多了一个考察点发送窗口swnd 是 rwnd 和 cwnd 的较小值。 min12,10 10。 这道题的答案选A
三、TCP拥塞控制与网际层拥塞控制 与运输层TCP拥塞控制相关的是网际层路由器对于IP数据报的丢弃策略。由于路由器的缓存队列是标准的“先进先出”的结构队列已满则会丢弃最后的元素。 当多个发送行为触发尾部丢弃时这些发送方都会进入慢开始状态称为全局同步会导致同一时刻网络流量的骤降以及之后的持续增高。 为了避免这样的问题提出了主动队列管理的概念其核心思想在于避免出现路由器缓存队列已满的情况当队列长度达到某个阈值时就触发丢弃策略
总结