1. 程式人生 > >如何應對蘋果app 的ipv6 時代?騰訊專家教您進行環境改造

如何應對蘋果app 的ipv6 時代?騰訊專家教您進行環境改造

WeTest 導讀

WWDC2015蘋果宣佈在ios9支援純IPv6的網路服務,並且要求2016年提交到app store的應用必須相容純IPv6的網路,要求適配的系統版本是ios9以上(包括ios9)。

一、背景介紹

1、你瞭解IPv6嗎?

IPv6是Internet Protocol Version 6的縮寫,簡單的概括IPv6就是現行的網際網路協議(IPV4)的下一代IP協議。IPv6由128位二進位制陣列成,可提供龐大的IP地址資源,足以讓地球上每個生物乃至每釐米都能被分配到一個或多個IP地址。將這128位的地址按每16位劃分為一個段,將每個段轉換成十六進位制數字,並用冒號隔開。

IPv4地址示例:192.168.191.1
IPv6地址示例:2001:0db8:85a3:08d3:1319:8a2e:0370:7344

2、為什麼要接入IPv6?

目前網際網路廣泛應用的IPv4技術,理論上IPv4是一個32位的二進位制數的地址,可編址1600萬個網路、40億臺主機。但在採用了A、B、C三類編址方式後,可用的網路地址和主機地址數目大打折扣,歐美資本主義列強掌握著核心技術,留給我國的就更少了。

二、改造方案

要想使應用完全支援IPV6的環境要做的太多了,從協議到硬體,要做一次徹底的大調整。不但客戶端要做ipv6的改造,伺服器也要適配ipv6.主要有一下四種對應關係,必須做好以下每一種。

  IPv4 -> IPv4

  IPv4 -> IPv6

  IPv6 -> IPv4 

  IPv6 -> IPv6

要做到IPv6和IPv4完全相容需要做很大的修改,最簡單的協議上要相容128位的IP地址,路由器,伺服器等相關硬體也要升級。應蘋果公司的要求,本次改造我們只關注客戶端從IPv6的網路環境訪問IPv4的資源。那麼問題來了,現在我們大部分後臺伺服器都是使用IPv4接入的,我們要如何做相容?幸好,從一開始設計IPv6就考慮到了向後相容的問題,運營商會提供一箇中間節點,使用DNS64/NAT64等技術,負責協議的轉換,打通IPv6和IPv4之間的鏈路。(IPv6和IPv4 互通技術有很多,這裡只討論apple要求的技術方案DNS64/NAT64) 我們要走的伺服器必須支援nat/nat64的環境,搭建的wifi環境本來就支援了,我們不改上層的,只改底層的是影響最小。

1、NAT64與DNS64技術

NAT64是一種有狀態的網路地址與協議轉換技術,一般只支援通過IPv6網路側使用者發起連線訪問IPv4側網路資源。但NAT64也支援通過手工配置靜態對映關係,實現IPv4網路主動發起連線訪問IPv6網路。NAT64可實現TCP、UDP、ICMP協議下的IPv6與IPv4網路地址和協議轉換。

DNS64則主要是配合NAT64工作,主要是將DNS查詢資訊中的A記錄(IPv4地址)合成到AAAA記錄(IPv6地址)中,返回合成的AAAA記錄使用者給IPv6側使用者。DNS64也解決了NAT-PT中的DNS-ALG存在的缺陷。NAT64一般與DNS64協同工作,而不需要在IPv6客戶端或IPv4伺服器端做任何修改。NAT64解決了NAT-PT中的大部分缺陷,同時配合DNS64的協同工作,無需像NAT-PT中的DNS-ALG等。

2、舉個栗子

這裡大概描述一下NAT64的工作流程。

(1)IPv6主機發起www.ipv6bbs.cn的AAAA域名解析到DNS64(主機配置的DNS地址是DNS64)

(2)DNS64觸發AAAA到DNS AAAA中查詢;

(3)DNS AAAA返回NULL的資訊到DNS64;

