NAT超时

  大部分移动无线网络运营商都在链路一段时间没有数据通讯时,会淘汰 NAT 表中的对应项,造成链路中断。NAT超时是影响TCP连接寿命的一个重要因素(尤其是国内),所以客户端自动测算NAT超时时间,来动态调整心跳间隔,是一个重要的优化点。

  下表列出一些已测试过的网络的NAT超时时间(更多数据由于测试条件所限没有测到):

地区/网络

NAT超时时间

中国移动3G和2G

5分钟

中国联通2G

5分钟

中国电信3G

大于28分钟

美国3G

大于28分钟

台湾3G

大于28分钟

  长连接心跳间隔必须要小于NAT超时时间(aging-time),如果超过aging-time不做心跳,TCP长连接链路就会中断,Server就无法发送Push给手机,只能等到客户端下次心跳失败后,重建连接才能取到消息。

DHCP的租期(lease time)

  目前测试发现安卓系统对DHCP的处理有Bug,DHCP租期到了不会主动续约并且会继续使用过期IP,这个问题会造成TCP长连接偶然的断连。

1、 DHCP租期到了不会主动续约并且会继续使用过期IP,详细描述见http://www.net.princeton.edu/android/android-stops-renewing-lease-keeps-using-IP-address-11236.html。这个问题导致的问题表象是,在超过租期的某个时间点(没有规律)会导致IP过期,老的TCP连接不能正常收发数据。并且系统没有网络变化事件,只有等应用判断主动建立新的TCP连接才引起安卓设备重新向DHCP Server申请IP租用。

2、 未到租期的一半时间,安卓设备重新向DHCP Server申请IP租用。从目前测试结果来看,这种现象恢复的比较快。

3、 移动2G/3G,联通2G没有抓到DHCP。

4、 美国3G下抓取24小时,没有抓到DHCP。

网络状态变化

  手机网络和WIFI网络切换、网络断开和连上等情况有网络状态的变化,也会使长连接变为无效连接,需要监听响应的网络状态变化事件,重新建立Push长连接。

最新文章

  1. javascript实现键盘自动打字效果
  2. Maven3路程(三)用Maven创建第一个web项目(2)servlet演示
  3. Apache 配置 Basic 认证
  4. 8皇后以及N皇后算法探究,回溯算法的JAVA实现,递归方案
  5. [ionic开源项目教程] - 第5讲 如何在项目中使用全局配置
  6. ProgressBarLayoutView
  7. [wikioi]拦截导弹
  8. TCP/IP的三次握手协议
  9. PHP学习笔记-4(时间戳)
  10. [国嵌笔记][005][Linux命令详解]
  11. CheckStyle
  12. 修改tomcatlog输出等级
  13. 生产环境CPU过高问题定位
  14. Android studio3.1.3 打包jar,混淆
  15. python 判断两个列表中相同和不同的元素
  16. Two Sum II - Input array is sorted
  17. js正则 - 正则判断是否为数字与字母的混合
  18. hdu5242 Game (贪心+dfs序)
  19. python-django-ORM,常用查询方式
  20. Vue.js 与 Laravel 分离

热门文章

  1. 百万级PHP网站Poppen.de的架构分享心得
  2. Android 使用 DownloadManager 管理系统下载任务的方法
  3. MJRefresh实现刷新(使用它的Block方法)
  4. 为什么java构造函数的构造器只能在第一行写this() 或者super() ?
  5. Android多线程更新UI的方式
  6. Apsara Clouder专项技能认证:实现调用API接口 (笔记)
  7. C从控制台(stdin)输入带空格的字符串到字符数组中
  8. WebService_使用三要素
  9. UVA - 11488 Hyper Prefix Sets(trie树)
  10. CF上的3道小题(1)