5G時代已經到來,TCP/IP老矣,尚能飯否?

本文已同時發佈於個人「即時通信技術圈」公衆號。

一、引言

哈羅,你們好,我是Jack Jiang。。。(一股濃濃的自媒體視頻旁白味道)。php

對於常常看我文章的即時通信開發者來講,今天要討論的這個話題,貌似有點不着邊際。html

是的,自從我整理完《IM開發者的零基礎通訊技術入門》系列文章以後,對於網絡編程的理解,開始有點飄了。程序員

言歸正傳。如今,5G技術離咱們的生活愈來愈近了,號稱網絡延遲1ms、下行速度10Gb/s的5G,在這樣逆天的網絡性能指標下,老驥伏櫪的TCP/IP是否仍能Hold的住?帶着這個思考,便有了本文的內容。面試

▲ 5G網速有多快?看圖感覺一下(圖自《零基礎,史上最強5G技術掃盲》)編程

(本文已同步發佈於:http://www.52im.net/thread-2976-1-1.html安全

二、學好TCP/IP夠用嗎?

對於即時通信技術的開發者,從技術棧來講,一條最普通的聊天消息的送達,確定要涉及到網絡編程技術,而網絡編程最核心的也就是TCP/IP協議(準確的說是TCP/IP協議簇,見《TCP/IP詳解》),毫無疑問深刻的學習TCP/IP協議確定是很是有必要了。服務器

基本上,對於普通的IM或消息推送系統開發來講,對TCP/IP相關的計算機網絡基礎比較熟悉的話,徹底夠用了。微信

▲ 這本書不少人都讀過網絡

三、移動網絡問題,只能賴我代碼爛?

親手寫過即時通信的網絡通訊層的同窗都很清楚,在移動網絡中(我說的移動網絡具體指的是運營商的2g/3g/4g/5g這些),由於無線通訊的介質和技術實現特殊性,出現了不少傳統有線互聯網未曾有過的網絡通訊問題。數據結構

就拿IM在移動弱網中出現的各類問題來講,多數開發者都不自信的認爲這應該是自已的網絡層代碼寫的不夠優秀,是的,不少時候也確實是這樣。

我收集整理的下面這幾篇資料,就討論的是這些,有興趣能夠讀一下:

現代移動端網絡短鏈接的優化手段總結:請求速度、弱網適應、安全保障
百度APP移動端網絡深度優化實踐分享(三):移動端弱網優化篇
微信移動端應對弱網絡狀況的探索和實踐PPT [附件下載]
YY直播在移動弱網環境下的深度優化實踐分享(視頻+PPT)[附件下載]

其實,不多有人會去思考,在TCP/IP協議被髮明出來的50年後,對於現代的移動網絡來講,是否仍然能工做的好?以弱網問題爲例,難道我寫的IM老是丟消息、掉線就僅僅是「我」的代碼太爛? 

沒錯,這不只僅是應用層的代碼編寫問題,它或許涉及到TCP/IP的設計侷限,甚至移動網絡的底層設計也並非最完美的。

下面這兩篇文章,對於弱網問題思考,已經深刻到運營商的通訊技術這一層,強烈建議讀一讀:

移動端IM開發者必讀(一):通俗易懂,理解移動網絡的「弱」和「慢」
移動端IM開發者必讀(二):史上最全移動弱網絡優化方法總結

若是你的認知,已經開始對底層的網絡通訊技術有所困惑,下面這幾篇就是爲你準備的:

IM開發者的零基礎通訊技術入門(六):移動終端的接頭人——「基站」技術
IM開發者的零基礎通訊技術入門(七):移動終端的千里馬——「電磁波」
IM開發者的零基礎通訊技術入門(八):零基礎,史上最強「天線」原理掃盲
IM開發者的零基礎通訊技術入門(九):無線通訊網絡的中樞——「核心網」
IM開發者的零基礎通訊技術入門(十):零基礎,史上最強5G技術掃盲
IM開發者的零基礎通訊技術入門(十一):爲何WiFi信號差?一文即懂!
IM開發者的零基礎通訊技術入門(十二):上網卡頓?網絡掉線?一文即懂!
IM開發者的零基礎通訊技術入門(十三):爲何手機信號差?一文即懂!
IM開發者的零基礎通訊技術入門(十四):高鐵上無線上網有多難?一文即懂!

四、簡單複習一下TCP/IP

從字面意義上講,有人可能會認爲 TCP/IP 是指 TCP 和 IP 兩種協議。實際生活當中有時也確實就是指這兩種協議。

然而在不少狀況下,它只是利用 IP 進行通訊時所必須用到的協議簇的統稱。

具體來講,IP 或 ICMP、TCP 或 UDP、TELNET 或 FTP、以及 HTTP 等都屬於 TCP/IP 協議。他們與 TCP 或 IP 的關係緊密,是互聯網必不可少的組成部分。TCP/IP 一詞泛指這些協議,所以,有時也稱 TCP/IP 爲網際協議簇。

互聯網進行通訊時,須要相應的網絡協議,TCP/IP 本來就是爲使用互聯網而開發制定的協議簇。所以,互聯網的協議就是 TCP/IP,TCP/IP 就是互聯網的協議。 

▲ 上圖反映了TCP/IP協議族的關係(圖片引用自《計算機網絡通信協議關係圖》)

五、TCP/IP或許太老了

對於現代移動網絡來講,TCP/IP或許太老了。咱們簡單瞭解一下TCP/IP協議的產生過程。

1973年:卡恩與瑟夫開發出了TCP/IP協議中最核心的兩個協議:TCP協議和IP協議。

1974年:卡恩與瑟夫正式發表了TCP/IP協議並對其進行了詳細的說明。同時,爲了驗證TCP/IP協議的可用性,使一個數據包由一端發出,在通過近10萬km的旅程後到達服務端。在此次傳輸中,數據包沒有丟失一個字節,這充分說明了TCP/IP協議的成功。

1983年:TCP/IP協議正式替代NCP,今後之後TCP/IP成爲大部分因特網共同遵照的一種網絡規則。

1984年:TCP/IP協議獲得美國國防部的確定,成爲多數計算機共同遵照的一個標準。 

是的,你沒有看錯,TCP/IP協議設計於距今50年前!

▲ 羅伯特·卡恩(左者)與文特·瑟夫(右者)(圖片引用自《技術往事:改變世界的TCP/IP協議》)

六、TCP/IP本來是爲固定網絡設計的

雖然TCP/IP自上世紀70年代發明以來,鏈接了無數的計算機,推進了互聯網的蓬勃發展。

但不可迴避的現實是,基於TCP/IP的互聯網,它的初衷是爲固定網絡和網絡互連而設計,而今天咱們已經發展到了移動互聯時代。

再日後看,將來5G將面臨AR/VR、超高清視頻、物聯網、車聯網等各類應用、用例紛呈,加之網絡安全的緊迫性愈加凸顯,TCP/IP或許難以適應將來。

七、TCP/IP或許並不適合移動網絡

7.1 TCP/IP設計之初沒法預見高速移動網時代

在TCP/IP剛被設計的年代,即傳統固定互聯網的公元元年,主機是固定的,用於編址的IP也是固定的,世界是平的。

但是隨着應用程序以及芯片技術的活力涌現,設備愈來愈小,App愈來愈豐富,當你以爲渾身憋得慌的時候,移動互聯網時代來了。

但傳統的TCP/IP並不適合移動網絡,以TCP/IP協議簇中咱們最經常使用的TCP協議來講,傳統的TCP基於TCP/IP協議頭字段的五元組,而標識設備的IP地址僅僅標識了設備位置,並無標識設備自己(實際上無論到了什麼年代,IP地址都不該該標識設備自己,它就是標識位置的!問題是,TCP不該該用一個標識位置的元素來標識設備)。

而對於移動互聯網來講,一旦移動設備(好比智能手機)換了位置(通訊基站切換了),其IP地址也會改變,進而既有的TCP鏈接將所有中斷。

▲ 運營商的基站是有覆蓋範圍的,並且覆蓋範圍並不大

對於底層的移動網絡通訊技術有所瞭解的開發人員或許知道,手機的通訊是由基站進行代理的,而基站是固定的。換句話說,當你移動到下一個基站的位置時,手機就得自動切換到新的基站,進而從新進行一系列的跟運營商的無線體系進行鏈接創建的過程。

這在平常生活中使用並無什麼問題,但在時速達到350千米每小時的復興號高鐵上用手機上網時,這就會致使嚴重的問題。由於基站的信號覆蓋範圍有限,在手機移動速度如此之快的狀況下,基站的切換也將頻繁到讓網絡工程師們崩潰(有興趣能夠讀一下《IM開發者的零基礎通訊技術入門(十四):高鐵上無線上網有多難?一文即懂!》)。

TCP/IP和網絡的關係,能夠做個有趣的類比。

假設互聯網是公路,那麼TCP/IP這就是這條公路上的一套交通規則。這套規則在制定時,可能考慮到的只是普通的市場內道路(最可能是高速公路使用),而如今的5G時代,就比如時速350千米的高速鐵路,試想普通的市內交通規則套用在高速鐵路上,那難道不算是災難嗎。

必竟普通的市內交通速度不會很快,各類規則的制定偏差和餘量能夠比較大,但高速鐵路上,速度飛快、交通訊號控制精確無比的狀況下,這套規則,對於開高鐵的司機來講,確定是膽顫心驚。而TCP/IP對於5G來講,就比如這套老的交通規則,用它來駕馭這麼快速的5G快車,是否是很瘋狂?

7.2 TCP/IP與電信網的基因不一樣

基於TCP/IP的互聯網本來是爲固定網絡和網絡互聯設計,而運營商的移動網絡是爲移動性鏈接而生。互聯網的鏈接是分佈式的,而移動通訊網絡是集中控制的。

這二者的技術基因確實有很大不一樣,在早期移動網絡網絡性能較慢的狀況下,這二者的結合,矛盾彷佛並不突出。

實際上,在傳統電信網(就是你們最經常使用的電話、短信網絡)與IT互聯網是兩撥人各自有玩耍(電信網爲表明的就是3GPP標準化組織,互聯網爲表明的就是IETF標準化組織)。

在那個移動網還不發達的年代,這兩撥人各自玩各自的,你們誰也不用鳥誰。

隨着人們對移動上網需求愈來愈旺盛,搞電信網的這撥人只能想辦法接入傳統的互聯網,必竟在當時傳統互聯網太強勢,而移動網的應用場景還在摸索階段,爲了能快速解決移動上網的問題,與是也很差麻煩IETF這撥人,全部痛苦默默承受——雖然TCP/IP在移動網上的實施並不合適,但只能想辦法縫縫補補,把移動網的標準制定,往它上面靠。

這就比如,TCP/IP這輛車已經造好了,至於你搞移動網的人,是修一條普通馬路(2G)、仍是一條高速公司路(3G)、或者是如今的高速鐵路(5G),反正你只能將就這輛車。本來應該是什麼路上跑什麼車,而如今是無論你什麼路,只能跑這輛車。反正車子跑很差,不怪車子,怪路。。。

好奇葩的邏輯,而這個邏輯就比如是如今的TCP/IP跟移動網的關係。

因此,在5G,甚至將來的6G、7G時代,這種「勉強」的結合,拋必帶來網絡低效、基礎設施成本高昂等問題。

八、移動運營商們已經意識到問題

是的,大佬們已經意識到了問題的嚴重性,正在着手解決。

2020年4月初,歐洲電信標準協會(ETSI)已成立了一個新的行業規範工做組「Non-IP Networking」(ISG NIN),以解決新服務、尤爲是5G服務面臨的老式網絡協議所存在的問題。

▲ 詳細新聞內容《點此查看

該工做組的目標是爲5G網絡研究開發新的網絡協議,以替代TCP/IP。

是的,這些移動運營商已經發如今4G、甚至5G網絡中使用的基於TCP/IP的技術存在一些問題。

因爲TCP/IP協議最初是爲互聯網設計,而非爲移動通訊網絡而生,當移動通訊網絡引入TCP/IP後,增長了移動性、安全性、QoS等功能,這使得網絡更復雜,頻譜使用效率較低。爲了解決這些問題,後續的修補和替代方案又致使了成本、時延和功耗增長。

大佬們終於認可,對於5G的某些高級服務,TCP/IP確實被認爲不是最佳的。

九、移動網絡將來會怎樣?

雖然TCP/IP可能愈來愈難以適應移動網絡的發展,但不能否認,短時間內TCP/IP的不可替代性。

必竟,基於TCP/IP的傳統互聯網所構建的軟件和硬件世界(尤爲是硬件)並非一朝一夕的事,而替換掉這些,不管是從成本仍是各方利益來講,都是個須要反覆權衡和博弈的事。

一個很好的例子是,IPv4和IPv6,雖然誰都知道IPv4的困境,但IPv6喊了這麼多年目前想要普及,仍然還比較遙遠,要知道IPv6已經喊了10年了。由於這小小的IP地址,牽涉的是互聯網從硬到軟幾乎全部環節,影響之大,無出其右。

對於IM開發者來講,由於移動網絡的特殊性,而技術改朝換代也並不鮮見。

好比衆所周之的XMPP協議,設計之初也是野心勃勃——「要讓上IM就像打開網頁同樣簡單!」。確實,XMPP不管是肉眼可讀性,仍是數據結構的優雅,都很是優秀,但悲劇的是,設計者們歷來沒有想過移動網會發展成今天這樣,或者說設計者們從未考慮過XMPP在移動網下的使用。因而,後面的故事,你們都很清楚——每一個人都在抱怨XMPP臃腫、冗餘(是的,這裏我收集了一大堆這樣的文章),這算個是把優勢作成缺點的典型案例了。

或許,將來會有那麼一天,移動網絡終有屬於爲自已定製的網絡協議標準。而對於搞網絡通訊的程序員來講,若是這套新的標準讓能基於移動網絡的代碼編寫,變的愉快起來,那真是謝天謝地了!

十、參考資料

[1] TCP/IP 已完 ?New IP 以後,又來一個 Non-IP

[2] 5G:再見,TCP/IP

[3] 從新設計TCP/IP協議棧以支持設備移動性

[4] 5G要拋棄TCP/IP?

[5] ETSI LAUNCHES NEW GROUP ON NON-IP NETWORKING ADDRESSING 5G NEW SERVICES

附錄:更多網絡編程基礎資料

TCP/IP詳解 -  第11章·UDP:用戶數據報協議
TCP/IP詳解 -  第17章·TCP:傳輸控制協議
TCP/IP詳解 -  第18章·TCP鏈接的創建與終止
TCP/IP詳解 -  第21章·TCP的超時與重傳
技術往事:改變世界的TCP/IP協議(珍貴多圖、手機慎點)
通俗易懂-深刻理解TCP協議(上):理論基礎
通俗易懂-深刻理解TCP協議(下):RTT、滑動窗口、擁塞處理
理論經典:TCP協議的3次握手與4次揮手過程詳解
理論聯繫實際:Wireshark抓包分析TCP 3次握手、4次揮手過程
計算機網絡通信協議關係圖(中文珍藏版)
UDP中一個包的大小最大能多大?
P2P技術詳解(一):NAT詳解——詳細原理、P2P簡介
P2P技術詳解(二):P2P中的NAT穿越(打洞)方案詳解(基本原理篇)
P2P技術詳解(三):P2P中的NAT穿越(打洞)方案詳解(進階分析篇)
P2P技術詳解(四):P2P技術之STUN、TURN、ICE詳解
通俗易懂:快速理解P2P技術中的NAT穿透原理
高性能網絡編程(一):單臺服務器併發TCP鏈接數到底能夠有多少
高性能網絡編程(二):上一個10年,著名的C10K併發鏈接問題
高性能網絡編程(三):下一個10年,是時候考慮C10M併發問題了
高性能網絡編程(四):從C10K到C10M高性能網絡應用的理論探索
高性能網絡編程(五):一文讀懂高性能網絡編程中的I/O模型
高性能網絡編程(六):一文讀懂高性能網絡編程中的線程模型
Java的BIO和NIO很難懂?用代碼實踐給你看,再不懂我轉行!
鮮爲人知的網絡編程(一):淺析TCP協議中的疑難雜症(上篇)
鮮爲人知的網絡編程(二):淺析TCP協議中的疑難雜症(下篇)
鮮爲人知的網絡編程(三):關閉TCP鏈接時爲何會TIME_WAIT、CLOSE_WAIT
鮮爲人知的網絡編程(四):深刻研究分析TCP的異常關閉
鮮爲人知的網絡編程(五):UDP的鏈接性和負載均衡
鮮爲人知的網絡編程(六):深刻地理解UDP協議並用好它
鮮爲人知的網絡編程(七):如何讓不可靠的UDP變的可靠?
鮮爲人知的網絡編程(八):從數據傳輸層深度解密HTTP
鮮爲人知的網絡編程(九):理論聯繫實際,全方位深刻理解DNS
網絡編程懶人入門(一):快速理解網絡通訊協議(上篇)
網絡編程懶人入門(二):快速理解網絡通訊協議(下篇)
網絡編程懶人入門(三):快速理解TCP協議一篇就夠
網絡編程懶人入門(四):快速理解TCP和UDP的差別
網絡編程懶人入門(五):快速理解爲何說UDP有時比TCP更有優點
網絡編程懶人入門(六):史上最通俗的集線器、交換機、路由器功能原理入門
網絡編程懶人入門(七):深刻淺出,全面理解HTTP協議
網絡編程懶人入門(八):手把手教你寫基於TCP的Socket長鏈接
網絡編程懶人入門(九):通俗講解,有了IP地址,爲什麼還要用MAC地址?
網絡編程懶人入門(十):一泡尿的時間,快速讀懂QUIC協議
技術掃盲:新一代基於UDP的低延時網絡傳輸層協議——QUIC詳解
讓互聯網更快:新一代QUIC協議在騰訊的技術實踐分享
現代移動端網絡短鏈接的優化手段總結:請求速度、弱網適應、安全保障
聊聊iOS中網絡編程長鏈接的那些事
移動端IM開發者必讀(一):通俗易懂,理解移動網絡的「弱」和「慢」
移動端IM開發者必讀(二):史上最全移動弱網絡優化方法總結
IPv6技術詳解:基本概念、應用現狀、技術實踐(上篇)
IPv6技術詳解:基本概念、應用現狀、技術實踐(下篇)
從HTTP/0.9到HTTP/2:一文讀懂HTTP協議的歷史演變和設計思路
腦殘式網絡編程入門(一):跟着動畫來學TCP三次握手和四次揮手
腦殘式網絡編程入門(二):咱們在讀寫Socket時,究竟在讀寫什麼?
腦殘式網絡編程入門(三):HTTP協議必知必會的一些知識
腦殘式網絡編程入門(四):快速理解HTTP/2的服務器推送(Server Push)
腦殘式網絡編程入門(五):天天都在用的Ping命令,它究竟是什麼?
腦殘式網絡編程入門(六):什麼是公網IP和內網IP?NAT轉換又是什麼鬼?
腦殘式網絡編程入門(七):面視必備,史上最通俗計算機網絡分層詳解
腦殘式網絡編程入門(八):你真的瞭解127.0.0.1和0.0.0.0的區別?
以網遊服務端的網絡接入層設計爲例,理解實時通訊的技術挑戰
邁向高階:優秀Android程序員必知必會的網絡基礎
全面瞭解移動端DNS域名劫持等雜症:技術原理、問題根源、解決方案等
美圖App的移動端DNS優化實踐:HTTPS請求耗時減少近半
Android程序員必知必會的網絡通訊傳輸層協議——UDP和TCP
IM開發者的零基礎通訊技術入門(一):通訊交換技術的百年發展史(上)
IM開發者的零基礎通訊技術入門(二):通訊交換技術的百年發展史(下)
IM開發者的零基礎通訊技術入門(三):國人通訊方式的百年變遷
IM開發者的零基礎通訊技術入門(四):手機的演進,史上最全移動終端發展史
IM開發者的零基礎通訊技術入門(五):1G到5G,30年移動通訊技術演進史
IM開發者的零基礎通訊技術入門(六):移動終端的接頭人——「基站」技術
IM開發者的零基礎通訊技術入門(七):移動終端的千里馬——「電磁波」
IM開發者的零基礎通訊技術入門(八):零基礎,史上最強「天線」原理掃盲
IM開發者的零基礎通訊技術入門(九):無線通訊網絡的中樞——「核心網」
IM開發者的零基礎通訊技術入門(十):零基礎,史上最強5G技術掃盲
IM開發者的零基礎通訊技術入門(十一):爲何WiFi信號差?一文即懂!
IM開發者的零基礎通訊技術入門(十二):上網卡頓?網絡掉線?一文即懂!
IM開發者的零基礎通訊技術入門(十三):爲何手機信號差?一文即懂!
IM開發者的零基礎通訊技術入門(十四):高鐵上無線上網有多難?一文即懂!
IM開發者的零基礎通訊技術入門(十五):理解定位技術,一篇就夠
百度APP移動端網絡深度優化實踐分享(一):DNS優化篇
百度APP移動端網絡深度優化實踐分享(二):網絡鏈接優化篇
百度APP移動端網絡深度優化實踐分享(三):移動端弱網優化篇
技術大牛陳碩的分享:由淺入深,網絡編程學習經驗乾貨總結
可能會搞砸你的面試:你知道一個TCP鏈接上能發起多少個HTTP請求嗎?
知乎技術分享:知乎千萬級併發的高性能長鏈接網關技術實踐
5G時代已經到來,TCP/IP老矣,尚能飯否?
>>  更多同類文章 ……

歡迎關注個人「即時通信技術圈」公衆號: 

(本文已同步發佈於:http://www.52im.net/thread-2976-1-1.html

相關文章
相關標籤/搜索