(4)DNS64然後觸發A的申請到DNS A中查詢;

(5)DNS A返回www.ipv6bbs.cn的A記錄(11.111.11.11);

(6)DNS64合成IPv6地址(64:ff9b: 11.111.11.11),返回AAAA response給IPv6主機;

(7)IPv6主機發起目的地址為64:ff9b: 11.111.11.11的IPv6資料包;由於NAT64在IPv6域內通告配置的IPv6 Prefix,因此這個資料包轉發到NAT64裝置上;

(8)NAT64執行地址轉換和協議轉換,目的地址轉換為192.0.2.1,源地址根據地址狀態轉換(64:ff9b: 11.111.11.11,1500)->( 11.111.11.11,2000);在IPv4域內路由到IPv4 server;

(9)資料包返回,目的地址和埠為11.111.11.11,2000;

(10)NAT64根據已有記錄進行轉換,目的地址轉換為2001:db8::1,源地址為加了IPv6字首的IPv4 server地址64:ff9b: 11.111.11.11,傳送到IPv6主機;
圖片描述

按照NAT64的規則,客戶端如果沒有做DNS域名解析的話(微信依賴的是自己實現的NEWDNS),客戶端就需要完成DNS64的工作。這裡的關鍵點是,發現網路是IPv6-only的NAT64網路的情況下,我們可以自己補充上字首64:ff9b::/96,然後進行正常的訪問。然而這裡客戶端能獲取的資訊量一般都是很有限的。

注:AAAA記錄(AAAA record)是用來將域名解析到IPv6地址的DNS記錄。使用者可以將一個域名解析到IPv6地址上,也可以將子域名解析到IPv6地址上。

3、開發同學幹了什麼?

Xplaform改造的要點主要有一下4個:

a.換用相容IPv4及IPv6的API,例如:getaddrinfo,yaoli同學在測試過程中發現,ios9系統在IPv6-only的環境下,返回會的地址資訊結構體中port為0,所以這裡需要重新賦值埠號再進行聯網。

b.判斷當前客戶端是處於IPv4-only、IPv6-only還是IPv4和IPv6並存的環境,然後分別使用不同的網路API,可以參考http://km.oa.com/articles/show/270667

c.SCNetworkReachabilityCreateWithAddress這個方法最好使用探測域名的方式。如果引數填的是0.0.0.0,蘋果文件說明這返回的結果不保證能真正出外網。這樣就需要其它輔助的手段嘗試是否能出外網了。

d.使用socket及connect進行的聯網操作。

三、客戶端相容性測試辦法

1、測試環境搭建

後臺不用改,那客戶端要改如何相容。我們可以先用蘋果給的測試工具,簡單測試。整體原理如下:

圖片描述

其中,在客戶端的改造叫做Xplaform,需要連線mac機建立的NAT64/DNS64的wifi,就是傳說中的IPV6的網路環境,再通過有線網路,路由器,訪問到IPv4的資源。就做到IPv6→IPv4的連線。

下面講解一下IPv6wifi網路環境的搭建。

(1)工具/準備

體驗網有線介面、iMAC(10.11以上的系統)和iOS9(包括iOS9)以上裝置

(2)步驟

接好體驗網的網線,然後開啟系統設定找到Sharing圖示,如下:

圖片描述

點選進入,然後按住option按鍵同時用滑鼠點選下圖的“internet-Sharing”。

圖片描述

這時可以看到下方出現了“Create NAT64 Network”可選選單,把這個選上,如下圖:
圖片描述

之後用手機連上這個共享的wifi熱點,測試對應的網路功能即可。

測試重點:

1、 IPV4和IPV6網路環境判斷是否正確

2、 UDP和TCP的切換是否正確

3、 資料線和音視訊的基本功能

四、經典bug分享

【bug描述】移動4G下無法傳檔案。

