• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
xiaoyaovo
博客园    首页    新随笔    联系   管理    订阅  订阅
TCP 中超时重传机制

目的

保证 TCP 协议可靠的机制

示例

背景:我给老板发微信

  • 场景一:
    我:老板,我想删库!
    …
    等了 15 分钟,老板没回复我。
    于是我又发了一条消息给老板。
    我:老板,我想删库!
    老板:滚!

这就是超时重传,我等了一段时间老板没有回复我,我也不能贸然删库对吧!

  • 场景二:
    我:老板,我想删库!
    老板:滚!
    但是我并没有收到老板的回复。
    于是又过了 15 分钟,我再次给老板发消息。
    我:老板,我想删库!
    老板:滚!

我第一次没有收到了老板的回复,其实老板回复了,于是有发送了一条信息给老板,老板回复我,我知道自己不能删库。这也是超时重传!(我觉得老板可能准备把我删了)

实际上第二种情况只是老板的 ACK 丢了,但是我重复发送一条消息,老板觉得我指定有毛病,但是在 TCP 协议中,已经处理了这种重复发送数据的情况。
TCP 有一个接收缓冲区,也就是一块内存。TCP 会自己检查接收缓冲区中有没有重复的数据。
而之前说过 TCP 报文中有一个 32 位序号 对数据进行编号,根据这个序号就能去重。

连续丢包

丢包会出发超时重传,而连续丢包后,超时重传的时间间隔会越来越长。
而重传到一定的次数会尝试断开连接。

posted on 2021-07-31 23:44  豆本豆红枣豆奶  阅读(18)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3