TCP vs UDP

Fireflycjd發表於2021-03-25

1、簡介

簡述TCP的工作流程:

在三次握手的幫助下建立了TCP連線。這是一個啟動和確認連線的過程。建立連線後,資料傳輸開始,傳輸過程完成後,通過四次揮手關閉已建立的連線。

關於TCP的內容請看之前的文章《TCP協議詳解》。

簡述UDP的工作流程:

UDP 使用簡單的傳輸方法,無需進行握手對話即可進行通訊。UDP還假定錯誤檢查和更正在應用程式中並不重要,UDP提供資料完整性的校驗和,但是不提供校正錯誤的機制。

關於UDP的內容請看之前的文章《UDP協議詳解》。

他們的主要區別:

  1. TCP 是面向連線的協議,而 UDP 是無連線協議。

  2. TCP 的速度較慢,而 UDP 的速度速度更快。

  3. TCP 使用握手協議, 如 SYN、 SYN- Ack、 Ack, 而 UDP 沒有使用握手協議。

  4. TCP 執行錯誤檢查,同時進行錯誤恢復,另一方面,UDP 執行錯誤檢查,但它丟棄錯誤的資料包。

  5. TCP 具有確認段,但 UDP 沒有任何確認段。

  6. TCP 是重量級的,UDP 是輕量級的。

02、各自的特點

TCP的特點:

  1. 通訊確認。

  2. 重新傳輸。

  3. 網路擁塞時延遲傳輸。

  4. 流量控制。

  5. 差錯控制。

UDP的特點:

  1. 輕量化。

  2. 減少延遲,速度快。

  3. 允許小事務(DNS 查詢)。

  4. 支援可容忍資料包丟失的頻寬密集型應用程式。

03、TCP和UDP的區別

對比如下

TCP

UDP

TCP 是一個面向連線的協議。

UDP 是一個無連線的協議。

TCP 只能一對一通訊。

UDP 支援一對一,一對多,多對一和多對多互動通訊。

TCP 訊息從一臺計算機到另一臺計算機在網際網路上傳播,面向位元組流通訊。

UDP 不是基於連線的,因此一個程式可以向另一個程式傳送大量資料包,面向報文通訊。

TCP 按特定順序重新排列資料包。

UDP 協議沒有固定順序,因為所有資料包彼此獨立。

TCP 的速度較慢。

UDP 速度更快,因為未嘗試恢復錯誤。

TCP 協議首部大小為 20 位元組。

UDP 協議首部大小為 8 位元組。

TCP 是重量級的。TCP 需要三個資料包來設定套接字連線,然後才能傳送任何使用者資料。

UDP 是輕量級的。沒有跟蹤連線、訊息排序等。

TCP 會進行錯誤檢查,還可以進行錯誤恢復。

UDP 執行錯誤檢查,但它丟棄錯誤的資料包。

TCP 有確認段。

UDP 無確認段。

TCP 使用握手協議,如 SYN、SYN-ACK、ACK。

UDP 無握手(因此無連線協議)。

TCP 是可靠的,因為它保證將資料傳遞到目標裝置。

UDP 中無法保證將資料傳遞到目標裝置。

TCP 提供廣泛的錯誤檢查機制,因為它提供流量控制和資料確認。

UDP 只有一個用於校驗和的錯誤檢查機制。

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

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

面向報文:

面向報文的傳輸方式是應用層交給UDP多長的報文,UDP就照樣傳送,即一次傳送一個報文。因此,應用程式必須選擇合適大小的報文。若報文太長,則IP層需要分片。UDP對應用層交下來的報文,既不合並,也不拆分,而是保留這些報文的邊界。這也就是說,應用層交給UDP多長的報文,UDP就照樣傳送,即一次傳送一個報文。(一個udp的最大報文長度2^16-1-20-8,20是ip報文頭,8是udp報文頭)

面向位元組流:

面向位元組流的話,雖然應用程式和TCP的互動是一次一個資料塊(大小不等),但TCP把應用程式看成是一連串的無結構的位元組流。TCP有一個緩衝,當應用程式傳送的資料塊太長,TCP就可以把它劃分短一些再傳送。如果應用程式一次只傳送一個位元組,TCP也可以等待積累有足夠多的位元組後再構成報文段傳送出去。

04、TCP的應用

效率要求相對低,但對準確性要求相對高的場景。因為傳輸中需要對資料確認、重發、排序等操作,相比之下效率沒有UDP高。舉幾個例子:檔案傳輸(準確性要求高、但是速度可以相對慢)、接受郵件、遠端登入。

05、UDP的應用

效率要求相對高,對準確性要求相對低的場景。舉幾個例子:QQ聊天、線上視訊、網路語音電話(即時通訊,速度要求高,但是出現偶爾斷續不是太大問題,並且此處完全不可以使用重發機制)、廣播通訊(廣播、多播)。

06、總結

在傳輸層TCP和UDP協議基礎上的應用層協議對比。

圖片

 

點選檢視本文所在的專輯,STM32F207網路開發

相關文章