趣談網絡協議(十):UDP協議

今天要講的就是OSI模型中的第四層:傳輸層.緩存

傳輸層中主要有兩種協議:TCP協議、UDP協議,那他們的區別又是啥呢?網絡

TCP與UDP的區別

TCP是面向鏈接的,它須要先通過三次握手.而UDP是面向非鏈接,它直接發送出去而不須要接收任何反饋數據結構

什麼是鏈接呢,就是在互相以前,面向鏈接的協議會先建議起鏈接。例如TCP會三次握手.而UDP不會spa

所謂的創建鏈接,是爲了在客戶端和服務端維護鏈接,而創建必定得數據結構來維護雙方的交互的狀態,用這樣的數據結構來保證所謂的面向鏈接的特性blog

TCP既然面向鏈接,他是提供可靠交付的,他必須得保證傳輸是否已到達(若是未到達就從新發送),並且得保證數據的完整性.若是其中一段數據未到達,其餘接收到的數據都會緩存起來,直到全部段接收完畢組成一個完整的數據.他是無差錯、不丟失、不重複、而且是按序到達。咱們都知道IP包在網絡中是隨時都會憑空消失,可是TCP號稱能作到那個鏈接維護的程序作的事情繼承

而UDP繼承了IP包的特性,不保證報丟失,不保證按順序到達屬於無腦式發送,他不須要反饋結果(管你的收到沒收到,反正我發出去了.也不會重複去發)class

再如,TCP是面向字節流的、發送的時候發的是一個流,沒頭沒尾。IP包可不是一個流,而是一個個的IP包。之因此變成了流,這也是TCP本身的狀態維護作的事情。而UDO繼承了IP的特性,基於數據包的,一個一個得發,一個一個地收程序

還有TCP是能夠有擁塞控制的。他意識到包丟失或者網絡環境很差,就會調整本身的頻率。UDP仍是那句話,無腦式的叫我發我就發,管他三七二十一im

於是TCP實際上是一個有狀態服務,也就是有腦子的,裏面精確記着發送了沒有,接收到沒有,發送到哪一個了,應該手手哪一個了,錯一點兒都不行。UDP沒腦子這個不用講了數據

咱們能夠這樣比喻。若是MAC層定義了本地局域網的創術行爲,IP層定義了整個網絡端到端的創術行爲,這兩層基本定義了這樣的基因:網絡傳輸是以包爲單位的,二層叫幀,網絡層叫包,傳輸層叫段。咱們籠統的成爲包。包單獨傳輸,自行選路,在不一樣的設備封裝解封裝,不保證達到。基於這個基因,UDP很好的傳承下去,幾乎沒有本身的思想(無腦)

UDP包頭

咱們都知道每一個程序在系統中都有惟一的端口,這樣傳輸層才知道把包發給哪一個應用程序

UDP的三大特色

1.溝通簡單。相信網絡通路默認都是很容易送達的,不容易被丟棄

2.輕信他人。他不會創建鏈接,雖有端口號,但誰均可以發給他

3.愣頭青,作事不懂權變。不會看時勢,改發就發,無論前面是否丟失了多少包

相關文章
相關標籤/搜索