歡迎加入QQ討論群258996829
月之殘骸 頭像
蘋果2袋
2
月之殘骸

iOS 應(yīng)用如何兼容 IPv6

發(fā)布時間:2016-05-13 11:04  回復(fù):0  查看:5619   最后回復(fù):2016-05-13 11:04  

最新消息

今天蘋果推出重磅消息,6月1日后所有應(yīng)用必須支持IPv6-only網(wǎng)絡(luò)!?。‘?dāng)iOS開發(fā)者看到這個消息的第一反應(yīng)可能就是IPv6是個什么鬼??!其實IPv6早在很早之前就已經(jīng)推出,而且蘋果在2015年的開發(fā)者大會上就已經(jīng)提出蘋果將力挺IPv6 官網(wǎng)鏈接

IPv6-only

說了這么多,IPv6到底是個什么鬼!我們來看看百度百科是怎么解釋的:

技術(shù)分享

我們再來看看官方給出的IPv6與IPv4的對比:

技術(shù)分享
看不懂??,我們來解釋下: 
1、IPv6:避免了網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT) 
2、通過網(wǎng)絡(luò)通過使用簡化的頭提供了更快的路由 
3、防止網(wǎng)絡(luò)分段 
4、避免廣播鄰居地址解析

說了這么多,我們來看看在iOS開發(fā)中,如何實現(xiàn)IPv6

開發(fā)中使用IPv6

不建議使用底層的網(wǎng)絡(luò)API

下圖展示的藍色部分的這些API都是不存在兼容性問題的,而我們平時自己用的包括那些第三方的網(wǎng)絡(luò)庫大部分都是用的這些API。

技術(shù)分享

大部分情況下,我們用高級的API完全能夠?qū)崿F(xiàn)我們的需求,而且高級API封裝的很便于使用,很多底層的像適配IPv6的工作都已經(jīng)幫我們做好了。而用底層API會有大量的工作要我們自己來做,更容易產(chǎn)生bug。但你如果確實需要用底層的POSIX socket API, 請參照這個RFC4038: Application Aspects of IPv6 Transition的指導(dǎo)。 
PS:系統(tǒng)自帶的網(wǎng)絡(luò)類已經(jīng)支持了IPv6我們只需放心使用就好,例如NSURLSession等;

不要直接使用IP地址

比如下面這個API,nodename這個參數(shù)不要傳IP地址,而應(yīng)該用域名

技術(shù)分享

這個方法在著名的第三方Reachability中是用到的,我們常用的第三方網(wǎng)絡(luò)庫AFNetworking就用了這個。所以用到的同學(xué)得好好查一下了。

檢查不兼容IPv6的代碼

搜一下工程里有沒有下面的這些API,這些都是只針對IPv4做處理的,有的話就刪了。

inet_addr()

inet_aton()

inet_lnaof()

inet_makeaddr()

inet_netof()

inet_network()

inet_ntoa()

inet_ntoa_r()

bindresvport()

getipv4sourcefilter()

setipv4sourcefilter()

如果用到了下面左邊的這些IPv4的類型,那么它們相應(yīng)的IPv6類型也需要做處理

技術(shù)分享

本地搭建IPv6測試環(huán)境

最后我們來搭一個IPv6的測試環(huán)境吧,你所需要的就是一臺用非Wi-Fi的方式上網(wǎng)的Mac電腦。

我們的要做的其實就是用Mac做一個熱點,然后用iPhone連接這個Wi-Fi,聽起來很容易,我相信大家在公司就是這么干的吧。

區(qū)別是這次我們產(chǎn)生的是一個本地的IPv6 DNS64/NAT64網(wǎng)絡(luò),這項功能是OS X 10.11新加的。和我們以前開啟熱點方式不一樣的地方在于,我們在“System Preferences”界面選中“Sharing”的同時,要按住“Option”鍵。

技術(shù)分享

之后在“Sharing”界面中,我們會看到和之前不一樣的地方,就是紅框所標(biāo)的地方,多了一個叫“Create NAT64 Network”的選框,選中它。

技術(shù)分享

之后就是按照正常的創(chuàng)建熱點的流程走完就行了。

現(xiàn)在我們用iPhone連接上這個剛創(chuàng)建好的熱點就可以測試了,注意此時要把iPhone設(shè)成飛行模式,以保證只用Wi-Fi上網(wǎng)。

參考官方原文鏈接:https://developer.apple.com/library/ios/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/UnderstandingandPreparingfortheIPv6Transition/UnderstandingandPreparingfortheIPv6Transition.html#//apple_ref/doc/uid/TP40010220-CH213-SW1

您還未登錄,請先登錄

熱門帖子

最新帖子

?