您当前的位置:首页 > 电脑百科 > 网络技术 > 网络技术

TCP发送窗口、接收窗口以及其工作原理

时间:2023-11-13 13:39:34  来源:微信公众号  作者:小技术君
可用窗口的计算是理解TCP滑动窗口的关键,要了解可用窗口的计算,我们需要理解三个指针——SND.UNA、SND.NXT和RCV.NXT。

TCP发送窗口、接收窗口以及其工作原理

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

  • 已发送并已确认的字节(蓝色)
  • 已发送但尚未确认的字节(黄色)
  • 未发送但接收方准备好接收的字节(绿色)
  • 未发送且接收方未准备好接收的字节(灰色)

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

发送窗口包括黄色和绿色部分。这些字节要么已经被发送,要么可以被发送。

TCP发送窗口、接收窗口以及其工作原理

1*OqqxQKu4ZGasXzIlUZ9lyw.png

可用窗口在发送方发送了21-25字节并使用了可用窗口中的所有字节时可能为空。发送窗口保持不变。

TCP发送窗口、接收窗口以及其工作原理

1*JdTCgvYpVPRDcLyVb8Rwsg.png

当发送方接收到16-19字节的确认时,发送窗口向右滑动4个字节。队列中的接下来的字节会有一个更新的可用窗口。

TCP发送窗口、接收窗口以及其工作原理

1*9zFu_scvenahSK6m-khSjw.png

一些定义可以帮助我们更好地理解本文后面的复杂情况:

  • SND.WND,表示发送窗口
  • SND.UNA,表示发送未确认指针,指向发送窗口的第一个字节
  • SND.NXT,表示发送下一个指针,指向可用窗口的第一个字节

TCP发送窗口、接收窗口以及其工作原理

1*IYBc3_OiPWAZ7JCvIaktkA.png

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

接收窗口

TCP发送窗口、接收窗口以及其工作原理

1*SbgJAvyVKyXYvPLuoBbGtA.png

接收窗口分为3个类别:

  • 已接收并已确认的字节
  • 尚未接收但发送方允许发送的字节
  • 尚未接收且发送方可能不允许发送的字节

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

与发送窗口类似,有一个指针RCV.NXT,表示接收窗口的第一个字节。

TCP发送窗口、接收窗口以及其工作原理

1*u3KoxvVK-rrM1g4gX6fbZQ.png

接收窗口并非静态。如果服务器运行得高效,接收窗口可以扩展。否则,它可能会缩小。

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

发送和接收段需要时间。因此,接收窗口在特定时刻不等于可用窗口。

简化的示例

让我们模拟一次请求和响应,以更好地理解滑动窗口的工作原理。

有两个修改简化了我们的计算。

  • 我们忽略了最大段大小(MSS)。MSS根据所选的网络路由而变化。
  • 我们使接收窗口等于可用窗口,而且在整个过程中都保持不变。

TCP发送窗口、接收窗口以及其工作原理

1*sAF4A2TyNeItzw2yK0xI9g.png

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

客户端请求一个资源,服务器以三个段响应它:

  • 50字节的头部
  • 80字节的正文部分1
  • 100字节的正文部分2

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

我们假设客户端的发送窗口(SND.WND)为300字节,接收窗口(RCV.WND)为150字节。因此,服务器的SND.WND为150字节,RCV.WND为300字节。

TCP发送窗口、接收窗口以及其工作原理

1*cU9TEaEoezDwvw__3G1DFw.png

这是客户端的起始状态。

我们假设它之前已经从服务器接收了300字节,因此RCV.NXT指向301。

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

TCP发送窗口、接收窗口以及其工作原理

1*IYBc3_OiPWAZ7JCvIaktkA.png

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

TCP发送窗口、接收窗口以及其工作原理

1*kfa6ZdhSR_VJggJ2abUSAQ.png

这是服务器的起始状态,反映了另一侧的状态。

因为它已经发送了300字节,SND.UNA和SND.NXT都指向301。

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

服务器的可用窗口是301 + 150 - 301 = 150。

现在,第1步开始了。

客户端发送了第一个100字节的请求。在这一刻,窗口发生了变化。

  • 这100字节已发送但尚未确认。因此,SND.NXT向右滑动了100字节。
  • 其他指针保持不变。

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

TCP发送窗口、接收窗口以及其工作原理

1*ug0laVIMWQ3HGG-kPjZ0KA.png

在第2步,我们关注了服务器。

  • 当服务器接收到请求时,RCV.NXT向右滑动了100字节。
  • 然后发送了带有ACK的50字节响应。这50字节已发送但尚未确认,所以SND.NXT向右移动了50个字节。
  • SND.UNA保持不变。

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

