alex.lin 发表于 2016-6-8 00:11:49

iOS 支持 IPv6 DNS64/NAT64 网络

从2016年6月1日起,iOS应用必须支持IPv6,否则审核将被拒。详见Supporting IPv6 DNS64/NAT64 Networks。本文是翻译稿。从本文中可以学到有关IPv6过度时期的网络架构和具体IOS应用如何兼容的知识。随着IPv4地址池即将耗尽,企业和移动通信供应商在逐步部署IPv6 DNS64/NAT64网络。IPv6 DNS64/NAT64是一个仅有IPv6的网络,且能通过转换继续支持IPv4。根据你app的性质,这样的转化会有不同的影响:
[*]如果你是编写客户端应用,并且使用高层次的网络API,如NSURLSession和CFNetwork框架,使用域名连接。那么你无需更改你的应用,即可工作在IPv6地址下。如果你不是采用域名连接,你可能需要看Avoid Resolving DNS Names Before Connecting to a Host。关于CFNetwork,参见CFNetwork Framework Reference。
[*]如果你是编写服务器程序,或者是底层网络应用,你需要确保你的socket代码能同时在IPv4和IPv6地址下工作。参见[RFC4038: Application Aspects of IPv6 Transition.
](https://tools.ietf.org/html/rfc4038)。
什么推动了IPv6主要的网络供应商,包括美国的蜂窝移动网络供应商,在积极地推进和部署IPv6。这是由多方面因素造成的。World IPv6 Launch是个追踪全球范围内部署活动的组织。访问World IPv6 Launch website可以看到近期的进程。IPv4地址逐渐耗尽近几年,众所周知,IPv4地址最终将耗尽,无类域间路由(Classless Inter-Domain Routing)和网络地址转换(NAT)等技术延缓了这势在必行的趋势。然而,2011年1月31日,最上层的IPv4分配机构Internet Assigned Numbers Authority(IANA)宣布地址用尽。American Registry for Internet Numbers (ARIN)预计在2015年夏季用完IPv4地址。从这里查看倒计时。IPv6比IPv4高效除了能解决IPv4耗尽的问题,IPv6比IPv4更加高效,比如:
[*]无需网络地址转换(NAT)
[*]使用简介的头部信息可以加快在网络中的路由
[*]避免网络数据包碎片
[*]相邻地址解析时避免使用广播 (Avoids broadcasting for nei**or address resolution)
4G开发第四代移动通信技术(4G)仅基于包交换,由于IPv4地址的限制,为了保证4G开发的扩展性,需要IPv6的支持多媒体服务兼容性IP Multimedia Core Network Subsystem (IMS) 允许一些服务通过IP传输,例如多媒体SMS消息和VoLTE。 有些服务提供商使用IMS时仅支持IPv6。成本业界在向IPv6迁移的过程中,需要继续支持古老的IPv4网络,这使运营商产生了额外的操作和维护成本。DNS64/NAT64转换流程为了缓解IPv4地址的耗尽,许多IPv4网络采用NAT技术。尽管这种方案临时奏效,但是实践证明耗资巨大并且不够可靠。如今,随着越来越多的设备使用IPv6,运营商必须同时支持IPv4和IPv6,这种努力却是花费巨大的。/image?src=https://developer.apple.com/library/mac/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/art/ipv4Andipv6Network_2x.png&objectId=1190000005665982&token=1089075cdd6914afc1a9b2887d115471
图 10-1 蜂窝移动网络分别提供IPv4和IPv6链接理想情况下,运营商希望丢掉对IPv4的支持。然而,这么做会导致客户端无法访问基于IPv4的服务器,而IPv4的服务器依然是网络的重要组成部分。为了解决这个问题,大多数的网络供应商实现了一个叫DNS64/NAT64的转换流程。这是个纯IPv6网络,并通过转换也可继续访问IPv4的内容。/image?src=https://developer.apple.com/library/mac/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/art/ipv4Andipv6NetworkWithDNS64NAT64_2x.png&objectId=1190000005665982&token=a2cec3cc96314d1d306d6973b9520a36
图 10-2 蜂窝移动网络用DNS64和NAT64来部署一个IPv6网络在这个流程中,如果客户端向DNS64服务器发起一个DNS查询,当DNS找到一个基于IPv6的地址后,立刻返回客户端。如果无法找到对应的IPv6地址,DNS64服务器将请求IPv4地址,然后DNS64服务器将IPv4作为前缀合成一个IPv6地址,并且将其返回给客户端。这样,客户端将总是获得一个IPv6目标地址,见图10-3。/image?src=https://developer.apple.com/library/mac/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/art/NAT64-DNS64-ResolutionOfIPv4_2x.png&objectId=1190000005665982&token=42ddbacf036fb923f73f5adff92a21d6
图 10-3 DNS64 IPv4到IPv6转换过程当客户端向服务端发送请求时,目标地址为合成后的IPv6地址会自动由NAT64网关路由过去。对于请求,网关作的是IPv6到IPv4的转换。同样的,对于服务器响应,网关作的是IPv4到IPv6的转换。见图10-4/image?src=https://developer.apple.com/library/mac/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/art/NAT64-DNS64-Workflow_2x.png&objectId=1190000005665982&token=5fcf2011fec20d2ff472baaa5b148b11
图 10-4 DNS64/NAT64转化方案的流程IPv6和App Store的要求对IPv6 DNS64/NAT64网络的兼容性,将是App Store的提交时的必须条件,所以兼容对于app来说是相当重要的。好消息是,大多数app已经是IPv6兼容的了。对于这些app,进行定期的回归测试依旧是必要的。对于那些IPv6不兼容的应用在面对DNS64/NAT64网路时可能遇到麻烦。幸运的是,解决问题通常很简单,下面章节会讨论这个问题。


页: [1]
查看完整版本: iOS 支持 IPv6 DNS64/NAT64 网络