当前位置: 首页 > news >正文

在使用tcp长连接时,是否还需要再引入重发机制?

一 什么是tcp长连接?

       在TCP(Transmission Control Protocol)中,长连接是指在通信过程中保持连接状态的一种方式,相对于短连接而言。长连接通常用于需要频繁通信的场景,以减少连接建立和断开的开销。在长连接中,数据可以在多次交互中传输,而连接保持打开状态。

二 有没有为tcp长连接引入重发机制必要性?

      关于是否需要设置重发机制,TCP本身已经包含了一套可靠的数据传输机制,包括重传机制。TCP使用序号和确认来保证数据的可靠传输。如果发现数据包未被正确接收,TCP将触发重传机制,将丢失的数据重新发送。这个机制确保了数据的可靠性,而不需要应用层额外的重发机制

        

三  若需要引入重发机制,只能在客户端引入重发机制(不要在服务端引入)

       如果要为tcp长连接引入重发机制,那么只能在客户端可引入重发机制才是合理的,服务器的端口和IP都是固定的,如果是一些物联网设备可能有大量设备客户端在连接,此时服务端只需保持稳定处理协议通讯数据。每个物联网设备ip和端口都会随着每次的连接而变化,当一个物联网设备因通讯或其它问题断开时,服务器此时是不能再主动连接客户端的物联网设备,而客户端物联网设备可以重新连接到指定IP和端口的服务器。(此时服务端才有客户端的新ip和端口)只有在客户端连通的情况下,服务端才可以发送数据,这就说明复发机制只合适在客户端。

       

四  极端环境下的服务端重试设计(不要这样做)

  1. 应用层重发: 在应用层实现一个重发机制。当服务端检测到数据发送失败(例如,未收到客户端的确认或收到了明显的错误响应),它可以记录未成功发送的数据,并在稍后的时间点尝试重新发送这些数据。

  2. 定时重发: 在服务端引入一个定时器,定期检查之前未成功发送的数据,并进行重发。这可以通过定时任务、定时器或其他机制来实现。定时重发的时间间隔可以根据具体需求进行调整。

  3. 指数退避: 在实施重发时,可以考虑使用指数退避(exponential backoff)策略,即在每次重发之后将重发时间间隔逐渐增加,以避免在网络或服务端出现瞬时问题时引发过多的重发。

  4. 重发次数限制: 为了防止无限重发,可以在服务端设置一个重发次数的上限。如果达到了这个上限仍未成功,则可能需要采取其他处理方式,例如记录日志、通知管理员或者考虑其他错误处理策略。

五 总结

     tcp长连接本身是相当稳定,并且本身也自带重试机制。别在画蛇添足为tcp长连接协议服务端再设计重发机制。

        

相关文章:

  • node使用nodemonjs自动启动项目
  • 第22课 类和对象
  • 浅谈数字孪生的应用与发展
  • 苹果账号被禁用怎么办?
  • 2023十大编程语言及未来展望
  • 大模型LLM的微调技术:LoRA
  • 软件测试面试题——如果保证测试用例覆盖率
  • cpp_07_类型转换构造_析构函数_深拷贝_静态成员
  • lodash源码分析每日一练 - 数组 - intersection / intersectionBy / intersectionWith
  • mp4视频转rosbag文件(图片压缩格式)
  • Flink导入StarRocks
  • 【音视频 ffmpeg 学习】 跑示例程序 持续更新中
  • Python圣诞树代码
  • 记录一下imx6ull linux 5.10.9多点电容触摸屏驱动报错问题解决方法
  • HTML---JavaScript基础
  • Go语言学习第二天
  • 云计算IaaS、PaaS和SaaS之
  • nodejs微信小程序+python+PHP的冷链物流配送系统-计算机毕业设计推荐
  • 查看ios app运行日志
  • 微服务(2)
  • 巴基斯坦副总理兼外长达尔将访华
  • 马上评|中药液涉嫌添加安眠药?药品安全儿戏不得
  • 波兰总统选举第一轮投票结束,出口民调显示将进入第二轮投票
  • 证监会披露两起操纵市场处罚结果,今年来涉操纵股票罚没金额超7.5亿元
  • C919上海虹桥-深圳航线开通,东航今年计划再接收10架C919
  • 纽约市长称墨海军帆船撞桥已致2人死亡,撞桥前船只疑似失去动力