滑动窗口
因为序号是模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协议中至关重要的一部分,用于防止网络拥塞并确保数据高效、稳定地传输。 拥塞窗口(Congestion Window,简称CWND)是TCP中的一个概念,它表示发送方允许在网络中传输的数据...
滑动窗口机制是一种在网络通信中实现流量控制的重要技术,尤其在TCP(传输控制协议)中广泛应用。该机制允许发送方在等待接收方确认之前发送多个数据包,从而提高网络效率,但同时也确保了数据的正确顺序接收。 1. ...
TCP拥塞学习资料,TCP滑动窗口协议,TCP拥塞窗口,网络间对象的传输与调用[new]
滑动窗口是TCP协议中的一个重要概念,它允许发送方在接收到确认之前发送多个数据段,从而提高网络效率。 滑动窗口协议的基本思想是维护一个窗口,该窗口包含了发送方可以发送但尚未得到确认的数据。窗口大小由接收...
"滑动窗口机制及TCP中的相关实现" 滑动窗口机制是TCP协议中的一种重要的流量控制机制,它通过在发送端和接收端分别设置发送窗口和接收窗口来控制数据的传输。发送窗口的大小代表了发送端可以发送的最大数据帧数量,...
本案例“多线程开发案例(TCP窗口协议)”是利用C语言在Visual Studio 2005环境下构建的一个示例,它深入展示了如何利用多线程技术实现TCP协议中的滑动窗口协议和选择重传协议。这两个协议对于理解和优化TCP连接的...
TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输层网络协议,它在互联网协议栈中扮演着关键角色,确保数据在网络中的稳定传输。为了解决数据的破坏、丢包、重复和分片顺序混乱等问题,TCP 实施了...
TCP 滑动窗口是 TCP 协议中的一种流量控制机制,它可以控制发送方的发送速度,避免网络拥塞和数据丢失。下面我们将详细介绍 TCP 滑动窗口、流量控制及拥塞控制的原理和机制。 一、TCP 滑动窗口 TCP 滑动窗口是以...
TCP滑动窗口是一种流量控制机制,用于在TCP连接中管理数据传输的速度,确保接收方能够有效地处理接收到的数据,防止数据丢失或拥塞。在TCP协议中,滑动窗口的概念基于一个可变大小的缓冲区,该缓冲区的大小由发送方...
TCP滑动窗口演示flash,也是转载于其他地方并非原创。
TCP拥塞控制是网络协议中的一个关键机制,用于在数据传输过程中防止网络过载,确保数据包能够有效地在源和目的地之间流动。本题考察的是TCP拥塞控制的三个主要阶段:慢启动、拥塞避免和快速恢复,以及如何根据拥塞...
大家可能经常听说TCP滑动窗口,那到底什么是TCP滑动窗口呢?今天我就来详细解释下网络开发中常听说的概念:滑动窗口
tcp滑动窗口和SO_RCVBUFtcp滑动窗口和SO_RCVBUF
生成树协议(Spanning Tree Protocol, STP)和TCP滑动窗口是网络通信中的两个重要概念,它们在确保网络稳定性与高效数据传输方面起到关键作用。 生成树协议STP是为了解决局域网(LAN)中可能存在的广播风暴和环路...
在本项目中,"c++ tcp/ip, Modbus tcp/ip 通讯,源码"涵盖了两个主要部分:标准的TCP/IP通信和基于Modbus协议的通信。 首先,TCP/IP通讯是指利用传输控制协议/因特网协议进行数据传输的过程。TCP是一种面向连接的、...
TCP滑动窗口协议是TCP传输层协议中的一个重要机制,用于控制发送方的数据速率,防止数据包的拥塞和丢失。TCP滑动窗口基于接收方反馈的确认机制,动态调整发送窗口的大小,确保数据的有序和无损传输。在TCP中,每个...
8. **选项与标志**:TCP头部包含各种选项和标志位,如Nagle算法、TCP窗口缩放、时间戳等,这些可以优化协议性能或提供额外的功能。 通过TCP调试助手源码,你可以看到如何实现这些功能的具体代码,包括如何创建...
同时,TCP还通过滑动窗口机制进行流量控制,以避免网络拥塞。TCP客户端和服务器的角色定义了通信的发起者和响应者,客户端发起连接请求,服务器监听并接受连接,然后双方可以进行双向数据交换。 MODBUS-TCP协议是...
在TCP连接中,数据被分成称为段的数据包进行发送,每个段都带有序列号和确认号,以便接收端能够按序重组数据并确认接收到的信息。 TCP的主要特点包括: 1. 面向连接:在数据传输前,TCP需要建立连接,即著名的三次...