设为首页 - 加入收藏
广告 1000x90
您的当前位置:黄大仙救世网www78345 > 接收端 > 正文

什么是傻瓜窗口综合征?说明在接收端避免傻瓜窗口综合征的方法

来源:未知 编辑:admin 时间:2019-07-28

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  展开全部¨ 当发送端应用进程产生数据很慢、或者接收端应用进程处理数据接收缓冲区数据很慢,或者二者兼而有之;就会使应用进程间传送的报文段很小,特别是有效载荷很小。极端情况下,每次只发送包含有效载荷为一个字节的报文段,同时接收方每次也仅对接收到的包含一个字节有效载荷的报文段进行确认。有效载荷只有1个字节;而传输开销有40字节(20字节的IP头+20字节的TCP头)这种现象就叫傻瓜窗口综合症。

  发送端引起的傻瓜窗口综合症:如果发送端为产生数据很慢的应用程序服务,例如,一次产生一个字节。这个应用程序一次将一个字节的数据写入发送端的TCP的缓存。如果发送端的TCP没有特定的指令,它就产生只包括一个字节数据的报文段。结果有很多数据区包含字节数很少的IP数据报就在互连网中传来传去。

  Nagle算法: 主要针对发送方应用进程产生数据比较慢,而造成发送报文段包含数据量比较小的情况,其主要思想是强迫发送方等待,让它收集发送数据,以便发送大块数据,即通过减少发送次数来加大每次发送的数据量。

  1)假定发送端应用程序产生了1000字节的数据块,但接收端应用程序每次只吸收1字节的数据。

  2) 再假定接收端的TCP的输入缓存为4000字节。发送端先发送第一个4000字节的数据。接收端将它存储在其缓存中。现在缓存满了。它通知窗口大小为零,这表示发送端必须停止发送数据。

  3)接收应用程序从接收端的TCP的输入缓存中读取第一个字节的数据。在输入缓存中现在有了1字节的空间。接收端的TCP宣布其窗口大小为1字节,这表示期待发送端的TCP会把这个宣布当作一个好消息,并使发送端发送只包括一个字节数据的报文段。

  4) 这样的过程一直继续下去。一个字节的数据被消耗掉,然后发送只包含一个字节数据的报文段。

  针对由接收端引起的傻瓜窗口综合症,即接收端应用程序消耗数据比到达的慢,有两种建议的改进策略: Clark算法和延迟确认算法

  Clark算法: 只要接收方的接收缓冲区已满,则每次接收到TCP报文后返回窗口值为0的确认报文,以停止发送方的数据发送,直到接收缓冲区的空闲区域已经能容纳最大长度的报文段或有一半以上的接收缓空间已经空闲,再发送一个窗口值不为0的确认窗口,以重新更新发送方的滑动窗口大小,使发送方可以继续发送报文段。

  延迟确认算法: 当接收方收到报文段后,并不马上回复确认报文,而是等接收缓冲区已经有一定数量的空闲空间后,再回送确认报文段。这样便可减慢发送方滑动窗口的滑动速度,进而降低数据的发送速度。

本文链接:http://heargear.net/jieshouduan/721.html

相关推荐:

网友评论:

栏目分类

现金彩票 联系QQ:24498872301 邮箱:24498872301@qq.com

Copyright © 2002-2011 DEDECMS. 现金彩票 版权所有 Power by DedeCms

Top