TCP VS UDP

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網絡開發