美文网首页
TCP的流量控制

TCP的流量控制

作者: 钢牙仔 | 来源:发表于2018-12-29 14:21 被阅读0次

如果发送方把数据发送的太快,接收方可能会来不及接收,这就会造成数据的丢失。

流量控制就是让发送方的发送速率不要太快,利用滑动窗口机制可以很方便地在TCP连接上实现对发送方的流量控制。

发送方的发送窗口不能超过接收方的接收窗口的数值。TCP窗口单位是字节,不是报文段。

image.png

设A向B发送数据,建立连接时,B告诉A:“我的接收窗口是rwnd=400”(rwnd:receiver window)。因此,发送方A的发送窗口不能超过接收方B的接收窗口。假设每一个报文段长度为100字节,而报文段序号的初始值设为1。大写ACK表示首部中的确认ACK,小写ack(假设值为201)表示接收方希望接收编号从201开始的字节。

从图中可以看出,B进行了三次流量控制。第一次把窗口减少到rwnd=300,第二次又减少到rwnd=100,第三次减少到rwnd=0,0表示不允许发送方再发送数据。这种使发送方暂停发送的状态将持续到接收方B重新发出一个新的窗口值为止。

TCP为每一个连接设置了一个持续计时器。当TCP连接的发送方收到接收方的零窗口通知时,发送方就启动持续计时器。若持续计时器设置的时间到期,发送方就发送一个零窗口控测报文段(携带1字节数据)给接收方。如果接收方可以接受数据,就重新开始发送数据;如果接收方不能接受数据,就重新设置持续计时器。

以上内容参考自: https://github.com/hadyang/interview/blob/master/basic/net/tcp.md
《TCP/IP协议族》第四版

相关文章

网友评论

      本文标题:TCP的流量控制

      本文链接:https://www.haomeiwen.com/subject/jnnulqtx.html