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