oracle tcp cwnd max,关于TCP报文段以及拥塞窗口cwnd的理解纠正

关于TCP报文段以及拥塞窗口cwnd的理解纠正

@(计算机网络)

在普通的拥塞控制算法中,我们总是粗粒度的关注每个RTT拥塞窗口的变化,比如初始报文段MSS = 1KB,在慢开始阶段增长规律是1→2→4→8...

这种指数级增长的规律用着很简洁。但是直到刚刚为止我才意识到为什么是指数级,以及cwnd是如何增长的。

很多题目中告知的是对每一个段进行确认,注意是每一个段。那么确认的时候,一定告诉了当前rwnd的大小,那么这个时刻的cwnd增长不是粗粒度,而是每收到一个确认,cwnd就加一个MSS.

此外,TCP中的RTT不同于数据链路层的RTT。

数据链路层的RTT是往返时延,而TCP中的RTT是一个传输轮次。就是当前发送窗口全部发出并全部得到确认。

因此,假设当前发送窗口是4,那么全部发出再全部确认,且此时还是在慢开始阶段,就意味着一个RTT后,发送窗口大小是8.

具体过程是这样的:

第一段的确认回来了,发送窗口 = 4+1 = 5;

第二段的确认回来了,发送窗口 = 5+1 = 6;

第三段的确认回来了,发送窗口 = 6+1 = 7;

第四段的确认回来了,发送窗口 = 7+1 = 8;

所以一个比较细致的过程是对一个MSS一个MSS增长的。

而达到门限值时,一个RTT才增长一个MSS,就不是每收到一个段的确认就加一个MSS那么快了。

分析一道题目:

(2016.41)H3与主机S建立TCP连接,S的接收缓存是20KB,S对每个收到的段进行确认,并通告新的接收窗口(rwnd)。最大段长MSS = 1KB,平均往返时间RTT = 200ms。H3持续以MSS大小的段向S发送数据。拥塞窗口初始值阈值是32KB。S的接收缓存的数据只输入不取出。

(2)H3在收到第8个确认帧时,所通告的接收窗口是多少?此时H3的拥塞窗口是多少?H3的发送窗口是多少?

分析:先只关注这个题目。

如果只是粗粒度的掌握cwnd的变化曲线,那么这个问题将会陷入死胡同。只有理解到cwnd一个MSS一个MSS的增长时,才能精确解出。

这里初始时发送1KB,接收缓存收到后,确认帧告知H3: rwnd = 19.

一个RTT后发送2KB,接收缓存收到后,确认帧告知H3: rwnd = 17.

两个RTT后发送4KB,接收缓存收到后,确认帧告知H3: rwnd = 13.

注意下一次就不是以一个发送轮次计算了,因为现在接收缓存已经收到了7KB,且发送了7个确认。7个确认帧回来,每回来一个cwnd+1,回来7个就+7。当第8个段发过去时cwnd = 8,接收缓存收到第8个段并存起来,rwnd = 12,第8个确认帧发回到H3,cwnd又加1,变为9.

当然也可以直接说,每确认一个段就加1,因此8个段都确认了,就是cwnd = 1+8 = 9KB.

而发送窗口 = min(cwnd, rwnd) = min(12KB, 9KB) = 9KB.

题目会往更加细节的地步考察,因此只掌握大概的理论就是半瓶子醋,根本没用。需要仔细拓展,深化知识点间的关系。

待解决:这里说的RTT,是不是一个传输轮次,待进一步确认。

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值