1、簡介
簡述TCP的工作流程:
在三次握手的幫助下建立了TCP連線。這是一個啟動和確認連線的過程。建立連線後,資料傳輸開始,傳輸過程完成後,通過四次揮手關閉已建立的連線。
關於TCP的內容請看之前的文章《TCP協議詳解》。
簡述UDP的工作流程:
UDP 使用簡單的傳輸方法,無需進行握手對話即可進行通訊。UDP還假定錯誤檢查和更正在應用程式中並不重要,UDP提供資料完整性的校驗和,但是不提供校正錯誤的機制。
關於UDP的內容請看之前的文章《UDP協議詳解》。
他們的主要區別:
-
TCP 是面向連線的協議,而 UDP 是無連線協議。
-
TCP 的速度較慢,而 UDP 的速度速度更快。
-
TCP 使用握手協議, 如 SYN、 SYN- Ack、 Ack, 而 UDP 沒有使用握手協議。
-
TCP 執行錯誤檢查,同時進行錯誤恢復,另一方面,UDP 執行錯誤檢查,但它丟棄錯誤的資料包。
-
TCP 具有確認段,但 UDP 沒有任何確認段。
-
TCP 是重量級的,UDP 是輕量級的。
02、各自的特點
TCP的特點:
-
通訊確認。
-
重新傳輸。
-
網路擁塞時延遲傳輸。
-
流量控制。
-
差錯控制。
UDP的特點:
-
輕量化。
-
減少延遲,速度快。
-
允許小事務(DNS 查詢)。
-
支援可容忍資料包丟失的頻寬密集型應用程式。
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網路開發