TCP窗口协议

TCP 滑动窗口协议 详解 滑动窗口机制 (1).窗口机制     滑动窗口协议的基本原理就是在任意时刻,发送方都维持了一个连续的允许发送的帧的序号,称为发送窗口;同时,接收方也维持了一个连续的允许接收的帧的序号,称为接收窗口。发送窗口和接收窗口的序号的上下界不一定要一样,甚至大小也可以不同。不同的滑动窗口协议窗口大小一般不同。发送方窗口内的序列号代表了那些已经被发送,但是还没有被确认的帧,或者是那些可以被发送的帧。下面 阅读详情

什么是滑动窗口win?

可能以下这张图更容易理解点。横轴代表的是发送端待发送的数据字节,从图中可以看出有8192个字节要进行传输。而图中最显眼的绿色区域,就代表窗口。窗口分为两部分,左边是发送端已经发送数据包出去,但是未收到接收端返回的ack,右边是可以发送的区域,这样是目前我们数据可以用武之地的地方。窗口是从左到右移动的(也只能这么移动),可以看到窗口左边竖条两边的差异,就是有没有收到ack,所以一旦发送方收到接收端返回的ack后,窗口就往右移动,移动的幅度就要依据ack携带的序列,如ack 2048,那么窗口往右移动两格。
这里写图片描述
通过上述图像化的初步了解,可能你已经有点眉目了,窗口实际上代表的是接收端的最大缓冲区。注意,这里是接收方的缓冲大小,但我们一直以发送端的角度去看待,这就需要接收端在建立tcp连接后,返回win=4096,发送端就知道了窗口大小。
从以下说法中,有两个结论:一,发送方的窗口一般由接收方通告;二,窗口表明发送方现在可以发送的数据量大小,也是接收方的缓存大小。通告这种机制,我们发送数据的速度就被限制了,这也是tcp实现流量控制的一种方式。

MSS

但是注意,图中我们每次发送的数据大小都是1024,这个不是硬规定,而跟win一样,同样是由接收方返回来的,标志是mss,代表每次发送的数据单元大小,可以简单理解为,mss再加上tcp和ip的头部这些,就是MTU了。

不对称的两端

但发送端发送速度很快,而接收方速度很慢时候,通过接收方返回的win大小,发送方动态更新窗口大小(注意窗口不是一次就定死的)。如返回win=0,那么发送方就要停止继续发送数据了,等待再来一条ack信息,携带更大的win大小实现的窗口更新,发送端才能继续发送数据。这就是上述“流量控制”的原理。

标志push

如图,展示了tcp传输中的主要标识,有syn,psh和fin。

这里写图片描述

图中在传输数据,总共要发送8192个字节的数据,而mss为1024,那么发送端分为8次来发送,过程为4,5,6,7,10,11,12,13。这八次传输中,不是每一次都有psh标识的。psh代表的是写数据后已经发送,意味着不在发送方中缓存久留,到接收方后也理解将数据往上层(应用进程)传输。4567数据跟服务器可能是一些交互数据,这些数据立马就要push,而不是在缓存中推挤后再发送。一般最后一次,也清空缓存了,也一般会有psh,如13。而我们看到都是每4个一组发,这是跟win大小的返回有关。

慢启动与拥塞窗口cwnd

tcp的窗口其实有两个,除了上述的滑动窗口,还有一个成为拥塞窗口。
上图中,我们的win是4096,mss是1024,所以在4567时候连续发送了4个报文段,这个如果在局域网中可能没什么,但是如果在互联网上,两端之间可能存在一些慢的链路和路由,那么在一些中间路由器上,可能就会缓存很多分组了,最严重是将互联网上的路由器缓存占满了。tcp的解决方式是一种称为慢启动的算法(slow start),使用的原理就是拥塞窗口cwnd。

拥塞窗口在初始化大小就是一个报文段大小,由接收方返回,然后每次返回一个ack,就+1,所以在某种情况下,可能的增长轨迹是1,2,4,8,16。。。。指数型增长。发送方会比较拥塞窗口和滑动窗口哪个小,来作为发送数据的上限。上述的指数增长有点疯狂,不过在中间路由分组太多时候回丢弃分组,从而会通知到cwnd开得过大而重新调增,丢弃的分组也通过超时和重传机制再次发送。

