咱們都知道TCP和UDP做爲傳輸協議,被普遍應用於網絡通訊。這些基礎的網絡知識也是須要了解,既然兩種傳輸協議均可以用於通訊,那它們二者又有何區別。本文將如下面5個點進行對比:html
在比較這二者的區別以前,有必要了解下TCP/IP模型,這有利於咱們理解下面的內容。緩存
網絡模型並不是一開始就有的,在網絡發展初期,網絡協議都是互聯網公司本身定義的。因爲各家公司的網絡協議不一樣,沒有統一標準的網絡協議來規定,各個公司的協議都不能互通。這對於網絡發展很不利,爲了解決這個問題,國際標準化組織 1984 提出的模型標準,簡稱 OSI(Open Systems Interconnection Model),這是一個標準,並不是實現。TCP/IP 協議就是基於此模型設計。安全
TCP/IP模型是一個四層模型,自底而上分別是網絡接口層、網絡層、傳輸層和應用層網絡
UDP是一種無鏈接的傳輸層協議,由於在使用UDP發送報文段時,發送端和接收端的傳輸層實體之間沒有進行握手。所謂的握手,就是發送端和接收端經過發送一些特定的報文段來互相確認,從而爲發送作準備。因爲UDP能夠不用任何準備便可進行數據數據傳輸,所以UDP的數據傳輸速度會比TCP快。 ide
TCP是一種面向鏈接的傳輸層協議,網絡系統須要在兩臺計算機之間發送數據以前先創建鏈接。相似於咱們打電話同樣,通訊以前須要呼叫和應答。其過程分爲創建鏈接(三次握手)、使用鏈接(數據傳輸)、釋放鏈接(四次揮手)三個過程。因爲這些機制,TCP數據傳輸會比UDP可靠,即確保雙方都互通後再發送數據,保證數據包可以完整的發送過去。 spa
UDP是無鏈接的傳輸協議,不須要維護鏈接狀態,包括收發狀態,能夠實現一對一,一對多,多對一和多對多的交互通訊。 設計
TCP是面向鏈接的傳輸協議,發送數據須要雙方創建鏈接,屬於端到端的通訊,實現的是一對一的交互通訊。 3d
UDP是面向報文的。發送端的傳輸層對應用層交下來的報文,在添加報頭後就向下交付給IP層。既不拆分,也不合並,而是保留這些報文的邊界。接收端傳輸層接收到報文會去掉報頭,將數據部分交給應用層。 指針
TCP是面向字節流的。發送端的應用層將數據字節流交付到傳輸層的緩存區,根據發送策略對字節流分片,添加報頭髮送TCP報文。接收端傳輸層收到報文後,去掉報頭存儲到接收緩存。接收緩存將字節流片斷交給應用層,應用層再將字節流片斷重組還原爲可用的數據。 視頻
UDP提供無鏈接的不可靠服務。在發送端到接收端的傳遞過程當中出現數據包丟失或接收誤碼的狀況,協議自己並不能作出任何檢測或提示。UDP只是儘量快地把數據扔到網絡上,並不保證數據包的完整性。所以UDP沒有可靠性保證、順序保證和流量控制字段。
TCP提供面向鏈接的可靠服務。在發送端到接收端的傳遞過程當中出現數據包丟失或接收誤碼的狀況,接收端在定時器超時後沒有收到相應的確認,發送端會從新發送數據包。TCP鏈接每一方的接收緩衝空間大小都固定,接收端只容許另外一端發送接收端緩衝區所能接納的數據,TCP在此基礎上提供流量控制,防止較快主機導致較慢主機的緩衝區溢出。
UDP傳輸的段有8個字節的報頭和有效載荷字段構成。UDP報頭由4個域組成,其中每一個域各佔用2個字節,具體包括源端口號、目標端口號、數據報長度、校驗和。
TCP傳輸的段有最小20字節的報頭和有效載荷字段構成。TCP具體組成包括端口號、序號、確認號、保留域、標誌域、窗口、校驗和、緊急指針構成,另外可擴展首部包括選項和填充。
經常使用於實時應用。例如視頻直播、IP電話,QQ語音和QQ視頻就是使用UDP的協議。
經常使用於對可靠性要求高的通訊。例如文件傳輸。
原文出處:https://www.cnblogs.com/chanwahfung/p/12273717.html