前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >谈谈长连接和心跳保活机制

谈谈长连接和心跳保活机制

作者头像
提莫队长
发布2020-06-02 15:30:41
2.8K0
发布2020-06-02 15:30:41
举报
文章被收录于专栏:刘晓杰刘晓杰

1.长连接介绍

通信双方进行TCP链接后进行通信,结束后不主动关闭链接 优点:通信速度快,免去了DNS解析时间,以及三次握手四次分手的时间,避免短时间内重复连接所造成的信道资源 & 网络资源的浪费

2.长连接断开的原因

  • 长连接所在进程被杀死
  • NAT超时
  • 网络状态发生变化,如移动网络 & Wifi切换、断开、重连
  • 其他不可抗因素(网络状态差、DHCP的租期等等 )
NAT简介
IP可以分为公网ip和私网IP,公司,学校,政府机构等场所一般都是私网IP,所有的私网IP通过公网ip连接互联网。只有公网ip是能够连接互联网的,私网IP一般只用作局域网
那么怎么连上网的呢,我们通过私网ip然后把我们的需求和要发送的数据发给路由器,然后路由器对接网络,再把数据发送给Internet.然后internet发送数据到我们学校的路由,然后路由在通过我的私网ip发送给我,这就是我们真实上网的流程。私网Ip和公网Ip的转换这个问题,其实利用到了nat转换技术
NAT对我们来说最大的贡献就是帮助我们节省了大量的ip资源
但是也有缺陷,NAT最大的弊端在于破坏了IP端到端通信的能力。因为一个会话建立后会在NAT设备上建立一个网管映射表,在会话静默的这段时间,NAT网关会进行老化操作。

3.高效维持长连接方案

  • 进程保活(防止进程被杀死)
  • 心跳保活(阻止NAT老化)
  • 断线重连(断网以后重新连接网络)
3.1 进程保活

进程保活.jpg

3.2 心跳保活

第4节会说明

3.3 断线重连

需要检测网络状态&监听网络变化,可以考虑BroadcastReceiver

4.心跳保活

4.1 定义

每隔一段时间想对方发送自定义信息(心跳包),以确保连接存活且有效的通信机制 注意,它和和轮询机制区别:一次轮询相当于一次TCP连接和断开

4.2 心跳机制的方案和设计

心跳流程.jpg

4.3 设计要点
  • 心跳包的规格(内容 & 大小)
  • 心跳发送的间隔时间
  • 断线重连机制
4.3 (1)心跳包的规格

心跳包 = 1个携带少量信息 & 大小在10字节内的信息包

4.3 (2)心跳发送的间隔时间

不能过长,NAT超时也没检测出来。不能过短,资源浪费和信令风暴

信令风暴:
由于网络收到的终端信令请求超过了网络各项信令资源的处理能力,引发网络拥塞以至于产生雪崩效应,导致网络不可用,我们称之为“信令风暴”。

最常用方案是每隔x分钟发送心跳包1次,缺陷在于网络环境不同未必都适用。所以采用自适应心跳间隔

自适应心跳间隔时间.jpg

该方案需要解决的有2个核心问题

  • (1)如何自适应计算心跳间隔 从而使得心跳间隔 接近 当前NAT 超时时间 不断增加心跳间隔时间进行心跳应答测试,直到心跳失败5次后,即可找出最接近 当前NAT 超时时间的心跳间隔时间
  • (2)如何检测 当前网络环境的NAT 超时时间 发生了变化 当前发送心跳包成功 的最大间隔时间(即最接近NAT超时时间的心跳间隔) 发送失败5次后
4.3 (3)断线重连机制

判断长连接是否有效的准则 = 服务器是否返回心跳应答 此处需要分清:长连接存活 & 有效状态的区别: 存活:长连接的网络链路存在,但是数据不一定能响应 有效:存活且能响应数据 基本思路:若连续5次发送心跳后,服务器都无心跳应答,则视为长连接无效

参考:https://blog.csdn.net/carson_ho/article/details/79522975

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.长连接介绍
  • 2.长连接断开的原因
  • 3.高效维持长连接方案
  • 4.心跳保活
相关产品与服务
NAT 网关
NAT 网关(NAT Gateway)提供 IP 地址转换服务,为腾讯云内资源提供高性能的 Internet 访问服务。通过 NAT 网关,在腾讯云上的资源可以更安全的访问 Internet,保护私有网络信息不直接暴露公网;您也可以通过 NAT 网关实现海量的公网访问,最大支持1000万以上的并发连接数;NAT 网关还支持 IP 级流量管控,可实时查看流量数据,帮助您快速定位异常流量,排查网络故障。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档