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

android适配ipv6,请求慢?

先贴一篇我们经常能搜索到的解决方案:
Android 在 4G 下访问 IPV6 慢的解决方案
文章很有参考意义,但也并不是所有请求慢的的原因!
本文是另一种原因,有兴趣就继续往下看一看.

使用的okhttp框架,模式支持ipv6和ipv4协议,但两种协议同时存在时会优先ipv6,当ipv6超时时就会使用ipv4协议.

带着这个原理我们首先定位一下原因吧:
首先dns解析域名,明确请求时ipv4还是ipv6,Android网络请求必须在子线程,所以开了线程

new Thread(() -> {try {InetAddress[] allByName = InetAddress.getAllByName("www.baidu.com");for (InetAddress inetAddress : allByName) {System.out.println("ip=>" + inetAddress.getHostAddress());}} catch (UnknownHostException e) {throw new RuntimeException(e);}
}).start();

首轮测试结果: 公司wifi仅支持ipv4;移动4G流量支持ipv4及ipv6.这个跟网络供应商以及路由器支持有关.

题外话,如何区分ipv4还是ipv6呢?
简单点就是ipv4就是点分十进制32位组成,如192.168.1.123
ipv6就是冒分十六进制128位组成,如2418:400e:1511:b996:2c56:7996:c520:92a4

我们现在的问题是在解析到ipv6的ip时会出现请求巨慢.使用控制变量法,分别测试了仅ipv4协议及仅ipv6协议,怎么做?

华为手机,设置->移动网络->移动数据->接入点名称(APN)->新建一个APN,配置中的APN协议及APN漫游协议设置为仅ipv4或ipv6.

再次访问接口,仅ipv4的配置打印的只有ipv4的ip,访问速度正常!
仅ipv6的配置打印的只有ipv6的ip,SocketTimeoutException访问超时!
这就印证了上面的原因,由于ipv6超时,从而重新选择了ipv4,所以请求巨慢!

最后排查运维申请了ipv6的地址,但没有申请ipv6的网关,运维在测试的时候只验证了服务器的ipv6访问通畅,却没有测试外部网络访问是否通畅

http://www.lryc.cn/news/22220.html

相关文章:

  • 【LeetCode】剑指 Offer(10)
  • 学校AI视频行为分析监测系统 opencv
  • 内存数据库的设计与实现(已在大型项目中应用)
  • Linux基础命令-stat显示文件的状态信息
  • SQL入门DEMO
  • 辉光管时钟学习制作及开源软硬件工程
  • 动手学深度学习(第二版)学习笔记 第三章
  • 冯诺依曼体系结构与操作系统的概念及理解
  • 【深度探讨】如何利用区块链改善公共服务
  • 【打卡】图分析与节点嵌入
  • python元编程详解
  • 为什么文档对 SaaS 公司至关重要?
  • Echarts 实现电池效果的柱状图
  • 计算机网络高频知识点(一)
  • JavaScript split()方法
  • 前端面试题 —— 性能优化
  • 我的周刊(第080期)
  • 操作系统——7.进程的定义,组成,组成方式和特征
  • CRI-O, Containerd, Docker, Postman等概念介绍
  • 【原创】java+swing+mysql设备预约管理系统设计与实现
  • 7、kubernetes(k8s)Dashboard 安装
  • 数学小课堂:虚数的媒介工具作用(虚构一个现实中不存在的概念,来解决现实问题)
  • 3.抽象工厂模式(Abstract Factory)
  • synchronized底层如何实现?什么是锁的升级、降级?
  • node环境搭建以及接口的封装
  • 跟着我从零开始入门FPGA(一周入门系列)第七天
  • Synopsys Sentaurus TCAD系列教程之--Sde概述
  • 计算结构体大小
  • 第二十一篇 数据增强
  • 记一次线上es慢查询导致的服务不可用