0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

TCP協(xié)議和UDP協(xié)議對比 UDP協(xié)議的原理及應(yīng)用

454398 ? 來源:博客園 ? 作者:默語 ? 2020-10-26 15:05 ? 次閱讀

前言

TCP協(xié)議在不可靠的網(wǎng)絡(luò)環(huán)境上提供了可靠的通信通道,隱藏了大量的底層細(xì)節(jié),使應(yīng)用程序更加簡潔。但有些應(yīng)用并不需要這么高的可靠性,并不需要按序交付,而且TCP為了提高可靠性也增加了延時,在某些對延時或抖動要求很高的情景下并不適用。為此,UDP(User Datagram Protocol,用戶數(shù)據(jù)報(bào)協(xié)議)被提出。UDP雖然應(yīng)用較為廣泛,比如DNS查詢等,但一直不是重要的角色。自從WebRTC被提出以來,它可以使瀏覽器在UDP的基礎(chǔ)上實(shí)現(xiàn)原生的語音和視頻實(shí)時通信及其他形式的P2P通信,UDP在這種境況下顯得更加重要。本文大致介紹UDP的原理及應(yīng)用,以求加深對其理解。

UDP

TCP是面向連接的,需要三次握手建立連接之后再傳輸數(shù)據(jù),而是UDP面向無連接的,它并不能保證信息交付,也不能保證按序交互,也不跟蹤連接狀態(tài),也不需要擁塞控制。

要了解UDP和為什么它通常被稱為“空協(xié)議”,我們首先需要了解一下互聯(lián)網(wǎng)協(xié)議(IP),它位于TCP和UDP協(xié)議層下面。IP層主要任務(wù)就是基于地址將數(shù)據(jù)報(bào)從源主機(jī)發(fā)送到目的主機(jī)。要做到這一點(diǎn),消息都封裝在一個IP包,標(biāo)識源和目的地址,以及一些其他路由參數(shù)。

我們再次強(qiáng)調(diào)一下上面提到的數(shù)據(jù)報(bào)這個術(shù)語的含義:IP層提供了不可靠的數(shù)據(jù)傳輸,既沒有消息確認(rèn),也沒有丟失通知, IP層直接把這一層的不可靠性暴露給上層。如果一個數(shù)據(jù)報(bào)在傳輸過程中因?yàn)槟硞€路由節(jié)點(diǎn)擁塞,高負(fù)荷,或因其他原因丟失,那么由IP上層的協(xié)議來檢測,恢復(fù),并重傳數(shù)據(jù) - 當(dāng)然這是在上層有這個需求的時候!IPv4的首部結(jié)構(gòu)如下:

UDP協(xié)議會用自己的分組結(jié)構(gòu)封裝用戶信息,其數(shù)據(jù)格式如下:

如上圖所示,我們在UDP數(shù)據(jù)報(bào)里增加了源端口和目標(biāo)端口,這樣就使得當(dāng)IP分組被送到接收端后,接收端就可以拆開UDP分組,根據(jù)目標(biāo)端口找到對應(yīng)的應(yīng)用程序,然后再把數(shù)據(jù)傳遞給應(yīng)用程序。

從IP和UDP的數(shù)據(jù)格式可以看到,它們的首部都帶有校驗(yàn)和,都可以用來校驗(yàn)數(shù)據(jù),那么應(yīng)用程序即使忽略UDP的校驗(yàn)和也不影響數(shù)據(jù)完整性,校驗(yàn)和字段是可選的。這意味著UDP層所有的錯誤檢測和糾錯,可以委托給上述應(yīng)用層校驗(yàn)。說到底,UDP僅僅是在IP層上通過嵌入應(yīng)用程序的源端口和目標(biāo)端口,提供了一個“應(yīng)用程序多路復(fù)用”機(jī)制。由此可以得到UDP的特征如下:

不保證消息交付:不確認(rèn),不重傳,無超時;

不保證交付順序:不設(shè)置包序號,不重排,不發(fā)生隊(duì)首阻塞;

不跟蹤連接狀態(tài):不必建立連接或重啟狀態(tài)機(jī);

不需要擁塞控制:不內(nèi)置客戶端或網(wǎng)絡(luò)反饋機(jī)。

TCP是一個面向字節(jié)流的協(xié)議,能夠通過多個分組的形式發(fā)送應(yīng)用程序的消息數(shù)據(jù),包內(nèi)本身沒有任何明確的消息邊界。為了實(shí)現(xiàn)這一目標(biāo),連接兩端都分配了連接狀態(tài),并且數(shù)據(jù)包被排序,重發(fā)丟包,按順序發(fā)送。相反UDP數(shù)據(jù)報(bào)有明確的界限:每一個數(shù)據(jù)報(bào)都被打包到一個IP包中,應(yīng)用層讀到的每一個UDP包都是完整的信息 -數(shù)據(jù)報(bào)不能被分割

關(guān)于數(shù)據(jù)報(bào)(Datagram)詳細(xì)定義如下:

