cen's blog cen's blog
首页
  • 编程文章

    • markdown使用
  • 学习笔记

    • C++学习
    • C++数据结构
    • MySQL
    • Linux
    • 网络编程
算法
  • Git
  • ProtoBuf
  • 分类
  • 标签
  • 归档
关于
GitHub (opens new window)

cen

十年饮冰,难凉热血
首页
  • 编程文章

    • markdown使用
  • 学习笔记

    • C++学习
    • C++数据结构
    • MySQL
    • Linux
    • 网络编程
算法
  • Git
  • ProtoBuf
  • 分类
  • 标签
  • 归档
关于
GitHub (opens new window)
  • 网络基础
  • 套接字和UDP
  • 套接字和TCP
  • 网络协议
  • HTTP协议
  • UDP协议
    • 格式
    • 特点
    • 封装和分用
    • 载荷分离和交付上层
    • 基于 UDP 的应用层协议
  • TCP协议
  • IP协议
  • 数据链路层
  • DNS、ICMP、NAT
  • 网络
cen
2025-09-09
目录

UDP协议

# 格式

  • 16 位源端口号:表示数据从哪里来。
  • 16 位目的端口号:表示数据要到哪里去。
  • 16 位 UDP 长度:表示整个数据报(UDP 首部+UDP 数据)的长度。
  • 16 位 UDP 检验和:如果 UDP 报文的检验和出错,就会直接将报文丢弃。

格式如下:

 0      7 8     15 16    23 24    31
+--------+--------+--------+--------+
|    源端口号     |   目的端口号     |
+--------+--------+--------+--------+
|    UDP长度      |   UDP校验和      |
+--------+--------+--------+--------+
|                                   |
|             数据部分               |
+-----------------------------------+
1
2
3
4
5
6
7
8
9

# 特点

  • 无连接: 知道对端的 IP 和端口号就直接进行传输, 不需要建立连接;
  • 不可靠: 没有确认机制, 没有重传机制; 如果因为网络故障该段无法发到对方, UDP 协议层也不会给应用层返回任何错误信息;
  • 面向数据报: 不能够灵活的控制读写数据的次数和数量,应用层交给 UDP 多长的报文, UDP 原样发送, 既不会拆分, 也不会合并;
  • UDP 没有真正意义上的发送缓冲区。调用 sendto 会直接交给内核,由内核将数据传给网络层协议进行后续的传输动作,UDP 具有接收缓冲区。但是这个接收缓冲区不能保证收到的 UDP 报的顺序和发送 UDP 报的顺序一致;如果缓冲区满了,再到达的 UDP 数据就会被丢弃。所以,UDP 的 socket 既能读,也能写,因此 UDP 是全双工的。

# 封装和分用

UDP 报头

struct udp_header {
    uint16_t src_port;
    uint16_t drc_port;
    uint16_t length;
    uint16_t check;
};
1
2
3
4
5
6

# 载荷分离和交付上层

  • 载荷分离 当传输层从下层获取到一个报文后,就会读取该报文的前 8 个字节(固定报头),提取出对应的目的端口号。通过目的端口号找到对应的上层应用层进程,然后将剩下的有效载荷向上交付给该应用层进程。

  • 交付上层 当应用层将数据交给传输层后,在传输层就会创建一个 UDP 报头类型的变量,然后填充报头当中的各个字段,此时就得到了一个 UDP 报头。此时操作系统再在内核当中开辟一块空间,将 UDP 报头和有效载荷拷贝到一起,此时就形成了 UDP 报文。

# 基于 UDP 的应用层协议

NFS: 网络文件系统、TFTP: 简单文件传输协议、DHCP: 动态主机配置协议、DNS: 域名解析协议等

上次更新: 2025/11/11, 22:03:54
HTTP协议
TCP协议

← HTTP协议 TCP协议→

最近更新
01
动态规划
11-08
02
ProtoBuf
09-28
03
Git
09-28
更多文章>
Theme by Vdoing | Copyright © 2024-2025 京ICP备2020044002号-3 京公网安备11010502056119号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式