一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

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

科技綠洲 ? 來源:Linux開發(fā)架構(gòu)之路 ? 作者:Linux開發(fā)架構(gòu)之路 ? 2023-11-13 15:34 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

采用UDP有3個(gè)關(guān)鍵點(diǎn):

  • 網(wǎng)絡(luò)帶寬需求較小,而實(shí)時(shí)性要求高
  • 大部分應(yīng)用無需維持連接
  • 需要低功耗

應(yīng)用場景:

  • 網(wǎng)頁瀏覽:新浪微博就已經(jīng)用了QUIC協(xié)議
  • 流媒體:WebRTC就是基于UDP的
  • 實(shí)時(shí)游戲:Unity3D采用的RakNet也是基于UDP的協(xié)議

基于UDP協(xié)議的QUIC協(xié)議

QUIC(Quick UDP Internet Connection)是谷歌制定的一種基于UDP的低時(shí)延的互聯(lián)網(wǎng)傳輸層協(xié)議

詳情可參閱:
https://eng.uber.com/employing-quic-protocol/

圖片

UDP傳輸時(shí)需要注意的問題

  • 數(shù)據(jù)包確認(rèn)機(jī)制
  • 數(shù)據(jù)包重傳機(jī)制
  • 盡量不發(fā)送大于路徑MTU的數(shù)據(jù)包
  • 處理數(shù)據(jù)包重排

二、UDP與MTU

IP分片的概念

  • 在TCP/IP分層中,數(shù)據(jù)鏈路層用MTU(Maximum Transmission Unit,最大傳輸單元)來限制所能傳輸?shù)臄?shù)據(jù)包大小,MTU是指一次傳送的數(shù)據(jù)最大長度,不包括數(shù)據(jù)鏈路層數(shù)據(jù)幀的幀頭,如以太網(wǎng)的MTU為1500字節(jié),實(shí)際上數(shù)據(jù)幀的最大長度為1514字節(jié),其中以太網(wǎng)數(shù)據(jù)幀的幀頭為14字節(jié)
  • 當(dāng)發(fā)送的IP數(shù)據(jù)包的大小超過了MTU時(shí),IP層就需要對數(shù)據(jù)進(jìn)行分片,否則數(shù)據(jù)將無法發(fā)送成功
  • IP層是沒有超時(shí)重傳機(jī)制的,如果IP層對一個(gè)數(shù)據(jù)包進(jìn)行了分片,只要有一個(gè)分片丟失了,只能依賴于傳輸層進(jìn)行重傳,結(jié)果是所有的分片都要重傳一遍,這個(gè)代價(jià)有點(diǎn)大;公網(wǎng)傳輸,需要經(jīng)過多個(gè)網(wǎng)絡(luò)設(shè)備,IP分片容易造成丟包
  • 由此可見,IP分片會(huì)大大降低傳輸層傳送數(shù)據(jù)的成功率,所以我們要避免IP分片

UDP與MTU的關(guān)系

MTU是指通信協(xié)議的鏈路層上面所能通過的最大數(shù)據(jù)包大小

單個(gè)UDP傳輸?shù)淖畲髢?nèi)容1472字節(jié),但由于不同的網(wǎng)絡(luò)中轉(zhuǎn)設(shè)備設(shè)置的MTU值并不相同:

  • Internet環(huán)境下:標(biāo)準(zhǔn)MTU值為576字節(jié),UDP的數(shù)據(jù)長度應(yīng)該控制在548字節(jié)(576-8-20)以內(nèi)
  • 局域網(wǎng)環(huán)境下:UDP的數(shù)據(jù)長度控制在1472個(gè)字節(jié)以內(nèi)

圖片

三、UDP分包與組包設(shè)計(jì)

為什么要對UDP進(jìn)行分包與組包

  • 通過上面對MTU的介紹我們知道,如果IP數(shù)據(jù)包的大小超過了其所在環(huán)境中MTU的大小,那么就會(huì)對IP數(shù)據(jù)包進(jìn)行分片
  • 當(dāng)分片只要其中一個(gè)片段丟失,那么就需要重傳所有的分片數(shù)據(jù),因此這種消耗是比較大的

主要思想

  • 在應(yīng)用層,我們對UDP數(shù)據(jù)進(jìn)行傳輸時(shí)調(diào)用的兩個(gè)接口為sendto()和recvfrom()
  • 我們將傳輸?shù)臄?shù)據(jù)(原始數(shù)據(jù),可能很大)分割為一個(gè)一個(gè)小的分片,使分片的大小不大于MTU的大小,這樣我們在進(jìn)行UDP數(shù)據(jù)傳輸?shù)臅r(shí)候,就不會(huì)產(chǎn)生上面IP分片的問題了