在行動網路下無法檢視電腦和進入wifiphoto,傳檔案,問題出現的初期我們馬上切換到wifi下,發現wifi下是可以的,把sim卡換成聯通的,也可以。唯獨移動的網路下無法傳檔案。初步斷定是對網路的相容性問題。
圖片描述

【問題排查】

1、 檢視socket日誌,發現在connection一直失敗。在建立連線階段一直失敗。我們做該需求的目的在於要增加IPV6的客戶端能通過IPV6的網路訪問到IPV4的資源。因此,在做IPV6的改造中我們做了一個判斷邏輯,判斷當前網路環境是IPV4 or IPV6。

2、加日誌驗證,我們把socket繫結的ip地址型別打出來,果然:

圖片描述

在移動資料網路下走了ipv6的通道。可是各大運營商的網路應該走的是ipv4才對。

3、review程式碼。問題就很明顯了,我們梳理了一下選擇ipv6或者ipv4協議棧的判斷邏輯,原來開發判斷到閘道器是IPv6的閘道器之後就不再往下判斷,直接建立連線。然而,我們連線上4G網路環境的時候,移動基站分發的閘道器是一個ipv6形式閘道器,它可以相容ipv6和ipv4兩種ip(開發同學認為是移動公司相容ipv6的策略,看來移動公司已經走在我們前面了)。
圖片描述

【解決辦法】

我們更改了IPv6和IPv4協議棧的判斷邏輯:

1、探測環境

我們的探測環境的方法是:先建立一個ipv6的socket去連ipv6的地址,如果當前網路不是ipv6的環境,返回路由不可達。關鍵點,因為tcp是非同步的需要三次握手,所以我們使用udp來完成這個過程。

2、繼續判斷閘道器語法是否是IPv6格式,

3、最後獲取DNS地址,以上都符合IPv6的語法,即為IPv6的網路,建立socket走IPv6.

圖片描述

4、如果當前網路是IPv6的環境,我們就對IP進行相容性改造IPv6 = 64:ff9b::/96+IPv4。再通過改造後的IP地址建立socket連線。

5、如果IPv6和IPv4都可以走通,我們優先建立IPv4的連線。

【結果檢查】

打印出建立連線的日誌:

圖片描述

從日誌可以看出,手機連線4G之後得到的是IPv4的地址和IPv6格式的閘道器。

建立socket時,IPv6失敗,走IPv4的網。

【經驗總結】

邏輯和場景是測試的兩個緯度,二者都要兼顧到。

【騰訊WeTest iOS預審工具】

為了提高IEG蘋果稽核通過率,騰訊專門成立了蘋果稽核測試團隊,打造出iOS預審工具這款產品。經過1年半的內部運營,騰訊內部應用的iOS稽核通過率從平均35%提升到90%+。

現將騰訊內部產品的過審經驗,以線上工具的形式共享給各位。在WeTest騰訊質量開放平臺上可以線上使用。點選http://wetest.qq.com/product/ios即可立即體驗!

如果使用當中有任何疑問,歡迎聯絡騰訊WeTest企業QQ:800024531

iOS預審工具分四步進行預審服務

【一鍵掃描】只需提供ipa包、稽核圖片、稽核視訊、應用描述,即可在4小時內拿到一份完整的檢測報告,定位問題的同時提供解決方案,助您成功通過稽核。

【案例分享】集結iOS稽核失敗常見原因,豐富案例為您提供參考依據。

【專家服務】騰訊專家團隊為您分析各種疑難雜症,提出最優解決方案。

【ASO優化】專業優化AppStore內關鍵字搜尋結果,讓產品離使用者更近一步。希望App/手遊在預審驗收保證下,都可以快快樂樂過審,開開心心賺錢。

相關推薦

如何應對蘋果appipv6 時代家教進行環境改造

WeTest 導讀 WWDC2015蘋果宣佈在ios9支援純IPv6的網路服務,並且要求2016年提交到app store的應用必須相容純IPv6的網路,要求適配的系統版本是ios9以上(包括ios9)。 一、背景介紹 1、你瞭解IPv

