由于移動互聯網服務商擁有的 IPv4 地址即將耗盡,他們只能給出 IPv6地址或者電信級 NATted 的 IPv4 地址,Apple 在今年五月四日宣布,從六月1日起,所有提交至 AppStore 的應用必須支持 IPv6 協議。同時,在 Google IPv6 使用統計中可以看出,當前 IPv6 的采用率已經接近 13%。所以,使你的 App 支持 IPv6變得越來越重要,尤其是移動 App。IPv6 已經開始出現在 EMail Headers、SIP、DNS 等地方,你的 App 需要能夠解析這些在 URL、頭部字段和數據中的 IPv6 地址。至少得保證 App 第一次遇到這些 128 位或者更長的字符串時不會崩潰。
App支持 IPv6 并不意味著它僅僅支持 IPv6。相當大一部分網絡依然使用 IPv4 并且將持續很長一段時間,你得確保你的 App 依然支持 IPv4。同時,一些互聯網服務商早已耗盡 IPv4 地址,從而選擇將電信級 NATted 的 IPv4 地址分配給客戶。而有的干脆選擇僅部署 IPv6。這部分客戶連接到 IPv4 網絡的唯一方法是通過 6to4 隧道進行數據傳輸,它的原理是使用 IPv6 作為 IPv4 的傳輸層。基于以上原因,當前最好的方式是支持雙協議棧。
在 Web 服務應用中,常常會使用正則表達式來識別 IPv4,這些表達式遇到 IPv6 將會失效。事實上,由于 IPv6 地址有許多不同的格式,不推薦使用正則式來識別 IPv6??梢試L試使用一些開源庫來做這部分工作。另外,應檢查一下存放 IP 地址的數據庫字段是否已經擴展到 128 位,確保你的應用部署到了支持雙協議棧的操作系統中,確保你使用的庫也支持 IPv6,否則可能出現不必要的錯誤??偠灾八猩婕?IP 的地方都需要檢查以確保其能夠支持 IPv6。
移動 App 經常使用 RESTful URL 與 服務端 App 進行通信,而服務端 App 可能使用 URL 與 LDAP 服務數據庫或其他 RESTful 服務通信。由于 IPv6 地址以 ":" 為分隔符,而 host和端口也是同樣的分隔符,所以在 URLs 中使用 IPv6 需要使用方括號加以區分:https://[2111:500:4:13::128]:443/。
在 IPv4 網絡中,DNS 記錄可以將域名翻譯成 IPv4 地址,這個地址稱之為 A 記錄。同樣在 IPv6 網絡中,返回的 IPv6 地址的長度是 IPv4 地址的四倍,稱之為 AAAA 記錄。在進行 DNS 查詢時,一個單獨的域名可以同時擁有一個 A 記錄和一個 AAAA 記錄,所以域名可以被翻譯為一個 IPv4 地址和一個 IPv6 地址。如果你同時獲得了一個 A 記錄和一個 AAAA 記錄,你需要同時使用兩個地址進行訪問,并選取訪問速度更快的那個地址。另外,當一些網絡服務使用 IPv6 時,IP 地理位置系統需要及時更新其數據庫。
當一些客戶端程序使用 IP socket 進行跨進程通信和一些服務端程序訪問同一個主機中的其他服務時,就要使用到被稱為環回地址的 IP 地址,通常是 localhost。在 IPv4 中,localhost 可以為 127.0.0.0 至 127.255.255.255 之間的任意地址。而在 IPv6中,有且僅有一個環回地址 ::1。所以最好使用 localhost 當做環回地址而不是特定的 IP 地址。
測試,當一切條件完備以后,還需要一些測試。如果你是公共網站,可以使用類似于 internet.nl 的開放工具進行 IPv6 訪問測試。