iOS開發之蘋果應用6.1日起需相容IPv6,那麼作為開發者我們需要做些什麼呢?【科普IPV6】
我相信現在很多的iOS開發者都知道蘋果要求我們提交到App
Store的應用必須支援IPv6。
1.提到IPV6相關。 那這個直接就聯想到就是關於我們App中網路部的一些內容,是否要進行相應的改變。
首先,解釋下什麼是ipv6?
IPv6是下一代網際網路的協議,它的提出最初是因為隨著網際網路的迅速發展,IPv4定義的有限地址空間將被耗盡,地址空間的不足必將妨礙網際網路的進一步發展。通俗的說就是,我們的網路ip地址不夠用了, 我們每臺電腦上internet都需要一個身份證明,就是說的IP地址, ipv4的可使用地址為 2的32次方個地址,而ipv6可使用的ip地址為 2的128次方, 哈哈,媽媽再也不用擔心我們ip地址不夠用啦,當然ipv6的好處遠不止只是地址的增加。還有以下好處:
更小的路由表
IPv6的地址分配一開始就遵循聚類(Aggregation)的原則,這使得路由器能在路由表中用一條記錄(Entry)表示一片子網,大大減小了路由器中路由表的長度,提高了路由器轉發資料包的速度。
增強的組播(Multicast)支援以及對流的支援(Flow-control)
這使得網路上的多媒體應用有了長足發展的機會,為服務質量(QoS)控制提供了良好的網路平臺。
加入了對自動配置(Auto-configuration)的支援
這是對DHCP協議的改進和擴充套件,使得網路(尤其是區域網)的管理更加方便和快捷。
更高的安全性
在使用IPv6網路中使用者可以對網路層的資料進行加密並對IP報文進行校驗,這極大的增強了網路安全
通過上面的瞭解,大家肯定明白蘋果為什麼要求我們的app要支援ipv6了把,並且態度強硬。 蘋果這是為了以後發展上不受ipv的影響,所以提前快刀斬亂麻。
廢話說了很多了: 參照:http://www.jianshu.com/p/69ed4489762c
進入正文:
我們用高階的API完全能夠實現我們的需求,而且高階API封裝的很便於使用,很多底層的像適配IPv6的工作都已經幫我們做好了。而用底層API會有大量的工作要我們自己來做,更容易產生bug。但你如果確實需要用底層的POSIX socket API。
這個方法在著名的Reachability類中是用到了的,而我們常用的網路庫AFNetworking裡面有Reachability。所以用到的同學得好好查一下了,大家沒事可以去看看AFnetworking/issues,然後也可以問一問,暫時貌似是還沒有解決這個問題點選開啟連結 issues,
檢查不相容IPv6的程式碼
搜一下工程裡有沒有下面的這些API,這些都是隻針對IPv4做處理的,有的話就刪了。
inet_addr()
inet_aton()
inet_lnaof()
inet_makeaddr()
inet_netof()
inet_network()
inet_ntoa()
inet_ntoa_r()
bindresvport()
getipv4sourcefilter()
setipv4sourcefilter()
如果用到了下面左邊的這些IPv4的型別,那麼它們相應的IPv6型別也需要做處理
具體的對應欄位為: 大家一定要查一查
最後一步:那就是請嘗試搭建一個ipv6的環境,去測試整個專案,具體的搭建ipv6環境的步驟如下:
本地搭建IPv6測試環境
最後我們來搭一個IPv6的測試環境吧,你所需要的就是一臺用非Wi-Fi的方式上網的Mac電腦。
我們的要做的其實就是用Mac做一個熱點,然後用iPhone連線這個Wi-Fi,聽起來很容易,我相信大家在公司就是這麼幹的吧。
區別是這次我們產生的是一個本地的IPv6 DNS64/NAT64網路,這項功能是OS X 10.11新加的。和我們以前開啟熱點方式不一樣的地方在於,我們在“System Preferences”介面選中“Sharing”的同時,要按住“Option”鍵。
System Preferences
之後在“Sharing”介面中,我們會看到和之前不一樣的地方,就是紅框所標的地方,多了一個叫“Create NAT64 Network”的選框,選中它。
Sharing
之後就是按照正常的建立熱點的流程走完就行了。
現在我們用iPhone連線上這個剛建立好的熱點就可以測試了,注意此時要把iPhone設成飛航模式,以保證只用Wi-Fi上網。
總結:
1.我相信陸陸續續肯定會有更多的開發者在相容ipv6的過程中會出現各種各樣的問題,到時候再去論壇,技術群中再探索把。