圖文分析詳解計算機網絡TCP與UDP兩者區別及原理

1、概念

UDP和TCP 在使用TCP/IP 體系結構的網絡通信中,這兩個協議的使用頻率僅次於網際層的IP協議。TCP/IP 體系結構應用層中的某些協議需要使用運輸層的TCP 提供的服務,而另一些協議需要使用運輸層的UDP 提供的服務,UDP 是用戶數據報協議的英文縮寫詞,TCP 是傳輸控制協議的英文縮寫詞。

 

2、從是否面向連接來看

如下圖所示,兩個小電腦圖標代表英特網上的兩臺主機,縱坐標為時間。

 

2.1、UDP

兩臺主機如果在運輸層使用UDP協議進行通信,雙方可以隨時發送數據,因此UDP是無連接的。

2.2、TCP

再來看使用TCP 協議的情況,使用TCP協議的通信,雙方在進行數據傳輸之前必須使用三報文握手來建立TCP 連接。TCP 連接建立成功後才能進行數據傳輸,數據傳輸結束後必須使用四報文揮手來釋放TCP連接。需要註意的是這裡所謂的連接是指邏輯連接關系,而不是物理連接,綜上所述UDP是無連接的,而TCP是面向連接的。

3、從連接對象個數來看

3.1、UDP

下圖是某個局域網上的使用UDP協議進行通信的四臺主機,其中任何一臺主機都可向其他三臺主機發送廣播,也可以向某個多播組發送多播,還可以向某臺主機發送單播。也就是說UDP支持單播多播以及廣播,換句話說UDP支持一對一,一對多以及一對全的通信。

一臺主機向其他三臺主機發送廣播:

向某個多播組發送多播:

向某臺主機發送單播:

3.2、TCP

再來看使用TCP協議的情況。使用TCP協議的通信,雙方在進行數據傳輸之前必須使用三報文握手來建立TCP連接。TCP連接建立成功後,通信雙方之間就好像有一條可靠的通信信道,通信雙方使用這條基於TCP連接的可靠信道進行通信。很顯然,TCP僅支持單播,也就是一對一的通信。

三報文握手”建立TCP連接:

基於TCP連接的可靠信道:

4、從對應用報文的處理來看

4.1、UDP

先來看使用UDP協議的情況。發送方的應用進程將應用層報文交付給運輸層的UDP,UDP直接給應用層報文添加一個UDP首部,使之成為UDP用戶數據報,然後進行發送。需要說明的是,為瞭簡單起見,我們忽略運輸層下面的各層處理。

接收方的UDP收到該UDP用戶數據報後,去掉UDP首部,將應用層報文交付給應用進程。也就是說,UDP對應用進程交下來的報文既不合並也不拆分,而是保留這些報文的邊界。換句話說,UDP是面向應用報文的。

 

4.2、TCP

再來看使用TCP協議的情況。

發送方:

1、發送方的TCP把應用進程交付下來的數據塊僅僅看作是一連串的無結構的字節流,TCP並不知道這些帶傳送的字節流的含義。

2、發送方將他們編號並存儲在自己的發送緩存中。

3、TCP根據發送策略,從發送緩存中提取一定數量的字節構建TCP報文段並發送。

接收方:

1、接收方的TCP一方面從所接收到的TCP報文段中取出數據載荷部分,並存儲在接收緩存中,一方面將接收緩存中的一些字節交付給應用進程。

2、TCP不保證接收方應用進程所收到的數據塊與發送方應用進程所發出的數據塊具有對應大小的關系(例如,發送方應用進程交給發送方的TCP共10個數據塊,但接收方的TCP可能隻用瞭4個數據塊,就把收到的字節流交付給瞭上層的應用進程,但接收方收到的字節流必須和發送方應用進程發出的字節流完全一樣。)當然,接收方的應用進程必須有能力識別收到的字節流,並把它還原成有意義的應用層數據。

因此,TCP是面向字節流的,這正是TCP 實現可靠傳輸、流量控制以及控制的基礎。

需要說明的是,為瞭突出示意圖的要點,我們隻畫出瞭一個方向的數據流。在實際網絡中,基於TCP連接的兩端,可以同時進行TCP 報文段的發送和接收,也就是全雙工通信。另外,圖中的數據部分隻包含瞭幾個字節,實際當中一個TCP報文段包含上千個字節是很常見的。

5、從向其上層提供傳輸服務來看

5.1、UDP

TCP/IP體系結構的網際層向其上層提供的是無連接不可靠的傳輸服務,當運輸層使用UDP協議時,向其上層提供的也是無連接不可靠的傳輸服務。

發送方給接收方發送UDP用戶數據報,若傳輸過程中用戶數據報受到幹擾而產生誤碼,接收方UDP可以通過該數據報首部中的校驗和字段的值檢查出產生物碼的情況,但僅僅丟棄該數據報其他什麼也不做。

發送方給接收方發送UDP用戶數據報,如果該數據報被英特網中的某個路由器丟棄瞭,發送方UDP不做任何處理,因為UDP向上層提供的是無連接不可靠的傳輸服務。

因此,對於UDP用戶數據報出現的物碼和丟失等問題,UDP並不關心,基於UDP的這個特點,UDP適用於實時應用,例如IP電話、視頻會議等。

 

5.2、TCP

再來看使用TCP協議的情況,盡管網際層中的IP協議向上層提供的是無連接不可靠的傳輸服務,也就是說,IP數據報可能在傳輸過程中出現丟失,誤碼,但隻要運輸層使用TCP協議,就可向其上層提供面向連接的可靠傳輸服務。

我們可將其想象成使用TCP協議的收發,雙方基於TCP連接的可靠性到進行數據傳輸,不會出現誤碼丟失、亂序以及重復等傳輸差錯。因此,TCP適用於要求可靠傳輸的應用,例如文件傳輸。

 

6、從首部格式來看

6.1、UDP

一個UDP用戶數據報由首部和數據載荷兩部分構成,其首部格式如下圖所示:

僅有4個字段,每個字段長度為2個字節,由於UDP不提供可靠傳輸服務,它僅僅在網際層的基礎上添加瞭用於區分應用進程的端口,因此他的首部非常簡單,僅有8個字節。

6.2、TCP

一個TCP報文段由手部和數據載荷兩部分構成,其首部格式如下圖所示:

這比UDP用戶數據報的首部復雜的多,其最小長度為20字節,最大長度為60字節,這是因為TCP要實現可靠傳輸、流量控制控制等服務,其首部自然會比較復雜,首部中的字段比較多,首部長度也比較長。

7、總結

UDP和TCP對比表格:

類型 是否面向連接 傳輸可靠性 傳輸形式 傳輸效率 所需資源 應用場景 首部字節
TCP 可靠 字節流 文件傳輸、郵件傳輸 20~60個字節
UDP 不可靠 數據報文段 即時通訊、域名轉換 8個字節

UDP和TCP對比圖:

在這裡插入圖片描述

以上就是圖文分析詳解TCP與UDP兩者區別的詳細內容,更多關於TCP與UDP區別分析的資料請關註WalkonNet其它相關文章!

推薦閱讀: