TCP流量控制(flow control)
首先,为什么进行流量控制?
一般地说,我们总是希望数据传输的更快,但是如果发送方传送的很快,而接收方来不及接收的话,数据就会丢失。
TCP使用滑动窗口来进行流量控制。
TCP窗口单位是字节。
其实,滑动窗口只不过是一个装B的说法,“每次传输容量”这个名词更适合这个地方。
注意看上图,上图是从谢老师的《计算机网络》中截出的一幅TCP流量控制的说明图,下面我也来说明一下:
首先先想一个问题,发送方A与接收方B,A想要发送600个字节的内容给B,要如何发送?
有人说,简单,直接全部送过去。
可实际上并不是个简单的问题,要考虑A的发送能力,A一次能发多少字节的数据出去呢?还得考虑B的接收能力,B一次能接收多少字节的数据?还得考虑网络原因,中途出现数据丢失怎么办?
首先,针对A,B的每次发送接收能力问题,先约定一个比较合适的容量rwnd,这个容量一般来说,是接收方B的每次处理能力,只要A每次发送的数据不超过这个容量rwnd,那么B就有能力处理地过来。
这个容量rwnd不是恒定的,而是要根据接收方B的实际情况和网络状况而改变的,而且也可能随着发送数据的多少而改变,例如数据发送完毕,则rwnd = 0。
现在我们可以看上图了。
在看第一行之前,还得说明一下,A与B之间已经约定好了:rwnd=400字节,至于它们之间是怎么约定的,其实大部分情况下,发送一个1字节的确认信号到B,完成一次数据交互,即可获得B的rwnd。
1 现在看第一行:seq=1,DATA,表示A发送了1-100字节的数据到B,此时B的处理容量还没满,还有300字节的处理能力。A可以继续发送。
2 再看第二行:seq=101,DATA,表示A发送101-200字节的数据到B,B的处理容量还没满,还差200字节。
3 看第三行:seq=201,DATA,但是出现“丢失”,不必管怎么丢失的,此时相当于出现了严重的错误了,A不能继续发数据了,B也要调整一下状态了。
4 ACK=1,ack=201,rwnd=300,ACK表示首部确认位,ack表示确认字段的值,此时,B返回自己的rwnd=300,那么A只能发300字节的数据,就要重新确认rwnd了。
5 seq=301,DATA,参照第二步
6 seq=401,DATA,参照第二步
7 seq=201,DATA,这个时候是重发旧的数据,此时,300字节的rwnd满了,要重新确认新的rwnd
8 ACK=1,ack=501,rwnd=100,参照第4步
9 seq=501,DATA,参照第二步
10 ACK=1,ack=601,rwnd=0,因为上一步,就已经把600字节的数据传送完毕了,没必要在继续传了,这个时候,就把rwnd设置成0了。
rwnd=0的问题
有人又要问了,如果rwnd=0,那么发送方A岂不是一直不能传数据了吗?
这个时候,一个叫做“持续计数器”的东东出现了,在发送方,如果收到rwnd=0的通知,那么“持续计数器”启动,经过一段时间之后,发送试探消息到B,如果还是收到rwnd=0的结果,那么继续等待,如果不是0,就可以继续传数据了。
分享到:
相关推荐
这项研究是通过使用旅游气候指数(TCI)来评估Bal路支斯坦地区游客的舒适条件的。 在1995年1月至2015年12月期间,从位于伊朗Bal路支斯坦地区的5个天气站(哈什,萨拉万,尼克沙尔,伊朗站和查巴哈尔)收集了气候参数...
黑鸟信号搜索和侦测系统TCI350.pdf
TCI Reference Architecture is a framework for cloud security practice.
基于TCI麻醉深度智能控制系统的设计.rar
基于TCI麻醉深度智能控制系统的设计.pdf
TCI011-2021
6486的专业培训课程,适用于DSP开发,嵌入式产品移植优化和设计
KeyStone Architecture TI’s KeyStone Multicore Architecture provides a high performance structure for integrating RISC and DSP cores with application-specific coprocessors and I/O....
中国景区预约旅游便利度指数(TCI)研究报告摘要精品报告2020.pdf
python库。 资源全名:tencentcloud-sdk-python-tci-3.0.389.tar.gz
TCP IP协议开发,详细讲解了协议的原来内容,适合入门者开发参考使用
TCI卡概要我的TCI卡完成测试动机我创建此文件是为了完成TCI要求的测试。安装转到项目文件夹跑步npm install gulp 就是这样! 并浏览到http://localhost:9006执照在MIT许可下
6486的专业培训课程,适用于DSP开发,嵌入式产品移植优化和设计
TCI6614 Power Consumption Summary
TCI基础知识PPT教案.pptx
TCI临床中科学应用.ppt
tci临床具体操作讲义.ppt
TCI (交易通道指数) 指标。
TI-TCI6630K2L.pdf
SPC统计培训管理资料TCI.pptx