如何應對蘋果appipv6 時代

  WeTest導讀 WWDC2015蘋果宣布在ios9支持純IPv6的網絡服務,並且要求2016年提交到app store的應用必須兼容純IPv6的網絡,要求適配的系統版本是ios9以上(包括ios9)。 一、背景介紹 1、你了解IPv6嗎? IPv6是Internet Protoc

雲,搭建Docker環境

ons fig 令行 鏡像 現在 剛才 load 接下來 服務 安裝與配置 Docker 任務時間:10min ~ 20min 安裝 Docker Docker 軟件包已經包括在默認的 CentOS-Extras 軟件源裏。因此想要安裝 docker,只需要運行下面的

利用AI開放平臺進行情感分析

騰訊AI開放平臺提供了三大功能:自然語言處理、計算機視覺和智慧語音。 情感分析是自然語言處理下的一大分支,騰訊AI的情感分析介面如下: 這裡介紹一下如何利用python來使用騰訊的情感分析API介面服務以便進行大量資料的情感分析。 步驟簡介

雲MTA來進行埋點,進行資料分析

公司要求對點選事件進行統計,方便產品進行了解。要求時間短,所以直接使用來騰訊的MTA來進行埋點統計。一開始直接匯入mta js sdk即可,在script裡面直接引入通過QQ生產的指令碼如果需要對Cli

雲伺服器搭建lnmp環境

接上篇的介紹,雲主機已經好了,現在就是要搭建開發環境了,我使用的是lnmp環境(linux+nginx+mysql+php),在之前virtualbox虛擬機器上我也裝過這個環境。但是當時沒有人指點,

雲linux伺服器的環境配置與使用

一、騰訊雲linux雲伺服器配置LNMP環境1、登入騰訊雲伺服器首先我在騰訊雲的官網申請了一個學生版的伺服器,作業系統為CentOS 6.3 64位。接下去下載並安裝Xshell(一個遠端管理linux伺服器的客戶端軟體)。在執行該軟體之後,點選新建,在彈出的新建會話屬性視窗

雲centos7 搭建mysql環境

1、安裝mysql ##新增可以用於安裝資料庫系統的MySQL儲存庫 yum localinstall -y https://dev.mysql.com/get/mysql57-communit

家教三招識別“泔水豬”肉

    本報訊(記者  樊亮)  長春市市長祝業精日前作出批示,要求有關部門搞清楚“泔水豬”和“垃圾豬”的定義,並確定其是否會對市民健康產生不良影響。    昨日,長春市牧業局召開新聞通氣會,請吉林大學食品質量與安全專業教授徐克成先生通過媒體轉告長春市民:目前,食品衛生領域還沒有發現人因食用“泔水豬”

蘋果推出公眾號真是向低頭嗎?

尊嚴 硬件 應用 store ima 功能 本地 當下 集中 1月18日,蘋果推出了微信公號“Apple”,該公眾號提供了關於蘋果的最新資訊、選購產品的入口、各種新技能,還能找到你附近的Apple Store零售店,同時支持微信支付。不少媒體和相關業內人士的解讀是這是蘋果向

這是一個谷歌抄時代

創新 批評 border 在那 face egg 交互 font phone 最近騰訊立知和即刻之間的種種糾葛,又把騰訊和“抄襲”這個近乎其原罪的詞聯系到了一起。可是對於這種新聞,估計吃瓜群眾已經見怪不怪了。但假如說“不作惡”的谷歌,抄襲了騰訊,那好像就有點“活久見”了。但

如何防範和應對Redis勒索,雲教你出招

redis使用 普通用戶 實踐經驗 目的 cfg 一起 內存數據庫 name 漏洞利用 歡迎大家前往騰訊雲+社區,獲取更多騰訊海量技術實踐幹貨哦~ 本文由騰訊雲數據庫 TencentDB發表於雲+社區專欄 9月10日下午,又一起規模化利用Redis未授權訪問漏洞攻擊數據

