通俗易懂,理解移動網(wǎng)絡(luò)的“弱”和“慢”
1、前言
隨著移動互聯(lián)網(wǎng)的高速發(fā)展,移動端IM以移動網(wǎng)絡(luò)作為物理通信載體早已深入人心,這其中的成功者就包括微信、手機QQ、支付寶(從即時通訊產(chǎn)品的角度來看,支付寶已經(jīng)算的上是半個IM了)等等,也為移動端即時通訊開發(fā)者帶來了各種可以參考的標桿功能和理念:語音對講、具有移動端體驗特性的圖片消息、全時在線的概念、真正突破物理體驗的實時通知等。
上述IM產(chǎn)品、功能和概念,在開發(fā)者間討論時,無一例外都會被打上“移動端”這個特性,從網(wǎng)絡(luò)通信的角度來說,這個特性的本質(zhì)可以認為就是移動網(wǎng)絡(luò)的特性。
以文件發(fā)送為例,傳統(tǒng)的PC端IM(可以簡單地理解為傳統(tǒng)有線網(wǎng)絡(luò)上的IM)可以直接實時點對點發(fā)送(理論上無需經(jīng)過服務(wù)器中轉(zhuǎn))。
但在移動端IM里我們并不能這么干,原因是:
- 1)3G/4G/5G網(wǎng)絡(luò)下P2P成功率并沒有那么高(因為是對稱型NAT,詳見《通俗易懂:快速理解P2P技術(shù)中的NAT穿透原理》);
- 2)移動網(wǎng)絡(luò)的信號跳變、抖動很難預(yù)測(甚至在你轉(zhuǎn)身的瞬間,信號可能會立馬由強變?nèi)酰?/li>
- 3)移動網(wǎng)絡(luò)的延遲、丟包、重傳等導(dǎo)致通信體驗很差(就像從國內(nèi)訪問國外的網(wǎng)站那種“慢”,體驗上是相似的);
- 4)延遲、丟包、重傳帶來的另一個后果就是電量消耗、流量消耗過大,這些都是不可接受的;
- 5)智能手機(主要是Android、iOS)的系統(tǒng)省電策略,導(dǎo)致網(wǎng)絡(luò)可能被阻斷,甚至進程被殺死,功能沒辦法在后臺繼續(xù)工作。
所以,正是移動網(wǎng)絡(luò)的這些特性,使得原本在傳統(tǒng)PC端再普通不過的功能(比如上面說的文件發(fā)送),在移動端IM中卻不得不另想辦法:以文件發(fā)送為例——主流的移動端IM現(xiàn)在都是使用服務(wù)器中轉(zhuǎn)來搞定的。使用類似技術(shù)實現(xiàn)的功能,還有移動端IM里語音短消息的AMR音頻小文件、圖片消息的圖片文件等。
那么回歸到本文的正題:移動網(wǎng)絡(luò)為什么會存在“弱”和“慢”這樣的特性?
這個問題網(wǎng)絡(luò)工程師來回答最為合適,對但于應(yīng)用層的程序員來說,有關(guān)移動網(wǎng)絡(luò)的理論太生澀枯燥,太難理解了。而對于網(wǎng)絡(luò)工程師來說,他們也不理解“你們這些程序員到底在糾結(jié)移動網(wǎng)絡(luò)的什么鬼?”。
就像黃品源的那首《那么愛你為什么》的歌曲里面莫文蔚的一段念白:“我講又講不清,你聽又聽不懂......”。這大概是應(yīng)用層程序員很難能找到通俗易懂的有關(guān)移動網(wǎng)絡(luò)資料的原因吧。
所以本文的目的,就是希望以通俗易懂的語言,幫助移動端IM開發(fā)者更好地理解移動網(wǎng)絡(luò)的各種特性,使得開發(fā)出的功能能更好地適應(yīng)移動網(wǎng)絡(luò),給用戶帶來更好的使用體驗。
另外,《現(xiàn)代移動端網(wǎng)絡(luò)短連接的優(yōu)化手段總結(jié):請求速度、弱網(wǎng)適應(yīng)、安全保障》這篇文章也提到了本文所闡述的相關(guān)內(nèi)容,強烈建議閱讀。
4、正文引言
移動互聯(lián)網(wǎng)顛覆著我們的生活方式,這個每時每刻伴隨著我們的網(wǎng)絡(luò)到底有哪些特點,又是如何影響我們接入信息世界的體驗?zāi)亍?/p>
以下場景如似曾相識,敬請對號入座:
1)上班路上收到朋友分享的一張美女圖片,縮略圖目測衣服用料相當節(jié)儉,立馬興奮點開欲詳細鉆研,卻發(fā)現(xiàn)怎么脫也脫不下來,不對,是“拖”不是“脫”,仰望蒼天,欲哭無淚。
2)進電梯前收到女友一條消息:“你到底愛不愛我!”,當然馬上回復(fù)“必須的必!”,電梯門關(guān)閉了,北風那個吹,菊花那個轉(zhuǎn),等到春暖梯開,滿屏都是女友的問候“在嗎!”、“這都要想那么久!”、“跟哪個MM聊天呢!”、“我生氣了!”、“你是好人,再見!”,看著自己的回復(fù)剛剛發(fā)送成功,停在***一行,整個互動信息一氣呵成,都是眼淚。
3)和朋友聚餐,菜端上先拍照分享,再大快朵頤,明明坐在對面,偏偏還得用手機聊天,世界最遠的距離,莫過于我們坐在一起,卻只能用手指切磋。
有因有果,有道有術(shù),不入虎穴焉得虎子,不扯了,進入正題。
5、移動網(wǎng)絡(luò)的特點
理論上說,我們看到移動網(wǎng)絡(luò)有如下三個典型特點:
- 1)移動狀態(tài)網(wǎng)絡(luò)信號不穩(wěn)定,高時延、易抖動丟包、通道狹窄;
- 2)移動狀態(tài)網(wǎng)絡(luò)接入類型和接入點變化頻繁;
- 3)移動狀態(tài)用戶使用高頻化、碎片化、非WIFI流量敏感。
為什么?
參考【圖一 無線網(wǎng)絡(luò)鏈路示意】,我們嘗試從物理上追根溯源:
▲ 圖一:無線網(wǎng)絡(luò)鏈路示意
根據(jù)“圖一:無線網(wǎng)絡(luò)鏈路示意”所示內(nèi)容,我們可以得到以下信息。
***、直觀印象是通訊鏈路長而復(fù)雜:從(移動)終端設(shè)備到應(yīng)用服務(wù)器之間,相較有線互聯(lián)網(wǎng),要多經(jīng)過基站、核心網(wǎng)、WAP網(wǎng)關(guān)(好消息是WAP網(wǎng)關(guān)正在被依法取締)等環(huán)節(jié),這就像送快遞,中間環(huán)節(jié)越多就越慢,每個中轉(zhuǎn)站的服務(wù)質(zhì)量和服務(wù)效率不一,每次傳遞都要重新交接入庫和分派調(diào)度,一不小心還能把包裹給弄丟了。
第二、這是個資源受限網(wǎng)絡(luò):移動設(shè)備接入基站空中信道數(shù)量非常有限,信道調(diào)度更是相當復(fù)雜,如何復(fù)雜就不展開了,莫文蔚那首歌詞用在這里正合適:“我講又講不清,你聽又聽不懂......”,最最重要的是分配的業(yè)務(wù)信道單元如果1秒鐘不傳數(shù)據(jù)就會立馬被釋放回收,六親不認童叟無欺。
第三、這個鏈條前端(無線端)是高時延(除某些WIFI場景外)、低帶寬(除某些WIFI場景外)、易抖動的網(wǎng)絡(luò):無線各種制式網(wǎng)絡(luò)帶寬上限都比較低而傳輸時延比較大(參見【表一 運營商移動信號制式帶寬標準】),并且,沒事就能丟個包裹玩玩,最最重要的是,距離基站的遠近,把玩手機的角度、地下室的深度等等都能影響無線信號的質(zhì)量,讓包裹在空中飛一會,再飛一會......。這些因素也造成了移動互聯(lián)網(wǎng)網(wǎng)絡(luò)質(zhì)量穩(wěn)定性差、接入變化頻繁,與有線互聯(lián)網(wǎng)對比更是天上人間的差別,從【圖二 有線互聯(lián)網(wǎng)和移動互聯(lián)網(wǎng)網(wǎng)絡(luò)質(zhì)量差異】中可以有更直觀的感受。
▲ 圖二:有線互聯(lián)網(wǎng)和移動互聯(lián)網(wǎng)網(wǎng)絡(luò)質(zhì)量差異
【表一 運營商移動信號制式帶寬標準】數(shù)據(jù)來自互聯(lián)網(wǎng)各種百科,定性不定量,僅供參考;
第四、這是個局部封閉網(wǎng)絡(luò):空中信道接入后要做鑒權(quán)、計費等預(yù)處理,WAP網(wǎng)絡(luò)甚至還要做數(shù)據(jù)過濾后再轉(zhuǎn)發(fā),在業(yè)務(wù)數(shù)據(jù)有效流動前太多中間代理人求參與,效率可想而知。產(chǎn)品研發(fā)為什么又慢又亂,廣大程序猿心里明鏡似的;最最重要的是,不同運營商之間跨網(wǎng)傳輸既貴且慢又有諸多限制,聰明的運營商便也用上了緩存技術(shù),催生了所謂網(wǎng)絡(luò)“劫持”的現(xiàn)象。
如果我們再結(jié)合用戶在移動狀態(tài)下2G/3G/4G/WIFI的基站/AP之間,或者不同網(wǎng)絡(luò)制式之間頻繁的切換,情況就更加復(fù)雜了。
6、移動網(wǎng)絡(luò)為什么“慢”
我們在移動網(wǎng)絡(luò)的特點介紹中,很容易的得到了三個關(guān)鍵字:
- 1)“高時延”;
- 2)“易抖動”;
- 3)“通道窄”。
這些物理上的約束確實限制了我們移動沖浪時的速度體驗,那么,還有別的因素嗎。
當然有,汗牛充棟、罄竹難書:
- 1)DNS解析,這個在有線互聯(lián)網(wǎng)上司空見慣的服務(wù),在移動互聯(lián)網(wǎng)上變成了一種負擔,一個往復(fù)最少1s,還別提遇到移動運營商DNS故障時的尷尬;
- 2)鏈路建立成本暨TCP三次握手,在一個高時延易抖動的網(wǎng)絡(luò)環(huán)境,并且大部分業(yè)務(wù)數(shù)據(jù)交互限于一個HTTP的往返,建鏈成本尤其顯著;
- 3)TCP協(xié)議層慢啟動、擁塞控制、超時重傳等機制在移動網(wǎng)絡(luò)下參數(shù)設(shè)定的不適宜;
- 4)不好的產(chǎn)品需求規(guī)定或粗放的技術(shù)方案實現(xiàn),使得不受控的大數(shù)據(jù)包、頻繁的數(shù)據(jù)網(wǎng)絡(luò)交互等,在移動網(wǎng)絡(luò)側(cè)TCP鏈路上傳輸引起的負荷;
- 5)不好的協(xié)議格式和數(shù)據(jù)結(jié)構(gòu)設(shè)計,使得協(xié)議封裝和解析計算耗時、耗內(nèi)存、耗帶寬,甚至協(xié)議格式臃腫冗余,使得網(wǎng)絡(luò)傳輸效能低下;
- 6)不好的緩存設(shè)計,使得數(shù)據(jù)的加載和渲染計算耗時、耗內(nèi)存、耗帶寬。
現(xiàn)在終于知道時間都去哪了,太浪費太奢侈,還讓不讓人愉快的玩手機了。天下武功,唯快不破,我們一起踏上“快”的探索之路吧。
7、針對移動網(wǎng)絡(luò)“弱”和“慢”的特點,有優(yōu)化辦法嗎?
答案是:有。
在移動互聯(lián)網(wǎng)時代,對我們的產(chǎn)品和技術(shù)追求提出了更高的挑戰(zhàn),如何從容和優(yōu)雅的面對,需要先從精神上做好充分的準備,用一套統(tǒng)一的思考和行動準則武裝到牙齒。
從來就沒有什么救世主,只有程序猿征服一切技術(shù)問題的夢想在空中飄蕩。屢敗屢戰(zhàn),把過往實踐中的經(jīng)驗教訓(xùn)總結(jié)出來,共同研討。


2020-06-08 10:50:58
2022-10-11 11:35:29




