天天看點

TCP和UDP的應用場景

        傳輸層的兩個協定,TCP(Transmission Control Protocol,傳輸控制協定)和UDP(User Datagram Protocol,使用者資料報協定),有各自的應用場景。

TCP為應用層協定提供可靠傳輸,發送端按順序發送,接收端按順序接收,其間發送丢包、亂序,TCP負責重傳和排序。下面是TCP的應用場景。

(1)用戶端程式和服務端程式需要多次互動才能實作應用程式的功能。比如接收電子郵件使用的POP3和發送電子郵件的SMTP,傳輸檔案的FTP,在傳輸層使用的是TCP。

(2)應用程式傳輸的檔案需要分段傳輸,比如浏覽器通路網頁,網頁中圖檔和HTML檔案需要分段後發送給浏覽器,或QQ傳檔案,在傳輸層也是選用TCP。

如果需要将發送的内容分成多個資料包發送,這就要求在傳輸層使用TCP,在發送方和接收方建立連接配接,實作可靠傳輸、流量控制和擁塞避免。

比如從網絡中下載下傳一個500MBit的電影或下載下傳一個200MBit的軟體,這麼大的檔案需要拆分成多個資料包發送,發送過程需要持續幾分鐘或幾十分鐘。在此期間,發送方将要發送的内容一邊發送一邊放到緩存,将緩存中的内容分成多個資料包,并進行編号,按順序發送。這就需要在發送方和接收方建立連接配接,協商通信過程的一些參數(比如一個資料包最大多少個位元組),如果網絡不穩定造成某個資料包丢失,發送方必須重新發送丢失的資料包,否則就會造成接收到的檔案不完整,這就需要TCP協定能夠實作可靠傳輸。如果發送方發送速度太快,接收方來不及處理,接收方還會通知發送方降低發送速度甚至停止發送。TCP協定還能實作流量控制,因為網際網路中的流量不固定,流量過高時會造成網絡擁塞(這一點很好了解,就像城市上下班高峰時的交通堵塞一樣),在整個傳輸過程中發送方要一直探測網絡是否擁塞,來調整發送速度,TCP協定有擁塞避免機制。

如圖1所示,發送方的發送速度由網絡是否擁塞和接收端接收速度兩個因素控制,哪個速度低,就用哪個速度發送。

TCP和UDP的應用場景

圖1 TCP功能

有些應用程式通信,使用TCP協定就顯得效率低了。比如有些應用,用戶端隻需向伺服器發送一個請求封包,伺服器傳回一個響應封包就完成其功能。這類應用如果使用TCP,發送三個資料包建立連接配接,再發送四個資料包釋放連接配接,就為了發送一個封包,就顯得不值了,幹脆讓應用程式直接發送,如果丢包了,應用程式再發送一遍。這類應用,在傳輸層就使用 UDP。

UDP應用場景。

(1)用戶端程式和服務端程式通信,應用程式發送的資料包不需要分段。比如域名解析,DNS協定就是用傳輸層的UDP,用戶端向DNS伺服器發送一個封包解析某個網站的域名,DNS伺服器将解析的結果使用一個封包傳回給用戶端。

(2)實時通信,比如QQ或微信語音聊天,或視訊聊天。這類應用,發送端和接收端需要實時互動,也就是不允許較長延遲,即便有幾句話因為網絡堵塞沒聽清,也不允許使用TCP等待丢失的封包,等待的時間太長了,就不能愉快的聊天了。

(3)多點傳播或廣播通信。比如學校多媒體機房,老師的電腦螢幕需要教室的學生電腦接收螢幕,在老師的電腦安裝多媒體教室服務端軟體,學生電腦安裝多媒體教室用戶端軟體,老師電腦使用多點傳播位址或廣播位址發送封包,學生電腦都能收到。這類應用在傳輸層使用UDP。

知道了傳輸層兩個協定的特點和應用場景,就很容易判斷某個應用層協定在傳輸層使用什麼協定。

現在判斷一下,QQ聊天在傳輸層使用的是什麼協定,QQ傳檔案在傳輸層使用的是什麼協定?

如果使用QQ給好友傳輸檔案,傳輸檔案會持續幾分鐘或幾十分鐘,肯定不是使用一個資料包就能把檔案傳輸完的,需要将要傳輸的檔案分段傳輸,在傳輸檔案之前需要建立會話,在傳輸過程中實作可靠傳輸、流量控制、擁塞避免等,這在傳輸層使用TCP協定來實作這些功能。

使用QQ聊天,通常一次輸入聊天内容不會有太多文字,使用一個資料包就能把聊天内容發送出去,并且聊完第一句,也不定什麼時候聊第二句,發送資料不是持續的,發送QQ聊天的内容在傳輸層使用UDP。

可見一個應用程式通信根據通信的特點,在傳輸層可以選擇不同的協定。

此文章來自于《華為 HCIA-Datacom認證(2021新版HCIA教材)》

京東購買本書

​https://item.jd.com/13706744.html​

學習計算機網絡華為網絡工程師 華三網絡工程師課程中有問題聯系韓老師

韓立剛老師wx hanligangdongqing

華為 HCIA-Datacom認證(2021新版HCIA教材)課程連結 ​​https://edu.51cto.com/course/28956.html​​

TCP和UDP的應用場景