TCP协议总结--停止等待协议,连续ARQ协议,滑动窗口协议 前言:在学习tcp三次握手的过程之中,由于一直无法解释tcpdump命令抓的包中seq和ack的含义,就将tcp协议往深入的了解了一下,了解到了几个协议,做一个小结. 一:停止等待协议 停止等待协议是tcp保证传输可靠的重要途径,”停止等待”就是指发送完一个分组就停止发送,等待对方的确认,只有对方确认过,才发送下一个分组. 1:无差错情况:发送方发送分组,接收方在规定时间内收到,并且回复确认.发送... 阅读详情

相关推荐

tcp协议栈实现,tcp定时器与滑动窗口实现

要实现用户态协议栈,必须要搞懂TCP,TCP 11个状态、滑动窗口、拥塞控制、定时器等等。 要使用用户态协议栈,内核提供的epoll就不起作用了,我们需要自己实现用户态的epoll。epoll内部涉及到一个回调的时机,回调的作用是将红黑树中的节点添加进就绪队列,具体在epoll原理里面会具体讲解。搞清楚TCP的11个状态,我们就明白应该在什么时机进行回调了。 TCP状态转换图 在前面的[posix与网络协议栈](Build software better, together api和网络协议栈.md)

Linuxhus的博客 771

wireshark抓包数据:理解与分析

wireshark是一个非常好用的抓包工具,本文根据平时抓包经验,对之前wireshark抓包的一些常见知识点进行了整理。 有不当之处,欢迎指正 1.SYN,FIN会消耗一个序号,单独的ACK不消耗序号 2.WIN表示可以接收数据的滑动窗口(接收缓冲区)是多少,如果A发到B的包的win为0,就是A告诉B说我现在滑动窗口为0了,饱了,你不要再发给我了,就说明A端环境有压力 3.A

学仙只为看看天的专栏 4万+

告别安装烦恼!Orange3 3.38.0 Windows绿色版下载即用,附保姆级汉化与组件配置指南

本文详细介绍了Orange3 3.38.0 Windows绿色版的下载与使用,包括中文汉化、组件配置及高效管理技巧。这款无需安装的数据科学工具特别适合快速验证想法的研究人员和移动办公用户,支持多种数据源和可视化工具,大幅提升工作效率。

weixin_30897233的博客 602

TCP的三个窗口:发送窗口swnd、接收窗口rwnd、拥塞窗口cwnd

TCP的三个窗口:发送窗口swnd、接收窗口rwnd、拥塞窗口cwnd, 慢启动门限,拥塞避免算法,快重传算法和快恢复算法

meihualing的专栏 2万+

Outlook日历同步全攻略:Win10+安卓+iOS三端无缝衔接(附常见问题解决)

本文提供了一份详尽的Outlook日历同步指南,帮助用户在Windows 10、安卓和iOS三端实现无缝衔接。文章深入解析了Exchange ActiveSync等核心同步原理,并给出了从账户创建到各设备(特别是华为手机)的具体配置步骤、进阶管理技巧以及针对同步失败、事件重复等常见问题的实战解决方案,旨在彻底解决跨平台日程管理的痛点。

l3m4n的博客 553

Cocos Creator发布微信小游戏:深度定制与去除默认加载页面的实践指南

本文详细介绍了如何使用Cocos Creator发布微信小游戏时去除默认加载页面的实践方法。通过修改构建配置和重写启动逻辑,开发者可以自定义加载体验,提升品牌一致性。文章还提供了进阶优化方案和常见问题解决方案,帮助开发者实现更专业的微信小游戏发布流程。

weixin_27972919的博客 568

TCP的滑动窗口和拥塞控制

TCP的滑动窗口和拥塞控制 滑动窗口 1.发送窗口和接收窗口 2.滑动窗口的分类 停止等待协议:发送窗口大小 = 1, 接收窗口大小= 1 后退N帧协议(GBN):发送窗口大小 > 1,接收窗口大小 = 1 选择重传协议(SR) :发送窗口大小 > 1, 接收窗口大小 > 1 拥塞控制 慢开始算法和拥塞避免: 快重传和快恢复:

weixin_69884785的博客 4847

PCB激光直接成像(LDI)设备技术解析与优化方案

激光直接成像(LDI)是PCB制造中的关键数字化工艺,通过激光束直接在基板上形成电路图案。其核心技术在于高精度光学系统与智能控制算法的结合,工作精度可达微米级。在HDI板、柔性电路等高端PCB制造中,LDI技术能显著提升线宽精度和层间对位准确性。当前行业面临材料适配性、热变形控制等挑战,动态能量补偿、多波长曝光等创新方案正在突破这些瓶颈。随着模块化设计、预测性维护等工程实践的普及,LDI设备综合效率持续提升,为5G、汽车电子等领域的精密电路生产提供关键技术支撑。

