TCP发送窗口 接纳窗口以及其上班原理

  • 电脑网络维修
  • 2024-11-15

下面的图表是从发送方的角度拍摄的快照。咱们可以将数据分为4组:

第3类也称为可用窗口,由于这是发送方可以经常使用的窗口。

发送窗口包含黄色和绿色局部。这些字节要么曾经被发送,要么可以被发送。

1*OqqxQKu4ZGasXzIlUZ9lyw.png

可用窗口在发送方发送了21-25字节并经常使用了可用窗口中的一切字节时或者为空。发送窗口坚持不变。

1*JdTCgvYpVPRDcLyVb8Rwsg.png

当发送方接纳到16-19字节确实认时,发送窗口向右滑动4个字节。队列中的接上去的字节会有一个降级的可用窗口。

1*9zFu_scvenahSK6m-khSjw.png

一些定义可以协助咱们更好地理解本文前面的复杂状况:

1*IYBc3_OiPWAZ7JCvIaktkA.png

基于这些定义,咱们可以用以下公式示意可用窗口的大小。

接纳窗口

1*SbgJAvyVKyXYvPLuoBbGtA.png

接纳窗口分为3个类别:

第2类被称为接纳窗口,也可以称为RCV.WND。

与发送窗口相似,有一个指针RCV.NXT,示意接纳窗口的第一个字节。

1*u3KoxvVK-rrM1g4gX6fbZQ.png

接纳窗口并非静态。假设主机运转得高效,接纳窗口可以扩展。否则,它或者会增加。

接纳方经过在TCP段头中的窗口字段中批示大小来传播其接纳窗口。当发送方收到它时,这个窗口大小就成为了可用窗口。

发送和接纳段须要期间。因此,接纳窗口在特定时辰不等于可用窗口。

简化的示例

让咱们模拟一次性恳求和照应,以更好地理解滑动窗口的上班原理。

有两个修正简化了咱们的计算。

1*sAF4A2TyNeItzw2yK0xI9g.png

下面是一个显示了10个步骤示例的图表。

客户端恳求一个资源,主机以三个段照应它:

每一方都可以同时是发送方和接纳方。

咱们假定客户端的发送窗口(SND.WND)为300字节,接纳窗口(RCV.WND)为150字节。因此,主机的SND.WND为150字节,RCV.WND为300字节。

1*cU9TEaEoezDwvw__3G1DFw.png

这是客户端的起始形态。

咱们假定它之前曾经从主机接纳了300字节,因此RCV.NXT指向301。

由于它还没有发送任何内容,SND.UNA和SND.NXT都指向1。

1*IYBc3_OiPWAZ7JCvIaktkA.png

依据这个公式,客户端的可用窗口大小是1 + 300 - 1 = 300。

1*kfa6ZdhSR_VJggJ2abUSAQ.png

这是主机的起始形态,反映了另一侧的形态。

由于它曾经发送了300字节,SND.UNA和SND.NXT都指向301。

由于客户端还没有发送任何恳求,RCV.NXT指向1。

主机的可用窗口是301 + 150 - 301 = 150。

如今,第1步开局了。

客户端发送了第一个100字节的恳求。在这一刻,窗口出现了变动。

可用窗口变为1 + 300 - 101 = 200。

1*ug0laVIMWQ3HGG-kPjZ0KA.png

在第2步,咱们关注了主机。

可用窗口变为301 + 150 - 351 = 100。

1*GAZqLwbVGj2yqUnm5DyI4w.png

移动到客户端。

可用窗口变为101 + 300 - 101 = 300。

1*50UitYxS9XW3N4XV2Z7tOg.png

再次移动到主机的一端。

可用窗口是100字节。主机可以发送80字节的段。

可用窗口变为301 + 150 - 431 = 20。

1*soNJeyvqRj0zqDDrtBL9Fg.png

客户端接纳了文件的第一局部并立刻发送了ACK。

可用窗口坚持在300。

1*QJKwuY3HvslR9601ZRWCxA.png

此时,主机在发送第2步时接纳到ACK时。

1*thuJ7lCYqreqxsL8nMz_ag.png

在第4步中,主机发送了文件的第一个80字节局部,并再次收到了ACK确认。

可用窗口的计算变为431 + 150 - 431 = 150。

1*8sS5S0OkW0I2Vbp40nkkZQ.png

在第8步,主机发送了文件的第二局部,共100字节。

可用窗口的计算变为431 + 150 - 531 = 50。

1*qXP9BCX80vPpkplc5utP6Q.png

接上去,轮到客户端。

可用窗口坚持不变。

1*LkQ7tG-_1XQROjOZ3vTC9g.png

