0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

UDP的特性与应用场景

科技绿洲 来源:Linux开发架构之路 作者:Linux开发架构之路 2023-11-13 15:34 次阅读

一、UDP的特性与应用场景

采用UDP有3个关键点:

  • 网络带宽需求较小,而实时性要求高
  • 大部分应用无需维持连接
  • 需要低功耗

应用场景:

  • 网页浏览:新浪微博就已经用了QUIC协议
  • 流媒体:WebRTC就是基于UDP的
  • 实时游戏:Unity3D采用的RakNet也是基于UDP的协议

基于UDP协议的QUIC协议

QUIC(Quick UDP Internet Connection)是谷歌制定的一种基于UDP的低时延的互联网传输层协议

详情可参阅:
https://eng.uber.com/employing-quic-protocol/

图片

UDP传输时需要注意的问题

  • 数据包确认机制
  • 数据包重传机制
  • 尽量不发送大于路径MTU的数据包
  • 处理数据包重排

二、UDP与MTU

IP分片的概念

  • 在TCP/IP分层中,数据链路层用MTU(Maximum Transmission Unit,最大传输单元)来限制所能传输的数据包大小,MTU是指一次传送的数据最大长度,不包括数据链路层数据帧的帧头,如以太网的MTU为1500字节,实际上数据帧的最大长度为1514字节,其中以太网数据帧的帧头为14字节
  • 当发送的IP数据包的大小超过了MTU时,IP层就需要对数据进行分片,否则数据将无法发送成功
  • IP层是没有超时重传机制的,如果IP层对一个数据包进行了分片,只要有一个分片丢失了,只能依赖于传输层进行重传,结果是所有的分片都要重传一遍,这个代价有点大;公网传输,需要经过多个网络设备,IP分片容易造成丢包
  • 由此可见,IP分片会大大降低传输层传送数据的成功率,所以我们要避免IP分片

UDP与MTU的关系

MTU是指通信协议的链路层上面所能通过的最大数据包大小

单个UDP传输的最大内容1472字节,但由于不同的网络中转设备设置的MTU值并不相同:

  • Internet环境下:标准MTU值为576字节,UDP的数据长度应该控制在548字节(576-8-20)以内
  • 局域网环境下:UDP的数据长度控制在1472个字节以内

图片

三、UDP分包与组包设计

为什么要对UDP进行分包与组包

  • 通过上面对MTU的介绍我们知道,如果IP数据包的大小超过了其所在环境中MTU的大小,那么就会对IP数据包进行分片
  • 当分片只要其中一个片段丢失,那么就需要重传所有的分片数据,因此这种消耗是比较大的

主要思想

  • 在应用层,我们对UDP数据进行传输时调用的两个接口为sendto()和recvfrom()
  • 我们将传输的数据(原始数据,可能很大)分割为一个一个小的分片,使分片的大小不大于MTU的大小,这样我们在进行UDP数据传输的时候,就不会产生上面IP分片的问题了

图片

对于每一个分片我们需要设计其格式,例如下面是定义的一种格式。相关字段为如下所示

图片

代码

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

其中:

circular_buffer.h/.c:环形缓冲区,用来保存数据的

udp-piece.h/.c:UDP分片与重组(核心代码)

udp-piece-client.c:客户端测试代码,代码内会向服务端发送UDP数据

udp-piece-server.c:服务端测试代码,接收客户端的UDP数据

图片

编码主要思路

udp-piece.h:

定义了如下的宏和结构,主要用来描述分片节点的

其中比较重要的一个字段为PIECE_FIX_SIZE,其代表我们分片中实际数据的长度,因为Internet中MTU的大小通常为576,所以我们的UDP数据包最好不要超过576-8-20大小(8为UDP头大小,20位IP报文大小),另外还要减去12(因为我们分片也有头,为12字节)

图片

udp-piece-client.c: 其向服务端发送一长串字符串,在发送之前先调用udp_piece_cut()对整个UDP数据包进行分片,然后逐个发送出去

图片

udp-piece-server.c: 其从客户端接收UDP数据,将接收的数据放到环形缓冲中,然后进行重组

图片

小结

本文只介绍了“UDP的分包与组包”,并没有涉及到UDP数据包确认、重传等机制,并且代码也只做到了分包与组包。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 互联网
    +关注

    关注

    54

    文章

    11120

    浏览量

    103073
  • UDP
    UDP
    +关注

    关注

    0

    文章

    325

    浏览量

    33890
  • 数据链
    +关注

    关注

    2

    文章

    39

    浏览量

    15780
  • 网络带宽
    +关注

    关注

    0

    文章

    38

    浏览量

    8284
