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

举报
韩曙亮 发表于 2022/01/11 00:13:32 2022/01/11
【摘要】 文章目录 一、TCP 流量控制二、TCP 流量控制 过程三、持续计时器机制 一、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 窗口值 , 重置 持续计时器 , 重新开始计时 ;

文章来源: hanshuliang.blog.csdn.net,作者:韩曙亮,版权归原作者所有,如需转载,请联系作者。

原文链接:hanshuliang.blog.csdn.net/article/details/108507373

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。