【计算机网络】传输层 : 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 窗口值 , 重置 持续计时器 , 重新开始计时 ;
文章来源: hanshuliang.blog.csdn.net,作者:韩曙亮,版权归原作者所有,如需转载,请联系作者。
原文链接:hanshuliang.blog.csdn.net/article/details/108507373
- 点赞
- 收藏
- 关注作者
评论(0)