滑动窗口
因为序号是模2的m次方,所以从0至2的m次方-1的序号可以表示为一个环。
缓存被表示为一组小格子,称为滑动窗口(sliding window),在任何时候它们都占据了圆的一部分。在发送方,当一个分组被发送出去,相应的小片就被标记。当所有的小片都被标记后,就表示缓存已满,不允许从应用层接收更多的报文。当一个确认达到后,相应的小片的标记就被取消。如果这个窗口前端连续多个小片都没有标记,那么这个窗口就向后滑动到相应的序号范围上,以允许窗口后端有更多空间的小片。下图描述了发送方的滑动窗口。序号是模16(m=4)的,且窗口大小为7.请注意,滑动窗口只不过是一种抽象,而实际上它是通过计算机变量来保存下一个要发送的分组的编号以及刚刚发送出去的最后一个分组的编号来实现的。
大多数协议使用条形来表示滑动窗口。其思想完全一样,只不过通常这样做可以节约纸张空间。下图用条形表示法。这两张图告诉我们的是同一回事。如果我们捏住下图的两端分别向上弯曲,就可以得到圆形的滑动窗口。
TCP为每个方向的数据传送各使用两个窗口(发送窗口和接收窗口),也就是说,对于双向通信总共有四个窗口。
发送窗口
我们使用的这个窗口大小为100字节(通常应该有几千个字节),但是稍后我们会看到,发送窗口大小是由接收方(流量控制)以及底层网络的拥塞程度(拥塞控制)来决定的。图中描述了一个发送窗口是如何打开、关闭和收缩的。
TCP的发送窗口类似于选择重传协议的发送窗口,但是有几点区别
1、窗口所关联的实体本质不同。SR的窗口为分组编号,而TCP中的窗口要为字节编号。虽然TCP的传输实际上也是一个报文段一个报文段的,但用于控制窗口的变量以字节为单位。
2、某些实现中TCP可以保存从进程哪里接收到的数据,并稍后再发送出去。不过,我们假设发送TCP能够从它的进程哪里接收到数据就发送该数据的报文段。
3、计数器数量不同,理论上,选择重传协议可以为每个发送的分组使用数个计数器,但是TCP协议只使用一个计时器。
接收窗口
我们使用的这个窗口大小为100字节(通常应该有几千个字节),图中描述该窗口是如何打开和关闭的,实际中,接收窗口永远不会收缩。
TCP中使用的接收窗口与SR的接收窗口有两点区别:
1、TCP允许接收进程按照自己的节奏来拉取数据。也就是说,分配给接收方的缓存中可能有一部分被已经接收和确认,但正在等待接收进程来拉取的数据所占用。因此,接收窗口大小总是小于或等于缓存大小,如上图所示,接收窗口大小决定了接收窗口在溢出之前能够从发送方哪里接收字节数。通常被称为rwnd的接收窗口大小可以用以下公式计算:rwnd=缓存大小-正在等待被拉取的字节数
2、TCP协议中使用的确认的方式不同,在SR中,确认是选择性的,它指向已经被接收的未损坏的分组,而TCP的主流确认机制是累计确认,它宣布的是下一个希望接收的字节(从这方面看,TCP有点像GBN)。不过在TCP的新版本中,既使用了累积确认,也使用了选择确认。
相关推荐
TCP拥塞学习资料,TCP滑动窗口协议,TCP拥塞窗口,网络间对象的传输与调用[new]
用NS-3仿真TCP拥塞窗口控制机制,把拥塞窗口各个参数的变化用图片的格式体现出来
TCP 滑动窗口模拟VC++ 包括一比特和ARQ
滑动窗口机制及TCP中的相关实现,详细介绍了滑动窗口机制的原理。
一篇讲解滑窗机制的文章,图文并茂,很不错!
TCP滑动窗口演示flash,也是转载于其他地方并非原创。
TCP Sliding Window滑动窗口协议演示动画,Flash播放,可以调整参数
大家可能经常听说TCP滑动窗口,那到底什么是TCP滑动窗口呢?今天我就来详细解释下网络开发中常听说的概念:滑动窗口
TCP拥塞控制例题:某TCP拥塞窗口演化图如下图所示,其中[1, 6]轮次是慢启动阶段,[6, 14]轮次是拥塞避免阶段,[15, 17]轮次是快速恢复阶段,
开发环境vs2005,开发语言:c语言 基于windows开发的多线程案例,多线程方式实现了TCP协议的滑动窗口协议及选择重传协议 希望对研究多线程编程的童鞋有所帮助
Display_TCP:显示聊天内容的一个客户端 TCline:用于发送消息的客户端 只能用于两台同一局域网的电脑聊天,而且两台电脑都要连接到服务端才行 /***************************************************************...
TCP滑动窗口、流量控制及拥塞控制详解.docx
生成树协议及TCP滑动窗口演示,很形象。flash小动画
C# Socket TCP通讯模板,下载后编译可直接运行,带Cilent&Server两窗口
第2个参数为接收速率设定,编辑框中填入的是接收定时器的间隔时间,单位为ms,1000表示接收速率为每秒处理1个包。第3个参数是辅助定时器设定,该值表示接收方收到一个数据包后当没有反向流量捎带应答时,等待发送一...
微信小程序 TCP,IP长连接 (源码)微信小程序 TCP,IP长连接 (源码)微信小程序 TCP,IP长连接 (源码)微信小程序 TCP,IP长连接 (源码)微信小程序 TCP,IP长连接 (源码)微信小程序 TCP,IP长连接 (源码)微信小程序 TCP,IP长...
SND.UNA :是个绝对指针,它指向的是已发送但未收到确认的第个字节的序列号,也就是 #2 的第个字节。SND.NXT :也是个绝对指针,它指向未发送但可发送
2. TCP协议是通过三次握手来建立连接,通过序列号和确认号来维护双方的通信,通过发送窗口的大小来控制流量。 3. 通过多台电脑建立一台电脑的TCP连接,可以分析流量控制的实质。 实验步骤 1.在IP地址为 192.168.0....
通信双方以客户-服务器方式建立TCP连接,应答与请求在同一个连接中完成。系统采用客户/服务器模式,操作以客户端驱动方式发起连接请求,完成一次操作后关闭此连接。 网关与SP之间、网关之间的消息发送后等待T秒后未...
书中给出了约500个图例,15 000行实际操作的C代码,采用举例教学的方法帮助你掌握TCP/IP实现。本书不仅说明了插口API和协议族的关系以及主机实现与路由器实现的差别。还介绍了4.4BSD-Lite版的新的特点,如多播、长肥...