TCP发送窗口、接收窗口以及其工作原理

1*GAZqLwbVGj2yqUnm5DyI4w.png

移动到客户端。

  • 当客户端接收到50字节的响应时,RCV.NXT向右滑动了50字节。
  • 当它收到前面发送的100字节的ACK时,SND.UNA向右滑动。
  • 由于客户端没有发送任何数据,SND.NXT保持不变。

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

TCP发送窗口、接收窗口以及其工作原理

1*50UitYxS9XW3N4XV2Z7tOg.png

再次移动到服务器的一端。

可用窗口是100字节。服务器可以发送80字节的段。

  • SND.NXT向右滑动了80个字节。
  • 由于前面的50字节尚未确认,SND.UNA保持不变。
  • 由于服务器未接收任何数据,RCV.NXT保持不变。

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

TCP发送窗口、接收窗口以及其工作原理

1*soNJeyvqRj0zqDDrtBL9Fg.png

客户端接收了文件的第一部分并立即发送了ACK。

  • 当客户端接收到80字节的数据时,RCV.NXT向右滑动。
  • 其他指针保持不变。

可用窗口保持在300。

TCP发送窗口、接收窗口以及其工作原理

1*QJKwuY3HvslR9601ZRWCxA.png

此时,服务器在发送第2步时接收到ACK时。

  • 当服务器发送50字节的响应时,SND.UNA向右滑动了50个字节。
  • 其他指针保持不变。

TCP发送窗口、接收窗口以及其工作原理

1*thuJ7lCYqreqxsL8nMz_ag.png

在第4步中,服务器发送了文件的第一个80字节部分,并再次收到了ACK确认。

  • SND.UNA(已确认序列号)向右移动了80个字节。
  • 其他指针保持不变。

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

TCP发送窗口、接收窗口以及其工作原理

1*8sS5S0OkW0I2Vbp40nkkZQ.png

在第8步,服务器发送了文件的第二部分,共100字节。

  • SND.NXT(下一个要发送的序列号)向右移动了100个字节。
  • 其他指针保持不变。

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

TCP发送窗口、接收窗口以及其工作原理

1*qXP9BCX80vPpkplc5utP6Q.png

接下来,轮到客户端。

  • RCV.NXT(下一个要接收的序列号)在客户端接收100字节后向右移动了100个字节。
  • 其他指针保持不变。

可用窗口保持不变。

TCP发送窗口、接收窗口以及其工作原理

1*LkQ7tG-_1XQROjOZ3vTC9g.png

最后,服务器接收了前一个响应的ACK。

  • SND.UNA向右移动了100个字节。
  • 其他指针保持不变。

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

当窗口发生变化

在之前,我们假设发送窗口和接收窗口保持不变。但在实际情况中,这个假设是不正确的,因为两个窗口中的字节存在于操作系统缓冲区中,而缓冲区中的可用空间可以调整。当我们的应用程序无法快速读取缓冲区中的字节时,可用空间会减小。

让我们看看窗口发生变化的情况,以及它如何影响可用窗口。

TCP发送窗口、接收窗口以及其工作原理

1*qyjkUdkAdsfrkRkqVlPClw.png

为了简化,本例重点关注客户端的可用窗口。在这个示例中,客户端始终是发送方,服务器是接收方。

TCP发送窗口、接收窗口以及其工作原理

1*u3KoxvVK-rrM1g4gX6fbZQ.png

当服务器发送ACK时,它还包括了更新后的窗口大小。

TCP发送窗口、接收窗口以及其工作原理

1*pkiC_TWGpIZF3aSPOz6lcA.png

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

  • 这150字节已发送但尚未得到确认。
  • 可用窗口缩小为150字节。
  • 发送窗口保持在300字节。

TCP发送窗口、接收窗口以及其工作原理

1*zs4VuHChJJ-7vWFmXyr8Ug.png

当服务器接收请求时,应用程序读取了前50字节,剩下的100字节仍然在缓冲区中,从接收窗口中占用了100字节的可用空间。因此,接收窗口缩小到了200字节。

接下来,服务器发送了一个带有更新后的200字节接收窗口的ACK。

TCP发送窗口、接收窗口以及其工作原理

1*SZDl6q22CB6kzY3P-CCHFA.png

客户端接收ACK并将其发送窗口大小更新为200。

此时,可用窗口与发送窗口相同,因为所有150字节都已得到确认。

TCP发送窗口、接收窗口以及其工作原理

1*6gKYyaDUdOQSEGfHh6SWdA.png

再次,客户端发送了另一个200字节的请求,使用了可用窗口中的所有可用空间。

TCP发送窗口、接收窗口以及其工作原理

