教培參考
教育培訓(xùn)行業(yè)知識(shí)型媒體
發(fā)布時(shí)間: 2025年05月16日 17:15
tcp和udp的區(qū)別和使用場(chǎng)景,傳輸層的兩個(gè)協(xié)議—— TCP和UDP有各自的應(yīng)用場(chǎng)景。
TCP為應(yīng)用層協(xié)議提供可靠傳輸,發(fā)送端按順序發(fā)送,接收端按順序接收,其間如果發(fā)生丟包、亂序由TCP負(fù)責(zé)重傳和排序。下面是TCP的應(yīng)用場(chǎng)景。
(1)客戶端程序和服務(wù)器端程序需要多次交互才能實(shí)現(xiàn)應(yīng)用程序的功能。例如,接收電子郵件使用的是POP3,發(fā)送電子郵件使用的是SMTP,傳輸文件使用的是FTP,在傳輸層使用的是TCP。
(2)應(yīng)用程序傳輸?shù)奈募枰侄蝹鬏?,例如,使用瀏覽器訪問網(wǎng)頁(yè),網(wǎng)頁(yè)中的圖片和HTML文件需要分段后發(fā)送給瀏覽器;又如使用QQ傳文件,在傳輸層也是選用TCP。
如果需要將發(fā)送的內(nèi)容分成多個(gè)數(shù)據(jù)包發(fā)送,這就要求在傳輸層使用TCP在發(fā)送方和接收方建立連接,實(shí)現(xiàn)可靠傳輸、流量控制和避免擁塞。
例如,從網(wǎng)絡(luò)中下載一個(gè)500MB的電影或下載一個(gè)200MB的軟件,這么大的文件需要拆分成多個(gè)數(shù)據(jù)包發(fā)送,發(fā)送過程需要持續(xù)幾分鐘或幾十分鐘。在此期間,發(fā)送方將要發(fā)送的內(nèi)容一邊發(fā)送一邊放到緩存中,將緩存中的內(nèi)容分成多個(gè)數(shù)據(jù)包,并進(jìn)行編號(hào),按順序發(fā)送。這就需要在發(fā)送方和接收方建立連接,協(xié)商通信過程的一些參數(shù)(如一個(gè)數(shù)據(jù)包最大有多少字節(jié)等)。
如果網(wǎng)絡(luò)不穩(wěn)定造成某個(gè)數(shù)據(jù)包丟失,發(fā)送方必須重新發(fā)送丟失的數(shù)據(jù)包,否則就會(huì)造成接收到的文件不完整,這就需要TCP能夠?qū)崿F(xiàn)可靠傳輸。如果發(fā)送方發(fā)送速度太快,接收方來不及處理,接收方還會(huì)通知發(fā)送方降低發(fā)送速度,甚至停止發(fā)送。
TCP還能實(shí)現(xiàn)流量控制,因?yàn)镮nternet中的流量不固定,流量過高時(shí)會(huì)造成網(wǎng)絡(luò)擁塞(這一點(diǎn)很好理解,就像城市上下班高峰時(shí)的交通堵塞一樣),在整個(gè)傳輸過程中,發(fā)送方要一直探測(cè)網(wǎng)絡(luò)是否擁塞來調(diào)整發(fā)送速度。TCP還有擁塞避免機(jī)制。
發(fā)送方的發(fā)送速度由網(wǎng)絡(luò)是否擁塞和接收方接收速度兩個(gè)因素控制,哪個(gè)速度低,就用哪個(gè)速度發(fā)送,如圖所示。
圖 TCP示意圖
有些應(yīng)用程序通信使用TCP就顯得效率低了。例如,有些應(yīng)用的客戶端只需向服務(wù)器端發(fā)送一個(gè)請(qǐng)求報(bào)文,服務(wù)器端返回一個(gè)響應(yīng)報(bào)文就可以完成其功能。這類應(yīng)用如果使用TCP發(fā)送3個(gè)數(shù)據(jù)包建立連接,再發(fā)送4個(gè)數(shù)據(jù)包釋放連接,只為了發(fā)送一個(gè)報(bào)文,就很不值得,這時(shí)干脆讓應(yīng)用程序直接發(fā)送。如果丟包了,應(yīng)用程序再發(fā)送一遍即可。這類應(yīng)用,在傳輸層就使用 UDP。
UDP的應(yīng)用場(chǎng)景如下。
(1)客戶端程序和服務(wù)器端程序通信,應(yīng)用程序發(fā)送的數(shù)據(jù)包不需要分段。如域名解析,DNS協(xié)議使用的就是傳輸層的UDP,客戶端向DNS服務(wù)器發(fā)送一個(gè)報(bào)文請(qǐng)求解析某個(gè)網(wǎng)站的域名,DNS服務(wù)器將解析的結(jié)果通過一個(gè)報(bào)文返回給客戶端。
(2)實(shí)時(shí)通信。這類如QQ或微信語(yǔ)音聊天,或視頻聊天的應(yīng)用,發(fā)送方和接收方需要實(shí)時(shí)交互,也就是不允許較長(zhǎng)延遲,即便有幾句話因?yàn)榫W(wǎng)絡(luò)堵塞沒聽清,也不允許使用TCP等待丟失的報(bào)文,等待的時(shí)間太長(zhǎng)了,就不能愉快地聊天了。
(3)多播或廣播通信。如學(xué)校多媒體機(jī)房,老師的計(jì)算機(jī)屏幕需要分享給教室里的學(xué)生計(jì)算機(jī),在老師的計(jì)算機(jī)上安裝多媒體教室服務(wù)器端軟件,在學(xué)生的計(jì)算機(jī)上安裝多媒體教室客戶端軟件,老師的計(jì)算機(jī)使用多播地址或廣播地址發(fā)送報(bào)文,學(xué)生的計(jì)算機(jī)都能收到。這類應(yīng)用在傳輸層使用UDP。
知道了傳輸層兩個(gè)協(xié)議的特點(diǎn)和應(yīng)用場(chǎng)景,就很容易判斷某個(gè)應(yīng)用層協(xié)議在傳輸層使用什么協(xié)議了。現(xiàn)在判斷一下,QQ聊天在傳輸層使用的是什么協(xié)議,QQ傳文件在傳輸層使用的是什么協(xié)議?
如果使用QQ給好友傳輸文件,這個(gè)過程會(huì)持續(xù)幾分鐘至幾十分鐘,肯定不是使用一個(gè)數(shù)據(jù)包就能把文件傳輸完的,需要將要傳輸?shù)奈募侄蝹鬏?。在傳輸文件之前需要建立?huì)話,在傳輸過程中實(shí)現(xiàn)可靠傳輸、流量控制、避免擁塞等,這些功能需要在傳輸層使用TCP來實(shí)現(xiàn)。
使用QQ聊天,通常一次輸入的聊天內(nèi)容不會(huì)有太多文字,使用一個(gè)數(shù)據(jù)包就能把聊天內(nèi)容發(fā)送出去,并且聊完第一句,也不定什么時(shí)候聊第二句,發(fā)送數(shù)據(jù)不是持續(xù)的,發(fā)送QQ聊天的內(nèi)容在傳輸層使用UDP。
可見根據(jù)通信的特點(diǎn),一個(gè)應(yīng)用程序通信可以在傳輸層選擇不同的協(xié)議。
微信掃碼關(guān)注公眾號(hào)
獲取更多考試熱門資料