哈羅,你們好,我是Jack Jiang。。。(一股濃濃的自媒體視頻旁白味道)。php
對於常常看我文章的即時通信開發者來講,今天要討論的這個話題,貌似有點不着邊際。html
是的,自從我整理完《IM開發者的零基礎通訊技術入門》系列文章以後,對於網絡編程的理解,開始有點飄了。程序員
言歸正傳。如今,5G技術離咱們的生活愈來愈近了,號稱網絡延遲1ms、下行速度10Gb/s的5G,在這樣逆天的網絡性能指標下,老驥伏櫪的TCP/IP是否仍能Hold的住?帶着這個思考,便有了本文的內容。編程
本文已同時發佈於個人「即時通信技術圈」公衆號。安全
對於即時通信技術的開發者,從技術棧來講,一條最普通的聊天消息的送達,確定要涉及到網絡編程技術,而網絡編程最核心的也就是TCP/IP協議(準確的說是TCP/IP協議簇,見《TCP/IP詳解》),毫無疑問深刻的學習TCP/IP協議確定是很是有必要了。網絡
基本上,對於普通的IM或消息推送系統開發來講,對TCP/IP相關的計算機網絡基礎比較熟悉的話,徹底夠用了。數據結構
▲ 這本書不少人都讀過tcp
親手寫過即時通信的網絡通訊層的同窗都很清楚,在移動網絡中(我說的移動網絡具體指的是運營商的2g/3g/4g/5g這些),由於無線通訊的介質和技術實現特殊性,出現了不少傳統有線互聯網未曾有過的網絡通訊問題。分佈式
就拿IM在移動弱網中出現的各類問題來講,多數開發者都不自信的認爲這應該是自已的網絡層代碼寫的不夠優秀,是的,不少時候也確實是這樣。性能
其實,不多有人會去思考,在TCP/IP協議被髮明出來的50年後,對於現代的移動網絡來講,是否仍然能工做的好?以弱網問題爲例,難道我寫的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協議的產生過程。
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自上世紀70年代發明以來,鏈接了無數的計算機,推進了互聯網的蓬勃發展。
但不可迴避的現實是,基於TCP/IP的互聯網,它的初衷是爲固定網絡和網絡互連而設計,而今天咱們已經發展到了移動互聯時代。
再日後看,將來5G將面臨AR/VR、超高清視頻、物聯網、車聯網等各類應用、用例紛呈,加之網絡安全的緊迫性愈加凸顯,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快車,是否是很瘋狂?
基於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臃腫、冗餘(是的,這裏我收集了一大堆這樣的文章),這算個是把優勢作成缺點的典型案例了。
或許,將來會有那麼一天,移動網絡終有屬於爲自已定製的網絡協議標準。而對於搞網絡通訊的程序員來講,若是這套新的標準讓能基於移動網絡的代碼編寫,變的愉快起來,那真是謝天謝地了!(本文已同步發佈於:http://www.52im.net/thread-2976-1-1.html)
[1] TCP/IP 已完 ?New IP 以後,又來一個 Non-IP
[2] 5G:再見,TCP/IP
[4] 5G要拋棄TCP/IP?
[5] ETSI LAUNCHES NEW GROUP ON NON-IP NETWORKING ADDRESSING 5G NEW SERVICES
[6] 零基礎,史上最強5G技術掃盲
[7] 爲何WiFi信號差?一文即懂!
[8] 上網卡頓?網絡掉線?一文即懂!
[9] IM開發者的零基礎通訊技術入門(十三):爲何手機信號差?一文即懂!
[10] 高鐵上無線上網有多難?一文即懂!