赞
踩
如果接收方没有 及时回复,发送方就要干等着,接收方回复。这样报的往返时间越长。怎么改进呢?我们让他在一段范围内,无需等待确认应答,而可以继续发送数据。
这还是用我们提到的缓存。发送方 在等到确认应答返回之前,必须在缓冲区中保留已发送的数据。如果按期收到确认应答,此时数据就可以从缓存区清除。也就是可以并行发送。那么这个量是多少呢?也就是TCP里的窗口?
窗口的大小取决于什么呢?首先想到的一点就是取决于接受方。接收端的数据先在缓冲区,缓存区的大小是一定的。缓存区里 存放这已经成功接收的数据 待还没被应用层读取。剩余的空间就是可以接受数据的空间,也就是窗口的大小。
它是动态的。
再来看发送端:
当发送端接收到 接收端的ack之后,会向右滑动。
极端的情况就是 ,发送端发送的快了,这时候可用窗口为0了。
这时候呢 发送方会定时发送窗口探测数据包,看是否有机会调整窗口的大小。当接收 方比较慢的时候,要防止低能窗口综合征,别空出一个字节来就赶快告诉发送方,然后马上 又填满了,可以当窗口太小的时候,不更新窗口,直到达到一定大小,或者缓冲区一半为空,才更新窗口。
以上整个过程 都是我们说的流量控制。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。