TCP中 滑动窗口RWND 和 拥塞窗口 CWND的区别
滑动窗口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的区别相关推荐
- TCP的三个窗口:发送窗口swnd、接收窗口rwnd、拥塞窗口cwnd
在文章TCP滑动窗口协议与流量控制中,我们已经理解了滑动窗口(发送窗口swnd和接收窗口rwnd). 在发送端TCP通过发送窗口提高分组报文的传输效率,同时TCP也要求发送端维护一个接收窗口(rwnd ...
- tcp发送窗口(滑动窗口)、拥塞窗口
TCP发送窗口拥塞窗口试题分析 题目一: 来源2015年408计算机综合 试题链接:https://www.nowcoder.com/questionTerminal/3241441c88f04ab5 ...
- TCP的滑动窗口与拥塞窗口
因此我们先了解一下16位的窗口大小究竟有什么作用. 窗口分为滑动窗口和拥塞窗口. 滑动窗口是接受数据端使用的窗口大小,用来告知发送端接收端的缓存大小,以此可以控制发送端发送数据的大小,从而达到流量控制 ...
- Linux_网络_传输层协议 TCP通信滑动窗口(快重传),流量控制,拥塞控制(慢启动),延迟应答,捎带应答,TCP常见问题(字节流,粘包),Listen半连接队列
紧跟Linux_网络_传输层协议 TCP/UDP继续补充 文章目录 1. TCP通信时滑动窗口(效率) 2. 流量控制(可靠性) 3. 拥塞控制(慢启动) 4. 延迟应答 5. 捎带应答(提高通信效率 ...
- RFC2861 TCP 拥塞窗口检验
组织:中国互动出版网(http://www.china-pub.com/) RFC文档中文翻译计划(http://www.china-pub.com/compters/emook/aboutemook ...
- 【计算机网络】2、TCP:四次挥手与TIME_WAIT、shutdown() 优雅关闭 server、探活、拥塞窗口与 Nagle 算法、端口占用、tcp 的流式协议、可靠性
文章目录 六.四次挥手 与 TIME_WAIT 6.1 TIME_WAIT 的作用 6.2 TIME_WAIT 的危害和方案 七.server 用 shutdown() 优雅关闭 7.1 close( ...
- TCP中的流量控制和拥塞控制机制
一. 流量控制 1. 流量控制和拥塞控制两者区别 流量控制:是端到端的控制,例如A通过网络给B发数据,A发送的太快导致B没法接收(B缓冲窗口过小或者处理过慢),这时候的控制就是流量控制,原理是通过滑动 ...
- 网络基础2-3(TCP协议,三次握手,四次挥手,TIME_WAIT状态的作用,TCP如何保证可靠传输,TCP连接中状态转化,滑动窗口,流量控制,快速重传,拥塞窗口,延迟应答,捎带应答,粘包问题)
TCP协议 TCP协议概念 TCP全称为 "传输控制协议(Transmission Control Protocol"). 人如其名, 要对数据的传输进行一个详细的控制 TCP协议 ...
- linux tcp限流脚本,TCP通过滑动窗口和拥塞窗口实现限流,能抵御ddos攻击吗
tcp可以通过滑动窗口和拥塞算法实现流量控制,限制上行和下行的流量,但是却不能抵御ddos攻击. 限流只是限制访问流量的大小,是无法区分正常流量和异常攻击流量的. 限流可以控制本软件或者应用的流量大小 ...
- TCP报文、滑动窗口、拥塞窗口解释
部分参考:https://blog.csdn.net/zhangdaisylove/article/details/47294315 源端口号:占2个字节,就是发起方的port 目的端口号:占两个字节 ...
最新文章
- 2021世界上“最猎奇”“最难的”六大编程语言
- 充电类型一二次检测过程及充电类型
- html5点击显示展开列表,HTML5 - 如何折叠和展开复杂的表格元素
- spark属性配置的优先级
- Flask框架(SQLAlchemy(python3版本)中添加数据 )
- Java Web托管选项流程图
- Intel 64/x86_64/IA-32/x86处理器 - 指令格式(7) - 80386/32位指令格式概述
- video标签 api
- mysql数据库的远程访问_mysql数据库远程访问设置方法
- Nature 子刊重磅:腾讯与钟南山团队发布新冠危重症 AI 预测模型 Cox
- 数据库 设计中的英文术语
- 14-2 正则表达式
- win10计算机变成了英文,win10变成英文【处理方法】
- redis集群原理面试回答
- tfrecord 训练时报错 DataLossError corrupted record at 12
- 8.5 Polytopes (多面体)
- Linux新手入门之基础命令操作
- 解决锚点定位刷新页面的问题
- webView加载白屏
- 思科无线认证服务器,思科服务器认证配置