UDP協議基礎概要
在UDP協議的使用中,我們常用不同的語言進行服務器和客戶端的建設。所以,掌握一種語言進行UDP協議的使用是必要的。所以,今天我們就來介紹一下,網絡編程方面的UDP協議。還是要我們看一下UDP協議基礎內容吧。
基于UDP協議的網絡編程
UDP協議是一種不可靠的網絡協議,它在通信實例的兩端各建立一個Socket,但這兩個Socket之間并沒有虛擬鏈路,這兩個Socket只是發送、接收數據報的對象,Java提供了DatagramSocket對象作為基于UDP協議的Socket,使用DatagramPacket代表DatagramSocket發送、接收的數據報。
UDP協議基礎
UDP協議是英文User Datagram Protocol的縮寫,即用戶數據報協議,主要用來支持那些需要在計算機之間傳輸數據的網絡連接。UDP協議從問世至今已經被使用了很多年,雖然其最初的光彩已經被一些類似協議所掩蓋,但是即使是在今天,UDP仍然不失為一項非常實用和可行的網絡傳輸層協議。尤其是在需要很強的實時交互性的場合,如網絡游戲、視頻會議等,UDP協議更是顯示出極強的威力。
UDP協議是一種面向非連接的協議,面向非連接指的是在正式通信前不必與對方先建立連接,不管對方狀態就直接發送。至于對方是否可以接收到這些數據內容,UDP協議無法控制,因此說UDP協議是一種不可靠的協議。
與前面介紹的TCP協議一樣,UDP協議直接位于IP協議之上。實際上,IP協議屬于OSI參考模型的網絡層協議,而UDP和TCP都屬于傳輸層協議。
UDP適用于一次只傳送少量數據、對可靠性要求不高的應用環境。因為UDP協議是面向非連接的協議,沒有建立連接的過程,因此它的通信效率高;但也正因為如此,它的可靠性不如TCP協議高。
UDP協議的主要作用是完成網絡數據流量和數據報之間的轉換:在信息的發送端,UDP協議將網絡數據流量封裝數據報,然后將數據報發送出去;在信息的接收端,UDP協議將數據報轉換成實際數據內容。
實際上,我們可以認為基于UDP協議的Socket類似于一個碼頭,該碼頭的作用就是負責發送、接收集裝箱,一個數據報類似于一個集裝箱。因此對于基于UDP協議的通信雙方而言,沒有所謂的客戶端和服務器端的概念。Java中的DatagramSocket的作用類似于碼頭,而DatagramPacket的作用類似于集裝箱。
在介紹UDP協議基礎內容方面,我們需要對UDP和TCP進行一下簡單的對比:
TCP協議:可靠,傳輸大小無限制,但是需要連接建立時間,差錯控制開銷大。
UDP協議:不可靠,差錯控制開銷較小,傳輸大小限制在64K以下,不需要建立連接。