圖片

對于每一個(gè)分片我們需要設(shè)計(jì)其格式,例如下面是定義的一種格式。相關(guān)字段為如下所示

圖片

代碼

GIthub鏈接:
https://github.com/dongyusheng/csdn-code/tree/master/udp_piece

其中:

circular_buffer.h/.c:環(huán)形緩沖區(qū),用來保存數(shù)據(jù)的

udp-piece.h/.c:UDP分片與重組(核心代碼)

udp-piece-client.c:客戶端測試代碼,代碼內(nèi)會(huì)向服務(wù)端發(fā)送UDP數(shù)據(jù)

udp-piece-server.c:服務(wù)端測試代碼,接收客戶端的UDP數(shù)據(jù)

圖片

編碼主要思路

udp-piece.h:

定義了如下的宏和結(jié)構(gòu),主要用來描述分片節(jié)點(diǎn)的

其中比較重要的一個(gè)字段為PIECE_FIX_SIZE,其代表我們分片中實(shí)際數(shù)據(jù)的長度,因?yàn)镮nternet中MTU的大小通常為576,所以我們的UDP數(shù)據(jù)包最好不要超過576-8-20大小(8為UDP頭大小,20位IP報(bào)文大?。硗膺€要減去12(因?yàn)槲覀兎制灿蓄^,為12字節(jié))

圖片

udp-piece-client.c: 其向服務(wù)端發(fā)送一長串字符串,在發(fā)送之前先調(diào)用udp_piece_cut()對整個(gè)UDP數(shù)據(jù)包進(jìn)行分片,然后逐個(gè)發(fā)送出去

圖片

udp-piece-server.c: 其從客戶端接收UDP數(shù)據(jù),將接收的數(shù)據(jù)放到環(huán)形緩沖中,然后進(jìn)行重組

圖片

小結(jié)

