版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
TCP的流量控制介绍1
利用滑动窗口实现流量控制一般说来,我们总是希望数据传输得更快一些。但如果发送方把数据发送得过快,接收方就可能来不及接收,这就会造成数据的丢失。流量控制
(flowcontrol)就是让发送方的发送速率不要太快,既要让接收方来得及接收,也不要使网络发生拥塞。利用滑动窗口机制可以很方便地在TCP连接上实现流量控制。利用可变窗口进行流量控制举例A向B发送数据。在连接建立时,B告诉A:“我的接收窗口rwnd=400(字节)”。seq=1,DATAseq=201,DATAseq=401,DATAseq=301,DATAseq=101,DATAseq=201,DATAseq=501,DATAACK=1,ack=201,rwnd=300ACK=1,ack=601,rwnd=0ACK=1,ack=501,rwnd=100AB允许A发送序号201至500共300字节A发送了序号101至200,还能发送200字节A发送了序号301至400,还能再发送100字节新数据A发送了序号1至100,还能发送300字节A发送了序号401至500,不能再发送新数据了A超时重传旧的数据,但不能发送新的数据允许A发送序号501至600共100字节A发送了序号501至600,不能再发送了不允许A再发送(到序号600为止的数据都收到了)丢失!利用可变窗口进行流量控制举例A向B发送数据。在连接建立时,B告诉A:“我的接收窗口rwnd=400(字节)”。seq=1,DATAseq=201,DATAseq=401,DATAseq=301,DATAseq=101,DATAseq=201,DATAseq=501,DATAACK=1,ack=201,rwnd=300ACK=1,ack=601,rwnd=0ACK=1,ack=501,rwnd=100AB允许A发送序号201至500共300字节A发送了序号101至200,还能发送200字节A发送了序号301至400,还能再发送100字节新数据A发送了序号1至100,还能发送300字节A发送了序号401至500,不能再发送新数据了A超时重传旧的数据,但不能发送新的数据允许A发送序号501至600共100字节A发送了序号501至600,不能再发送了不允许A再发送(到序号600为止的数据都收到了)丢失!利用可变窗口进行流量控制举例A向B发送数据。在连接建立时,B告诉A:“我的接收窗口rwnd=400(字节)”。seq=1,DATAseq=201,DATAseq=401,DATAseq=301,DATAseq=101,DATAseq=201,DATAseq=501,DATAACK=1,ack=201,rwnd=300ACK=1,ack=601,rwnd=0ACK=1,ack=501,rwnd=100AB允许A发送序号201至500共300字节A发送了序号101至200,还能发送200字节A发送了序号301至400,还能再发送100字节新数据A发送了序号1至100,还能发送300字节A发送了序号401至500,不能再发送新数据了A超时重传旧的数据,但不能发送新的数据允许A发送序号501至600共100字节A发送了序号501至600,不能再发送了不允许A再发送(到序号600为止的数据都收到了)丢失!ACK=1,ack=601,rwnd=400丢失!允许A发送序号601至1000共400字节可能发生死锁B向A发送了零窗口的报文段后不久,B的接收缓存又有了一些存储空间。于是B向A发送了rwnd=400的报文段。但这个报文段在传送过程中丢失了。A一直等待收到B发送的非零窗口的通知,而B也一直等待A发送的数据。如果没有其他措施,这种互相等待的死锁局面将一直延续下去。为了解决这个问题,TCP为每一个连接设有一个持续计时器(persistencetimer)。持续计时器为了解决这个问题,TCP为每一个连接设有一个持续计时器(persistencetimer)。只要TCP连接的一方收到对方的零窗口通知,就启动该持续计时器。若持续计时器设置的时间到期,就发送一个零窗口探测报文段(仅携带1字节的数据),而对方就在确认这个探测报文段时给出了现在的窗口值。若窗口仍然是零,则收到这个报文段的一方就重新设置持续计时器。若窗口不是零,则死锁的僵局就可以打破了。2
必须考虑传输效率可以用不同的机制来控制TCP报文段的发送时机:第一种机制是TCP维持一个变量,它等于最大报文段长度MSS。只要缓存中存放的数据达到MSS字节时,就组装成一个TCP报文段发送出去。第二种机制是由发送方的应用进程指明要求发送报文段,即TCP支持的推送(push)操作。第三种机制是发送方的一个计时器期限到了,这时就把当前已有的缓存数据装入报文段(但长度不能超过MSS)发送出去。如何控制TCP发送报文段的时机仍然是一个较为复杂的问题。糊涂窗口综合症糊涂窗口综合症:每次仅发送一个字节或很少几个字节的数据时,有效数据传输效率变得很低的现象。1字节数据1字节20字节1字节20字节20字节TCP报文段首部IP数据报首部TCP报文段IP数据报此时,有效数据传输效率=1/41=2.44%发送方糊涂窗口综合症发送方TCP每次接收到一字节的数据后就发送。这样,发送一个字节需要形成41字节长的IP数据报。效率很低。解决方法:使用Nagle算法。Nagle算法若发送应用进程把要发送的数据逐个字节地送到TCP的发送缓存,则发送方就把第一个数据字节先发送出去,把后面到达的数据字节都缓存起来。当发送方收到对第一个数据字符的确认后,再把发送缓存中的所有数据组装成一个报文段发送出去,同时继续对随后到达的数据进行缓存。只有在收到对前一个报文段的确认后才继续发送下一个报文段。当到达的数据已达到发送窗口大小的一半或已达到报文段的最大长度时,就立即发送一个报文段。Nagle算法原理发送第1个数据字节收到确认?发送缓存中的所有数据到达的数据已达到发送窗口一半或已达到报文段的最大长度时?立即发送数据是是否否接收方糊涂窗口综合症当接收方的TCP缓冲区已满,接收方会向发送方发送窗口大小为0的报文。若此时接收方的应用进程以交互方式每次只读取一个字节,于是接收方又发送窗口大小为一个字节的更新报文,发送方应邀发送一个字节的数据(发送的IP数据报是41字节长),于是接收窗口又满了,如此循环往复。接收方糊涂窗口综合症原因:接收方应用进程消耗数据太慢,例如:每次只读取一个字节。seq=601,DATAACK=1,ack=601,rwnd=0AB允许A发送序号601至601共1字节不允许A再发送(到序号600为止的数据都收到了)应用进程读取1字节。接收缓存大小=1
字节ACK=1,ack=601,rwnd=1A发送了序号601至601字节,不能再发送了应用进程读取1字节。接收缓存大小=1
字节seq=602,DATA允许A发送序号6
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 临床 护理矫形器使用指导 实操实训|手把手教学操作指南
- 自行车骑行装备零配件年终大促宣传及营销方案
- 合作合同条款修改回复函(5篇范文)
- 年度合同续签事宜回复函7篇
- (2026年)医院药事管理制度
- 互联网创业团队项目管理高效指南
- 体育健康:强健体魄快乐成长小学主题班会课件
- 社会实践课:了解社会参与实践小学主题班会课件
- 快乐读书节:书香班级小学主题班会课件
- 游戏用户忠诚度培养指南
- JJF 2275-2025高频电压标准装置校准规范
- 妇女儿童两规知识培训课件
- 危化经营安全员题库及答案解析
- 东南大学成贤学院《大学物理A》2025 - 2026学年第一学期期末试卷(A卷)
- GB/T 26649-2025镁合金汽车车轮铸件
- 外挂钢楼梯专项施工方案
- 重庆市护理三基三严考试题库(含答案)
- 灯杆广告管理办法
- DB37∕T 5031-2015 SMC玻璃钢检查井应用技术规程
- 心电图诊断指南和规范
- DB64∕T 1147-2022代替DB64 1147-2015 工业企业单位产品能源消耗限额
评论
0/150
提交评论