如何適配IPv6網(wǎng)絡(luò)環(huán)境?
自2016年6月1日起,蘋果公司強(qiáng)制所有的App必須支持純IPv6網(wǎng)絡(luò)環(huán)境。這項(xiàng)措施將對IPv6網(wǎng)絡(luò)的普及起到一定的推動作用,并體現(xiàn)了Apple作為國際大廠的擔(dān)當(dāng)。本文將給出一些適配IPv6網(wǎng)絡(luò)環(huán)境的
自2016年6月1日起,蘋果公司強(qiáng)制所有的App必須支持純IPv6網(wǎng)絡(luò)環(huán)境。這項(xiàng)措施將對IPv6網(wǎng)絡(luò)的普及起到一定的推動作用,并體現(xiàn)了Apple作為國際大廠的擔(dān)當(dāng)。本文將給出一些適配IPv6網(wǎng)絡(luò)環(huán)境的方法。
高級API vs. 底層API
首先,我們需要知道在iOS開發(fā)中,有高級API和底層API兩種類型的網(wǎng)絡(luò)庫。高級API已經(jīng)封裝了底層適配IPv6的工作,使用起來更加方便,同時(shí)也避免了產(chǎn)生過多的bug。相反,使用底層API會讓自己承擔(dān)更多的工作量并且容易出現(xiàn)bug。
圖示展示了藍(lán)色部分的API不存在兼容性問題,而我們平時(shí)自己用的包括第三方的網(wǎng)絡(luò)庫大部分都是用的這些API。因此,在大多數(shù)情況下,我們可以使用高級API完全滿足我們的需求。
如果你確實(shí)需要使用底層的POSIX socket API,請參考RFC4038: Application Aspects of IPv6 Transition的指導(dǎo)。例如,nodename參數(shù)不應(yīng)該傳IP地址,而應(yīng)該使用域名。
搭建IPv6測試環(huán)境
最好的學(xué)習(xí)方法就是親身實(shí)踐。那么,如何搭建一個IPv6測試環(huán)境呢?只需要一臺用非Wi-Fi方式上網(wǎng)的Mac電腦即可。接下來,我們將教您如何搭建測試環(huán)境:
1. 使用Mac做一個熱點(diǎn),并用iPhone連接這個Wi-Fi。
2. 產(chǎn)生的是一個本地的IPv6 DNS64/NAT64網(wǎng)絡(luò),這是OS X 10.11新增的功能。在“System Preferences”界面選中“Sharing”的同時(shí),要按住“Option”鍵。
3. 在“Sharing”界面中,我們會看到“Create NAT64 Network”的選框,選中它。
4. 搜一下工程里有沒有下面的API,這些都是只針對IPv4做處理的,有的話就刪了。
5. 具體的對應(yīng)字段可參考圖示。
DNS64和NAT64的重要性
在適配IPv6網(wǎng)絡(luò)環(huán)境時(shí),最重要的兩個概念是DNS64和NAT64。我們通常使用getaddrinfo函數(shù)來解析host。但是,如果端口號部分的輸入?yún)?shù)是數(shù)字類型,會導(dǎo)致返回的結(jié)果里端口號被修改。修改辦法是在DNS query結(jié)果里手動將端口號再改回?;蛘?,您可以跳過DNS查詢,直接自己將IPv4的地址轉(zhuǎn)化成IPv6的地址。
總結(jié)
通過本文的介紹,我們知道了蘋果從2016年6月1號開始,強(qiáng)制所有app必須支持純IPv6的網(wǎng)絡(luò)環(huán)境。我們也了解到了高級API和底層API兩種類型的網(wǎng)絡(luò)庫,并了解到了如何搭建IPv6測試環(huán)境。最后,我們明白了DNS64和NAT64的重要性以及如何適配IPv6網(wǎng)絡(luò)環(huán)境。