詳解 TCP 和 UDP 及其區別

2022-07-24 05:51:09 字數 2703 閱讀 9201

本文**:

網路協議是每個前端工程師必須掌握的知識,tcp/ip 中有兩個具有代表性的傳輸協議,分別是 tcp 和 udp 本文介紹這兩者以及他們之間的區別。

計算機與網路裝置要相互通訊,雙方就必須基於相同的方法。比如,如何探測到通訊目標、由哪一方先發起通訊、使用那種語言進行通訊、怎樣結束通訊等規則都需要事先確定。不同的硬體、作業系統之間的通訊,所有的這一切都需要一種規則。而我們就把這種規則稱為協議(protocol)。

tcp/ip 模型是網際網路的基礎,它是一系列網路協議的總稱。這些協議可以劃分為四層,分別是鏈路層、網路層、傳輸層和應用層。

在網路體系結構中,網路通訊的建立必須是在通訊雙方的對等層進行,不能交錯。在整個資料傳輸過程中,資料在傳送端時經過各層時都要附加上相應層的協議頭和協議尾(僅資料鏈路層需要封裝協議尾)部分,也就是要對資料進行協議封裝,以標識對應層所用的通訊協議。接下去介紹 tcp/ip 中兩個最具有代表性的傳輸層協議——tcp 和 udp。

udp 協議全稱是使用者資料報協議,在網路中它與 tcp 協議一樣用於處理資料報,是一種無連線的協議。在 osi 模型中,在第四層——傳輸層,處於 ip 協議的上一層。udp 有不提供資料報分組、組裝和不能對資料報進行排序的缺點,也就是說,當報文傳送之後,是無法得知其是否是安全完整到達的。

它有以下幾個特點:

1. 面向無連線

首先,udp 是不需要和 tcp 一樣在傳送資料之前進行三次握手建立連線的,想傳送資料就可以傳送,並且也只是資料報文的搬運工,不會對資料報文進行任何拆分和拼接操作。

具體來說就是:

2. 有單播、多播、廣播的功能

udp 不止支援一對一的傳輸方式,同樣支援一對多、多對多、多對一的方式,也就是說 udp 提供了單播、多播、廣播的功能。

3. udp 是面向報文的

傳送方的 udp 對應用程式交下來的報文,在新增首部後就向下交付 ip 層。udp 對應用程式交下來的報文,既不合併,也不拆分,而是保留這些報文的邊界。因此,應用程式必須選擇合適大小的報文。

4. 不可靠性

首先,不可靠性體現在無連線上,通訊都不需要建立連線,想發就發,這樣的情況肯定不可靠。

並且收到什麼資料就傳遞什麼資料,同時也不會備份資料,傳送資料也不會關心對方是否已經正確收到資料了。

再者網路環境時好時壞,但是 udp 因為沒有擁塞控制,一直會以恆定的速度傳送資料。即使網路條件不好,也不會對傳送速率進行調整。這樣實現的弊端就是在網路條件不好的情況下可能會導致丟包,但是優點也很明顯,在某些實時性要求很高的場景(比如,**會議)就需要使用 udp 而不是 tcp。

從上面的動態圖可以得知,udp 只會把想發的資料報文一股腦的丟給對方,並不在意資料有無安全完整到達。

5. 頭部開銷小,傳輸資料報文時是很高效的

udp 頭部包含了一下幾個資料:

因此,udp 的頭部開銷小,只有 8 位元組,相比於 tcp 的至少 20 位元組 要少的多,在傳輸資料報文的時候是很高效的。

tcp 的全稱是傳輸控制協議,他是一種面向連線的、可靠的、基於位元組流的傳輸層通訊協議,由 ietf 的 rfc793 定義。tcp 是面向連線的、可靠的流協議。流就是指不間斷的資料結構,你可以把它想象成排水管中的水流。

1. tcp 的連線過程

如下圖所示,可以看到建立乙個 tcp 連線的過程為(三次握手的過程):

2. tcp 斷開連線

tcp 是全雙工的,在斷開連線時兩端都需要傳送 fin 和 ack。

3. tcp 協議的特點

僅支援單播傳輸

面向位元組流

可靠傳輸

提供擁塞控制

tcp 提供全雙工通訊

1. 對比

udptcp

是否連線

無連線面向連線

是否可靠

不可靠傳輸,不適用流量控制和擁塞控制

可靠傳輸,使用流量控制和擁塞控制

連線物件個數

支援一對

一、一對多、多對一和多對多互動通訊

只能是一對一通訊

傳輸方式

面向報文

面向位元組流

首部開銷

首部開銷小

首部最小 20 位元組,最大 60 位元組

適用場景

適用於要求可靠傳輸的應用,例如檔案傳輸

2. 總結

TCP和UDP的區別

tcp transimission control protocol 傳輸控制協議 和udp user datagram protocol 是傳輸層的兩種實現版本!它們之間提供基本的服務又各有所長。因此,根據對特定服務質量的要求,應用層軟體單元可以選擇通過傳輸層的tcp版本或者udp版本來傳輸資料。...

TCP和UDP的區別

tcp和udp都是傳輸層的協議,他們的區別主要如下 1 tcp,全名 傳輸控制協議 是面向連線的,也就是說在傳送方和接收方在傳送資料之前,必須通過三次握手建立連線,相當於現實生活中的打 功能,必須先撥號,接通後才能說話,udp,全名 使用者資料報協議 是無連線的,其中一方向向另一方傳送資料時不需要建...

TCP和UDP的區別

tcp transmission control protocol,傳輸控制協議 是基於連線的協議,也就是說,在正式收發資料前,必須和對方建立可靠的連線。乙個tcp連線必須要經過三次 對話 才能建立起來,其中的過程非常複雜,我們這裡只做簡單 形象的介紹,你只要做到能夠理解這個過程即可。我們來看看這三...