目录
1.流量控制
2.滑动窗口
3.思考问题
1.流量控制
一般来说,我们总是希望数据传输得更快一些,但如果发送方把数据发送得过快,接收方就可能来不及接收,这就会造成数据的丢失.
所谓流量控制(flow control)就是发送方的发送速率不要太快,要让接收方来得及接收.
2.滑动窗口
TCP 协议是利用滑动窗口实现流量控制的。一般来说,我们总是希望数据传输得更快一些,不会一次只发一个字节。但是如果发送方把数据发得过快,接受方就可能来不及接收,这就会造成数据的丢失。所谓流量控制就是让发送方的发送速率不要太快,要让接收方来的及接收。
在 TCP 的报头中有一个字段叫做接收通告窗口,这个字段由接收端填充,是接收端告诉发送端自己还有多少缓冲区可以接收数据。干是发送端就可以根据这个接收端的处理能力来发送数据,而不会导致接收端处理不过来。所以发送端就会有一个发送窗口,这个发送窗口的大小是由接收端填充的接收通告窗口的大小决定的,并且窗口的位置会随着发送端数据的发送和接收到接收端对数据的确认而不断的向右滑动,将之称为滑动窗口。
滑动窗口太大,对方来不及收;太小,效率太慢;
注意:一般接收数据的一方会告诉发送数据方自己接收通告窗口的大小,那么发送方就会根据接收通告窗口的大小来调整滑动窗口的大小;也就是要让对方收的及,还要让发送数据最大化;
对方收到数据之后,会排序,去重,所以不用担心收到的数据乱序的问题,因为不一定先发去的数据就一定先到达对方。
3.思考问题
1.如果接收端填充的接收通告窗口为0,发送端接下来怎么处理?
2.什么叫糊涂窗口综合征?
3.在TCP的实现中广泛使用的Nagle算法是什么?