第8章 传输层(5)_流量控制

5. 流量控制

(1)流量控制:就是让发送方的发送速率不要太快,要让接收方来得及接收

(2)流量控制原理

 

  ①在客户端向服务器发送TCP连接请求时TCP首部会包含客户端接收窗口的大小,服务器就会根据这个窗口调整自己发送窗口的大小。

  ②在传输过程中,客户端发送的确认数据包除了确认号还包含窗口信息,服务器收到确认数据包后,会根据窗口信息调整发送窗口。通过这种方法进行流量控制。

(3)流量控制过程

 

  ①在连接建立时,B告诉A“我的接收窗口(rwnd)为400字节”,这时A的发送窗口就被设置为400。(注意,ACK表示首部中的确认位,ack表示确认号)

  ②假设A发送第1~3分组出去,其中B收到1、2分组,但第3个分组丢失。这时A还没来得及发送第4个分组,就收到了B发送的的确认包(Ack=1,ack=201,rwnd=300,其中的rwnd是B根据自己当前的缓存情况给出的)

  ③A将自己的发送窗口调整为300第1次流量控制)并前移200字节,然后发送第4、5个分组。假设之后第3个分组超时重传时间到,就会接着发送第3个分组。

  ④B收到3、4、5分组以后发送确认,并根据自己缓存情况调用接收窗口(设为100)。

  ⑤A收到B的确认以后,调整发送窗口为100第2次流量控制),并发送第6个分组。

  ⑥B收到第6个分组后,缓存满就会发送(ACK=1,ack=601,rwnd=0)的确认包让A停止发送。

  ⑦A收到确认包以后将发送窗口调整为0第3次流量控制),然后停止发送。

  ⑧当B缓存有空间时,会调整接收窗口(400),并向A发送确认包(Ack=1,ack=601,rwnd=400)让A继续发送分组。如果B的这个确认包中途丢失,TCP为每一个连接设置了一个持续计时器只要一方收到零窗口通知,就启动计时器。计时器到时,就会发送一个零窗口探测报文要求对方给出窗口值,以避免A和B处于互相等待的死锁状态

原文地址:https://www.cnblogs.com/5iedu/p/7258025.html