0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

超硬核TCP、UDP基础知识汇总3

jf_78858299 来源:阿Q正砖 作者:阿Q正砖 2023-02-15 09:57 次阅读

6、拥塞控制

6.1、拥塞控制概述

拥塞:当对网络资源的需求超过了现有的资源的可用部分。

拥塞出现的原因:

1.链路容量不够大,在链路上形成堆积,路由器一直是高负荷运转。

2.路由器缓存不够大,交来的数据太多远远超过了处理的速度就会在路由器缓存形成堆积,堆不下的就丢失了。

3.处理机太慢了。

网络拥塞往往是多种原因的,仅仅增加网络资源有可能适得其反。比如说增大路由器的缓存但并未增加链路带宽和处理机速度会导致排队时间更长一旦用TCP报文传输那么大量的超时重传会引发更严重的问题。提高处理机的速度也不行因为你会把巨大的压力施加给下一跳。需要耗费大量的资源。

6.2、拥塞控制与流量控制

1.流量控制是点到点的,拥塞控制是全局性网络的。

2.拥塞控制是防止过多数据注入到网络,控制发送速率这又与流量控制有些相似。

3.流量控制是发送缓存与接收缓存的问题,拥塞控制是网络的问题。

图片

6.3、拥塞控制的原理

1.开环控制方法:在设计网络时考虑发生拥塞的因素,力求网络不发生拥塞。

2.闭环控制方法:

基于反馈环路的概念:

检测网络系统以便检测到拥塞在何时何地发生;

•将拥塞发生的信息传送到可采取行动的地方;

•调整网络系统的运行已解决出现的问题。

6.4、拥塞出现的指标

1.由于缓冲区不够而造成的分组丢失的百分数。

2.平均队列长度。

3.超时重传的分组数。

4.平均分组时延。

5.平均分组时延标准差。

一旦检测到了拥塞会向源站发送拥塞信息。

6.5、拥塞通知的传递

图片

IP中tos字段00表示不支持ECN传输,01或10表示支持ECN传输,11表示产生拥塞。接收端知道产生拥塞后将TCP报文首部中的ECE置为1告诉源端减小发送速率,源端降低速率后下一次发送报文TCP中的CWR置为1降低拥塞窗口(发送窗口是受对方接收窗口和拥塞窗口控制的)。

6.6、TCP拥塞控制方法

TCP采用基于窗口的方法进行拥塞控制,该方法属于闭环控制方法。TCP发送方维持一个拥塞窗口,拥塞窗口根据网络的拥塞程度动态的变化。发送端利用拥塞窗口根据拥塞情况调整发送的数据量若网络没有拥塞则增大窗口让他多发数据提高网络利用率。所以真正发送窗口的值为接收窗口值和拥塞窗口值的最小值。

现在我们假设对方接收缓存无限大仅考虑网络问题探讨一下TCP的拥塞控制算法。

6.6.1、慢开始算法

目的:用来探测网络的负载或者承受能力。

算法思路:由小到大逐渐增大拥塞窗口,当自己主机刚连进网络时如果一下注入太多资源可能造成网络拥塞,因此循序渐进的探测网络的拥塞程度。每收到一个确认报文拥塞窗口就增加一个报文段。

图片

发送方每接收到一个确认报文就将拥塞窗口增加一个报文段。如图所示我们可以看出发送一个收到一个确认下次发两个,收到两个确认下次发2+2=4个收到4个确认下次发4+4等于8个由此可见慢开始算法并不慢。

慢开始门限ssthresh(状态变量)防止拥塞窗口cwnd增长过大引起网络拥塞。

•当cwnd

•当cwnd>sshresh,停止使用慢开始算法而使用拥塞避免方法。

•当cwnd = sshresh时既可以使用慢开始算法也可以使用拥塞避免算法。

拥塞避免算法:每经过一个RTT,cwnd = cwnd + 1,他的增长是线性的。

当出现网络拥塞时,ssthresh = max(cwnd/2,2);cwnd = 1;执行慢开始算法。

目的:迅速减少网络中的分组数,有利于路由器将积压的分组处理完。

6.6.2、拥塞控制流程

图片

•0~1执行慢开始算法拥塞窗口呈指数级增大。

•1~2达到慢开始门限时执行拥塞避免算法拥塞窗口呈线性增大。

•2~3超时重传可能出现网络拥塞执行将拥塞窗口置1重新执行慢开始算法。

•34同12

•4~5中间出现报文丢失收到3个确认报文执行快重传

图片

6.6.3、快重传

快重传算法要求接收方不要等待自己发送数据时才进行捎带确认,而是要立即发送确认,即使收到了失序的报文也要立即发出对已收到的报文段的重复确认。发送方只需要一连收到3个重复确认就立即重传这样就不会出现超时。

图片

当我发送M3时发生了报文丢失按理说我应该等超时之后再重新发送。但是这样做有可能导致误会这时候网络可能没有发生拥塞。当M3丢失后接收方发送已接收报文的重复确认即M2当M2重复确认3次M3立即重传。快重传算法可以让发送方尽早知道报文发生了丢失。这样就不会超时,就不会让对方误以为发生了拥塞。

