1.声明

苹果从6月1日起,提供App Store审核的应用必须要兼容面向硬件识别和网络路由的最新互联网协议—IPv6-only标准。也就是说,如果不能兼容,就面临着不能审核上线。

2.什么是IPv6-only

IPv6-only(64位编码地址),它时最新的互联网协议,以前我们大部分用的是IPv4(32位编码地址),例如:192.168.1.1然而,这样的地址已经不够用了!!所以就有了类似2001:da8:215:4009:250:56ff:fe97:40c7这样的地址,这样的地址就叫做IPv6地址。在目前,一个网卡会同时使用这两张地址,但是在以后就会只使用IPv6了。一般情况下,使用这两种地址的设备是不能相互访问的,但是后来经过一些过度的处理旧可以让它们在某些情况下可以相互访问。(DNS64/NAT64)

3.如何做到满足苹果要求呢?

(1)在应用中使用域名(例如:www.baidu.com),不要在任何地方使用IPv4地址(例如:114.255.40.60)

(2)我们的服务器需要改成IPv6 地址么?这个不需要,但是必须使用域名(或者主机名)来表示服务器!

(3)使用更高层次的网络API,避免使用socket API。

WebKit,(NSURL,NSURLSession,NSURLRequest,NSURLConnection),CFNetWork都是能支持IPv6的。

如果不能避免使用socket,参考https://tools.ietf.org/html/rfc4038

(4)检查IPv4代码:

inet_addr()
inet_aton()
inet_lnaof()
inet_makeaddr()
inet_netof()
inet_network()
inet_ntoa()
inet_ntoa_r()
bindresvport()
getipv4sourcefilter()
setipv4sourcefilter()

4.如何创造IPv6-ONLY 测试环境?

MacOS 提供了这个功能。 使用 Mac 把有线网络共享到 WiFi,中间勾选 创建NAT64网络 即可。

5.IPv6客户端访问IPv4服务器原理?

首先,这个是无法直接访问的,必须网络的提供商支持过渡技术。

IPv4与IPv6相互操作可参考网络编程之IPv4与IPv6相互操作

详情可参看 RFC6146RFC6147