本文只介紹了“UDP的分包與組包”,并沒有涉及到UDP數(shù)據(jù)包確認(rèn)、重傳等機(jī)制,并且代碼也只做到了分包與組包。

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

    關(guān)注

    55

    文章

    11251

    瀏覽量

    106454
  • UDP
    UDP
    +關(guān)注

    關(guān)注

    0

    文章

    330

    瀏覽量

    34661
  • 數(shù)據(jù)鏈
    +關(guān)注

    關(guān)注

    2

    文章

    39

    瀏覽量

    15977
  • 網(wǎng)絡(luò)帶寬
    +關(guān)注

    關(guān)注

    0

    文章

    42

    瀏覽量

    8557
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    AG32VF-MIPI應(yīng)用場景

    的基礎(chǔ)上,集成了MIPI接口協(xié)議,提供了豐富的功能和特性,能夠滿足不同應(yīng)用場景的需求,為用戶提供更加全面、便捷、高效的數(shù)據(jù)傳輸方案。 基本參數(shù): MIPI up to 1.5Gbps LVDS up
    發(fā)表于 01-22 08:56

    實(shí)時(shí)示波器的技術(shù)原理和應(yīng)用場景

    有頻譜分析功能,可以將時(shí)域信號轉(zhuǎn)換為頻域信號,從而顯示信號的頻譜特性。綜上所述,實(shí)時(shí)示波器憑借其獨(dú)特的技術(shù)原理和廣泛的應(yīng)用場景,在電子工程和通信技術(shù)領(lǐng)域發(fā)揮著不可替代的作用。
    發(fā)表于 10-23 14:22

    混合信號分析儀的原理和應(yīng)用場景

    混合信號分析儀是一種集成度高、功能強(qiáng)大的電子測量設(shè)備,其原理和應(yīng)用場景如下:一、原理混合信號分析儀由模擬部分和數(shù)字部分組成,用于混合信號的分析。其工作原理主要包括以下幾個(gè)方面: 信號采樣:混合信號
    發(fā)表于 01-21 16:45

    頻域示波器的技術(shù)原理和應(yīng)用場景

    。 通過觀察信號的頻譜特性,可以判斷故障是否由頻率相關(guān)的問題引起,從而采取相應(yīng)的修復(fù)措施。 信號的高級分析: 在一些高級應(yīng)用場景中,頻域示波器還可以用于串行信號的解碼、眼圖分析等。 這有助于深入了解信號
    發(fā)表于 03-11 14:37

    MOS管的應(yīng)用場景

    mos管的應(yīng)用場景,你了解么?低壓MOS管可稱為金屬氧化物半導(dǎo)體場效應(yīng)管,因?yàn)榈蛪篗OS管具有良好的開關(guān)特性,廣泛應(yīng)用在電子開關(guān)的電路中。如開關(guān)電源,電動(dòng)馬達(dá)、照明調(diào)光等!下面銀聯(lián)寶科技就跟大家一起
    發(fā)表于 11-14 09:24

    =>的使用場景有哪些

    使用場景
    發(fā)表于 10-27 13:25

    ARM的技術(shù)特征是什么?應(yīng)用場景有哪些?

    ARM的技術(shù)特征是什么?應(yīng)用場景有哪些?
    發(fā)表于 11-05 07:32

    MS9331的應(yīng)用場景是什么?

    MS9331的應(yīng)用場景是什么?
    發(fā)表于 02-11 06:41

    labview 和 wincc 的區(qū)別 使用場景

    labview 和 wincc 的區(qū)別 使用場景 都是上位機(jī)軟件,都可以做監(jiān)控軟件 wincc的名氣也比較大 對比的資料較少 寫這些文章的人,從自己的從事的行業(yè)出發(fā),帶有自己的思維 使用的場景 肯定
    發(fā)表于 10-27 18:01

    tcp和udp的應(yīng)用場景

    從特點(diǎn)上我們已經(jīng)知道,TCP 是可靠的但傳輸速度慢 ,UDP 是不可靠的但傳輸速度快。因此在選用具體協(xié)議通信時(shí),應(yīng)該根據(jù)通信數(shù)據(jù)的要求而決定。若通信數(shù)據(jù)完整性需讓位與通信實(shí)時(shí)性,則應(yīng)該選用 TCP 協(xié)議(如文件傳輸、重要狀態(tài)的更新等);反之,則使用 UDP 協(xié)議(如視頻傳
    發(fā)表于 12-08 10:16 ?1.5w次閱讀
    tcp和<b class='flag-5'>udp</b>的應(yīng)<b class='flag-5'>用場景</b>

    UDP的主要特點(diǎn)及其使用場景

    User Datagram Protocol的簡稱是UDP, 中文名是用戶數(shù)據(jù)報(bào)協(xié)議。UDP為應(yīng)用程序提供了一種無須簡歷連接就可以發(fā)生封裝的IP數(shù)據(jù)包的方法。是開放式系統(tǒng)互聯(lián)參考模型中一種無連接誒
    的頭像 發(fā)表于 08-31 17:25 ?1.8w次閱讀

    TCP和UDP的特點(diǎn)及使用場景

    用一個(gè)不算嚴(yán)謹(jǐn)?shù)恼f法總結(jié) TCP 就是,女孩子如果遇到 TCP 這樣的男生,就嫁了吧。因?yàn)門CP的核心特點(diǎn)就是靠譜。他的特定包括,面向連接、可靠、基于字節(jié)流控制的傳輸,就像一個(gè)管道一樣將應(yīng)用層和 IP 層連接起來 而與之相對應(yīng)的,UDP 就像二十多歲的浪子。
    的頭像 發(fā)表于 05-18 17:20 ?2093次閱讀

    QUIC協(xié)議的特性、原理及應(yīng)用場景

    QUIC(Quick UDP Internet Connection,快速UDP網(wǎng)絡(luò)連接)發(fā)音同 "quick",是 Google 公司在 2012 年提出的使用 UDP 進(jìn)行多路并發(fā)傳輸?shù)膮f(xié)議。
    的頭像 發(fā)表于 09-15 11:21 ?6456次閱讀
    QUIC協(xié)議的<b class='flag-5'>特性</b>、原理及應(yīng)<b class='flag-5'>用場景</b>

    壓敏電阻的工作原理、分類、特性以及應(yīng)用場景

    壓敏電阻的工作原理、分類、特性以及應(yīng)用場景 壓敏電阻是一種利用壓力變化來改變電阻值的傳感器。其作用是將外部的機(jī)械壓力、力量或負(fù)荷轉(zhuǎn)化為電氣信號,從而實(shí)現(xiàn)對物理量的測量。壓敏電阻常用于力的測量、壓力
    的頭像 發(fā)表于 12-08 15:47 ?5004次閱讀

    LDO的工作原理、特性、應(yīng)用場景詳解

    在現(xiàn)代電子設(shè)備的復(fù)雜電路系統(tǒng)中,穩(wěn)定、高效的電源供應(yīng)至關(guān)重要。LDO,即低壓差線性穩(wěn)壓器(Low Dropout Regulator),作為電源管理領(lǐng)域的關(guān)鍵元件,發(fā)揮著不可或缺的作用。本文將深入探討 LDO 的工作原理、特性、應(yīng)用場景。
    的頭像 發(fā)表于 03-14 18:09 ?2701次閱讀