UDP 为什么属于传输层?从封装过程讲清网络模型

UDP 是传输层协议。在 OSI 七层模型中位于第四层,在 TCP/IP 模型中也位于传输层。

如果只记住这个答案,很容易过一段时间又把 UDP 与 IP 混淆。更稳妥的理解方式,是看数据在网络中如何被逐层封装,以及每一层究竟解决什么问题。

网络模型为什么要分层

网络通信要同时处理很多事情:应用如何组织数据、不同程序如何区分、目标主机在哪里、数据如何穿过网卡和物理线路。

如果把这些功能全部塞进一个协议,设计、实现和排错都会非常困难。分层模型把不同职责拆开,每一层只处理相对明确的问题。

在常见的 TCP/IP 模型中,可以分为四层:

层级 主要职责 常见协议
应用层 定义业务数据和交互规则 HTTP、DNS、SMTP
传输层 实现应用进程之间的数据传输 TCP、UDP
网际层 实现主机寻址与跨网络路由 IPv4、IPv6、ICMP
网络接口层 在具体网络介质上传输数据 Ethernet、Wi-Fi

UDP 位于应用层与网际层之间。它接收应用程序的数据,加上传输层首部,再交给 IP 协议。

一段 UDP 数据是怎么发出去的

假设应用程序准备向服务器发送一条数据。

第一步,应用层生成业务数据。

第二步,UDP 在数据前面添加首部,形成 UDP 数据报。首部中包含源端口、目标端口、数据报长度和校验和。

第三步,IP 协议在 UDP 数据报外添加 IP 首部,形成 IP 数据包。IP 首部中包含源 IP 地址和目标 IP 地址。

第四步,数据链路层继续封装,最终通过网线、光纤或无线信号发送出去。

整个过程可以写成:

应用数据 → UDP 数据报 → IP 数据包 → 数据帧

接收端会反向解封装。网卡收到数据帧后交给 IP 层,IP 层根据协议字段交给 UDP,UDP 再根据目标端口交给具体应用程序。

这就是 UDP 属于传输层的原因:它解决的是进程之间的数据交付,而不是主机寻址。

UDP 的数据报特征

UDP 面向数据报,每次发送都对应一个独立消息。

假设发送端连续发送两条 UDP 数据:

  • 第一条长度为 100 字节;

  • 第二条长度为 200 字节。

接收端正常收到时,看到的仍然是两个独立数据报,而不是一段没有边界的 300 字节数据。

TCP 则不同。TCP 面向字节流,不保留应用程序每次写入时的消息边界。发送端写入两次,接收端可能一次读完,也可能分多次读取。因此,基于 TCP 的应用协议通常需要通过长度字段、分隔符或固定格式识别消息边界。

UDP 的简单体现在哪里

UDP 首部固定为 8 字节,只包括四个字段。它不需要保存连接状态,也没有 TCP 中用于可靠传输的序号、确认号和窗口字段。

因此,UDP 本身不处理:

  • 连接建立与释放;

  • 数据送达确认;

  • 丢包自动重传;

  • 数据顺序恢复;

  • 流量控制;

  • TCP 式拥塞控制。

这些能力的缺失让 UDP 协议本身更简单,但也意味着应用程序要自己承担相应风险。

如果数据可以丢,应用可以不做额外处理;如果关键数据不能丢,应用就要增加确认和重传;如果数据必须有序,还要设置序号并处理乱序。

TCP 与 UDP 的设计思路不同

维度 UDP TCP
服务形式 无连接数据报 面向连接字节流
可靠传输 不内置 内置
数据排序 不提供 提供
消息边界 保留 不保留
流量控制 不提供 提供
拥塞控制 不提供 提供
首部长度 8 字节 最少 20 字节
广播和组播 可以支持 不支持

TCP 希望为应用程序提供一条可靠、有序的字节流。网络中即使出现丢包和乱序,TCP 也会尽量在传输层处理。

UDP 只提供基本的数据报交付能力,不替应用决定什么数据值得等待、什么数据可以放弃。

所以,TCP 和 UDP 并不是简单的高级与低级关系,而是两种不同的职责划分方式。

基于 UDP 的应用也能可靠

"UDP 不可靠"只描述 UDP 本身不提供可靠性机制。

应用层完全可以在 UDP 之上增加:

  • 数据序号;

  • 确认响应;

  • 超时重传;

  • 重复数据过滤;

  • 拥塞控制;

  • 加密与身份验证。

QUIC 就建立在 UDP 之上,同时提供可靠传输、拥塞控制和安全连接。HTTP/3 使用 QUIC,也具备可靠的数据传输能力。

这类设计选择 UDP,不是为了放弃可靠性,而是为了绕开 TCP 固定的传输方式,在更高层重新组织连接和数据流。

哪些业务更适合 UDP

UDP 常用于对实时性较敏感的业务,例如:

  • 实时语音;

  • 视频直播;

  • 在线游戏状态同步;

  • 普通 DNS 查询;

  • 网络发现;

  • 基于 QUIC 的通信。

TCP 更常用于必须保证内容完整的场景,例如网页数据、文件传输、邮件和数据库连接。

但应用场景只是参考,不是绝对规则。语音业务也可能对关键控制消息做可靠传输,DNS 在某些情况下也会使用 TCP。

判断时应该回到业务要求:数据是否允许丢失,顺序是否重要,旧数据是否仍有价值,以及应用是否愿意自行实现可靠机制。

UDP 属于传输层,因为它负责通过端口实现应用进程之间的数据交付。它和 TCP 的根本区别,是对连接状态和可靠传输责任的划分不同,而不只是一个快、一个慢

相关推荐
西安景驰电子3 小时前
《PTP精确时间协议系列》第一篇:从原理到应用,全面解读IEEE 1588
linux·运维·服务器·开发语言·网络·windows·php
ZGi.ai3 小时前
多模型回答不稳定:路由规则与评测方法
网络·人工智能·大模型评测·多模型·模型路由·zgi·模型网关
80s7774 小时前
独享住宅IP、长效代理ip是什么?有哪些作用?
网络·网络协议·tcp/ip
IPdodo_4 小时前
静态 IP、住宅 IP 和固定出口有什么区别?开发场景选型指南
服务器·网络·网络协议·tcp/ip·代理ip
_ZHOURUI_H_4 小时前
Unity TCP底层极限拆解:粘包、半包、CRC、序列号、双缓冲到底怎么一起工作的?
网络·网络协议·tcp/ip·游戏·unity·游戏引擎·游戏开发
长江&后浪6 小时前
防火墙的描述
开发语言·网络·php
小新讲网安6 小时前
安全运营中心(SOC)建设实战:从SIEM到威胁狩猎全流程指南
网络·安全·web安全·网络安全·网安
SKYLAB016 小时前
打破智能家居生态壁垒|微喇智能 WKV553‑A 模组原生支持 Matter,解锁跨平台互联新体验
网络·智能家居
笨鸟先飞,勤能补拙8 小时前
Web 服务器与计算机网络全景原理
运维·服务器·前端·网络·人工智能·计算机网络·web安全
KindSuper_liu8 小时前
Unity 游戏网络基础:从 TCP、UDP 到 HTTP、TLS 与 Best HTTP
网络·游戏·unity