weixin_29168393的博客 392

TCP滑动窗口、流量控制及拥塞控制详解

TCP滑动窗口、流量控制及拥塞控制详解

weixin_46935110的博客 7049

手把手教你使用ESM-2进行蛋白质结构预测:从安装到实战

本文详细介绍了如何使用ESM-2蛋白质语言模型进行蛋白质结构预测,从环境准备、模型安装到实战应用。通过逐步指导,读者可以掌握ESM-2的配置、单序列预测、结果可视化及高级优化技巧,适用于生物信息学研究和药物开发。

weixin_29306875的博客 533

EnlightenGAN训练复现记录

记录EnlightenGAN过程中的问题和解决方式。提示:以下是本篇文章正文内容,下面案例可供参考。

L_27N113E的博客 3847

TCP/IP传输层协议实现 - TCP接收窗口/发送窗口/通告窗口(lwip)

1、tcp通告窗口/接收窗口/发送窗口 接收端有一个接收窗口大小,接收端只能接收这么多数据,接收窗口的数据需要被上层接收后才释放更大接收空间,才可以接收更多数据;接收窗口之前的数据已经被接收,再次接收到接收窗口之前的数据可以认为是重复发送的,不处理,接收窗口之后的数据不能接收,超出接收范围直接丢弃。 接收端通过tcp首部通告窗口字段告诉对端本地可以可以接收多少数据,用于控制发送端的发送窗口大小。 发送端有一个发送窗口,发送窗口大小即为对端通告窗口的大小,只有发送窗口内的tcp报文才可以发送。发送窗口之

arm7star的博客 1万+

混合精度训练与推理:平衡性能与效率

在深度学习领域,模型的训练和推理通常需要大量的计算资源和时间。随着模型规模的不断增大,如大型语言模型、复杂的视觉模型等,对计算资源的需求也呈指数级增长。混合精度训练与推理技术应运而生,它通过在训练和推理过程中同时使用不同精度的数据类型,在保证模型性能的前提下,显著提高计算效率,减少内存占用。本文的目的是全面介绍混合精度训练与推理技术,包括其原理、实现方法、应用场景以及相关工具和资源,帮助读者深入理解并掌握该技术,从而在实际项目中更好地平衡性能与效率。

操作系统内核探秘的博客 1068

TCP连续ARQ协议和滑动窗口协议

TCP协议通过使用连续ARQ协议和滑动窗口协议,来保证数据传输的正确性,从而提供可靠的传输。 一、ARQ协议 ARQ协议,即自动重传请求(Automatic Repeat-reQuest),是OSI模型中数据链路层和传输层的错误纠正协议之一。它通过使用确认和超时这两个机制,在不可靠服务的基础上实现可靠的信息传输。如果发送方在发送后一段时间之内没有收到确认帧,它通常会重新发送

渴望,就奋力追寻... 4万+

新鲜出炉,ECCV2024.9.25 首次提出基于 YOLO 目标检测的无源域自适应

本文提出了首次使用YOLO系列单发探测器的SFDA方法。本文方法采用了一个带有学习的、目标领域特定的增强和一种新的通信机制的师生框架来稳定训练,减少了对模型选择中带注释的目标数据的依赖,这对现实世界的应用至关重要。SF-YOLO 优于所有基于Faster R-CNN的SFDA方法,甚至一些使用源数据的基于UDA yolo的方法。

m0_63294504的博客 2676

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

TCP协议之《接收通告窗口》

TCP协议之《接收通告窗口》

C/C++编程指南 1128

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

TCP 协议中的窗口管理

交互式通信 在网络传输中, 有些数据包中的内容很多, 甚至和MSS的大小相同, 而有些数据包中的内容仅仅只有一字节. 所以数据包大小差异巨大. 若是数据过小的包太过于多的话, 就会造成网络利用率不高, 原因是要花费许多字节来构成TCP等协议头部. 在ssh中, 当我们敲下一个字符, 客户端获取输入信号, 马上就会传输给ssh服务器. 这也是网络质量优良时, 我们使用ssh几乎无延迟的原因了. 一个...

ciaiy的博客 1011

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

tcp 协议中发送窗口的大小应该是_面试必备--TCP协议中的窗口机制滑动窗口详解...

窗口机制分类在TCP协议当中窗口机制分为两种:1.固定的窗口大小2.滑动窗口固定窗口存在的问题我们假设这个固定窗口的大小为1,也就是每次只能发送一个数据,只有接收方对这个数据进行了确认后才能发送第二个数据。在图中我们可以看到,发送方每发送一个数据接收方就要给发送方一个ACK对这个数据进行确认。只有接收了这个确认数据以后发送方才能传输下个数据存在的问题:如果窗口过小,当传输比较大的数据的时候需要不停...

