`
frank1998819
  • 浏览: 758387 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类

Android 在 4G 下访问 IPV6 慢的解决方案(转)

 
阅读更多

起因

今天,用户反馈 Android 端加载数据较慢,经 Android 开发人员排查后,发现在公司 wifi 下接口响应时间在 50ms 左右,而在 4G 网络下,接口响应时间在 600ms 左右,甚至于 1s 以上,Android 端认为是服务端问题,遂反馈到服务端

排查

  1. 首先检查 nginx 日志,发现不管是 wifi 网络下还是 4G 网络下,服务端的响应时间均在 30ms 左右,所以排除掉了代码的问题

  2. 向运维同学咨询了一下服务端的网络架构,原来为了 IOS 的 appstore 审核,服务端增加了 ipv6 支持,而 ipv6 的服务入口在美国,如下图:

 

网络架构
网络架构

 

所以怀疑 Android 端解析域名时解析到两个 IP 后,优先使用 IPV6 连接的后端服务

验证

使用如下代码,验证 DNS 解析的 IP 地址


try {
   InetAddress[] inetAddresses = InetAddress.getAllByName("server.xxxx.cn");
   for(InetAddress inetAddress : inetAddresses){
     System.out.println(inetAddress.getHostAddress());
   }
} catch (UnknownHostException e) {
   e.printStackTrace();
}
  1. 连接公司 wifi ,执行代码,只解析到 ipv4 地址
  2. 使用 4G 网络,执行代码,解析到 ipv6 和 ipv4 两个 ip 地址,且 ipv6 一直是首个 ip 地址

解决

通过上面的验证,基本断定为 4G 网络下,Android 端通过 ipv6 连接的服务地址。
端的 http client 库为 okhttp , 查看 javadoc 后,提供了 DNS 接口,代码如下:

 

DNS
DNS

 

我们通过实现此接口,将解析到的 ip 顺序调整一下,如果是 ipv4 则将其放到数据的第一个,其它保持不变,如下图:

 

自定义DNS
自定义DNS

 

修改 okhttp 的 dns 解析类,如下:

OkHttpClient.Builder builder = new OkHttpClient.Builder();
builder.dns(new MyDns());
OkHttpClient client = builder.build();

再次测试,发现 Android 端的接口响应时间回归正常

备注

  1. 在测试过程中,发现中国移动和中国电信的 4G 网络 DNS 解析都会解析到两个 IP 地址,而中国联通的 4G 网络只能解析到 ipv4 的址,手机型号是小米 note3
  2. 网上很多的方案都是将 ipv6 关掉,或者在 appstore 审核时打开,审核完成后再关掉,这种不能解决根本问题的方法实在不可取,大家一定要仔细分析,擦亮眼睛

 

分享到:
评论

相关推荐

    企业IPv6升级解决方案.pdf

    * 企业 IPv6 升级解决方案在工业互联网网络体系架构中扮演着重要角色,能够满足企业开展基于 IPv6 的创新业务。 知识点5: IPv6 的发展前景 * IPv6 能够提供充足的网络地址和广阔的创新空间,是全球公认的下一代...

    Unity-ipV6解决方案亲测试验过

    "Unity-ipV6解决方案亲测试验过"这个标题表明这是一个经过验证的、针对Unity游戏引擎的解决方案,用于帮助开发者解决其iOS应用在IPv6环境下的适配问题。 Unity是一个广泛使用的跨平台游戏开发工具,它支持创建2D和...

    一款IPv4下访问IPv6软件

    标题中的“一款IPv4下访问IPv6软件”指的是一个应用程序,它的主要功能是允许使用IPv4网络的设备能够访问基于IPv6的网络资源。在当前的互联网环境中,由于IPv4地址池的枯竭,IPv6逐渐成为网络通信的重要部分。然而,...

    IPV6升级改造方案合集.zip

    IPv6网络安全威胁分析 IPv6现状与发展趋势 IPv6升级方案 IPv6网站安全防护方案 网站IPv6升级解决方案 下一代互联网安全解决方案 IPv6行业标准发展及挑战 基于IPv6数字化解决方案等

    2009下一代互联网技术和应用论坛:IPv4和IPv6的融合网络解决方案

    标题中的“2009下一代互联网技术和应用论坛:IPv4和IPv6的融合网络解决方案”指的是一场专业研讨会,该论坛聚焦于当时互联网技术的关键议题——IPv4与IPv6的融合网络。IPv4是互联网协议第四版,是当前广泛使用的网络...

    2022年互联网接入IPV6改造解决方案.pdf

    IPv6 改造解决方案 IPv6(Internet Protocol version 6)是继 IPv4 之后的一种新的互联网协议,它提供了许多优于 IPv4 的特性,如更大的地址空间、更好的安全性和更好的 Quality of Service(QoS)。随着互联网的...

    IPv6解决方案_双栈+NAT技术白皮书V102.pdf

    IPv6解决方案的双栈+NAT技术涉及到互联网协议版本6(IPv6)和网络地址转换(NAT)的技术融合。IPv6是为了解决IPv4地址耗尽的问题而设计的下一代互联网协议。它提供了几乎无限的地址空间,并且在安全性、自动配置和...

    IPv6解决方案

    介绍目前国内的IPv6解决方案,IPv4到IPv6的过渡技术。 很不错。

    IPv6升级解决方案.pdf

    IPv6升级解决方案.pdf

    ipv6校园网解决方案

    IPv6 校园网解决方案是指在校园网中实施 IPv6 升级的解决方案,旨在帮助校园网顺利过渡到 IPv6 网络。该解决方案主要考虑了校园网向 IPv6 过渡时应考虑的几个方面的问题,包括新校区建设支持 IPv6、老校区改造逐步...

    互联网接入IPV6改造解决方案.pdf

    标题中的“互联网接入IPV6改造解决方案”是指随着互联网的发展,IPv4地址逐渐枯竭,为应对这一问题,全球开始推进IPv6的部署。IPv6是互联网协议的下一代版本,提供更大的地址空间,以满足未来互联网设备和服务的需求...

    软件-Android移动网络终端的IPv6接入系统设计与实现 .pdf

    经过一系列的测试,验证了该IPv6接入系统对于解决3G/4G用户在接入IPv6网络时遇到的问题非常有效和实用。通过本项目的实施,移动互联网用户可以享受到IPv6带来的诸多好处,例如更丰富的地址资源、更优质的连接体验,...

    企业IPv6升级解决方案.docx

    企业IPv6升级解决方案.docx

    IPv6网站防护安全解决方案.doc

    下一代互联网安全防护技术方案 IPv6安全过渡方案

    ipv6的ip地址转biginteger数字

    ipv6的ip地址转biginteger数字 直接能够测试

    IPV6 转 IPV4工具

    IPv6到IPv4转换工具是为了解决网络通信中IPv6和IPv4不兼容的问题而设计的。在当前互联网环境中,IPv4地址已接近枯竭,而IPv6因其巨大的地址空间成为未来的趋势。然而,由于过渡期间的兼容性问题,许多设备和服务仍然...

    安卓兼容https 访问协议ipv6与ipv4

    修复4G网络下不能访问https问题 , 详细使用说明参考文档中顶部注释

    WinXP ipv6 无法安装解决方案

    ### WinXP IPv6 无法安装解决方案 在探讨如何解决Windows XP系统中IPv6无法安装的问题之前,我们首先需要了解一些基本概念。 #### Windows XP与IPv6兼容性问题概述 Windows XP是一款由微软公司开发的经典操作系统...

    IE访问不了IPV6网页

    IE 访问不了 IPV6 网页的原因分析和解决方法 【IE 访问不了 IPV6 网页的原因分析】 IE 访问不了 IPV6 网页的主要原因是因为 IE6.0 不支持地址栏直接输入 rfc2732.txt()定义的“literal”型 IPV6 地址访问服务器...

    IPv6 Java方法 简写转成全写,全写转成简写

    IPv6(Internet Protocol Version 6)是互联网协议的第六版,旨在解决IPv4地址不足的问题,并提供了许多增强功能。IPv6地址由8组16位的十六进制数字组成,每组之间用冒号分隔。一个完整的IPv6地址由32个十六进制数字...

Global site tag (gtag.js) - Google Analytics