TCP和UDP區別

TCP和UDP區別

  1. TCP面向連接(TCP三次握手),UDP是無連接的,即發送數據之前不需要建立連接。
  2. 每一條TCP連接只能是點到點的;UDP支持一對一,一對多,多對一和多對多的交互通信。
  3. TCP面向位元組流,實際上是TCP把數據看成一連串無結構的位元組流;UDP是面向報文的。
  4. TCP有序,UDP無序;消息在傳輸過程中可能會亂序,後發送的消息可能會先到達,TCP會對其進行重排序,UDP不會。
  5. TCP有流量控制(擁塞控制),UDP沒有。流量控制:TCP利用滑動窗口機制在TCP連接上實現對發送方的流量控制, 如果發送方把數據發送得過快,接收方可能會來不及接收,這就會造成數據的丟失。所謂流量控制就是讓發送方的發送速率不要太快,要讓接收方來得及接收。擁塞控制:防止過多的數據注入到網絡中,這樣可以使網絡中的路由器或鏈路不致過載。擁塞控制所要做的都有一個前提:網絡能夠承受現有的網絡負荷。擁塞控制是一個全局性的過程,涉及到所有的主機、路由器,以及與降低網絡傳輸性能有關的所有因素。當出現網絡抖動時,TCP會自覺降低發送速度,他會努力維護次序,但UDP依然保持速度不變。TCP提供可靠的服務。也就是說,通過TCP連接傳送的數據,無差錯,不丟失,不重複,且按序到達;UDP盡最大努力交付,即不保證可靠交付
  6. TCP傳輸速率慢,由於傳輸要進行三次握手,以及會進行擁塞控制等。
  7. TCP應用場景:效率要求相對低,但對準確性要求相對高的場景。因為傳輸中需要對數據確認、重發、排序等操作,相比之下效率沒有UDP高。舉幾個例子:文件傳輸(準確高要求高、但是速度可以相對慢)、接受郵件、遠程登錄。UDP應用場景:效率要求相對高,對準確性要求相對低的場景。舉幾個例子:QQ聊天、在線視頻、網絡語音電話(即時通訊,速度要求高,但是出現偶爾斷續不是太大問題,並且此處完全不可以使用重發機制)、廣播通信(廣播、多播)。

 

TCP

UDP

連接

面向連接

無連接

連接方式

點到點

支持一對一,一對多,多對一和多對多

模式

流模式(TCP)

數據報模式(UDP)

頭部大小

20位元組

8位元組

有序性

有序

無序

傳輸速率控制

流量控制(擁塞控制)

可靠性

可靠

不可靠

傳輸速率

佔用系統資源

應用場景

效率要求相對低,但對準確性要求相對高的場景。

效率要求相對高,對準確性要求相對低的場景

 

TCP位元組流和UDP數據報區別

兩者的區別在於TCP接收的是一堆數據,而每次取多少由主機決定;而UDP發的是數據報,客戶發送多少就接收多少。擁有這些區別的原因是由於TCP和UDP的特性不同而決定的。TCP是面向連接的,也就是說,在連接持續的過程中,socket中收到的數據都是由同一台主機發出的,因此,知道保證數據是有序的到達就行了,至於每次讀取多少數據自己看着辦。 而UDP是無連接的協議,也就是說,只要知道接收端的IP和端口,且網絡是可達的,任何主機都可以向接收端發送數據。這時候,如果一次能讀取超過一個報文的數據,則會亂套。比如,主機A向發送了報文P1,主機B發送了報文P2,如果能夠讀取超過一個報文的數據,那麼就會將P1和P2的數據合併在了一起,這樣的數據是沒有意義的。