社区
交换及路由技术
帖子详情
TCP的滑动窗口是什么意思啊?
wtjd
2009-08-24 11:54:42
TCP的滑动窗口是什么意思啊?
...全文
1860
10
打赏
收藏
TCP的滑动窗口是什么意思啊?
TCP的滑动窗口是什么意思啊?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
帅的不能再帅
2010-07-15
打赏
举报
回复
写的好
y289955799
2009-11-07
打赏
举报
回复
晕 发帖赚人气
davidwuzhe
2009-11-03
打赏
举报
回复
这个帖子讲的很好啊。。还是发帖比较有人气,呵呵
wtjd
2009-08-31
打赏
举报
回复
看来,原来是为了控制传输速率的。
大致明白了。、
结帖 给分。
Najjalover
2009-08-25
打赏
举报
回复
楼主您询问的是不是
返回n-ARQ
的滑动窗口问题呢?如果是的话,是这样的:发端在没有收到对方应答的情况下,可以连续发送n个分组。收端仅接收正确顺序的分组,其应答中的RN表示RN以前的所有分组都已经正确接收。也就是说,收端不需要每收到一个正确的分组就发出一个应答,可对接受到的正确顺序的最大分组序号进行应答。这里的n就叫做滑动窗口宽度。发端收到确认后,在确认的分组序号加1开始,以确认的分组序号加1+n为止连续发送,随着应答的不断达到,发送窗口不断向前滑动。
关于速率控制,是这样实现的:如果收端能及时返回应答,则发端可连续不断地全速连续发送分组。但是如果我们减缓应答返回的速率,则可以控制发端发送分组的速率,从而达到速率控制的目的。
wtjd
2009-08-25
打赏
举报
回复
还有提问可以提高CSDN社区的热度,如果我们这些搞技术的都把CSDN真正当作学技术的乐土,那我们的力量就会变得无穷大了。
最重要的,在CSDN上可以认识你们这些朋友,这是很宝贵的。
wtjd
2009-08-25
打赏
举报
回复
楼上的大侠,我觉得和大家交流更有助相互提高。
wtjd
2009-08-25
打赏
举报
回复
你说:“在这之后,连接就建立起来了。这个连接将一直保持活动状态,直到 超时或者任何一方发出一个FIN(结束)信号。
”
这个地方我就不懂了? 我们知道TCP连结通常是分组报文交换的,既然这样,两台主机的TCP连结是一个什么意思呢? 如果是电路交换,还可以说是连结,就像发电报一样,不能算连结了吧?
此外,你说这个连结会一直保持活状态直到结束,试问,是如何保持活动状态的呢?
drifter250771
2009-08-24
打赏
举报
回复
对了。楼主你的众多问题可以直接GOOGLE解决,何必发贴呢
drifter250771
2009-08-24
打赏
举报
回复
TCP协议在能够发送数据之前就建立起了“连接”。要实现这个连接,启动TCP连接的那一方首先将发送一个SYN数据包。这只是一个不包含数据的数据包, 然后,打开SYN标记。如果另一方同时在它收到SYN标记的端口通话,它将发回一个SYN+ACK:SYN和ACK标志位都被打开,并将ACK(确认)编 号字段设定为刚收到的那个数据包的顺序号字段的值。接下来,连接发起方为了表示收到了这个SYN+ACK信息,会向发送方发送一个最终的确认信息(ACK 包)。这种SYN、SYN+ACK、ACK的步骤被称为TCP连接建立时的“三次握手”。在这之后,连接就建立起来了。这个连接将一直保持活动状态,直到 超时或者任何一方发出一个FIN(结束)信号。
任何一方都可以关闭一个TCP连接,要求双方发送一个FIN信号关闭自己的通讯频道。一方可以在另 一方之前关闭,或者双方同时关闭TCP连接。因此,当一方发送一个FIN信号时,另一方可发送“FIN+ACK”,开始关闭自己一方的通信并且确认收到了 第一个FIN信号。发送第一个FIN信号的人接下来再发送一个“FIN+ACK”信息,确认收到第二个FIN信号。另一方就知道这个连接已经关闭了,并且 关闭了自己的连接。发送第一个FIN的人没有办法收到最后一个ACK信号的确认信息。这时它会进入“TIME_WAIT”(等待时间)状态并启动一个定时 器,防止另一方没有收到ACK信息并且认为连接仍是打开的。一般来说,这个状态会持续1至2分钟。
现在,我们来讨论第一个问题。如果有人(假如一 个黑客)在你的Web服务器上留下一个半开或者半关的连接,那就是一个坏消息。每一个连接都要消耗内存,打开数千个虚假的TCP连接可能导致服务器瘫痪。 当然,你实际上不可能在不影响TCP正常工作的情况下调整TCP定时器。如果你听说过TCP SYN 攻击的话,那就是这个意思。为了防止出现这种情况,大多数操作系统都要限制半开连接的数量。例如,Linux默认的限制一般是256个。
关于持续 流控制问题,现在我们就来讨论这个问题。TCP中实现它的机制是TCP滑动窗口机制。TCP协议使用“重新发送与正向ACK”来保证数据传输的可靠性。发 送方将等待一段时间,如果没有收到其发送的数据包的ACK确认信息,发送方就要重新发送。顺便说一下,TCP协议中有许多定时器。这只是其中一个定时器。 ACK的概念对于流控制是非常重要的,因为TCP滑动窗口协议使TCP的往复确认变得更有效率。如果TCP要发送一个数据包并且等待每一个ACK确认信 息,它实际上就把数据吞吐量削减了一半。
理想的情况是,我们能够一次发送许多数据包,然后等待收到一个确认收到全部数据包的ACK信息,而不用对 方发来更多的数据。但是,我们如何知道发送了多少个数据包呢?TCP窗口尺寸可以控制在“已发送但是没有确认”的状态下能够容纳多少个数据包。如果这个窗 口尺寸很大,我们不必等待ACK信息就可以发送大量的数据包。这实际上就是流控制。
接收方就是控制窗口大小的那一方。如果接收方将窗口大小设为 “0”,那么,发送方根本就不能发送任何数据。如果这个窗口的尺寸是“1”,那么,我们就回到了简单的“发送和等待ACK”的协议。如果最后的窗口尺寸是 “0”,发送者将发出一个探测信号以搞清这个窗口什么时间再次打开。如果发送方从来没有收到ACK信息,它就一直不断地重试,直到定时器过期。请记住,这 个窗口尺寸在TCP头中是一个16位字段。如果你要一个窗口尺寸(按字节计算)大于16位可以表示的容量(2的16次方个字节),还可以使用一个名为“窗 口缩放”的TCP协议选项。这个选项允许窗口尺寸乘以比例因子。如果没有极大的窗口尺寸,TCP协议就就无法充分利用GB级别的高速连接。这也是我们需要 针对这些新的高速连接调整TCP参数的原因,
关于TCP流控制的问题,我们不能不提一下Nagle算法。如果我们在一个telnet连接上使用一 个大的TCP窗口会发生什么事情呢?你会输入一个指令(例如敲了一个字母),然后一直等待回应它却迟迟不出现在终端回显上。这对于实时通信来说是一个大问 题。而且,telnet也会增加网络的阻塞度,因为一个字节的数据(例如我们的一次击键)需要40个字节的包头。于是RFC 896定义这个Nagle算法,用以消除小的数据包。这个思路是我们应该在数据发送之前给先把小数据集中起来然后一次性发送,以便提高效率。为了更有效 率,它还限定只允许存在一个未经确认的数据段,你在得到确认信息之前不能发送更多的数据。Telnet和互动SSH连接使用TCP_NODELAY套接口 选项启用这个功能,这样当你按下一个按键的时候,你能够立即得到一个回应。
当然,我们仍是忽略了有关TCP协议的许多事情。然而,通过这两篇文章的了解,你应该能够理解其它一些更专业的TCP著作。阻塞控制与流控制不同,本文没有讨论。如果你真的对了解TCP协议的全部工作原理感兴趣,你可以详细阅读TCP RFC。
小结
TCP 协议非常善于解决流控制问题,因此非常适应于许多应用程序。TCP协议中的流控制的含义是:“在收到对发送的数据的确认信息这前,我可以发送多少数据?” 这就是TCP窗口。学习阻塞控制的问题可以留作读者的练习。需要指出的是,在TCP协议之下连接速度开始很慢,然后速度逐渐加快。这个做法并不总是最理想 的。
TCP
/IP基础知识
IP协议
TCP
协议
TCP
三次握手
TCP
四次挥手
TCP
_ACK_机制
TCP
滑动
窗口
UDP协议
TCP
与UDP对比
TCP
滑动
窗口
是个什么东西?这篇讲清楚
在这篇中,我们认真全面地探讨了
TCP
滑动
窗口
的原理,从基本定义到源码分析应有尽有。一般而言,准备面试的话不需要到源码那一步的。
TCP
滑动
窗口
主要有以下作用:1.
TCP
在
滑动
窗口
的基础上提供流量控制,防止较快主机...
TCP
流量控制和
滑动
窗口
目录
TCP
流量控制和
滑动
窗口
什么是
TCP
滑动
窗口
?它是如何工作的? 快速发送器,慢速接收器
TCP
滑动
窗口
TCP
流量控制和
滑动
窗口
...在调整任何
TCP
/ IP设置之前,请先了解
TCP
滑动
窗口
的工作方式。...
TCP
滑动
窗口
协议作用
什么使用
滑动
窗口
协议(或
滑动
窗口
协议有什么作用?) 1. 目的:
TCP
引入
滑动
窗口
的最直接的原因是“接收方的缓存是有限的” 发送方不能假设接收方缓存无限大,一直发包,造成接收方丢包。 发送方不能...
20210520-
TCP
滑动
窗口
TCP
滑动
窗口
作用: 1.提供
TCP
可靠性:对发送的数据进行确认 2.流量控制:
窗口
大小随链路变化 一、
TCP
窗口
控制
TCP
中
窗口
大小是指
tcp
协议一次传输多少个数据。因为
TCP
是一个面向连接的可靠的传输协议,既然是可靠的...
交换及路由技术
3,812
社区成员
12,781
社区内容
发帖
与我相关
我的任务
交换及路由技术
硬件使用 交换及路由技术相关问题讨论专区
复制链接
扫一扫
分享
社区描述
硬件使用 交换及路由技术相关问题讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章