數(shù)據(jù)報(bào):一個自包含的,獨(dú)立的數(shù)據(jù)實(shí)體,其承載了足夠的信息,使其可以從源路由到達(dá)目標(biāo)路由,而不依賴于在網(wǎng)絡(luò)節(jié)點(diǎn)前的數(shù)據(jù)交換和傳輸網(wǎng)絡(luò)沒有任何依賴。

數(shù)據(jù)報(bào)文(Datagram)和數(shù)據(jù)包(Packet)兩個術(shù)語往交替使用,但其實(shí)二者有一些細(xì)微差別。數(shù)據(jù)包(packet)一般用來描述任何格式的數(shù)據(jù)塊,而數(shù)據(jù)報(bào)(Datagram)往往被保留用來描述通過一個不可靠的服務(wù)傳輸?shù)臄?shù)據(jù)包(Packet) - 沒有傳輸保障,沒有失敗通知。所以UDP包一般或者說更準(zhǔn)確的被稱為數(shù)據(jù)報(bào)(Datagram)。

UDP是一個簡單的,無狀態(tài)的協(xié)議,適合于引導(dǎo)上層的其他應(yīng)用層協(xié)議 - 幾乎所有的協(xié)議決策都留給它上面的應(yīng)用層。然而,在你想實(shí)現(xiàn)自己的協(xié)議來取代TCP,你應(yīng)該仔細(xì)考慮有關(guān)的復(fù)雜性,如UDP與其它層的交互(比如NAT穿越),以及網(wǎng)絡(luò)協(xié)議一些最佳實(shí)踐。沒有仔細(xì)的規(guī)劃和設(shè)計(jì),設(shè)計(jì)一個新的協(xié)議不是一個好主意,最終也許實(shí)現(xiàn)成一個的簡陋的TCP版本。
編輯:hfy

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • TCP
    TCP
    +關(guān)注

    關(guān)注

    8

    文章

    1347

    瀏覽量

    78933
  • DNS
    DNS
    +關(guān)注

    關(guān)注

    0

    文章

    215

    瀏覽量

    19771
  • 瀏覽器
    +關(guān)注

    關(guān)注

    1

    文章

    1009

    瀏覽量

    35226
  • 數(shù)據(jù)報(bào)

    關(guān)注

    0

    文章

    4

    瀏覽量

    7246
  • TCP協(xié)議
    +關(guān)注

    關(guān)注

    1

    文章

    91

    瀏覽量

    12054
