您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)計(jì)算機(jī)網(wǎng)絡(luò)TCP與UDP兩者區(qū)別及原理是什么,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
UDP和TCP 在使用TCP/IP 體系結(jié)構(gòu)的網(wǎng)絡(luò)通信中,這兩個(gè)協(xié)議的使用頻率僅次于網(wǎng)際層的IP協(xié)議。TCP/IP 體系結(jié)構(gòu)應(yīng)用層中的某些協(xié)議需要使用運(yùn)輸層的TCP 提供的服務(wù),而另一些協(xié)議需要使用運(yùn)輸層的UDP 提供的服務(wù),UDP 是用戶數(shù)據(jù)報(bào)協(xié)議的英文縮寫詞,TCP 是傳輸控制協(xié)議的英文縮寫詞。
如下圖所示,兩個(gè)小電腦圖標(biāo)代表英特網(wǎng)上的兩臺(tái)主機(jī),縱坐標(biāo)為時(shí)間。
兩臺(tái)主機(jī)如果在運(yùn)輸層使用UDP協(xié)議進(jìn)行通信,雙方可以隨時(shí)發(fā)送數(shù)據(jù),因此UDP是無連接的。
再來看使用TCP 協(xié)議的情況,使用TCP協(xié)議的通信,雙方在進(jìn)行數(shù)據(jù)傳輸之前必須使用三報(bào)文握手來建立TCP 連接。TCP 連接建立成功后才能進(jìn)行數(shù)據(jù)傳輸,數(shù)據(jù)傳輸結(jié)束后必須使用四報(bào)文揮手來釋放TCP連接。需要注意的是這里所謂的連接是指邏輯連接關(guān)系,而不是物理連接,綜上所述UDP是無連接的,而TCP是面向連接的。
下圖是某個(gè)局域網(wǎng)上的使用UDP協(xié)議進(jìn)行通信的四臺(tái)主機(jī),其中任何一臺(tái)主機(jī)都可向其他三臺(tái)主機(jī)發(fā)送廣播,也可以向某個(gè)多播組發(fā)送多播,還可以向某臺(tái)主機(jī)發(fā)送單播。也就是說UDP支持單播多播以及廣播,換句話說UDP支持一對(duì)一,一對(duì)多以及一對(duì)全的通信。
一臺(tái)主機(jī)向其他三臺(tái)主機(jī)發(fā)送廣播:
向某個(gè)多播組發(fā)送多播:
向某臺(tái)主機(jī)發(fā)送單播:
再來看使用TCP協(xié)議的情況。使用TCP協(xié)議的通信,雙方在進(jìn)行數(shù)據(jù)傳輸之前必須使用三報(bào)文握手來建立TCP連接。TCP連接建立成功后,通信雙方之間就好像有一條可靠的通信信道,通信雙方使用這條基于TCP連接的可靠信道進(jìn)行通信。很顯然,TCP僅支持單播,也就是一對(duì)一的通信。
三報(bào)文握手”建立TCP連接:
基于TCP連接的可靠信道:
先來看使用UDP協(xié)議的情況。發(fā)送方的應(yīng)用進(jìn)程將應(yīng)用層報(bào)文交付給運(yùn)輸層的UDP,UDP直接給應(yīng)用層報(bào)文添加一個(gè)UDP首部,使之成為UDP用戶數(shù)據(jù)報(bào),然后進(jìn)行發(fā)送。需要說明的是,為了簡(jiǎn)單起見,我們忽略運(yùn)輸層下面的各層處理。
接收方的UDP收到該UDP用戶數(shù)據(jù)報(bào)后,去掉UDP首部,將應(yīng)用層報(bào)文交付給應(yīng)用進(jìn)程。也就是說,UDP對(duì)應(yīng)用進(jìn)程交下來的報(bào)文既不合并也不拆分,而是保留這些報(bào)文的邊界。換句話說,UDP是面向應(yīng)用報(bào)文的。
再來看使用TCP協(xié)議的情況。
1、發(fā)送方的TCP把應(yīng)用進(jìn)程交付下來的數(shù)據(jù)塊僅僅看作是一連串的無結(jié)構(gòu)的字節(jié)流,TCP并不知道這些帶傳送的字節(jié)流的含義。
2、發(fā)送方將他們編號(hào)并存儲(chǔ)在自己的發(fā)送緩存中。
3、TCP根據(jù)發(fā)送策略,從發(fā)送緩存中提取一定數(shù)量的字節(jié)構(gòu)建TCP報(bào)文段并發(fā)送。
1、接收方的TCP一方面從所接收到的TCP報(bào)文段中取出數(shù)據(jù)載荷部分,并存儲(chǔ)在接收緩存中,一方面將接收緩存中的一些字節(jié)交付給應(yīng)用進(jìn)程。
2、TCP不保證接收方應(yīng)用進(jìn)程所收到的數(shù)據(jù)塊與發(fā)送方應(yīng)用進(jìn)程所發(fā)出的數(shù)據(jù)塊具有對(duì)應(yīng)大小的關(guān)系(例如,發(fā)送方應(yīng)用進(jìn)程交給發(fā)送方的TCP共10個(gè)數(shù)據(jù)塊,但接收方的TCP可能只用了4個(gè)數(shù)據(jù)塊,就把收到的字節(jié)流交付給了上層的應(yīng)用進(jìn)程,但接收方收到的字節(jié)流必須和發(fā)送方應(yīng)用進(jìn)程發(fā)出的字節(jié)流完全一樣。)當(dāng)然,接收方的應(yīng)用進(jìn)程必須有能力識(shí)別收到的字節(jié)流,并把它還原成有意義的應(yīng)用層數(shù)據(jù)。
因此,TCP是面向字節(jié)流的,這正是TCP 實(shí)現(xiàn)可靠傳輸、流量控制以及控制的基礎(chǔ)。
需要說明的是,為了突出示意圖的要點(diǎn),我們只畫出了一個(gè)方向的數(shù)據(jù)流。在實(shí)際網(wǎng)絡(luò)中,基于TCP連接的兩端,可以同時(shí)進(jìn)行TCP 報(bào)文段的發(fā)送和接收,也就是全雙工通信。另外,圖中的數(shù)據(jù)部分只包含了幾個(gè)字節(jié),實(shí)際當(dāng)中一個(gè)TCP報(bào)文段包含上千個(gè)字節(jié)是很常見的。
TCP/IP體系結(jié)構(gòu)的網(wǎng)際層向其上層提供的是無連接不可靠的傳輸服務(wù),當(dāng)運(yùn)輸層使用UDP協(xié)議時(shí),向其上層提供的也是無連接不可靠的傳輸服務(wù)。
發(fā)送方給接收方發(fā)送UDP用戶數(shù)據(jù)報(bào),若傳輸過程中用戶數(shù)據(jù)報(bào)受到干擾而產(chǎn)生誤碼,接收方UDP可以通過該數(shù)據(jù)報(bào)首部中的校驗(yàn)和字段的值檢查出產(chǎn)生物碼的情況,但僅僅丟棄該數(shù)據(jù)報(bào)其他什么也不做。
發(fā)送方給接收方發(fā)送UDP用戶數(shù)據(jù)報(bào),如果該數(shù)據(jù)報(bào)被英特網(wǎng)中的某個(gè)路由器丟棄了,發(fā)送方UDP不做任何處理,因?yàn)閁DP向上層提供的是無連接不可靠的傳輸服務(wù)。
因此,對(duì)于UDP用戶數(shù)據(jù)報(bào)出現(xiàn)的物碼和丟失等問題,UDP并不關(guān)心,基于UDP的這個(gè)特點(diǎn),UDP適用于實(shí)時(shí)應(yīng)用,例如IP電話、視頻會(huì)議等。
再來看使用TCP協(xié)議的情況,盡管網(wǎng)際層中的IP協(xié)議向上層提供的是無連接不可靠的傳輸服務(wù),也就是說,IP數(shù)據(jù)報(bào)可能在傳輸過程中出現(xiàn)丟失,誤碼,但只要運(yùn)輸層使用TCP協(xié)議,就可向其上層提供面向連接的可靠傳輸服務(wù)。
我們可將其想象成使用TCP協(xié)議的收發(fā),雙方基于TCP連接的可靠性到進(jìn)行數(shù)據(jù)傳輸,不會(huì)出現(xiàn)誤碼丟失、亂序以及重復(fù)等傳輸差錯(cuò)。因此,TCP適用于要求可靠傳輸?shù)膽?yīng)用,例如文件傳輸。
一個(gè)UDP用戶數(shù)據(jù)報(bào)由首部和數(shù)據(jù)載荷兩部分構(gòu)成,其首部格式如下圖所示:
僅有4個(gè)字段,每個(gè)字段長(zhǎng)度為2個(gè)字節(jié),由于UDP不提供可靠傳輸服務(wù),它僅僅在網(wǎng)際層的基礎(chǔ)上添加了用于區(qū)分應(yīng)用進(jìn)程的端口,因此他的首部非常簡(jiǎn)單,僅有8個(gè)字節(jié)。
一個(gè)TCP報(bào)文段由手部和數(shù)據(jù)載荷兩部分構(gòu)成,其首部格式如下圖所示:
這比UDP用戶數(shù)據(jù)報(bào)的首部復(fù)雜的多,其最小長(zhǎng)度為20字節(jié),最大長(zhǎng)度為60字節(jié),這是因?yàn)門CP要實(shí)現(xiàn)可靠傳輸、流量控制控制等服務(wù),其首部自然會(huì)比較復(fù)雜,首部中的字段比較多,首部長(zhǎng)度也比較長(zhǎng)。
UDP和TCP對(duì)比表格:
類型 | 是否面向連接 | 傳輸可靠性 | 傳輸形式 | 傳輸效率 | 所需資源 | 應(yīng)用場(chǎng)景 | 首部字節(jié) |
---|---|---|---|---|---|---|---|
TCP | 是 | 可靠 | 字節(jié)流 | 慢 | 多 | 文件傳輸、郵件傳輸 | 20~60個(gè)字節(jié) |
UDP | 否 | 不可靠 | 數(shù)據(jù)報(bào)文段 | 快 | 少 | 即時(shí)通訊、域名轉(zhuǎn)換 | 8個(gè)字節(jié) |
UDP和TCP對(duì)比圖:
關(guān)于計(jì)算機(jī)網(wǎng)絡(luò)TCP與UDP兩者區(qū)別及原理是什么就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。