首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

TCP滑动窗口

TCP滑动窗口在数据发送和接收的安全性保障要依赖于确认重传机制: RTT和RTO是确认重传机制下的两个概念 RTT:发送一个数据包到收到对应的ACK,所花费的时间 RTO:重传时间间隔,(发送端发送数据包后就设置重传时间...,重传时间内都没有接收到ACK发送端将进行重传,如果发送端接收到了ACK,则RTO失效)(RTO是由RTT计算出来的) RTO所代表的确认重传机制即是TCP数据安全性和滑动窗口数据安全性的保障....TCP使用滑动窗口做流量控制与乱序重排 保证TCP的可靠性(TCP将数据包拆成一个个报文段,不可能每次只传一个)(建立在确认重传基础上) 保证TCP的流控特性(TCP发送包会携带window,告诉对方我有多少缓存...,你计算一下你可以发多少发多快) 接收方的有效缓存计算(用于发送方评估和决定发送速率等流量控制) TCP滑动窗口机制

92630
您找到你想要的搜索结果了吗?
是的
没有找到

TCP 滑动窗口窗口缩放因子

一、前言 说道TCP滑动窗口协议,相信大家都很熟悉,但是说道 Window Scaling参数或许知道的和用过的人却不多,本文我们来谈谈Window Scaling的由来 二、TCP滑动窗口 众所周知,...另外为了跟踪已经发送了的数据在发送端有TCP发送缓存,在接受端有接受缓存,滑动窗口则是这个缓存的一部分,接收方接受数据后会把ack和当前滑动窗口可用空间告诉发送方,发送方则发送的数据不能超过接收方剩余窗口大小...如果缓冲区仍然完全填满,主机B会将其窗口大小设置为零,表明它还不能接受更多数据,这时候主机A则停止发送数据。 ? image.png 在具有高带宽和极低延迟的LAN上,滑动窗口很少会满。...但是,在高带宽,高延迟网络上,会出现一个有趣的现象:在发送方接受到接收方发出确认之前,并不能最大化利用滑动窗口大小。...可以通过修改TCP标头中的窗口字段的值来动态调整窗口大小,但是在TCP连接的持续时间内,标度乘数保持静态。仅当两端都包含选项时,缩放才有效;如果只有连接的一端支持窗口缩放,则不会在任一方向上启用它。

3K30

TCP滑动窗口原理

在我们当初学习网络编程的时候,都接触过TCP,在TCP中,对于数据传输有各种策略,比如滑动窗口、拥塞窗口机制,又比如慢启动、快速恢复、拥塞避免等。通过本文,我们将了解滑动窗口TCP中是如何使用的。...滑动窗口实现了TCP流控制。首先明确滑动窗口的范畴: TCP是双工的协议,会话的双方都可以同时接收和发送数据。 会话的双方都各自维护一个发送窗口和一个接收窗口。...下面,为了更好的理解滑动窗口TCP中的使用,我们将使用一个简单的例子进行模拟说明。 示例(大小不变) 我们模拟一个请求和响应,以更好地理解滑动窗口的工作原理。...可用窗口大小变为531 + 150 - 531 = 150。 至此,对于滑动窗口不变的示例,讲解完毕,那么对于滑动窗口大小变化的呢?在TCP中又是如果实现的呢?...为了避免这种情况,客户端的 TCP 会定期检测窗口大小。一旦释放更多空间,可用窗口就会扩大,并且可以发送更多数据。 结语 可用窗口的计算是理解TCP滑动窗口的关键。

4.4K62

速读原著-TCPIP(TCP滑动窗口)

第20章 TCP的成块数据流 20.3 滑动窗口 图2 0 - 4用可视化的方法显示了我们在前一节观察到的滑动窗口协议。 ? 在这个图中,我们将字节从 1至11进行标号。...回顾第1 7章,我们知道窗口大小是与确认序号相对应的。发送方计算它的可用窗口,该窗口表明多少数据可以立即被发送。 当接收方确认数据后,这个滑动窗口不时地向右移动。...窗口两个边沿的相对运动增加或减少了窗口大小。我们使用三个术语来描述窗口左右边沿的运动: 称窗口左边沿向右边沿靠近为窗口合拢。这种现象发生在数据被发送和确认时。...一个例子 图2 0 - 6显示了在图2 0 - 1所示的数据传输过程中滑动窗口协议的动态性。 ? 以该图为例可以总结如下几点: 发送方不必发送一个全窗口大小的数据。...来自接收方的一个报文段确认数据并把窗口向右边滑动。这是因为窗口大小是相对于确认序号的。 正如从报文段7到报文段8中变化的那样,窗口大小可以减小,但是窗口的右边沿却不能够向左移动。

70230

TCP滑动窗口机制(附图例)