1*uJiRzHmdV4kT8lPW62bz0g.png

在服务器接收了这200字节之后,应用程序仍然运行缓慢,总共只读取了70字节,将280字节留在缓冲区中。这导致接收窗口再次缩小,现在只剩下20字节。

在ACK消息中,服务器与客户端分享了更新后的窗口大小。

TCP发送窗口、接收窗口以及其工作原理

1*xnUjR-R45hPoGO7qhvCHKg.png

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

在这种情况下,如果没有更多来自服务器的消息,客户端将停止发送大于20字节的请求,直到在后续消息中收到另一个窗口更新。

那么,如果没有更多消息来自服务器,我们会被困在20字节的可用窗口吗?

不会。为了避免这种情况,客户端的TCP定期检测窗口大小。

一旦释放更多的空间,

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

主要内容

  • 可用窗口的计算是理解TCP滑动窗口的关键。
  • 要了解可用窗口的计算,我们需要理解3个指针——SND.UNA、SND.NXT和RCV.NXT。
  • 假设窗口大小永远不会改变可以帮助我们理解整个过程。


Tags:TCP   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
从零开始了解网络协议:TCP/IP详解
从零开始了解网络协议:TCP/IP详解 在当今数字化的时代,网络协议已经成为我们生活中不可或缺的一部分。作为互联网的基础,网络协议规定了数据如何在不同的网络设备之间传输。TC...【详细内容】
2024-02-01  Search: TCP  点击:(59)  评论:(0)  加入收藏
从零开始学习Python网络编程:探索TCP协议与实例演示!
Python 是一种高级的编程语言,拥有广泛的网络编程库。这些库允许 Python 开发者能够使用 TCP 和其他网络协议进行通信。在本文中,我们将探讨 TCP 协议,并通过一个简单的例子来...【详细内容】
2023-11-23  Search: TCP  点击:(219)  评论:(0)  加入收藏
TCP分段技术:克服IP和MAC层内存限制的关键
IP和MAC层在发送数据包时都面临内存受限的问题,这就导致它们对消息的长度有所限制。为了克服这个限制,TCP在将数据传递给IP层之前,需要将可变长度的字节打包成多个段,确保每个段...【详细内容】
2023-11-22  Search: TCP  点击:(235)  评论:(0)  加入收藏
TCP发送窗口、接收窗口以及其工作原理
可用窗口的计算是理解TCP滑动窗口的关键,要了解可用窗口的计算,我们需要理解三个指针——SND.UNA、SND.NXT和RCV.NXT。上面的图表是从发送方的角度拍摄的快照。我们...【详细内容】
2023-11-13  Search: TCP  点击:(350)  评论:(0)  加入收藏
Wireshark抓包分析TCP协议:三次握手和四次挥手
前言 面试中我们经常会被问到TCP协议的三次握手和四次挥手的过程,为什么总喜欢问这个问题呢? 其实我们平时使用的很多协议都是应用层协议,比如HTTP协议,https协议,DNS协议,FTP协议...【详细内容】
2023-11-01  Search: TCP  点击:(233)  评论:(0)  加入收藏
一台服务器​最大并发 TCP 连接数多少
以一道运维面试题开局:你接触过的单机最大并发数是多少?操作系统最大文件打开数是65535,服务器又是怎么做到支持10w并发的?你认为当前正常配置的服务器物理机最大并发数可以到多...【详细内容】
2023-10-04  Search: TCP  点击:(71)  评论:(0)  加入收藏
C# 如何判断某个 TCP 端口是否被占用?
在C#中使用TcpClient或者其他通用的方式建立的Socket,该如何判断这个端口是否被占用?比如下面的代码:TcpClient tc = new TcpClient(ip,port);在C#中,可以使用 System.Net.Netwo...【详细内容】
2023-09-26  Search: TCP  点击:(53)  评论:(0)  加入收藏
网络层协议详解:理解TCP/IP、HTTP、FTP等协议的功能与工作原理
在计算机网络中,网络层是计算机通讯的重要组成部分,它负责处理数据包的传输和路由,是实现网络通信的必不可少的组件之一。网络层引入了三个协议:IP协议、ARP协议和路由协议。IP...【详细内容】
2023-09-06  Search: TCP  点击:(253)  评论:(0)  加入收藏
TCP与UDP协议:网络通信中的两大重要角色
引言在这个像点点滴滴组成的虚拟宇宙中,网络通信就像是我们的超级高速公路系统,让信息在世界间飞速穿梭。想象一下,如果网络是一条繁忙的交通道路,那么协议就是交通信号灯,确保数...【详细内容】
2023-09-01  Search: TCP  点击:(229)  评论:(0)  加入收藏
TCP、UDP是如何流量、拥塞控制的?今天一口气讲透!
一、TCP TCP首部 流量控制 拥塞控制 三次握手,四次挥手 tcp 怎样保证数据正确性?流量控制是为了让接收方能来得及接收,而拥塞控制是为了降低整个网络的拥塞程度1、TCP首部源端...【详细内容】
2023-07-18  Search: TCP  点击:(252)  评论:(0)  加入收藏
▌简易百科推荐
手机就可以修改WiFi密码,进行网络提速,还能防止别人蹭网
随着网络的普及和使用频率的增加,很多人可能遇到了一些网络管理上的问题,比如忘记了WiFi密码、网络速度缓慢、或者发现有不明设备在家中蹭网。相信朋友们也曾遇到过吧?但是,你知...【详细内容】
2024-04-03  老毛桃    Tags:WiFi密码   点击:(5)  评论:(0)  加入收藏
手机WiFi信号满格却接收消息延迟?这里有妙招帮你解决!
在现代社会,手机已经成为了我们生活中不可或缺的一部分。无论是工作、学习还是娱乐,手机都扮演着重要的角色。然而,有时我们会遇到一些令人烦恼的问题,比如明明手机WiFi信号满格...【详细内容】
2024-04-03  蔡前进    Tags:手机WiFi   点击:(4)  评论:(0)  加入收藏
SASE技术应用落地的五个关键趋势
在Gartner 最新发布的《2023网络技术成熟度曲线》报告中认为,SASE技术已经开始走出最初的技术炒作期,将逐步迈向新一轮的实用落地阶段。在Gartner发布的《Hype Cycle for Ente...【详细内容】
2024-04-01    安全牛  Tags:SASE   点击:(9)  评论:(0)  加入收藏
提示“该网站安全证书存在问题,连接可能不安全”如何解决
在你输入网址并浏览网页时,如果你的浏览器弹出一个警告,提示“网站的安全证书存在问题”,或是显示一个红色的锁标志,这些都是网站不安全的警示。这些提示通常是由HTTPS协议中的S...【详细内容】
2024-03-18  倏然间    Tags:网站安全证书   点击:(8)  评论:(0)  加入收藏
如何有效排除CAN总线错误
控制器局域网(CAN)控制器局域网(CAN)是现代车辆中电子元件无缝运行的基础。在远程信息处理领域,CAN总线系统的效率至关重要,其能够实现支撑当今汽车技术的复杂功能。然而,CAN总...【详细内容】
2024-02-20    千家网  Tags:CAN   点击:(46)  评论:(0)  加入收藏
网络连接受限或无连接怎么办?这里提供几个修复办法
可能错误提示 连接受限或无连接:连接具有有限的连接或无连接。你可能无法访问Internet或某些网络资源。 连接受限。排除和解决“连接受限或无连接”错误此错误可能由计算机上...【详细内容】
2024-02-06  驾驭信息纵横科技    Tags:网络连接受限   点击:(43)  评论:(0)  加入收藏
如何将Mac连接到以太网?这里有详细步骤
在Wi-Fi成为最流行、最简单的互联网连接方式之前,每台Mac和电脑都使用以太网电缆连接。这是Mac可用端口的标准功能。如何将Mac连接到以太网如果你的Mac有以太网端口,则需要以...【详细内容】
2024-02-03  驾驭信息纵横科技    Tags:Mac   点击:(66)  评论:(0)  加入收藏
简易百科之什么是端口映射
端口映射,也称为端口转发,是一种网络通信中的技术手段,通过将内网中的一个端口上的数据流量转发到另一个端口,使得外部网络能够访问到内部网络中的特定服务。在实现上,端口映射通...【详细内容】
2024-01-26    简易百科  Tags:端口映射   点击:(153)  评论:(0)  加入收藏
ip因频繁登陆已被禁止访问 无法显示图片 怎么办
首先,我们要明白,部分网站为了有效遏制数据爬取和非法攻击,保证访问速度和普通用户查询,会在系统中增加网络安全设备,加强安全防护机制,并提前设置安全访问规则。因此,一旦用户的行...【详细内容】
2024-01-20  何福意思    Tags:ip   点击:(63)  评论:(0)  加入收藏
电脑连上wifi却上不了网怎么办
当电脑连接上 WiFi 却无法上网时,可能会让人感到困惑和沮丧。这个问题通常会有多种可能的原因,包括网络配置问题、路由器故障、无线适配器问题等。在面对这个问题时,可以尝试以...【详细内容】
2024-01-16  编程资料站    Tags:wifi   点击:(68)  评论:(0)  加入收藏
站内最新
站内热门
站内头条