滑动窗口RWND 和 拥塞窗口 CWND的区别

参考文章:「What is CWND and RWND?」

文章如有错误,希望指正,共同学习


RWND (Receiver Window) 滑动窗口:

滑动窗口技术是TCP的流量控制的核心,存在于TCP的Header中,主要用于并发处理网络seq;

在不使用窗口之前,TCP的Sender和Receiver收发的数据包总是一一对应,并且按序执行,即假设存在5个包,sender发送包1必须收到Receiver的ack才能继续发送包2,否则只有忙等。但是滑动窗口的存在则是允许我们Sender按照Receiver的允许大小,一次按序传递seq,而不用等到某个ack回来才能发新的数据包。即可以按序发送1、2、3、4、5 五个包,然后等对方回复对应ACK即可。

Receiver Window的是动态改变的,随着Sender每次发送seq的时候,Receiver都会根据当前机器的执行效率和缓存上限、当前缓存大小得出一个合适的Window Size,并且随着Ack回传到Sender。Sender在下次发送数据包的时候,就可以根据新的窗口大小去发送数据了。

可以说RWND是为了并发seq存在的一个缓存技术,一般是Receiver端去维护可行的大小,并且和计算机本身CPU的处理速度有关。


CWND(Congestion Window)拥塞窗口:

在TCP的拥塞处理-慢启动上面提出了Congestion Window拥塞窗口,与RWND还是存在不少的差别。

Congestion Window最大的一个区别在于控制网络速度,即控制的是一次能收发多少个seq,你可以理解他是一个限速,好比一个网络限速,他也不是一个"缓存"的存在,虽然他的名字叫Window…

而且Congestion Window的出现,一般都是出现网络拥塞发生的时候;即可能因为收发双发的缓存已经开始写满溢出了,这时候开始引起网络丢包、重传、降低数据传输的吞吐量、性能下降甚至出现"网络风暴"。

Congestion Window是通过慢启动的方式逐渐按照算法去增长,并且一直往RWND的大小去靠近,或者直到这个CWND的大小达到了网络的峰值。这里看也可以得出RWND可能会比CWND大得多,毕竟RWND是通过Receiver的机器去控制大小的,而CRND则会受到网络相关的设备限制(电缆、路由器那些)。

但是TCP层面的收发速率,确实是会取决于CWND和RWND的最小值(很大程度上取决于CWND,因为RWND一般都比较大),这个还是比较容易理解。

同时CWND是由发送端去维护,根据慢启动的处理,CWND的大小是会根据RTT(segment片段从sender发送到Receiver,并且Receiver回ACK到Sender,并且Sender收到ACK的一个时间差)采样实现动态变化;

当网络畅通的时候能快速达到峰值;当网络慢的时候,又可以通过拥塞避免、拥塞发生、快速恢复等手段降低CWND的大小,减少数据包的发送,避免网络风暴。当网络比较畅通的时候,将窗口又按照算法快速控制到最大值,从而提高网络发送效率。

