前几天Apple宣布 6月1往后全部应用必须支持IPv6-only网络 今天抽空看了下这方面的知识html
首先解释下IPv6的是什么?node
维基百科的定义以下:
IPv6是Internet Protocol version 6的缩写 全名为互联网通信协议第6版 是互联网协议的最新版本,用于分组交换互联网络的网络层协议,旨在解决IPv4地址枯竭问题
IPv6具备比IPv4大得多的编码地址空间。这是由于IPv6采用了128位的地址,而IPv4使用的是32位。所以新增的地址空间支持2128(约3.4 ×1038)个地址swift
优势以下:安全
1. 使用更高层次的网络API(Use High-Level Networking Frameworks) 避免使用socket API 网络
蓝色部分API 默认都支持IPv6socket
也就是说
.WebKit
.(NSURLSession NSURLRequest NSURLConnection)
.CFNetwork
这些API默认都已经支持IPv6
而值得庆幸的时 咱们使用的大多数第三方网络库使用的也是这些API
好比AFNetWorking 我特地找了一段代码测试
下图是Alamofire建立请求的代码编码
Alamofire使用的是High-Level Networking Frameworks(NSURLRequest) 也不存在兼容性问题
这意味着大多数状况下 咱们不须要作什么 就能够兼容IPv6spa
若是你不能避免使用socket API 请参考这个指南
RFC4038: Application Aspects of IPv6 Transition3d
2. 不要使用IP地址
好比使用SCNetworkReachabilityCreateWithName API 时
func SCNetworkReachabilityCreateWithName(_ allocator: CFAllocator?, _ nodename: UnsafePointer<Int8>) -> SCNetworkReachability?
使用主机名或者主机域名访问
3.检查IPv4代码
项目中不能使用以下代码:
inet_addr() inet_aton() inet_lnaof() inet_makeaddr() inet_netof() inet_network() inet_ntoa() inet_ntoa_r() bindresvport() getipv4sourcefilter() setipv4sourcefilter()
利用Mac建立一个 IPv6 WIFI 热点 手机链接该WIFI便可测试
(必须保证你的Mac已链接到Internet 而且不是经过WIFI的方式)
1. 建立 IPv6 WIFI热点
点击系统设置(System Preferences)-> 按住Option键 -> 点击共享(Sharing)
选择互联网共享(Internet Sharing)
选中 建立NaT64网络 (Create NAT64 Network)
选择 一个共享来源链接
配置WIFI选项
输入你的热点名称和密码 最后启用互联网共享(Internet Sharing)选中checkbo
以后经过手机链接该热点 完成测试