weixin_34061793的博客 6751

TCP滑动窗口协议

滑动窗口图解 滑动窗口本质上是描述接受方的TCP数据报缓冲区大小的数据,发送方根据这个数据来计算自己最多能发送多长的数据。如果发送方收到接受方的窗口大小为0的TCP数据报,那么发送方将停止发送数据,等到接受方发送窗口大小不为0的数据报的到来。 使用三个术语来描述窗口左右边沿的运动: 1.窗口合拢:当窗口从左边向右边靠近的时候,这种现象发生在数据被发送和确认的时候。 2.窗口张开:当窗口的右边

kkquiet的博客 840

TCP滑动窗口协议与流量控制

TCP,滑动窗口协议,流量控制,拥塞控制,慢启动,拥塞避免,快重传,快恢复,发送窗口,接收窗口,拥塞窗口,rwnd, swnd,cwnd,停止等待协议,ARQ,自动重传请求

meihualing的专栏 4155

计算机网络 TCP 滑动窗口协议 详解

滑动窗口机制解析: 1.窗口机制 滑动窗口协议的基本原理就是在任意时刻,发送方都维持了一个连续的允许发送的帧的序号,称为发送窗口;同时,接收方也维持了一个连续的允许接收的帧的序号,称为接收窗口。发送窗口和接收窗口的序号的上下界不一定要一样,甚至大小也可以不同。不同的滑动窗口协议窗口大小一般不同。发送方窗口内的序列号代表了那些已经被发送,但是还没有被确认的帧,或者是那些可以被发送的帧。下面举

Mr.Phoebe的专栏 2万+

【TCP/IP协议】tcp 协议中发送窗口的大小是如何设置的?

窗口机制分类 在TCP协议当中窗口机制分为两种: 1.固定的窗口大小 2.滑动窗口 固定窗口存在的问题 我们假设这个固定窗口的大小为1,也就是每次只能发送一个数据,只有接收方对这个数据进行了确认后才能发送第二个数据。在图中我们可以看到,发送方每发送一个数据接收方就要给发送方一个ACK对这个数据进行确认。只有接收了这个确认数据以后发送方才能传输下个数据 存在的问题: 如果窗口过小,当传输比较大的数据的时候需要不停的对数据进行确认,这个时候就会造成很大的延迟 如果窗口过大,我们假设发送方一次发送100个数据,

fearless的博客 1万+

TCP 协议之滑动窗口机制

滑动窗口机制是 TCP 协议中实现流量控制和可靠性的重要手段。通过允许发送方在未收到确认的情况下发送多个数据包,滑动窗口机制提高了数据传输的效率,并有效防止了接收方的缓冲区溢出。通过上述示例,您可以在 C# 中实现基本的滑动窗口机制,并根据需要进行扩展和优化。在滑动窗口机制中,基础序列号()的更新和窗口的滑动是确保数据可靠传输的关键步骤。下面详细解释这一过程,并提供一些示例代码来帮助理解。通过更新基础序列号并滑动窗口,TCP 客户端能够有效地管理数据的发送和确认。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 1609

TCP—滑动窗口协议

本系列文章是博主学习TCP协议以来的个人笔记。博主不能保证本文所述 内容绝对正确,所以请读者抱着怀疑的态度阅读本博客内的文字。如果读 者因本博客内的文字造成损失,本人无力负责。如果有任何谬误或者问题, 希望读者不吝赐教。 在遍布世界的互联网线路上进行可靠的数据传输谈何容易,一来传输介质 有差异,因此当肥胖管道中的数据洪流涌入瘦小管道时,很可能发生拥塞; 二来发送者和接受者的数据

louiswang2009的专栏 3799

TCP窗口协议详解教程

TCP窗口协议是TCP可靠传输的基石,通过滑动窗口、拥塞控制等机制,在保证可靠性的同时最大化网络吞吐量。理解窗口协议对于网络编程、性能调优至关重要。​​关键要点回顾​窗口大小决定发送速率滑动窗口实现流水线传输拥塞控制防止网络过载实际窗口取接收窗口和拥塞窗口的最小值掌握窗口协议的工作原理,能够帮助你更好地诊断网络问题、优化应用性能。

Rysxt_的博客 1023
上一篇: TCP三次握手与四次挥手的理解和场景举例
下一篇: UDP协议新认知
@云师兄
博客等级 码龄10年 10粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值