【计算机网络】传输层 : TCP 流量控制 ( 流量控制过程 | 持续计时器机制 )

2023-03-28 17:26:26 浏览数 (2)

文章目录

  • 一、TCP 流量控制
  • 二、TCP 流量控制 过程
  • 三、持续计时器机制

一、TCP 流量控制

TCP 流量控制 :

① 流量控制 : 控制 发送方 降低发送速率 , 避免 接收方 来不及接收 , 丢弃数据 , 导致重传 ;

② 滑动窗口机制 : TCP 通过 该 滑动窗口机制 实现 流量控制 ;

③ 滑动窗口 调整 : 接收方 根据 接收缓存大小 , 动态调整 发送方 发送窗口 大小 ;

④ 接收方窗口 rwnd : 接收方 设置 确认报文段 中含有 窗口字段 , 将 rwnd 通知给发送方 ;

⑤ 发送窗口 : 发送方 发送窗口 取 接收窗口 rwnd , 与 拥塞窗口 cwnd , 中较小的值 ;

二、TCP 流量控制 过程


TCP 流量控制 过程 : 发送端 向 接收端 发送数据 ;

① 连接建立 : 接收端 向 发送端 发送 接收窗口 rwnd = 400 ;

② 发送端 发送数据 :

  • 发送 1 ~ 100 字节 , 此时还能再发送 300 字节 ; ( seq = 1 )
  • 发送 101 ~ 200 字节 , 此时还能再发送 200 字节 ; ( seq = 101 )
  • 发送 201 ~ 300 字节 , 该报文段丢失 ; ( seq = 201 )

③ 接收端 返回数据 : 返回 ACK = 1 , ack = 201 , rwnd = 300 ;

  • 表示 接收端 接收到了 201 之前的数据 , 期待发送 201 数据 , 接收窗口 rwnd 大小为 300 字节 ;
  • 发送方此时 只能发从 201 开始的 300 字节滑动窗口大小的数据 , 即发送 201 ~ 500 之间的数据 , 共 300 字节 ;

④ 发送方 发送数据 :

  • 发送 301 ~ 400 字节 , 此时还能再发送 100 字节数据 ;
  • 发送 401 ~ 500 字节 , 此时滑动窗口的数据都发送完毕 , 不能再发送了 ;
  • 发送方 的 超时重传计时器 , 时间到期 , 重传 201 ~ 300 字节数据 , 此时不能发送 新数据 ;

⑤ 接收方 接收数据 : 接收方接收到了上述 所有发送的数据 , 返回 ACK = 1 , ack = 501 , rwnd = 100 ; 表示 期待 发送方发送 501 之后的数据 , 接收窗口 rwnd 设置为 100 字节 ;

⑥ 发送方 发送数据 : 发送方发送 501 ~ 600 字节数据 , 此时滑动窗口占满 , 不能继续发送数据 ;

⑦ 接收方 接收数据 : 接收方接收到了 501 ~ 600 字节数据 , 此时回送 ACK = 1 , ack = 601 , rwnd = 0 ; 设置期望发送 601 之后的数据 , 接收窗口设置为 0 ; 此时不允许发送方再发送了 ;

三、持续计时器机制

持续计时器机制 :

① 开始计时 : TCP 连接中 , 有一个 持续计时器 , 发送方 收到 接收方 的 零窗口 通知 , 即 rwnd = 0 , 启动该 持续计时器 ;

② 零窗口探测报文 : 如果 持续计时器 到期 , 发送方 发送 零窗口探测报文 给接收方 , 接收方 收到上述报文 , 返回 当前窗口值 ;

③ 重新计时 : 如果 接收方的 接收窗口 rwnd 仍然为 0 , 发送方收到该 0 窗口值 , 重置 持续计时器 , 重新开始计时 ;

0 人点赞