對UDP的認識

2021-10-07 00:09:54 字數 1370 閱讀 4945

網路協議是每個前端工程師都必須要掌握的知識,我們將先來學習傳輸層中的兩個協議:udp 以及 tcp。對於大部分工程師來說最常用的協議也就是這兩個了,並且面試中經常會提問的也是關於這兩個協議的區別。

常考面試題:udp 與 tcp 的區別是什麼?

首先 udp 協議是面向無連線的,也就是說不需要在正式傳遞資料之前先連線起雙方。然後 udp 協議只是資料報文的搬運工,不保證有序且不丟失的傳遞到對端,並且udp 協議也沒有任何控制流量的演算法,總的來說 udp 相較於 tcp 更加的輕便。

首先 udp 是不需要和 tcp 一樣在傳送資料前進行三次握手建立連線的,想發資料就可以開始傳送了。

並且也只是資料報文的搬運工,不會對資料報文進行任何拆分和拼接操作。

首先不可靠性體現在無連線上,通訊都不需要建立連線,想發就發,這樣的情況肯定不可靠。

並且收到什麼資料就傳遞什麼資料,並且也不會備份資料,傳送資料也不會關心對方是否已經正確接收到資料了。

再者網路環境時好時壞,但是 udp 因為沒有擁塞控制,一直會以恆定的速度傳送資料。即使網路條件不好,也不會對傳送速率進行調整。這樣實現的弊端就是在網路條件不好的情況下可能會導致丟包,但是優點也很明顯,在某些實時性要求高的場景(比如**會議)就需要使用 udp 而不是 tcp。

雖然 udp 協議不是那麼的可靠,但是正是因為它不是那麼的可靠,所以也就沒有 tcp 那麼複雜了,需要保證資料不丟失且有序到達。

因此 udp 的頭部開銷小,只有八字節,相比 tcp 的至少二十位元組要少得多,在傳輸資料報文時是很高效的。

udp 不止支援一對一的傳輸方式,同樣支援一對多,多對多,多對一的方式,也就是說 udp 提供了單播,多播,廣播的功能。

udp 雖然對比 tcp 有很多缺點,但是正是因為這些缺點造就了它高效的特性,在很多實時性要求高的地方都可以看到 udp 的身影。

直播

想必大家都看過直播吧,大家可以考慮下如果直播使用了基於 tcp 的協議會發生什麼事情?

但是對於直播來說,使用者肯定關注的是最新的畫面,而不是因為網路條件差而丟失的老舊畫面,所以 tcp 在這種情況下無用武之地,只會降低使用者體驗。

王者榮耀

雖然我具體不知道王者榮耀底層使用了什麼協議,但是對於這類實時性要求很高的遊戲來說,udp 是跑不了的。

為什麼這樣說呢?首先對於王者榮耀來說,使用者體量是相當大的,如果使用 tcp 連線的話,就可能會出現伺服器不夠用的情況,因為每台伺服器可供支撐的 tcp 連線數量是有限制的。

再者,因為 tcp 會嚴格控制傳輸的正確性,如果因為使用者網路條件不好就造成頁面卡頓然後再傳輸舊的遊戲畫面是肯定不能接受的,畢竟對於這類實時性要求很高的遊戲來說,最新的遊戲畫面才是最需要的,而不是老舊的畫面,否則角色都不知道死多少次了。

對「認識」的認識

很早就想談談關於 認識 的認識。這是乙個巨集大深刻的哲學問題。只是覺得沒有完全思考清楚,還以為觀點有些偏頗,擔心自己沒能力系統論述,就遲遲沒有動筆。但想到談論的問題本身就是乙個偏頗的問題,而且,我始終覺得,問題儘管偏頗,但卻不無道理。所以,提筆寫下這篇文字。正像思想的本質是不安一樣,認識的本質是片面...

對軟體的認識

1.軟體的定義 我們都知道軟體作為資訊化的核心,在個人學習 生活 娛樂,社會管理,國家經濟軍事的發展中都起到了至關重要的推動作用。他的發展速度及帶來的巨變都令人驚呼。那麼這種高投入 高產出 低能耗 無汙染的 軟體 到底是什麼呢?在大多數人的普遍認識中軟體或許就是程式設計人員通過 來實現電腦中的乙個可...

對網路的認識

一 網路有哪些構成要素 構建網路所需的硬體一般包括交換機 路由器等網路硬體,以及個人計算機 伺服器等計算機硬體,這些贏家統稱為節點,節點之間可以通過鏈路連線 二 客戶端伺服器型與點對點型 根據主機和客戶端承擔角色不同,可將網路分為客戶端伺服器型和點對點型 三 osi參考模型 各層 簡稱 正式名稱 說...