当前位置: 首页 > news >正文

UDP 协议

文章目录

  • UDP 协议
    • 简介
    • 数据包格式
    • UDP 通信流程
    • 抓包分析
    • 参考

本文为笔者学习以太网对网上资料归纳整理所做的笔记,文末均附有参考链接,如侵权,请联系删除。

UDP 协议

UDP 是一种面向无连接的传输层协议,属于 TCP/IP 协议簇的一种。UDP 具有消耗资源少、通信效率高等优点,通常用来传输音频、视频等对实时性要求高的场合。

简介

UDP(User Datagram Protocol),即用户数据报协议,是一种面向无连接的传输层协议。无连接是指在传输数据时,数据的发送端和接收端不建立逻辑连接。简单来说,当一台计算机向另外一台计算机发送数据时,发送端不会确认接收端是否存在,就会发出数据,同样接收端在收到数据时,也不会向发送端反馈是否收到数据。由于使用 UDP 协议消耗资源小,通信效率高,所以通常都会用于音频、视频和普通数据的传输(如视频会议等)都会采用 UDP 协议进行传输,这种情况即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。

UDP 和 TCP 是传输层中非常重要的两个协议,位于 OSI(Open System Interconnection,开放式系统互联)参考模型中的第四层(传输层),是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,位于 IP 协议层(网络层)之上。OSI 将计算机网络体系结构分为七层:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,OSI 参考模型如下图所示。
在这里插入图片描述

数据包格式

以太网 UDP 传输单包数据的格式如下图所示。从图中可以看出,以太网的数据包就是对各层协议的逐层封装来实现数据的传输。用户数据打包在 UDP 协议中,UDP 协议又是基于 IP 协议之上的,IP 协议又是走 MAC 层发送的,即从包含关系来说:MAC 帧中的数据段为 IP 数据报,IP 报文中的数据段为 UDP报文,UDP 报文中的数据段为用户希望传输的数据内容。接下来我们逐个来向大家介绍不同层的数据格式
在这里插入图片描述
在这里插入图片描述

  • 源端口号:16 位发送端端口号,用于区分不同服务的端口,端口号的范围从 0 到 65535。
  • 目的端口号:16 位接收端端口号。
  • UDP 长度:16 位 UDP 长度,包含 UDP 首部长度+数据长度,单位是字节(byte)。
  • UDP 校验和:16 位 UDP 校验和。UDP 计算校验和的方法和计算 IP 数据报首部校验和的方法相似,但不同的是 IP 数据报的校验和只检验 IP 数据报的首部,而 UDP 校验和包含三个部分:UDP 伪首部,UDP首部和 UDP 的数据部分。伪首部的数据是从 IP 数据报头和 UDP 数据报头获取的,包括源 IP 地址,目的IP 地址,协议类型和 UDP 长度,其目的是让 UDP 两次检查数据是否已经正确到达目的地,只是单纯为了做校验用的。在大多数使用场景中接收端并不检测 UDP 校验和,因此这里不做过多介绍。

以太网的帧格式、IP 数据报协议以及 UDP 协议到这里已经全部介绍完了,关于用户数据、UDP、IP、MAC 四个报文的关系如下图所示

在这里插入图片描述
用户数据打包在 UDP 协议中,UDP 协议又是基于 IP 协议之上的,IP 协议又是走 MAC 层发送的,即从包含关系来说:MAC 帧中的数据段为 IP 数据报,IP 报文中的数据段为 UDP 报文,UDP 报文中的数据段为用户希望传输的数据内容。现在再回过头看上图 的内容就非常容易理解了

UDP 通信流程

UDP(User Datagram Protocol 用户数据报协议)是一种非面向连接的协议,它不能保证网络连接的可靠性。 客户端发送数据之前并不会去服务器建立连接,而是直接将数据打包发送出去。当服务器接收数据时它也不向发送方提供确认信息,如果出现丢失包或重份包的情况,也不会向发送方发出差错报文。

  • 优点:控制选项少,无须建立连接,从而使得数据传输过程中的延迟小、数据传输效率高。
  • 适用场景:UDP适合对可靠性不高,或网络质量有保障,或对实时性要求较高的应用程序。

基于 UDP 的 socket 编程流程如下图所示:
在这里插入图片描述

抓包分析

  • 打开 wireshark 软件 开启抓包,设定过滤条件为 udp,只显示和 udp 协议相关的包。
  • 开发板连接上网络后,在终端上输入 udpclient 192.168.12.44 5000 5
    查看 wireshark ,发现已经抓到了 udpclient 发来的五个包了。

我们点开封包详细信息然后和上面的 UDP 协议的报文格式对照一下,就弄清楚 UDP 协议的工作机制了。
在这里插入图片描述

参考

  • 正点原子《开拓者之FPGA开发指南V3.2》
  • 野火 LWIP
  • RT-Thread 网络教程

相关文章:

  • 【机器学习】核心概念
  • 小程序开发与物联网技术的结合:未来趋势
  • 【一起来学kubernetes】19、Pod使用详解
  • 抖音用户视频批量下载工具开发全解析
  • AI时代:天空卫士如何让企业AIGC应用无忧
  • 800G/1.6T:迈向下一代数据中心网络的关键路径
  • 【算法day15】最接近的三数之和
  • 别让时光溜走!Kairos App 帮你抓住每一刻
  • 再学:ERC721扩展、ERC1155、SBT,OpenSeaNFT市场 NFT Market 习题讲解
  • 知识蒸馏:从软标签压缩到推理能力迁移的工程实践(基于教师-学生模型的高效压缩技术与DeepSeek合成数据创新)
  • 基于yolov11的持刀检测系统python源码+pytorch模型+评估指标曲线+精美GUI界面
  • 数据库(三)
  • k8s主要控制器简述(一)ReplicaSet与Deployment
  • c++随机整数
  • Quartz知识点总结
  • 【大模型微调】使用Llama Factory实现中文llama3微调
  • OpenHarmony子系统开发 - 电池管理(一)
  • 哈希表与哈希算法:原理、实现与优化
  • C语言-动态内存管理
  • 【区块链 + 商贸零售】基于区块链的消费积分系统 | FISCO BCOS 应用案例
  • 2025财政观察|长三角“三公”经费普降,钱要用在刀刃上
  • 七旬男子驾“老头乐”酒驾被查,曾有两次酒驾两次肇事记录
  • 《克莱默夫妇》导演罗伯特·本顿去世,终年92岁
  • 郑培凯:汤显祖的“至情”与罗汝芳的“赤子之心”
  • 人民日报钟声:通过平等对话协商解决分歧的重要一步
  • 有关部门负责人就《新时代的中国国家安全》白皮书答记者问