1.什么是流量控制
如果接收方的缓存区满了,发送方还在疯狂着发送数据,接收方只能把收到的数据包丢掉,大量的丢包会极大浪费网络资源,所以要进行流量控制。
流量控制:让发送方的发送速率不要太快,让接收方来得及接收处理。
原理:
- 通过确认报文中窗口字段来控制发送方的发送速率
- 发送方的发送窗口大小不能超过接收方给出窗口大小
- 当发送方收到接收窗口的大小为 0 时,发送方就会停止发送数据
2.一种特殊情况
有一种特殊情况:一开始,接收方给发送方发送了 0 窗口的报文段,后面,接收方又有了一些存储空间,给发送方发送的非 0 窗口的报文段丢失了,发送方的发送窗口一直为零,双方陷入僵局。
解决方案:
当发送方收到 0 窗口通知时,这时发送方停止发送报文,并且同时开启一个定时器,隔一段时间就发个测试报文去询问接收方最新的窗口大小。如果接收的窗口大小还是为 0,则发送方再次刷新启动定时器。