收藏 人收藏

    评论

    相关推荐

    AG32VF-MIPI应用场景

    的基础上,集成了MIPI接口协议,提供了丰富的功能和特性,能够满足不同应用场景的需求,为用户提供更加全面、便捷、高效的数据传输方案。 基本参数: MIPI up to 1.5Gbps LVDS up
    发表于 01-22 08:56

    源测量单元设备的技术原理和应用场景

    测试晶体管、二极管等器件的IV特性。这一过程不仅能够评估器件的性能,还能判断其可靠性。 此外,SMU还可用于测试材料的电阻率、分析电源管理集成电路(PMIC)的功率效率等应用场景。随着技术的不断进步
    发表于 10-22 11:10

    实时示波器的技术原理和应用场景

    有频谱分析功能,可以将时域信号转换为频域信号,从而显示信号的频谱特性。综上所述,实时示波器凭借其独特的技术原理和广泛的应用场景,在电子工程和通信技术领域发挥着不可替代的作用。
    发表于 10-23 14:22

    系统放大器的技术原理和应用场景

    系统放大器是一种重要的电子设备,其技术原理和应用场景都具有一定的专业性和广泛性。以下是对系统放大器的技术原理和应用场景的详细介绍:一、技术原理系统放大器的工作原理基于电子器件的非线性特性,通过控制
    发表于 11-18 14:46

    MOS管的应用场景

    mos管的应用场景,你了解么?低压MOS管可称为金属氧化物半导体场效应管,因为低压MOS管具有良好的开关特性,广泛应用在电子开关的电路中。如开关电源,电动马达、照明调光等!下面银联宝科技就跟大家一起
    发表于 11-14 09:24

    this的使用场景及与C,Java中的this的区别

    【JS】this有哪些使用场景?跟C,Java中的this有什么区别?如何改变this的值?
    发表于 03-11 10:17

    =>的使用场景有哪些

    使用场景
    发表于 10-27 13:25

    ARM的技术特征是什么?应用场景有哪些?

    ARM的技术特征是什么?应用场景有哪些?
    发表于 11-05 07:32

    MS9331的应用场景是什么?

    MS9331的应用场景是什么?
    发表于 02-11 06:41

    labview 和 wincc 的区别 使用场景

    labview 和 wincc 的区别 使用场景 都是上位机软件,都可以做监控软件 wincc的名气也比较大 对比的资料较少 写这些文章的人,从自己的从事的行业出发,带有自己的思维 使用的场景 肯定
    发表于 10-27 18:01

    tcp和udp的应用场景

    从特点上我们已经知道,TCP 是可靠的但传输速度慢 ,UDP 是不可靠的但传输速度快。因此在选用具体协议通信时,应该根据通信数据的要求而决定。若通信数据完整性需让位与通信实时性,则应该选用 TCP 协议(如文件传输、重要状态的更新等);反之,则使用 UDP 协议(如视频传
    发表于 12-08 10:16 1.5w次阅读
    tcp和<b class='flag-5'>udp</b>的应<b class='flag-5'>用场景</b>

    UDP的主要特点及其使用场景

    User Datagram Protocol的简称是UDP, 中文名是用户数据报协议。UDP为应用程序提供了一种无须简历连接就可以发生封装的IP数据包的方法。是开放式系统互联参考模型中一种无连接诶
    的头像 发表于 08-31 17:25 1.7w次阅读

    TCP和UDP的特点及使用场景

    用一个不算严谨的说法总结 TCP 就是,女孩子如果遇到 TCP 这样的男生,就嫁了吧。因为TCP的核心特点就是靠谱。他的特定包括,面向连接、可靠、基于字节流控制的传输,就像一个管道一样将应用层和 IP 层连接起来 而与之相对应的,UDP 就像二十多岁的浪子。
    的头像 发表于 05-18 17:20 1722次阅读

    QUIC协议的特性、原理及应用场景

    QUIC(Quick UDP Internet Connection,快速UDP网络连接)发音同 "quick",是 Google 公司在 2012 年提出的使用 UDP 进行多路并发传输的协议。
    的头像 发表于 09-15 11:21 5330次阅读
    QUIC协议的<b class='flag-5'>特性</b>、原理及应<b class='flag-5'>用场景</b>

    压敏电阻的工作原理、分类、特性以及应用场景

    压敏电阻的工作原理、分类、特性以及应用场景 压敏电阻是一种利用压力变化来改变电阻值的传感器。其作用是将外部的机械压力、力量或负荷转化为电气信号,从而实现对物理量的测量。压敏电阻常用于力的测量、压力
    的头像 发表于 12-08 15:47 2457次阅读