起因
今天,用户反馈 Android 端加载数据较慢,经 Android 开发人员排查后,发现在公司 wifi 下接口响应时间在 50ms 左右,而在 4G 网络下,接口响应时间在 600ms 左右,甚至于 1s 以上,Android 端认为是服务端问题,遂反馈到服务端
排查
-
首先检查 nginx 日志,发现不管是 wifi 网络下还是 4G 网络下,服务端的响应时间均在 30ms 左右,所以排除掉了代码的问题
-
向运维同学咨询了一下服务端的网络架构,原来为了 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();
}
- 连接公司 wifi ,执行代码,只解析到 ipv4 地址
- 使用 4G 网络,执行代码,解析到 ipv6 和 ipv4 两个 ip 地址,且 ipv6 一直是首个 ip 地址
解决
通过上面的验证,基本断定为 4G 网络下,Android 端通过 ipv6 连接的服务地址。
端的 http client 库为 okhttp , 查看 javadoc 后,提供了 DNS 接口,代码如下:
我们通过实现此接口,将解析到的 ip 顺序调整一下,如果是 ipv4 则将其放到数据的第一个,其它保持不变,如下图:
修改 okhttp 的 dns 解析类,如下:
OkHttpClient.Builder builder = new OkHttpClient.Builder();
builder.dns(new MyDns());
OkHttpClient client = builder.build();
再次测试,发现 Android 端的接口响应时间回归正常
备注
- 在测试过程中,发现中国移动和中国电信的 4G 网络 DNS 解析都会解析到两个 IP 地址,而中国联通的 4G 网络只能解析到 ipv4 的址,手机型号是小米 note3
- 网上很多的方案都是将 ipv6 关掉,或者在 appstore 审核时打开,审核完成后再关掉,这种不能解决根本问题的方法实在不可取,大家一定要仔细分析,擦亮眼睛
相关推荐
* 企业 IPv6 升级解决方案在工业互联网网络体系架构中扮演着重要角色,能够满足企业开展基于 IPv6 的创新业务。 知识点5: IPv6 的发展前景 * IPv6 能够提供充足的网络地址和广阔的创新空间,是全球公认的下一代...
"Unity-ipV6解决方案亲测试验过"这个标题表明这是一个经过验证的、针对Unity游戏引擎的解决方案,用于帮助开发者解决其iOS应用在IPv6环境下的适配问题。 Unity是一个广泛使用的跨平台游戏开发工具,它支持创建2D和...
标题中的“一款IPv4下访问IPv6软件”指的是一个应用程序,它的主要功能是允许使用IPv4网络的设备能够访问基于IPv6的网络资源。在当前的互联网环境中,由于IPv4地址池的枯竭,IPv6逐渐成为网络通信的重要部分。然而,...
IPv6网络安全威胁分析 IPv6现状与发展趋势 IPv6升级方案 IPv6网站安全防护方案 网站IPv6升级解决方案 下一代互联网安全解决方案 IPv6行业标准发展及挑战 基于IPv6数字化解决方案等
标题中的“2009下一代互联网技术和应用论坛:IPv4和IPv6的融合网络解决方案”指的是一场专业研讨会,该论坛聚焦于当时互联网技术的关键议题——IPv4与IPv6的融合网络。IPv4是互联网协议第四版,是当前广泛使用的网络...
IPv6 改造解决方案 IPv6(Internet Protocol version 6)是继 IPv4 之后的一种新的互联网协议,它提供了许多优于 IPv4 的特性,如更大的地址空间、更好的安全性和更好的 Quality of Service(QoS)。随着互联网的...
IPv6解决方案的双栈+NAT技术涉及到互联网协议版本6(IPv6)和网络地址转换(NAT)的技术融合。IPv6是为了解决IPv4地址耗尽的问题而设计的下一代互联网协议。它提供了几乎无限的地址空间,并且在安全性、自动配置和...
介绍目前国内的IPv6解决方案,IPv4到IPv6的过渡技术。 很不错。
IPv6升级解决方案.pdf
IPv6 校园网解决方案是指在校园网中实施 IPv6 升级的解决方案,旨在帮助校园网顺利过渡到 IPv6 网络。该解决方案主要考虑了校园网向 IPv6 过渡时应考虑的几个方面的问题,包括新校区建设支持 IPv6、老校区改造逐步...
标题中的“互联网接入IPV6改造解决方案”是指随着互联网的发展,IPv4地址逐渐枯竭,为应对这一问题,全球开始推进IPv6的部署。IPv6是互联网协议的下一代版本,提供更大的地址空间,以满足未来互联网设备和服务的需求...
经过一系列的测试,验证了该IPv6接入系统对于解决3G/4G用户在接入IPv6网络时遇到的问题非常有效和实用。通过本项目的实施,移动互联网用户可以享受到IPv6带来的诸多好处,例如更丰富的地址资源、更优质的连接体验,...
企业IPv6升级解决方案.docx
下一代互联网安全防护技术方案 IPv6安全过渡方案
ipv6的ip地址转biginteger数字 直接能够测试
IPv6到IPv4转换工具是为了解决网络通信中IPv6和IPv4不兼容的问题而设计的。在当前互联网环境中,IPv4地址已接近枯竭,而IPv6因其巨大的地址空间成为未来的趋势。然而,由于过渡期间的兼容性问题,许多设备和服务仍然...
修复4G网络下不能访问https问题 , 详细使用说明参考文档中顶部注释
### WinXP IPv6 无法安装解决方案 在探讨如何解决Windows XP系统中IPv6无法安装的问题之前,我们首先需要了解一些基本概念。 #### Windows XP与IPv6兼容性问题概述 Windows XP是一款由微软公司开发的经典操作系统...
IE 访问不了 IPV6 网页的原因分析和解决方法 【IE 访问不了 IPV6 网页的原因分析】 IE 访问不了 IPV6 网页的主要原因是因为 IE6.0 不支持地址栏直接输入 rfc2732.txt()定义的“literal”型 IPV6 地址访问服务器...
IPv6(Internet Protocol Version 6)是互联网协议的第六版,旨在解决IPv4地址不足的问题,并提供了许多增强功能。IPv6地址由8组16位的十六进制数字组成,每组之间用冒号分隔。一个完整的IPv6地址由32个十六进制数字...