UDP和TCP的比較

當客戶端需要請求數據庫服務器上的某些數據時,它至少需要三個數據報來建立TCP連接,三個數據報禮發送和確認少量數據,三個用來關閉連接。然而,如果使用UDP的話,僅僅需要發出兩個數據報就能達到相同的效果。UDP不需要客戶端建立和關閉與服務器的連接。客戶端只是將數據放到數據報中併發給服務器。服務器構造出應答,並將應答數據放到去往客戶端的數據報中,然後再發送給客戶端。儘管對於簡單實事務來說,這種數據傳輸方式與TCP相比,既快又有效,但UDP不能處理數據報丟失。UDP允許應用於遠程計算機特定端口上的服務聯繫,但它不與遠程計算機建立連接。

UDP是TCP的一個替代品,有時候將它和IP一起稱爲UDP/IP。和TCP一樣,UDP也使用IP來在計算機間進行真正的數據報傳輸。然而,UDP不提供將信息分割成分組,並在接收終端將其重組的功能。

UDP和TCP間最根本的差別在於它們實現數據傳輸的方法不同。TCP支持有保證的傳輸,因爲收到一個報文後,接收端會自動地做出確認。另外,如果接收端沒有在規定的時間內做出迴應,那麼發送端將一直等待並重傳數據。TCP所具備的這種可靠性在執行過程中可能開銷太大。而UDP卻並不實現有保證的報文傳輸,在傳輸過程中UDP數據報可能丟失,並且協議不能檢測或報告這個錯誤。然而UDP並不妨礙可靠的報文傳輸,只不過是把這個任務交給TCP/IP參考模型中的更高層來完成而已。

在分組開銷這個關鍵的方面,UDP比TCP有優勢。由於TCP是一個可靠的協議,它必須確保數據完好無損地到達目的地,這樣就在網絡上交換了相對很多的分組。而UDP沒有這個開銷,所以速度比TCP快很多。UDP在傳輸之前不需要建立連接的這一特性,進一步減少了與報文傳輸有關的開銷。

TCP在開始數據傳輸之前,需要完成三方握手過程。而UDP在開始傳輸數據前不需要任何正式的準備。TCP將與連接有關的計算機保持爲連接狀態。這個連接狀態包括了滑動窗口和接收端計算機的緩衝區大小、擁塞控制參數、序號和確認號等參數。而UDP不需要維持這樣的連接狀態,也不需要跟蹤任何參數。某個特定應用專用的服務器所支持的許多客戶端,使用UDP時要比使用TCP時活躍得多。例如,使用UDP的SNMP管理系統可以支持多個SNMP代理。

TCP段中報頭的大小爲20字節,而UDP則只有8字節。TCP有一個擁塞控制機制,用來在發送和接收端之間的一個或者多個鏈路出現過度擁塞時,減少來自發送端的數據傳輸量。這個過程對實時應用來說可能有着不利的影響,因爲它們可以容忍分組丟失,但卻需要一個下限發送速率。另一方面,UDP發送數據的速度受應用生成數據的速率、處理能力、源計算機時鐘速率和連接帶寬等因素的限制,而且接收主機不一定能接收到所有的數據。當網絡發生擁塞時,使用UDP傳輸的數據可能由於路由器的緩衝區塞滿大量數據報而出現部分丟失的情況。對於UDP來說,即使發送速率沒受限制,接收速率也會受網絡擁塞的限制。

TCP支持的應用協議主要有:HTTP(超文本傳輸協議)、Telnet(遠程登錄)、FTP(文件傳輸協議)、SMTP(簡單郵件傳輸協議)等;UDP支持的應用層協議主要有:NFS(網絡文件系統)、SNMP(簡單網絡管理協議)、DNS(主域名稱系統)、TFTP(通用文件傳輸協議)、NTP(網絡時間協議)等。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章