也就是新增了流量控制和拥塞控制,下面博主将详细总结TCP滑动窗口机制。 一、滑动窗口的引出 TCP的确认应答策略,对每一个发送的数据段,都要给一个ACK确认应答。收到ACK后再发送下一个数据段。...接收端将自己可以接收的缓冲区大小放入 TCP 首部中的 “窗口大小” 字段,通过ACK端通知发送端; 窗口大小字段越大,说明网络的吞吐量越高; 接收端一旦发现自己的缓冲区快满了,就会将窗口大小设置成一个更小的值通知给发送端...实际上,TCP首部40字节选项中还包含了一个窗口扩大因子M,实际窗口大小窗口字段的值左移 M位; 接收窗口 = 接收缓冲区的大小 - 已用大小(接受的数据,暂时没被应用层读走) 最大发送量 = 对方的接收窗口...2.2 发送缓冲区 TCP会通过滑动窗口来控制发送量!!!!...滑动窗口是发送缓冲区上一块可以“滑动” 的窗口。 下面逐步梳理一下发送缓冲区的逻辑部分有哪些: 1.三次握手阶段,能收到对方送过来的segment,里面会带有对方的接收窗口大小

1.6K40

速读原著-TCPIP(TCP窗口大小)

第20章 TCP的成块数据流 20.4 窗口大小 由接收方提供的窗口大小通常可以由接收进程控制,这将影响 T C P的性能。...接收缓存的大小是该连接上所能够通告的最大窗口大小。有一些应用程序通过修改插口缓存大小来增加性能。...首先注意到的是在报文段 2中提供的窗口大小为6 1 4 4字节。由于这是一个较大的窗口,因此客户立即连续发送了 6个报文段(4 ~ 9),然后停止。...报文段 1 0确认了所有的数据(从第 1到6 1 4 4字节),但提供的窗口大小却为 2 0 4 8,这很可能是接收程序没有机会读取多于 2 0 4 8字节的数据。...报文段1 3包含与报文段1 0相同的确认序号,但通告了一个更大的窗口大小。报文段 1 4确认了最后的 2 0 4 8字节的数据和 F I N,报文段1 5和1 6仅用于通告一个更大的窗口大小

1.6K20

【技术控】详解TCP滑动窗口.....

概述 滑动窗口实现了TCP流控制。首先明确滑动窗口的范畴:TCP是双工的协议,会话的双方都可以同时接收和发送数据。TCP会话的双方都各自维护一个发送窗口和一个接收窗口。...各自的接收窗口大小取决于应用、系统、硬件的限制(TCP传输速率不能大于应用的数据处理速率)。各自的发送窗口则要求取决于对端通告的接收窗口,要求相同。...本例中,开始接收端空着AB,只有CD,此时不能滑动;之后接收到EF和H,直接向右滑动2位,不必等G到位。 窗口大小不能大于序号空间大小的一半。...目的是为了不让两个窗口出现交迭,比如总大小为7,窗口大小都为4,接收窗口应当滑动4,但只剩3个序号,导致两个窗口交迭。...因为tcp是全双工,所以两边都有滑动窗口。两个窗口的维护是独立的,滑动窗口主要由接收方反馈缓存情况来维护,拥塞窗口主要由发送方的拥塞控制算法检测出的网络拥塞程度来决定的。

1.2K50

速读原著-TCPIP(TCP窗口大小通告)

第19章 TCP的交互数据流 19.5 窗口大小通告 在图1 9 - 4中,我们可以观察到s l i p通告窗口大小为4 0 9 6字节,而v a n g o g h通告其窗口大小为8 1 9 2个字节...然而,报文段5通告的窗口大小为 4 0 9 5个字节,这意味着在 T C P的缓冲区中仍然有一个字节等待应用程序( R l o g i n客户)读取。...同样,来自客户的下一个报文段声明其窗口大小为4 0 9 4个字节,这说明仍有两个字节等待读取。...服务器通常通告窗口大小为 8 1 9 2个字节,这是因为服务器在读取并回显接收到的数据之前,其T C P没有数据发送。当服务器已经读取了来自客户的输入后,来自服务器的数据将被发送。...当客户 T C P发送缓存的数据时,R l o g i n客户没有机会读取来自服务器的数据,因此,客户通告的窗口大小总是小于 4 0 9 6。

87730

TCPIP笔记——TCP特点、首部格式、滑动窗口

