【微信要跪】如何满足苹果要求 iOS 应用完全支持 IPv6-ONLY 网络?
警告
您当前查看的页面是未经授权的转载!
如果当前版本排版错误,请前往查看最新版本:http://www.cnblogs.com/qin-nz/p/ipv6-only-ios-application.html
提示
更新时间:2016年05月07日。
最近一条新闻引起了我的注意:
注解
5月5日消息,苹果昨日向开发者发出提醒,App Store将于今年6月1日实施全新策略,届时所有提交至苹果App Store的iOS应用申请必须要兼容面向硬件识别和网络路由的最新互联网协议–IPv6-only标准。
什么是 IPv6-ONLY ??
以前,大家都在用 IPv4,就是地址看起来是 114.255.40.66 的样子。然而,这样的地址已经不够用了,就有了类似 2001:da8:215:4009:250:56ff:fe97:40c7 这样的 IP 地址。
目前,一个网卡会同时使用这两张地址;在未来,一个网卡将仅有后面这样的 IPv6 地址。
使用这两种地址的设备是不能互相访问的,后来有了一些过渡技术让他们在某些情况下可以互相访问了。(如 DNS64/NAT64)
如何满足苹果要求??
?苹果公司为什么要这么做??
现在有极小一部分用户处在IPv6-ONLY的环境中,未来这个比例会扩大。
苹果这样要求,对于大多数开发者而言,并不困难。目前大多数应用无需任何操作即可满足要求。
?我不太懂这些,我该怎么做呢??
在你的应用中使用域名(如 www.bupt.edu.cn),不要在任何地方使用 IPv4地址(114.255.40.66)。
?我的服务器必须有 IPv6 地址么??
不是的,服务器只需要有公网 IPv4 地址即可,但要求必须使用域名(FQDN)来表示服务器。
如何创造 IPv6-ONLY 测试环境?
MacOS 提供了这个功能。
使用 Mac 把有线网络共享到 WiFi,中间勾选 创建NAT64网络 即可。
详情可参看 Apple Support
IPv6客户端访问IPv4服务器原理?
首先,这个是无法直接访问的,必须网络的提供商支持过渡技术。
- 第一步:DNS 污染
例如我们想要访问 example.com ,假设这个网站只有 IPv4 地址(93.184.216.34,用16进制表示为 5d b8 d8 22)
那么,被“污染”的DNS返回的 IP 地址是 64:ff9b::5db8:d822。
其中 `64:ff9b::/96`是IANA分配用于DNS64的前缀。 - 第二步:IPv6 转 IPv4
访问 64:ff9b::5db8:d822 时,IPv6 包头被替换为 IPv4 包头,继续访问。
同时回来的数据包会被做反向处理。
现有应用的支持情况?
- QQ 【支持】
- 淘宝 【支持】
- 高德地图 【支持】
- Worktile 【不支持】
- Wechat 【不支持】
我本人不用微信很久了,但我知道,微信的DNS查询,使用的 HTTP 协议自己封装的,这样在 IPv4 网络下可以避免相当多的问题。
如图,微信直接查询 A 记录,即使我的设备在 IPv6-ONLY 的网络环境下。
因此,微信就跪掉了……
声明
【微信要跪】如何满足苹果要求 iOS 应用完全支持 IPv6-ONLY 网络 由 勤奋的小孩 创作,采用 知识共享 署名-非商业性使用-禁止演绎 4.0 国际 许可协议进行许可。
本许可协议授权之外的使用权限可以从 http://space.cnblogs.com/msg/send/qin-nz 处获得。