收藏 人收藏

    評論

    相關(guān)推薦

    功能強(qiáng)大的網(wǎng)絡(luò)通訊工具,支持各類TCP、UDP、HTTP的通訊協(xié)議

    功能強(qiáng)大的網(wǎng)絡(luò)通訊工具,支持各類TCP、UDP、HTTP的通訊協(xié)議,簡單方便,包含歷史記憶功能,體積小,服務(wù)器調(diào)試最合適
    發(fā)表于 09-05 11:51 ?0次下載

    深度解析TCPUDP協(xié)議

    計(jì)算機(jī)與網(wǎng)絡(luò)設(shè)備要相互通信,它們必須遵循一種共同的方法或標(biāo)準(zhǔn)。對于不同硬件平臺和操作系統(tǒng)之間的交互而言,這種共同遵循的規(guī)范尤為關(guān)鍵。我們將這一系列指導(dǎo)通信過程的規(guī)則稱為“協(xié)議”。TCPUDP
    的頭像 發(fā)表于 09-02 14:53 ?307次閱讀
    深度解析<b class='flag-5'>TCP</b>與<b class='flag-5'>UDP</b><b class='flag-5'>協(xié)議</b>

    tcpudp的區(qū)別和聯(lián)系

    一、引言 在現(xiàn)代網(wǎng)絡(luò)通信中,數(shù)據(jù)傳輸是至關(guān)重要的。為了確保數(shù)據(jù)的可靠傳輸,網(wǎng)絡(luò)協(xié)議發(fā)揮著關(guān)鍵作用。傳輸控制協(xié)議TCP)和用戶數(shù)據(jù)報(bào)協(xié)議UDP
    的頭像 發(fā)表于 08-16 11:06 ?489次閱讀

    udp是什么協(xié)議?udp協(xié)議介紹

    要求不高,但對時延和帶寬有要求的應(yīng)用場景。 UDP協(xié)議的主要特點(diǎn)包括: 1. 無連接:UDP不需要建立連接,可以直接發(fā)送數(shù)據(jù)。 2. 輕量級:UDP沒有
    的頭像 發(fā)表于 04-19 15:57 ?1207次閱讀

    mqtt協(xié)議和tcp協(xié)議區(qū)別

    MQTT協(xié)議和TCP協(xié)議在設(shè)計(jì)和應(yīng)用上存在以下主要區(qū)別: 1. 起源與設(shè)計(jì):MQTT協(xié)議誕生于1999年互聯(lián)網(wǎng)初期,而TCP
    的頭像 發(fā)表于 04-01 09:15 ?1514次閱讀

    通信必備知識!TCPUDP協(xié)議介紹及使用

    TCPUDP是兩個最常用的通訊協(xié)議。TCP是面向連接的協(xié)議,需要在收發(fā)數(shù)據(jù)前與對方建立可靠的連接,建立連接的過程為3次握手,斷開連接的過程
    的頭像 發(fā)表于 03-15 08:19 ?1698次閱讀
    通信必備知識!<b class='flag-5'>TCP</b>與<b class='flag-5'>UDP</b><b class='flag-5'>協(xié)議</b>介紹及使用

    udp是什么意思 簡述TCPUDP的區(qū)別和聯(lián)系

    UDP (User Datagram Protocol) 是一種在計(jì)算機(jī)網(wǎng)絡(luò)中使用的傳輸層協(xié)議。它與TCP (Transmission Control Protocol) 一樣,都是在因特網(wǎng)協(xié)
    的頭像 發(fā)表于 02-02 16:33 ?1183次閱讀

    通信網(wǎng)絡(luò)協(xié)議棧之UDP協(xié)議技術(shù)解析

    在通常的網(wǎng)絡(luò)協(xié)議棧中,TCP/IP協(xié)議棧是一個常見的示例,其中UDPTCP都是傳輸層協(xié)議。傳輸
    發(fā)表于 02-01 11:00 ?854次閱讀
    通信網(wǎng)絡(luò)<b class='flag-5'>協(xié)議</b>棧之<b class='flag-5'>UDP</b><b class='flag-5'>協(xié)議</b>技術(shù)解析

    TCPUDP協(xié)議有什么區(qū)別?如何通過網(wǎng)關(guān)實(shí)現(xiàn)TCP協(xié)議通信?

    TCP協(xié)議是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議,能夠保證數(shù)據(jù)從發(fā)送方到達(dá)接收方,是物聯(lián)網(wǎng)領(lǐng)域常見的通信協(xié)議之一。 TCP是面
    的頭像 發(fā)表于 01-24 11:07 ?548次閱讀
    <b class='flag-5'>TCP</b>和<b class='flag-5'>UDP</b><b class='flag-5'>協(xié)議</b>有什么區(qū)別?如何通過網(wǎng)關(guān)實(shí)現(xiàn)<b class='flag-5'>TCP</b><b class='flag-5'>協(xié)議</b>通信?

    UDPTCP的主要區(qū)別 UDP能否像TCP一樣實(shí)現(xiàn)可靠傳輸?

    UDPTCP的主要區(qū)別 UDP能否像TCP一樣實(shí)現(xiàn)可靠傳輸?TCP如何實(shí)現(xiàn)可靠性傳輸? UDP
    的頭像 發(fā)表于 01-22 16:10 ?730次閱讀

    如何選擇傳輸層協(xié)議?TCPUDP的優(yōu)缺點(diǎn)和適用場合

    如何選擇傳輸層協(xié)議?TCPUDP的優(yōu)缺點(diǎn)和適用場合? 傳輸層協(xié)議是計(jì)算機(jī)網(wǎng)絡(luò)中的重要組成部分,它負(fù)責(zé)在主機(jī)之間傳輸數(shù)據(jù)。常見的傳輸層協(xié)議
    的頭像 發(fā)表于 12-11 11:42 ?928次閱讀

    tcp/ip協(xié)議包含哪幾層?tcpudp有什么區(qū)別?

    tcp/ip協(xié)議包含哪幾層?tcpudp有什么區(qū)別? TCP/IP協(xié)議是一種網(wǎng)絡(luò)通信
    的頭像 發(fā)表于 11-29 17:40 ?1035次閱讀

    UDP分片和丟包與TCP效果對比

    UDP(用戶數(shù)據(jù)報(bào)協(xié)議)和TCP(傳輸控制協(xié)議)在很多方面都有顯著的區(qū)別??傮w來說,TCP更適合需要可靠傳輸?shù)膽?yīng)用,例如網(wǎng)頁瀏覽、電子郵件等
    的頭像 發(fā)表于 11-23 13:55 ?591次閱讀

    UDP的特性與應(yīng)用場景

    一、UDP的特性與應(yīng)用場景 采用UDP有3個關(guān)鍵點(diǎn): 網(wǎng)絡(luò)帶寬需求較小,而實(shí)時性要求高 大部分應(yīng)用無需維持連接 需要低功耗 應(yīng)用場景: 網(wǎng)頁瀏覽:新浪微博就已經(jīng)用了QUIC協(xié)議 流媒體:WebRTC
    的頭像 發(fā)表于 11-13 15:34 ?849次閱讀
    <b class='flag-5'>UDP</b>的特性與應(yīng)用場景

    TCPUDP的基本區(qū)別

    TCPUDP基本區(qū)別 基于連接與無連接 TCP要求系統(tǒng)資源較多,UDP較少; UDP程序結(jié)構(gòu)較簡單 流模式(
    的頭像 發(fā)表于 11-13 15:27 ?4520次閱讀
    <b class='flag-5'>TCP</b>與<b class='flag-5'>UDP</b>的基本區(qū)別