TCP流量控制

2017-09-04  本文已影响0人  wayyyy

流量控制针对的是发送方和接收方速度不匹配的问题(比如经典的fast sender and slow receiver问题,接收方缓存大小与发送速率不匹配),所提供一种速度匹配服务,遏制发送速率使接收方应用程序的读取速率与之相适应。

主要的方法有:

滑动窗口协议

滑动窗口协议是传输层进行流控的一种措施,接收方通过通告发送方自己的窗口大小,从而控制发送方的发送速度。

在TCP发送缓存内的数据都可以分为4类:

已经发送但还未收到对端ACK和未发送但对端允许发送这2部分数据称之为发送窗口。


滑动窗口.jpg
原理

ACK报文包含2个重要信息:

如此发送方在接收到的ACK包含的这2个数据后就可以计算出还可以发送多少字节的数据给对方,假定当前发送方已发送到第x个字节,则可以发送的字节数就是y=m-(x-n)。

例子
例图.jpg

从这个例子里我们可以总结一下几点:

窗口大小

由接收方提供的窗口大小通常可以由接收进程控制,Socket API允许进程设置发送和接收缓存大大小。接收缓存的大小是该连接上所能够通告的最大窗口大下

参考资料
《TCP/IP详解 卷1:协议》[美] W.Richard Stevens

上一篇 下一篇

猜你喜欢

热点阅读