前言
TCP和UDP都位于計算機網路模型中的運輸層,它們負責傳輸應用層產生的資料,在面試中也經常會問TCP和UDP的區別,下面我們將從幾個方面來聊一聊TCP和UDP兩者的區別,
文章目錄
- 前言
- 1、概念
- 2、從是否面向連接來看
- 2.1、UDP
- 2.2、TCP
- 3、從連接物件個數來看
- 3.1、UDP
- 3.2、TCP
- 4、從對應用報文的處理來看
- 4.1、UDP
- 4.2、TCP
- 5、從向其上層提供傳輸服務來看
- 5.1、UDP
- 5.2、TCP
- 6、從首部格式來看
- 6.1、UDP
- 6.2、TCP
- 7、總結
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對比圖:

|
|

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/344244.html
標籤:其他
上一篇:【資料結構】佇列
下一篇:【資料結構】——二叉搜索樹
