一、TCP的滑动窗口大小实际上就是socket的接收缓冲区大小的字节数
二、对于server端的socket一定要在listen之间设置缓冲区大小,因为,accept时新产生的socket会继承监听socket
的缓冲区大小。对于client端的socket一定要在connet之前设置缓冲区大小,因为connet时需要进行三次握手过程,会通知对方自己的窗
口大小。在connet之后再设置缓冲区,已经没有什么意义。
三、由于缓冲区大小在TCP头部只有16位来表示,所以它的最大值是65536,但是对于一些情况来说需要使用更大的滑动窗口,这时候就要使用扩展的滑动窗口,如光纤高速通信网络,或者是卫星长连接网络,需要窗口尽可能的大。这时会使用扩展的32位的滑动窗口大小。
四、滑动窗口听移动规则:
1、窗口合拢:在收到对端数据后,自己确认了数据的正确性,这些数据会被存储到缓冲区,等待应用程序获取。但这时候因为已经确认了数据的正确性,需
要向对方发送确认响应ACK,又因为这些数据还没有被应用进程取走,这时候便需要进行窗口合拢,缓冲区的窗口左边缘向右滑动。注意响应的ACK序号是对方
发送数据包的序号,一个对方发送的序号,可能因为窗口张开会被响应(ACK)多次。
2、窗口张开:窗口收缩后,应用进程一旦从缓冲区中取出数据,TCP的滑动窗口需要进行扩张,这时候窗口的右边缘向右扩张,实际上窗口这是一个环形
缓冲区,窗口的右边缘扩张会使用原来被应用进程取走内容的缓冲区。在窗口进行扩张后,需要使用ACK通知对端,这时候ACK的序号依然是上次确认收到包的
序号。
3、窗口收缩,窗口的右边缘向左滑动,称为窗口收缩,Host Requirement RFC强烈建议不要这样做,但TCP必须能够在某一端产生这种情况时进行处理。
分享到:
相关推荐
TCP拥塞学习资料,TCP滑动窗口协议,TCP拥塞窗口,网络间对象的传输与调用[new]
TCP 滑动窗口模拟VC++ 包括一比特和ARQ
理解数据链路层的滑动窗口协议,完整实现滑动窗口协议中的1bit滑动窗口协议,通过socket实现TCP连接来进行模拟
TCP滑动窗口演示flash,也是转载于其他地方并非原创。
TCP Sliding Window滑动窗口协议演示动画,Flash播放,可以调整参数
大家可能经常听说TCP滑动窗口,那到底什么是TCP滑动窗口呢?今天我就来详细解释下网络开发中常听说的概念:滑动窗口
滑动窗口机制及TCP中的相关实现,详细介绍了滑动窗口机制的原理。
很经典很详细的pdf资料整理,让你快速明白tcp内核缓冲机制,不用再为send、recv而担忧
其中设为1相当于使用后退n帧技术的滑动窗口协议,设为大于1的值则相当于使用选择性重传策略的滑动窗口协议。第2个参数为接收速率设定,编辑框中填入的是接收定时器的间隔时间,单位为ms,1000表示接收速率为每秒处理...
采用MFC技术的界面编程,运用C++语言,模拟实现滑动窗口协议。
一篇讲解滑窗机制的文章,图文并茂,很不错!
生成树协议及TCP滑动窗口演示,很形象。flash小动画
博士论文,关于滑动窗口规模的动态调整算法的有点高深,^_^,滑动窗口是计算机网络中的经典算法,这篇论文是讨论如何对滑动窗口动态调整。
TCP/UDP socket 调试工具 TCP/UDP socket 调试工具 SocketTool调试软件是一款网络TCP/UDP通信调试工具,本工具集功能强大与简单易用为一体,是无需安装的免费绿色软件。她可以帮助网络编程人员、网络维护人员检查所...
TCP滑动窗口、流量控制及拥塞控制详解.docx
Socket API提供了一些基本的接口函数,如socket()、bind()、connect()、listen()、accept()、send()、recv()等,这些函数可以方便地实现TCP连接的建立和数据传输等操作。 具体来说,应用程序在使用Socket API进行...
TCP/IP的基础知识,和SOCKET编程的基本原理
北邮的滑动窗口协议 C源代码清单 int tcp mem schedule struct sock sk int size int kind { int amt TCP PAGES size ; sk >forward alloc + amt TCP MEM QUANTUM; atomic add amt &tcp memory ...
此案例采用modbus-tcp协议与设备进行通信,且分别应用Socket与第三方组件NModbus两种方式进行通信。
SND.UNA :是个绝对指针,它指向的是已发送但未收到确认的第个字节的序列号,也就是 #2 的第个字节。SND.NXT :也是个绝对指针,它指向未发送但可发送