UDP協議的應用
前面的文章中,我們已經對UDP協議的一些基礎內容進行了講解,其中,我們也介紹了它與TCP的區別。在這里我們簡要回顧一下。另外我們舉出了一個例子,并且對UDP協議的應用也進行了介紹。
1. UDP和TCP協議的區別
UDP和TCP協議的主要區別是兩者在如何實現信息的可靠傳遞方面不同。TCP協議中包含了專門的傳遞保證機制,當數據接收方收到發送方傳來的信息時,會自動向發送方發出確認消息;發送方只有在接收到該確認消息之后才繼續傳送其他信息,否則將一直等待直到收到確認信息為止。
與 TCP 不同,UDP 協議并不提供數據傳送的保證機制。如果在從發送方到接收方的傳遞過程中出現數據報的丟失,協議本身并不能做出任何檢測或提示,因此,通常人們把UDP協議稱為不可靠的傳輸協議。 相對于TCP協議,UDP協議的另外一個不同之處在于如何接收突發性的多個數據報。不同于TCP,UDP并不能確保數據的發送和接收順序。
例如,一個位于客戶端的應用程序向服務器發出了以下4個數據報:
D1 D22 D333 D4444
但是UDP有可能按照以下順序將所接收的數據提交到服務端的應用:
D333 D1 D4444 D22
事實上,UDP協議的這種亂序性基本上很少出現,通常只會在網絡非常擁擠的情況下才有可能發生。
2. UDP協議的應用
也許有的讀者會問,既然UDP是一種不可靠的網絡協議,那么還有什么使用價值或必要呢?其實不然,在有些情況下UDP協議可能會變得非常有用。因為UDP具有TCP所望塵莫及的速度優勢。雖然TCP協議中植入了各種安全保障功能,但是在實際執行的過程中會占用大量的系統資源,無疑使速度受到嚴重的影響。反觀 UDP 由于排除了信息可靠傳遞機制,將安全和排序等功能移交給上層應用來完成,極大降低了執行時間,使速度得到了保證。
UDP與TCP位于同一層,但不能夠檢測數據包的順序錯誤并進行重發。因此,UDP不被應用于那些使用虛電路的面向連接的服務,UDP主要用于那些面向查詢——應答的服務,例如NFS。相對于FTP或Telnet,這些服務需要交換的信息量較小。使用UDP的服務包括NTP(網落時間協議)和DNS(DNS也使用TCP)。
關于UDP協議的最早規范是RFC768,1980年發布。盡管時間已經很長,但是UDP協議仍然繼續在主流應用中發揮著作用。包括視頻電話會議系統在內的許多應用都證明了 UDP 協議的存在價值。因為相對于可靠性來說,這些應用更加注重實際性能,所以為了獲得更好的使用效果(例如,更高的畫面幀刷新速率)往往可以犧牲一定的可靠性(例如畫面質量)。這就是UDP和TCP兩種協議的權衡之處。根據不同的環境和特點,兩種傳輸協議都將在今后的網絡世界中發揮更加重要的作用。
在網絡安全方面,欺騙UDP包比欺騙TCP包更容易,因為UDP沒有建立初始化連接(也可以稱為三次握手,因為在兩個系統間沒有虛電路),也就是說,與UDP相關的服務面臨著更大的危險。