6.6.4、快恢复算法

•当发送端收到连续3个重复确认时,发送方认为网络很可能没有发生阻塞,因此不执行慢开始算法,而是执行快恢复算法;

•ssthresh = cwnd/2;

•新拥塞窗口cwnd = ssthresh;

•开始执行拥塞避免算法,使拥塞窗口缓慢地线性增大。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 缓冲区
    +关注

    关注

    0

    文章

    33

    浏览量

    9092
  • TCP
    TCP
    +关注

    关注

    8

    文章

    1348

    浏览量

    78950
  • UDP
    UDP
    +关注

    关注

    0

    文章

    322

    浏览量

    33853
收藏 人收藏

    评论

    相关推荐

    详细的射频基础知识

    详细的射频基础知识
    发表于 11-04 09:09 2151次阅读

    基础知识汇总!!!

    基础知识汇总
    发表于 11-07 18:14

    第16章 UDP用户数据报协议基础知识

    ) 16.1 初学者重要提示 16.2 UDP基础知识参考资料 16.3 UDP基础知识点 16.4 TCP
    发表于 11-02 17:27

    TCP协议基础知识

    TCP 是互联网核心协议之一,本文介绍它的基础知识
    的头像 发表于 10-16 10:29 3589次阅读
    <b class='flag-5'>TCP</b>协议<b class='flag-5'>基础知识</b>

    tcpudp协议的异同

    UDP 校验和则是包含 UDP 首部和数据在内的校验结果。 TCP协议 TCP协议基于网络层的 IP 协议提供的是有连接、可靠服务,是基于字节流的。
    的头像 发表于 11-12 14:45 3993次阅读
    <b class='flag-5'>tcp</b>和<b class='flag-5'>udp</b>协议的异同

    半导体电子器件基础知识汇总

    半导体电子器件基础知识汇总
    发表于 04-28 09:55 0次下载

    华为EMC基础知识汇总资源下载

    华为EMC基础知识汇总资源下载
    发表于 06-04 11:10 127次下载

    传感器基础知识及特性资源汇总下载

    传感器基础知识及特性资源汇总下载
    发表于 07-18 09:36 25次下载

    硬核TCPUDP基础知识汇总1

    TCP主要特点** 1.面向连接: •TCP连接只能有两个端点,TCP连接是一对一的。 •TCP提供可靠连接服务。 •TCP
    的头像 发表于 02-15 09:57 489次阅读
    <b class='flag-5'>超</b><b class='flag-5'>硬核</b><b class='flag-5'>TCP</b>、<b class='flag-5'>UDP</b><b class='flag-5'>基础知识</b><b class='flag-5'>汇总</b>1

    硬核TCPUDP基础知识汇总2

    TCP主要特点** 1.面向连接: •TCP连接只能有两个端点,TCP连接是一对一的。 •TCP提供可靠连接服务。 •TCP
    的头像 发表于 02-15 09:57 759次阅读
    <b class='flag-5'>超</b><b class='flag-5'>硬核</b><b class='flag-5'>TCP</b>、<b class='flag-5'>UDP</b><b class='flag-5'>基础知识</b><b class='flag-5'>汇总</b>2

    硬核TCPUDP基础知识汇总4

    TCP主要特点** 1.面向连接: •TCP连接只能有两个端点,TCP连接是一对一的。 •TCP提供可靠连接服务。 •TCP
    的头像 发表于 02-15 09:57 580次阅读
    <b class='flag-5'>超</b><b class='flag-5'>硬核</b><b class='flag-5'>TCP</b>、<b class='flag-5'>UDP</b><b class='flag-5'>基础知识</b><b class='flag-5'>汇总</b>4

    TCP/UDP网络编程的基础知识合集1

    本文主要记录TCP/UDP网络编程的基础知识,采用TCP/UDP实现宿主机和目标机之间的网络通信。
    的头像 发表于 05-18 17:31 673次阅读

    TCP/UDP网络编程的基础知识合集2

    本文主要记录TCP/UDP网络编程的基础知识,采用TCP/UDP实现宿主机和目标机之间的网络通信。
    的头像 发表于 05-18 17:31 616次阅读

    TCP/UDP网络编程的基础知识合集3

    本文主要记录TCP/UDP网络编程的基础知识,采用TCP/UDP实现宿主机和目标机之间的网络通信。
    的头像 发表于 05-18 17:31 754次阅读
    <b class='flag-5'>TCP</b>/<b class='flag-5'>UDP</b>网络编程的<b class='flag-5'>基础知识</b>合集<b class='flag-5'>3</b>

    TCPUDP的基本区别

    TCPUDP基本区别 基于连接与无连接 TCP要求系统资源较多,UDP较少; UDP程序结构较简单 流模式(
    的头像 发表于 11-13 15:27 4527次阅读
    <b class='flag-5'>TCP</b>与<b class='flag-5'>UDP</b>的基本区别