UDP協議的面向鏈接問題
UDP協議的優點有很多,在TCP協議方面我們也做過比較。大家也都清楚,它的快速是TCP無法比擬的?,F在我們就來簡單介紹一下UDP協議的情況。走進UDP協議: UDP(User Datagram Protocol)協議就是“用戶數據報協議",它是一種無連接的協議,無連接主要是和TCP協議相比較的。
我們知道當利用TCP協議傳送數據的時候,首先必須先建立連接(也就是所謂的握手)才可以傳輸數據。而當計算機利用UDP協議進行數據傳輸的時候,發送方只需要知道對方的IP地址和端口號就可以發送數據,而并不需要進行連接。
當然如果你非要進行連接,通過Visual C#也是可以實現的,但前提是要確定連接的遠程主機的端口號處于監聽狀態,否則程序會出現不必要的錯誤,但這是種畫蛇添足的做法,不僅丟失了UDP協議的無連接傳送數據的特點和優點,而且還給程序運行帶來了不安定的因素。所以這種方法并不值得提倡。
由于UDP協議并不需要進行確定的連接,所以編寫基于UDP協議的應用程序比起編寫基于TCP協議的應用程序要簡單些(程序中可以不需要考慮連接和一些異常的捕獲工作)。但同時也給基于UDP協議編寫的程序帶來了一個致命的缺點,UDP由于不提供可靠數據的傳輸,當計算機之間利用UDP協議傳送數據的時候,發送方只管發送數據,而并不確認數據是否被對方接收。這樣就會導致某些UDP協議數據包在傳送的過程中丟失,尤其網絡質量不令人滿意的情況下,丟失數據包的現象會更嚴重。這就是為什么在網絡上傳輸重要數據不采用UDP協議的原因。
但是我們也不能因為這一個缺點就全面否定UDP協議,這是因為雖然利用UDP協議來傳送安全性要求高的數據是不適合的,但對于那些不重要的數據,或者即使丟失若干數據包也不影響整體性的數據,如音頻數據,視頻數據等,采用UDP協議就是一個非常不錯的選擇。
如目前網絡流行的很多即時聊天程序,如OICQ和ICQ等,采用的就是UDP協議。同時雖然UDP協議無法保證數據可靠性,但具有對網絡資源開銷較小,數據處理速度快的優點,所以在有些對數據安全性要求不是很高的情況下,采用UDP協議也是一個非常不錯的選擇。
總結一下上面的內容,可見UDP是一種不面向連接的網絡協議,既有其優點,也有其不足,具體如下:
1.基于UDP協議的網絡應用程序,實現起來比較簡單,并且基于UDP協議的網絡應用程序在運行時,由于受到環境影響較小,所以不容易出錯。
2.UDP協議占用網絡資源較少,數據處理較快,所以在網絡中傳送對安全性要求不是十分高數據時,其優點比較明顯。所謂對安全性要求不高的數據,是指那些不重要的數據,或者是即使丟失若干數據,也不影響其整體的數據,如音頻數據等。目前很多流行的網絡應用程序都是基于UDP協議的,如OICQ、ICQ等。
3.由于其不是面向連接的網絡協議,其缺點也是非常明顯的,有些時候甚至是致命的。因為使用UDP協議來傳送數據,在數據發送后,在發送方并不確認對方是否接收到。這樣就可能導致傳送的數據在網絡中丟失,尤其在網絡條件并不很好的情況下,丟失數據包的現象就更多。所以傳送重要數據一般不采用UDP協議。