11月2日科技聯播:銷量不及預期蘋果市值跌破萬億美元;表示封殺抖音因微信規則

財報亮眼但銷量稍遜,蘋果跌破萬億市值,庫克稱中國銷售成績表現優異;騰訊表示封殺抖音因微信有規則;谷歌CEO迴應全球罷工:我們也會犯錯,但將做的更好;蘋果新服務上線,iPhone 5等“古董”裝置也能獲得維修,一起來看今天的科技快訊: 蘋果市值跌破萬億美元,將不再公佈硬體售賣資料 蘋果公司釋出了截至9月

智維平臺在渝上線,開啟IDC智慧運維新時代

11月15日,騰訊資料中心與重慶電信在渝正式簽署戰略合作協議。此次雙方將在資料中心智慧運營領域展開合作,這也是繼網際網路頻寬、機櫃出租和大型資料中心定製服務等多領域合作後的再度攜手。作為騰訊20年資料中心運維經驗的結晶,騰訊智維平臺將以水土機房為起點,逐步在重慶電信機房部署落地。此次合作,正是騰訊資

又推出一款短視訊App哈皮 類似今日頭條的皮皮蝦

@央廣軍事11月10日訊息,2018中國航展上首次公開展出的“瞭望者Ⅱ”察打一體導彈無人艇,是剛剛成功進行首發導彈飛行試驗命中靶心的實艇,試驗成功後隨即吊裝到展位與公眾見面。據媒體此前報道,該艇是中國第一艘導彈無人艇,也是繼以色列拉斐爾海上騎士後全球第二個成功發射導彈的無人艇,填補了國內導彈無人艇這一技術空白

新出了一款音樂app,它能代替QQ音樂嗎?

在國內,QQ音樂擁有最大的音樂版權庫,是名副其實的財大氣粗。有許多好聽的歌,只能在QQ音樂找到。而且,它緊跟潮流趨勢,哪些歌曲點選率和收聽率高,短短几天內,如果使用者想下載到本地,就需要付費了,非常會抓取使用者的心思來盈利。不過,QQ音樂的付費情況也是能為大眾所接受的,每個月不到十塊錢。但是對於那些想聽簡

關於AI,又有大動作!開發者該如何應對

時隔 6 年後,騰訊公司的組織架構迎來新一輪的優化調整,在原有七大事業群(BG)的基礎上進行重組整合。 騰訊公司董事會主席兼執行長馬化騰表示:“作為一家以網際網路為基礎的科技和文化公司,技術是騰訊公司最堅實的底層基礎設施,面向 AI 以及即將到來的 5G 時代,

知乎5W人熱議,高效率APP、阿里內部都在用!

最近好像很多人都對提高效率感興趣,特別是一二線城市,生活節奏快,難免對工作效率要求更高,那如何才能提高自己的工作效率呢?別擔心,工欲善其事必先利其器,今天就給大家分享5個效率APP,騰訊、阿里內部員工都在用。 1、種子清單 一款習慣培養時間管理APP 這應該是國

聚焦企業資料安全體系建設,共築數字化時代安全屏障

騰訊聚焦企業資料安全體系建設,共築數字化時代安全屏障 12月13日,在2019 FreeBuf網際網路安全創新大會上,來自騰訊安全平臺部的騰訊資料安全負責人劉寧分享了“網際網路企業資料安全建設之路”,探討了大資料時代,如何聚焦企業資料安全體系建設,共築數字化時代的安全屏障。 劉寧提出,

開發者如何應對蘋果稽核條款4.3導致上傳馬甲包被App Store 拒絕的情況?

1、修改應用價格 2、修改應用釋出地區 3、修改產品分類 以上修改必須與原產品不同。 還有一種方法是修改APP的二進位制程式碼1、升級vesion,升級一個版本號提交稽核2、換bndle id,換一個包再提交3、換開發者帳號,換不同帳號提交稽核4、修改素材、Ul、logo、主色調等5、修改功