與我們所熟知的tcp(傳輸控制協議)協議一樣,udp協議直接位於ip(網際協議)協議的頂層。根據osi(開放系統互連)參考模型,udp和tcp都屬於傳輸層協議。
udp協議的主要作用是將網路資料流量壓縮成資料報的形式。乙個典型的資料報就是乙個二進位制資料的傳輸單位。每乙個資料報的前8個位元組用來包含報頭資訊,剩餘位元組則用來包含具體的傳輸資料。
udp報頭
udp報頭由4個域組成,其中每個域各占用2個位元組,具體如下:
源埠號
目標埠號
資料報長度
校驗值
udp協議使用埠號為不同的應用保留其各自的資料傳輸通道。udp和tcp協議正是採用這一機制實現對同一時刻內多項應用同時傳送和接收資料的支援。資料傳送一方(可以是客戶端或伺服器端)將udp資料報通過源埠傳送出去,而資料接收一方則通過目標埠接收資料。有的網路應用只能使用預先為其預留或註冊的靜態埠;而另外一些網路應用則可以使用未被註冊的動態埠。因為udp報頭使用兩個位元組存放埠號,所以埠號的有效範圍是從0到65535。一般來說,大於49151的埠號都代表動態埠。
資料報的長度是指包括報頭和資料部分在內的總的位元組數。因為報頭的長度是固定的,所以該域主要被用來計算可變長度的資料部分(又稱為資料負載)。資料報的最大長度根據操作環境的不同而各異。從理論上說,包含報頭在內的資料報的最大長度為65535位元組。不過,一些實際應用往往會限制資料報的大小,有時會降低到8192位元組。
udp協議使用報頭中的校驗值來保證資料的安全。校驗值首先在資料傳送方通過特殊的演算法計算得出,在傳遞到接收方之後,還需要再重新計算。如果某個資料報在傳輸過程中被第三方篡改或者由於線路噪音等原因受到損壞,傳送和接收方的校驗計算值將不會相符,由此udp協議可以檢測是否出錯。這與tcp協議是不同的,後者要求必須具有校驗值。
udp vs. tcp
udp和tcp協議的主要區別是兩者在如何實現資訊的可靠傳遞方面不同。tcp協議中包含了專門的傳遞保證機制,當資料接收方收到傳送方傳來的資訊時,會自動向傳送方發出確認訊息;傳送方只有在接收到該確認訊息之後才繼續傳送其它資訊,否則將一直等待直到收到確認資訊為止。
與tcp不同,udp協議並不提供資料傳送的保證機制。如果在從傳送方到接收方的傳遞過程中出現資料報的丟失,協議本身並不能做出任何檢測或提示。因此,通常人們把udp協議稱為不可靠的傳輸協議。
相對於tcp協議,udp協議的另外乙個不同之處在於如何接收突法性的多個資料報。不同於tcp,udp並不能確保資料的傳送和接收順序。例如,乙個位於客戶端的應用程式向伺服器發出了以下4個資料報
d1 d22
d333
d4444
但是udp有可能按照以下順序將所接收的資料提交到服務端的應用:
d333
d1 d4444
d22
事實上,udp協議的這種亂序性基本上很少出現,通常只會在網路非常擁擠的情況下才有可能發生。
udp協議的應用
既然udp是一種不可靠的網路協議,那麼還有什麼使用價值或必要呢?其實不然,在有些情況下udp協議可能會變得非常有用。因為udp具有tcp所望塵莫及的速度優勢。雖然tcp協議中植入了各種安全保障功能,但是在實際執行的過程中會占用大量的系統開銷,無疑使速度受到嚴重的影響。反觀udp由於排除了資訊可靠傳遞機制,將安全和排序等功能移交給上層應用來完成,極大降低了執行時間,使速度得到了保證。
UDP協議簡介
伺服器模式的網路應用都需要使用udp協議。udp協議從問世至今已經被使用了很多年,雖然其最初的光彩已經被一些類似協議所掩蓋,但是即使是在今天,udp仍然不失為一項非常實用和可行的網路傳輸層協議。與我們所熟知的tcp 傳輸控制協議 協議一樣,udp協議直接位於ip 網際協議 協議的頂層。根據osi 開...
UDP協議簡介
與我們所熟知的tcp 傳輸控制協議 協議一樣,udp協議直接位於ip 網際協議 協議的頂層。根據osi 開放系統互連 參考模型,udp和tcp都屬於傳輸層協議。udp協議的主要作用是將網路資料流量壓縮成資料報的形式。乙個典型的資料報就是乙個二進位制資料的傳輸單位。每乙個資料報的前8個位元組用來包含報...
UDP協議簡介
udp是乙個簡單的面向資料報的傳輸層協議,產生的資料報封裝成ip報之後經過網路層,資料鏈路層層層傳遞 udp是資料報不是流,所以不會像tcp那樣有分包的概念,不管資料報是怎麼樣的就直接傳送出去。所以才會產生ip分片,而tcp會進行流量控制,會分包組合,所以一般不會導致很多的ip分片產生 udp不提供...