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

传输层:UDP协议

1.UDP协议特点

2.UDP报文格式

如下:

校验和的计算:

3.例子

UDP(User Datagram Protocol,用户数据报协议)是一种无连接的传输层协议,其报文格式简单高效,适用于对实时性要求高但允许少量丢包的应用(如视频流、DNS查询等)。以下是UDP报文的详细格式说明:


​UDP报文格式​
UDP报文由头部(Header)和数据部分(Data)组成,头部固定为8字节,结构如下:

 0      7 8     15 16    23 24    31
+--------+--------+--------+--------+
|   源端口号(Source Port)       |  
+--------+--------+--------+--------+
|   目的端口号(Destination Port)  |  
+--------+--------+--------+--------+
|   报文长度(Length)             |  
+--------+--------+--------+--------+
|   校验和(Checksum)             |  
+--------+--------+--------+--------+
|         数据(Data,可变长度)     |  
+-----------------------------------+

​字段详解​

  1. 源端口号(Source Port)
    • 16位,取值范围:0~65535。

    • 发送方的端口号,可选字段(若无需回复可设为0)。

  2. 目的端口号(Destination Port)
    • 16位,取值范围:0~65535。

    • 接收方的端口号,用于标识目标应用程序(如DNS服务默认端口53)。

  3. 报文长度(Length)
    • 16位,表示整个UDP报文的字节数(包括头部和数据)。

    • 最小值为8(仅头部),最大理论值为65535,但实际受MTU限制(如以太网MTU通常为1500字节)。

  4. 校验和(Checksum)
    • 16位,用于检测报文在传输中的错误(可选,IPv4中可置0,IPv6中必须启用)。

    • 计算范围:伪头部(Pseudo-Header) + UDP头部 + 数据(若数据长度为奇数,补0对齐)。

  5. 数据部分(Data)
    • 可变长度,承载上层应用数据(如DNS查询、音视频流等)。


​伪头部(Pseudo-Header)​
校验和计算时临时添加的12字节结构,用于确保数据正确到达目标主机(不实际传输):

 0      7 8     15 16    23 24    31
+--------+--------+--------+--------+
|           源IP地址(32位)         |
+--------+--------+--------+--------+
|           目的IP地址(32位)       |
+--------+--------+--------+--------+
|  零填充 | 协议号(17)| UDP长度    |
+--------+--------+--------+--------+

• 协议号(Protocol):固定为17(表示UDP)。


​特点与注意事项​

  1. 无连接:无需建立/释放连接,直接发送数据。
  2. 不可靠:不保证顺序、不重传丢失报文。
  3. 轻量级:头部开销小(仅8字节),适合低延迟场景。
  4. 应用场景:DNS、DHCP、SNMP、QUIC(HTTP/3)、实时音视频等。

​示例报文(十六进制)​
假设发送一个UDP报文:
• 源端口:1234 → 0x04D2

• 目的端口:53 → 0x0035

• 数据:"test"(4字节)

• 长度:8(头) + 4(数据) = 12 → 0x000C

• 校验和:0x0000(禁用)

报文内容:

04 D2 00 35 00 0C 00 00 74 65 73 74

 

http://www.xdnf.cn/news/428581.html

相关文章:

  • 网络安全-等级保护(等保) 2-3 GB/T 22240—2020《信息安全技术 网络安全等级保护定级指南》-2020-04-28发布【现行】
  • 从HTTP轮询到WebSocket:如何让体育API性能提升100倍?
  • Postgresql与openguass对比
  • hab机制
  • 【2025最新】Windows系统装VSCode搭建C/C++开发环境(附带所有安装包)
  • [Java][Leetcode middle] 55. 跳跃游戏
  • 线程的概念和控制
  • [SAP] 通过事务码Tcode获取程序名
  • Nacos源码—9.Nacos升级gRPC分析七
  • Leetcode (力扣)做题记录 hot100(49,136,169,20)
  • YOLOv1:开启实时目标检测的新篇章
  • SWMM的快速建模方法、SWMM与其他软件之间的数据转换:排水防涝、海绵城市设计等技术与二次开发
  • dockerdesktop 重新安装
  • SQL Server中delete table和truncate table删除全表数据哪个快?
  • 云手机服务器搭建
  • TCP协议中的IP地址/域名
  • 在scala中sparkSQL连接mysql并添加新数据
  • 单链表:多米诺骨牌的奇妙旅程
  • Shinkai开源程序 是一个双击安装 AI 管理器(本地和远程),它允许您使用简单的 UI 在 5 分钟或更短的时间内创建 AI 代理
  • 量化感知训练与 PyTorch 的哪些事
  • 力扣-226.翻转二叉树
  • 51c嵌入式~电路~合集27
  • 整数和浮点数转换时的精度损失
  • 拓扑排序(竞赛)
  • 按键精灵ios脚本新增元素功能助力辅助工具开发(二)
  • 春秋云镜 Time Writeup
  • 面试中被问到谈谈你对threadlocal的理解
  • 2025年5月-信息系统项目管理师高级-软考高项一般计算题
  • 基于Session实现短信登录全流程详解
  • 数据治理的核心