浅谈iOS IPv6-only 新规

5月份苹果发布新规,对于开发人员只需要做到以下几点就能顺利上线啦!

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

  2.什么是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服务器原理?首先,这个是无法直接访问的,必须网络的提供商支持过渡技术。

  (1)第一步:NDS污染:例如我们想要访问 example.com ,假设这个网站只有 IPv4 地址(93.184.216.34,用16进制表示为 5d b8 d8 22) 那么,被“污染”的DNS返回的 IP 地址是 64:ff9b::5db8:d822。 其中 `64:ff9b::/96`是IANA分配用于DNS64的前缀。

  (2)第二步:IPv6 转 IPv4:访问 64:ff9b::5db8:d822 时,IPv6 包头被替换为 IPv4 包头,继续访问。 同时回来的数据包会被做反向处理。

详情可参看 RFC6146 、 RFC6147 

  

原文地址:https://www.cnblogs.com/fusheng-it/p/5522939.html