上几周我在接受的一个IPV4 已经用完的消息,需要适配IPV6 了,看到各种应用启动图下边显示已经支持IPV6, 身为一名移动开发,在思考如何算支持IPV6 呢?
网上对于 Android 支持 IPV6 的支持太少资料了,找了好多资料才解决这个问题,Very Happy,遂分享一下研究的过程。
研究结果如下
请求IPV6 接口(联通卡)
IPV6 接口 Wifi 模式
研究缘由
IOS 在2016 已经强制必须支持 IPV6 , 但是现在随着互联网设备增加,IPV4 已经耗尽,Android 需要支持,建议用 Mac 模拟IPV6 Only 的信号,IOS app 能正常访问网络,但是 Android 访问的 居然链接不上,然后用支付宝、知乎等已经支持 IPV6 的应用,发现也不能正常访问,然后百思不得其解。
带着问题去研究
- IPV6 的网络接口(因为 IPV6 域名解析模式 是 AAAA 模式,IPV4 的是 A 模式 )
- IPV6 的运营商或者Wifi 支持(利用Mac 放出的Wifi 不能支持,最终发现 联通sim 卡已经可以支持IPV6 )
- 支持网络请求的网络框架(我们应用采用的是 okhttp 网络框架,支持 IPV4+IPV6 模式)
- IPV4+IPV6 模式是否兼容,是否可以选择只访问IPV6 或者 IPV4 优先模式
然后阅读对应IPV6 的 wiki 和相关文章,发现需要 DHCPV6 IP 模式,但是我的一加6 没有这种模式,怀疑是否厂商不支持这种模式,是否就卡在硬件这个方向不能搞下去,最终一步步才测试出是支持IPV6。