UDP協議的含義和功能
UDP協議在IP協議的頂層,這個大家應該都清楚。那么網絡的復雜協議結構,構造了整個網絡的方方面面的功能。那么我們今天主要是介紹一下UDP協議的基礎內容。UDP協議是英文User Datagram Protocol的縮寫,即用戶數據報協議,主要用來支持那些需要在計算機之間傳輸數據的網絡應用。包括網絡視頻會議系統在內的眾多的客戶/服務器模式的網絡應用都需要使用UDP協議。UDP協議從問世至今已經被使用了很多年,雖然其最初的光彩已經被一些類似協議所掩蓋,但是即使是在今天,UDP仍然不失為一項非常實用和可行的網絡傳輸層協議。
UDP 是一種無連接的數據報協議,UDP 只是簡單地把數據發送到目的主機的端口中,不用通知目的方就可把數據傳達過去,也不再是雙方共同維持一個連接。
1. UDP協議簡介
與我們所熟知的 TCP(傳輸控制協議)協議一樣,UDP 協議直接位于 IP(網際協議)協議的頂層。根據OSI(開放系統互連)參考模型,UDP和TCP都屬于傳輸層協議。
UDP協議的主要作用是將網絡數據流量壓縮成數據報的形式。一個典型的數據報就是一個二進制數據的傳輸單位。每一個數據報的前8個字節用來包含報頭信息,剩余字節則用來包含具體的傳輸數據。 UDP報頭由4個域組成,其中每個域各占用2個字節,具體包括:源端口號、目標端口號、數據報長度、校驗值。
UDP協議使用端口號為不同的應用保留其各自的數據傳輸通道。UDP和TCP協議正是采用這一機制實現對同一時刻內多項應用同時發送和接收數據的支持。數據發送一方(可以是客戶端或服務器端)將 UDP數據報通過源端口發送出去,而數據接收一方則通過目標端口接收數據。有的網絡應用只能使用預先為其預留或注冊的靜態端口;而另外一些網絡應用則可以使用未被注冊的動態端口。因為 UDP 報頭使用兩個字節存放端口號,所以端口號的有效范圍是從0到65535。一般來說,大于49151的端口號都代表動態端口。 數據報的長度是指包括報頭和數據部分在內的總的字節數。因為報頭的長度是固定的,所以該域主要被用來計算可變長度的數據部分(又稱為數據負載)。數據報的***長度根據操作環境的不同而各異。從理論
上說,包含報頭在內的數據報的***長度為65535字節。不過,一些實際應用往往會限制數據報的大小,有時會降低到8192字節。
UDP協議使用報頭中的校驗值來保證數據的安全。校驗值首先在數據發送方通過特殊的算法計算得出,在傳遞到接收方之后,還需要再重新計算。如果某個數據報在傳輸過程中被第三方篡改或者由于線路噪音等原因受到損壞,發送和接收方的校驗計算值將不會相符,由此UDP協議可以檢測是否出錯。其實在UDP協議中校驗功能是可選的,如果將其關閉可以使系統的性能有所提升。這與TCP協議是不同的,后者要求必須具有校驗值。
2. UDP和TCP協議的區別
UDP和TCP協議的主要區別是兩者在如何實現信息的可靠傳遞方面不同。TCP協議中包含了專門的傳遞保證機制,當數據接收方收到發送方傳來的信息時,會自動向發送方發出確認消息;發送方只有在接收到該確認消息之后才繼續傳送其他信息,否則將一直等待直到收到確認信息為止。
與 TCP 不同,UDP 協議并不提供數據傳送的保證機制。如果在從發送方到接收方的傳遞過程中出現數據報的丟失,協議本身并不能做出任何檢測或提示,因此,通常人們把UDP協議稱為不可靠的傳輸協議。 相對于TCP協議,UDP協議的另外一個不同之處在于如何接收突發性的多個數據報。不同于TCP,UDP并不能確保數據的發送和接收順序。