网络协议|网络协议(TCP流量控制)

一 什么是流量控制
就是在接收端拥堵的时候,发送端应减少报文段的发送;在接收端不拥堵的时候,可以恢复到正常的报文段的发送。是通过滑动窗口实现的,通过窗口来控制流量。

二 如何进行流量控制的 #1 发送端向接收端发送连接请求,接收端对请求进行确认,确认包里会告诉发送端它的接受窗口window是多大(能连续接收多少个字节),发送端后面就会根据这个window设置发送端自己的发送窗口大小

#2 当接收窗口来不及处理发送端报文段的时候,则会调整(缩小)window窗口,接收端此时根据接收端确认包里的window窗口动态调整(缩小)自己的发送窗口
【网络协议|网络协议(TCP流量控制)】
#3 如果接收窗口已经不能处理任何发送端的报文段,如果发送端继续发送,这些数据段会被丢弃的,所以接收端会在确认包里设置window=0. 发送端收到确认报文,将自己发送窗口window设置为0,此发送端停止发送报文段

#4当接收端重新获取可用空间的时候,会给发送端传输一个窗口更新包,发送端收到之后,就会调整自己的window大小,然后继续向接收端发送窗口内的报文段

#5 如果接收端的窗口更新数据包丢失了,怎么办了?这时候陷入死锁状态,发送端等待接收端的更新请求,接收端等到发送端。
所以我们还在发送端设置了计时器,间歇性的查询接收端,强制要求接收端返回窗口大小,当计时器超时就会触发这个请求

网络协议|网络协议(TCP流量控制)
文章图片



    推荐阅读