流量控制
所谓流量控制就是让发送发送速率不要过快,让接收方来得及接收。利用滑动窗口机制就可以实施流量控制。
原理:运用TCP报文段中的窗口大小字段来控制,发送方的发送窗口不可以大于接收方发回的窗口大小。
考虑一种特殊的情况,就是接收方若没有缓存足够使用,就会发送零窗口大小的报文,此时发送方将发送窗口设置为0,停止发送数据。之后接收方有足够的缓存,发送了非零窗口大小的报文,但是这个报文在中途丢失的,那么发送方的发送窗口就一直为零导致死锁。
为了解决这个问题,TCP为每一个连接设置一个持续计时器(persistence timer)。只要TCP的一方收到对方的零窗口通知,就启动该计时器,周期性的发送一个零窗口探测报文段。对方就在确认这个报文的时候给出现在的窗口大小(注意:TCP规定,即使设置为零窗口,也必须接收以下几种报文段:零窗口探测报文段、确认报文段和携带紧急数据的报文段)。
流量控制与拥塞控制的比较
1 相同点
现象都是丢包;实现机制都是让发送方发的慢一点、发的少一点。
2 不同点
2.1丢包位置不同
流量控制丢包位置是在接收端上;拥塞控制丢包位置是在路由器上。
2.2作用的对象不同
流量控制的对象是接收方,怕发送方发的太快,使得接收方来不及处理;拥塞控制的对象是网络,怕发送方发的太快,造成网络拥塞,使得网络来不及处理。
3 联系
拥塞控制通常表示的是一个全局性的过程,它会涉及到网络中所有的主机、所有的路由器和降低网络传输性能的所有因素;流量控制发生在发送端和接收端之间,只是点到点之间的控制。