前幾天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
以後經過手機鏈接該熱點 完成測試