最后,主机接纳了前一个照应的ACK。

可用窗口的计算变为531 + 150 - 531 = 150。

当窗口出现变动

在之前,咱们假定发送窗口和接纳窗口坚持不变。但在实践状况中,这个假定是不正确的,由于两个窗口中的字节存在于操作系统缓冲区中,而缓冲区中的可用空间可以调整。当咱们的运行程序不可极速读取缓冲区中的字节时,可用空间会减小。

让咱们看看窗口出现变动的状况,以及它如何影响可用窗口。

1*qyjkUdkAdsfrkRkqVlPClw.png

为了简化,本例重点关注客户端的可用窗口。在这个示例中,客户端一直是发送方,主机是接纳方。

1*u3KoxvVK-rrM1g4gX6fbZQ.png

当主机发送ACK时,它还包含了降级后的窗口大小。

1*pkiC_TWGpIZF3aSPOz6lcA.png

一开局,客户端发送了一个150字节的恳求。

1*zs4VuHChJJ-7vWFmXyr8Ug.png

当主机接纳恳求时,运行程序读取了前50字节,剩下的100字节依然在缓冲区中,从接纳窗口中占用了100字节的可用空间。因此,接纳窗口增加到了200字节。

接上去,主机发送了一个带有降级后的200字节接纳窗口的ACK。

1*SZDl6q22CB6kzY3P-CCHFA.png

客户端接纳ACK并将其发送窗口大小降级为200。

此时,可用窗口与发送窗口相反,由于一切150字节都已获取确认。

1*6gKYyaDUdOQSEGfHh6SWdA.png

再次,客户端发送了另一个200字节的恳求,经常使用了可用窗口中的一切可用空间。

1*uJiRzHmdV4kT8lPW62bz0g.png

在主机接纳了这200字节之后,运行程序依然运转缓慢,总共只读取了70字节,将280字节留在缓冲区中。这造成接纳窗口再次增加,如今只剩下20字节。

在ACK信息中,主机与客户端分享了降级后的窗口大小。

1*xnUjR-R45hPoGO7qhvCHKg.png

再次,客户端在收到ACK后将其发送窗口降级为20字节,可用窗口也变为20字节。

在这种状况下,假设没有更多来自主机的信息,客户端将中止发送大于20字节的恳求,直到在后续信息中收到另一个窗口降级。

那么,假设没有更多信息来自主机,咱们会被困在20字节的可用窗口吗?

不会。为了防止这种状况,客户端的TCP活期检测窗口大小。

一旦监禁更多的空间,

可用窗口就会扩展,可以发送更多的数据。

关键内容

  • 关注微信
上一篇:什么是Wi

本网站的文章部分内容可能来源于网络和网友发布,仅供大家学习与参考,如有侵权,请联系站长进行删除处理,不代表本网站立场,转载联系作者并注明出处:https://www.duobeib.com/diannaowangluoweixiu/8622.html

猜你喜欢

热门标签

洗手盆如何疏浚梗塞 洗手盆为何梗塞 iPhone提价霸占4G市场等于原价8折 明码箱怎样设置明码锁 苏泊尔电饭锅保修多久 长城画龙G8253YN彩电输入指令画面变暗疑问检修 彩星彩电解除童锁方法大全 三星笔记本培修点上海 液晶显示器花屏培修视频 燃气热水器不热水要素 热水器不上班经常出现3种处置方法 无氟空调跟有氟空调有什么区别 norltz燃气热水器售后电话 大连站和大连北站哪个离周水子机场近 热水器显示屏亮显示温度不加热 铁猫牌保险箱高效开锁技巧 科技助力安保无忧 创维8R80 汽修 a1265和c3182是什么管 为什么电热水器不能即热 标致空调为什么不冷 神舟培修笔记本培修 dell1420内存更新 青岛自来水公司培修热线电话 包头美的洗衣机全国各市售后服务预定热线号码2024年修缮点降级 创维42k08rd更新 空调为什么运转异响 热水器为何会漏水 该如何处置 什么是可以自己处置的 重庆华帝售后电话 波轮洗衣机荡涤价格 鼎新热水器 留意了!不是水平疑问! 马桶产生了这5个现象 方便 极速 邢台空调移机电话上门服务 扬子空调缺点代码e4是什么疑问 宏基4736zG可以装置W11吗 奥克斯空调培修官方 为什么突然空调滴水很多 乐视s40air刷机包 未联络视的提高方向 官网培修 格力空调售后电话 皇明太阳能电话 看尚X55液晶电视进入工厂形式和软件更新方法 燃气热水器缺点代码

热门资讯

关注我们

微信公众号