这是接收方让发送方设置其发送窗口的依据,可以理解为缓存大小,即一次性能接收多少数据量 检验和:占2字节,检验范围包括首部和数据2部分。...没有这个的时候TCP首部长度为20字节 滑动窗口 例子: 这只是其中一方的发送窗口,其实因为TCP是双工的,接受和发送都需要窗口,所以总共四个窗口。注意窗口的单位为字节。...发送并且受到确认信号之后,窗口后沿(左边)会前移(往右走),如果窗口大小没变,那么前沿(右边)也会跟着右走。...有时候窗口前沿会往后收缩,这时候通常是对方通知窗口大小变小了,不过TCP强烈不赞同这么做(因为发送方已经发送了窗口中的大部分数据,突然收缩窗口可能会让一些已经发送过了的数据处在“不允许发送”的位置,如果确认信号突然过来了恰好要求的就是这些不允许发送的数据...总结下: 此外: 缓存空间和序号空间有限,并且是循环使用的; 实际上缓存和窗口中的字节数非常大,这里只是例子所以取了比较小的数 发送方和接收方的窗口大小并不总是一致,因为网络具有滞后性 发送方缓存存放的内容

59220

一文带你搞定TCP滑动窗口

什么是滑动窗口窗口是操作系统开辟的一块缓存空间,发送方在收到接收方ACK应答之前,必须在缓冲区保留已发送的数据,如果按期收到确认应答,数据就可以从缓冲区移除。 什么是滑动窗口大小?...窗口大小由谁决定? TCP首部中的窗口大小是接收方告诉发送方自己还有多少缓冲区可以接收,发送端会根据这个值来发送数据,避免接收端处理不过来。...窗口大小由接收方的窗口大小决定,通常情况下发送方发送的数据大小不能超过接收方的窗口大小。...发送方滑动窗口 发送方的窗口主要分为四部分: #1:已发送并收到ACK确认的数据,1~31字节 #2:已发送但未收到ACK确认的数据,32~45字节 #3:未发送但总大小在接收方处理范围内的数据,46...(SND.NXT - SND.UNA) 接收方的滑动窗口 接收方窗口分为三部分: #1+#2:已成功接收并确认的数据(等待应用程序读取) #3:未收到但是可以接收的数据 #4:未收到并且无法接收的数据

1.1K10

基础知识-网络-TCP滑动窗口,拥塞控制

TCP滑动窗口协议 TCP协议作为一个可靠的面向流的传输协议,其可靠性是由流量控制和滑动窗口协议保证。 为什么需要流量控制?...) 发送窗口外发送缓冲区内暂时不允许发送的数据 6.每次成功发送数据之后,发送窗口就会在发送缓冲区中按顺序移动,将新的数据包含到窗口中准备发送; TCP建立连接的初始,B会告诉A自己的接收窗口大小...一是TCP利用滑动窗口实现流量控制的机制;二是如何考虑流量控制中的传输效率。 所谓流量控制,主要是接收方传递信息给发送方,使其不要发送数据太快,是一种端到端的控制。...主要的方式就是返回的ACK中会包含自己的接收窗口大小,并且利用大小来控制发送方的数据发送: ?...为了处理这种问题,TCP引入了持续计时器(Persistence timer),当A收到对方的零窗口通知时,就启用该计时器,时间到则发送一个1字节的探测报文,对方会在此时回应自身的接收窗口大小,如果结果仍未

1.1K20

聊聊TCP传输的滑动窗口协议的演进

在传输层中使用的协议是 TCP/IP协议。 TCP协议 维持着 发送方 and 接收方 的缓冲区、 双方商定包的重传机制。接收方如何来ack 发送方发过来的包。...滑动窗口协议就随之产生了: 滑动窗口协议是传输层进行流控的一种措施,接收方通过通告发送方自己的窗口大小,从而控制发送方的发送速度,从而达到防止发送方发送速度过快而导致接收方接受不赢,导入数据丢失的问题。...关于滑动窗口协议可以使用搜索引擎或者上知乎了解:TCP协议的滑动窗口协议 看看滑动窗口协议是什么样子的: ? 如果传输的过程中丢包了怎么办呢? ?...发送方丢包了,接收方不会回复ack标识,同时又因为接受方的滑动窗口大小是已经确定了的。所以并不会发送后面栏位的包。 那自然丢包了就要重发~ 重发的时候是什么样呢? ?...发送方发5号包,丢包时,滑动窗口协议会继续的把6 7 号包发过去,但是接收方并没有收到5号包,滑动窗口协议,为了保证 传输的顺序,接收方不会把 6 7号包的ack给发送回来, 只有在5号包重发后,并且接收方接收到了五号包的时候

1K100

斐讯面试记录—TCP滑动窗口及拥塞控制

TCP协议作为一个可靠的面向流的传输协议,其可靠性是由流量控制和滑动窗口协议保证,而拥塞控制则由控制窗口结合一系列的控制算法实现。 一、滑动窗口协议 1....“窗口”对应的是一段可以被发送者发送的字节序列,其连续的范围称之为“窗口”; 2. “滑动”则是指这段“允许发送的范围”是可以随着发送的过程而变化的,方式就是按顺序“滑动”。...每次成功发送数据之后,发送窗口就会在发送缓冲区中按顺序移动,将新的数据包含到窗口中准备发送;      TCP建立连接的初始,B会告诉A自己的接收窗口大小,比如为‘20’: 字节31-50为发送窗口...一是TCP利用滑动窗口实现流量控制的机制;二是如何考虑流量控制中的传输效率。 1. 流量控制      所谓流量控制,主要是接收方传递信息给发送方,使其不要发送数据太快,是一种端到端的控制。...为了处理这种问题,TCP引入了持续计时器(Persistence timer),当A收到对方的零窗口通知时,就启用该计时器,时间到则发送一个1字节的探测报文,对方会在此时回应自身的接收窗口大小,如果结果仍未

23520
领券