TCP中 滑动窗口RWND 和 拥塞窗口 CWND的区别相关推荐

  1. TCP的三个窗口:发送窗口swnd、接收窗口rwnd、拥塞窗口cwnd

    在文章TCP滑动窗口协议与流量控制中,我们已经理解了滑动窗口(发送窗口swnd和接收窗口rwnd). 在发送端TCP通过发送窗口提高分组报文的传输效率,同时TCP也要求发送端维护一个接收窗口(rwnd ...

  2. tcp发送窗口(滑动窗口)、拥塞窗口

    TCP发送窗口拥塞窗口试题分析 题目一: 来源2015年408计算机综合 试题链接:https://www.nowcoder.com/questionTerminal/3241441c88f04ab5 ...

  3. TCP的滑动窗口与拥塞窗口

    因此我们先了解一下16位的窗口大小究竟有什么作用. 窗口分为滑动窗口和拥塞窗口. 滑动窗口是接受数据端使用的窗口大小,用来告知发送端接收端的缓存大小,以此可以控制发送端发送数据的大小,从而达到流量控制 ...

  4. Linux_网络_传输层协议 TCP通信滑动窗口(快重传),流量控制,拥塞控制(慢启动),延迟应答,捎带应答,TCP常见问题(字节流,粘包),Listen半连接队列

    紧跟Linux_网络_传输层协议 TCP/UDP继续补充 文章目录 1. TCP通信时滑动窗口(效率) 2. 流量控制(可靠性) 3. 拥塞控制(慢启动) 4. 延迟应答 5. 捎带应答(提高通信效率 ...

  5. RFC2861 TCP 拥塞窗口检验

    组织:中国互动出版网(http://www.china-pub.com/) RFC文档中文翻译计划(http://www.china-pub.com/compters/emook/aboutemook ...

  6. 【计算机网络】2、TCP:四次挥手与TIME_WAIT、shutdown() 优雅关闭 server、探活、拥塞窗口与 Nagle 算法、端口占用、tcp 的流式协议、可靠性

    文章目录 六.四次挥手 与 TIME_WAIT 6.1 TIME_WAIT 的作用 6.2 TIME_WAIT 的危害和方案 七.server 用 shutdown() 优雅关闭 7.1 close( ...

  7. TCP中的流量控制和拥塞控制机制

    一. 流量控制 1. 流量控制和拥塞控制两者区别 流量控制:是端到端的控制,例如A通过网络给B发数据,A发送的太快导致B没法接收(B缓冲窗口过小或者处理过慢),这时候的控制就是流量控制,原理是通过滑动 ...

  8. 网络基础2-3(TCP协议,三次握手,四次挥手,TIME_WAIT状态的作用,TCP如何保证可靠传输,TCP连接中状态转化,滑动窗口,流量控制,快速重传,拥塞窗口,延迟应答,捎带应答,粘包问题)

    TCP协议 TCP协议概念 TCP全称为 "传输控制协议(Transmission Control Protocol"). 人如其名, 要对数据的传输进行一个详细的控制 TCP协议 ...

  9. linux tcp限流脚本,TCP通过滑动窗口和拥塞窗口实现限流,能抵御ddos攻击吗

    tcp可以通过滑动窗口和拥塞算法实现流量控制,限制上行和下行的流量,但是却不能抵御ddos攻击. 限流只是限制访问流量的大小,是无法区分正常流量和异常攻击流量的. 限流可以控制本软件或者应用的流量大小 ...

  10. TCP报文、滑动窗口、拥塞窗口解释

    部分参考:https://blog.csdn.net/zhangdaisylove/article/details/47294315 源端口号:占2个字节,就是发起方的port 目的端口号:占两个字节 ...

最新文章

  1. 2021世界上“最猎奇”“最难的”六大编程语言
  2. 充电类型一二次检测过程及充电类型
  3. html5点击显示展开列表,HTML5 - 如何折叠和展开复杂的表格元素
  4. spark属性配置的优先级
  5. Flask框架(SQLAlchemy(python3版本)中添加数据 )
  6. Java Web托管选项流程图
  7. Intel 64/x86_64/IA-32/x86处理器 - 指令格式(7) - 80386/32位指令格式概述
  8. video标签 api
  9. mysql数据库的远程访问_mysql数据库远程访问设置方法
  10. Nature 子刊重磅:腾讯与钟南山团队发布新冠危重症 AI 预测模型 Cox
  11. 数据库 设计中的英文术语
  12. 14-2 正则表达式
  13. win10计算机变成了英文,win10变成英文【处理方法】
  14. redis集群原理面试回答
  15. tfrecord 训练时报错 DataLossError corrupted record at 12
  16. 8.5 Polytopes (多面体)
  17. Linux新手入门之基础命令操作
  18. 解决锚点定位刷新页面的问题
  19. webView加载白屏
  20. 思科无线认证服务器,思科服务器认证配置

热门文章

  1. 网易网盘关停!云端2T的“资源包、小电影”谁来守护?
  2. Vim编辑器快速上手
  3. 在夜神模拟器内部安装App
  4. 学计算机的该不该参加培训机构
  5. Flex 加载Base64编码的二进制字符串图片
  6. 系统集成项目管理师 高项论文 项目进度管理
  7. 2019 CSP-S第二轮认证一等奖获奖名单
  8. 宝塔面板无法卸载php,宝塔面板如何卸载
  9. 统一社会信用代码、纳税人识别号验证规则
  10. 网易云音乐接口大全(亲测可用)