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的机器去控制大小的,而CWND则会受到网络相关的设备限制(电缆、路由器那些)。

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

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

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

一、进程之间的通信分为有连接无连接两种方式。有连接方式需要先建立连接,然后进行数据传输,传输完成后再释放连接。无连接方式则不需要建立连接,直接进行数据传输。 二、UDP协议是一种无连接的传输协议,数据传输前不需要建立连接,也不保证数据传输的可靠性。UDP首部数据格式包括源端口、目的端口、长度校验等字段。 三、TCP协议是一种面向连接的传输协议,数据传输前需要先建立连接,并保证数据传输的可靠性。TCP首部数据格式包括源端口、目的端口、序号、确认号、数据偏移、标志位、窗口大小、校验等字段。MSS是指TCP报文段中的最大数据段长度。 四、TCP可靠传输是通过滑动窗口实现的,滑动窗口是指接收端发送端的缓存区大小。滑动窗口向前滑动的条件是接收端已经成功接收到一部分数据。滑动窗口大小两个窗口rwndcwnd)的关系是发送端的窗口大小不能超过接收端的窗口大小。RTO是指重传超时时间,是根据网络延迟丢包率等因素计算得出的一个时间值。 五、TCP流量控制是通过接收端的rwnd窗口实现的,rwnd窗口大小表示接收端的缓存区大小。发送端的数据大小不能超过接收端的rwnd窗口大小。 六、TCP拥塞控制是为了避免网络拥塞而采取的一系列措施,包括满开始拥塞避免两个阶段。在满开始阶段,发送端的cwnd窗口大小为1,每次传输一个数据包。在拥塞避免阶段,发送端逐渐增加cwnd窗口大小,以适应网络负载。 七、TCP连接管理采用三次握手过程。客户端向服务端发送一个SYN包,服务端回复一个SYN+ACK包,最后客户端回复一个ACK包,建立连接。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值