UDP的特性与应用场景

一、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与mtuip分片的概念
在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数据包确认、重传等机制,并且代码也只做到了分包与组包。

关于软件在未来驾驶中的作用和分析
诺基亚9什么时候上市?诺基亚9最新消息:诺基亚9性能比小米6强,拍照好于iphone7?你期待嘛?
宾利进发新能源汽车区域 将开发小型电动SUV
如何通过简单的链路预算分析对在室内和室外环境中使用sub
车用PCB板的市场成长性受重视 ADAS开辟新战场
UDP的特性与应用场景
如何建立一个抛物面扬声器
什么是防雷接地,防雷接地工程的作用和重要意义
喜报 | 拓维信息人工智能项目入选《湖南省“数字新基建”100个标志性项目》
vivo新机疑似曝光:双屏+三摄+ToF摄像头搭载骁龙845
全球安全官员讨论“统一5G准则”
亚马逊收购自动驾驶公司Zoox,加码无人技术
无钴电芯将于明年6月推向市场 实现装车销售
6G尚未成型,关键技术仍在摸索中
通信感知一体化的研究挑战及潜在关键技术报告分析
广东星坤正式通过USB TYPE C协会认证
【服务器数据恢复】存储raid5硬盘坏道离线的数据恢复案例
AI+教育还处于孵化阶段 就目前而言,它更多的功能还是用来“讲故事”
电路板上有哪些元件最容易出故障
中科院相关院所的14个集成电路成果项目,26日签约落户武汉东湖高新区