注:本文为 "网络 | SDU 与 PDU" 相关合辑。
略作重排,未全校,如有内容异常,请看原文。
网络中的 SDU 与 PDU
1. 简介
在计算机网络分层架构中,服务数据单元(SDU)与协议数据单元(PDU)是描述数据在层间传递和处理的载体,二者的定义和特征决定了分层通信的基本逻辑。
1.1 服务数据单元(SDU)
SDU(Service Data Unit,服务数据单元) 是指定协议层从上层接收的、未经过当前层处理的原始数据集,代表当前层需要提供服务的业务数据基础。其特征可概括为:
- 数据组成:仅包含上层传递的纯业务信息,不包含当前层的任何协议控制信息;
- 传递特性:在接收方的同一协议层中,SDU 的数据内容与发送方对应层接收的内容完全一致,无任何修改;
- 层间关联 :第
N
层的 SDU(记为SDU(N)
)与第N+1
层的 PDU(记为PDU(N+1)
)存在严格的一一对应关系,即SDU(N) = PDU(N+1)
。
1.2 协议数据单元(PDU)
PDU(Protocol Data Unit,协议数据单元) 是协议层对 SDU 处理后形成的、用于对等层(同一协议层的发送方与接收方) 之间传输的数据单元。其特征可概括为:
- 数据组成 :由两部分构成------当前层的 协议控制信息(PCI,Protocol Control Information) 和从上层接收的 SDU;其中,PCI 包含实现对等层协议逻辑所需的字段(如地址、序号、校验码等);
- 传递特性:是对等层间实际交换的最小信息单位,承载了"业务数据+控制指令"的完整信息;
- 层间关联 :第
N
层的 PDU(记为PDU(N)
)会直接作为第N-1
层的 SDU,即PDU(N) = SDU(N-1)
。
2. SDU 与 PDU 的层间关系与传递逻辑
SDU 与 PDU 在协议栈中的传递遵循"逐层封装、反向解封装"的规则,其层间关系可通过数学公式和实际传递流程清晰体现。

2.1 关系公式
SDU 与 PDU 的层间对应关系是网络分层通信的精准描述:
- 第
N
层的 PDU 是第N-1
层的 SDU:PDU(N) = SDU(N-1)
- 第
N
层的 SDU 是第N+1
层的 PDU:SDU(N) = PDU(N+1)
2.2 层间传递流程(以 TCP/IP 模型为例)
以数据从应用层向下传递到物理层的过程为例,SDU 与 PDU 的转换流程如下(接收端流程反向,为解封装过程):
- 应用层 :生成的业务数据(如 HTTP 报文、文件内容)作为 应用层 PDU ,传递到传输层后,成为 传输层 SDU;
- 传输层 :对 SDU 添加 TCP/UDP 头部(属于传输层 PCI),封装为 传输层 PDU (TCP 段或 UDP 数据报),传递到网络层后,成为 网络层 SDU;
- 网络层 :对 SDU 添加 IP 头部(属于网络层 PCI),封装为 网络层 PDU (IP 数据包),传递到数据链路层后,成为 数据链路层 SDU;
- 数据链路层 :对 SDU 添加帧头/帧尾(属于数据链路层 PCI),封装为 数据链路层 PDU (以太网帧),传递到物理层后,成为 物理层 SDU;
- 物理层:将 SDU 转换为比特流(物理层 PDU),通过网线、光纤等物理介质传输。
3. SDU 与 PDU 的操作
为适配不同协议层的传输能力(如带宽、MTU 限制),SDU 与 PDU 需经过封装/解封装、分段/装配等操作,确保数据在层间高效、可靠传递。
3.1 封装与解封装(基础操作)
封装与解封装是 SDU 与 PDU 转换的基础,实现"业务数据+控制信息"的添加与剥离:
- 封装(发送端) :第
N
层协议实体接收上层传递的SDU(N)
,添加本层的PCI(N)
,将二者组合为PDU(N)
,并传递给下层(作为SDU(N-1)
); - 解封装(接收端) :第
N
层协议实体接收下层传递的PDU(N)
(即下层的SDU(N-1)
),去除PCI(N)
,提取出原始的SDU(N)
,并传递给上层(作为PDU(N+1)
)。
3.2 分段与装配(适配 MTU 限制)
当 SDU(N)
的长度超过下层通道的 MTU(最大传输单元)时,需对 SDU 进行分段处理,接收端再重组为原始 SDU:
- 分段(发送端) :第
N
层将过长的SDU(N)
分割为多个短数据块,每个数据块分别添加PCI(N)
,封装为多个独立的PDU(N)
发送; - 装配(接收端) :第
N
层接收多个来自下层的PDU(N)
,去除各自的PCI(N)
,根据 PCI 中的序号信息,将短数据块重组为原始的SDU(N)
,传递给上层。
3.3 拼接与分离(提升传输效率)
当存在多个短 SDU(N)
时,为减少 PCI 开销、提高通道利用率,可对 SDU 进行拼接处理:
- 拼接(发送端) :第
N
层将多个短SDU(N)
合并为一个连续的数据块,仅添加一个PCI(N)
,封装为单个PDU(N)
发送; - 分离(接收端) :第
N
层接收该PDU(N)
,去除PCI(N)
后,根据 PCI 中的长度标识,将合并的数据块拆分为原始的多个SDU(N)
,传递给上层。
3.4 分割与组合(并行传输适配)
当需要利用多个下层通道并行传输以提升速率时,需对 PDU 进行分割处理:
- 分割(发送端) :第
N
层将一个PDU(N)
分割为多个数据块,每个数据块作为SDU(N-1)
,通过多个N-1
层通道并行发送; - 组合(接收端) :第
N
层从多个N-1
层通道接收SDU(N-1)
,根据控制信息重组为原始的PDU(N)
,解封装后提取SDU(N)
传递给上层。
4. 各协议层的 PDU 类型与实例
不同协议层的 PDU 因功能需求不同,具有不同的名称和格式。
ISO/OSI 模型的结构
下表以 TCP/IP 模型与 OSI 模型的对应关系为例,梳理各层 PDU 的特征:
协议层(TCP/IP 模型) | 协议层(OSI 模型) | PDU 名称 | 特征 |
---|---|---|---|
应用层 | 应用层/表示层/会话层 | 数据(Data) | 包含纯业务数据(如 HTTP 报文、文件内容) |
传输层 | 传输层 | 段(Segment,TCP)/数据报(Datagram,UDP) | 含端口号、序号、确认号等控制字段 |
网络层 | 网络层 | 数据包(Packet) | 含 IP 地址、TTL、协议类型等控制字段 |
数据链路层 | 数据链路层 | 帧(Frame) | 含 MAC 地址、帧校验序列(FCS)等控制字段 |
物理层 | 物理层 | 比特流(Bit) | 以电/光信号形式传输的二进制位 |
4.1 各层 PDU 示意图与结构
4.1.1 协议数据单元(PDU)概念图

4.1.2 数据封装过程(从应用层到物理层)

4.1.3 数据解封装过程(从物理层到应用层)

4.1.4 完整封装与解封装流程

4.1.5 网络数据传输过程(含 PDU 层间转换)

5. LTE 网络中的 SDU 与 PDU 实例(移动通信场景)
SDU 与 PDU 的逻辑在移动通信网络(如 LTE 4G)中同样适用,以下以 LTE 无线协议栈的核心层(PDCP、RLC)为例,说明其具体应用。
5.1 RLC 层的 SDU 与 PDU
- RLC SDU:RLC 层从上层 PDCP 层接收的数据单元,本质是 PDCP 层的 PDU;
- RLC PDU:RLC 层对 SDU 进行分段、拼接后,添加 RLC 头部(PCI)形成的协议数据单元,传递给下层 MAC 层后,成为 MAC 层 SDU。
根据业务类型,RLC 层 PDU 分为三类:
- TM PDU(透明模式):无头部,仅包含数据,适用于无需重传的业务(如广播);
- UMD PDU(非确认模式):含头部,无重传机制,适用于时延敏感、可容忍少量丢包的业务(如 UDP 语音);
- AMD PDU(确认模式):含头部,支持 ARQ 重传,适用于可靠性要求高的业务(如 TCP 数据)。
RLC 层 SDU 与 PDU 关系示意图:

5.2 PDCP 层的 SDU 与 PDU
- PDCP SDU:PDCP 层从上层 IP 层接收的 IP 数据包,是 PDCP 层的原始业务数据;
- PDCP PDU:PDCP 层对 SDU 进行加密、ROHC 头压缩(减少 IP 头部开销)后,添加 PDCP 头部(PCI)形成的协议数据单元,传递给 RLC 层后,成为 RLC 层 SDU。
PDCP 层 PDU 结构示意图:



5.3 LTE 数据处理完整流程

6. SDU 与 PDU 的关键区别总结
为明确二者的差异,下表从数据组成、传递对象、作用等维度进行对比:
对比维度 | SDU(服务数据单元) | PDU(协议数据单元) |
---|---|---|
数据组成 | 仅包含上层业务数据,无当前层控制信息 | 包含 SDU + 当前层协议控制信息(PCI) |
传递对象 | 同一设备的上下层之间 | 不同设备的对等层之间 |
作用 | 承载上层业务数据,提供服务输入 | 实现对等层协议逻辑,完成信息交换 |
层间关系 | 上层 PDU = 本层 SDU | 本层 PDU = 下层 SDU |
是否包含控制字段 | 无 | 有(如地址、序号、校验码等) |
7. 典型协议层 PDU 结构
为进一步理解 PDU"PCI + SDU"的组成逻辑,本节以 TCP/IP 模型中协议层的 PDU 为例,详细拆解其结构与字段功能。
7.1 传输层 PDU:TCP 段与 UDP 数据报
7.1.1 TCP 段结构
TCP 段是传输层(TCP 协议)的 PDU,由"TCP 头部(PCI)+ 传输层 SDU(来自应用层的数据流)"组成,头部最小长度为 20 字节(无选项字段时),结构如下:
字段 | 长度(位) | 作用(PCI 功能) |
---|---|---|
源端口号 | 16 | 标识发送端的应用进程(如 HTTP 默认 80 端口) |
目的端口号 | 16 | 标识接收端的应用进程(如 HTTPS 默认 443 端口) |
序号 | 32 | 标识 TCP 段中数据的起始字节序号,用于字节流排序和去重 |
确认号 | 32 | 标识期望接收的下一个字节序号(仅当 ACK=1 时有效),用于确认已接收数据 |
数据偏移 | 4 | 指示 TCP 头部长度(单位:4 字节),区分头部与 SDU 的边界 |
保留位 | 6 | 预留字段,固定为 0 |
控制位(URG/ACK/SYN/FIN 等) | 6 | 实现 TCP 逻辑:SYN=1 用于建立连接,FIN=1 用于释放连接,ACK=1 用于确认数据 |
窗口大小 | 16 | 告知对方接收缓冲区剩余空间,用于流量控制 |
检验和 | 16 | 校验 TCP 头部+SDU 的完整性,检测传输错误 |
紧急指针 | 16 | 当 URG=1 时,指示紧急数据在段中的结束位置 |
TCP 段结构示意图:
7.1.2 UDP 数据报结构
UDP 数据报是传输层(UDP 协议)的 PDU,结构更简洁,由"UDP 头部(PCI,固定 8 字节)+ 传输层 SDU"组成:
字段 | 长度(位) | 作用(PCI 功能) |
---|---|---|
源端口号 | 16 | 标识发送端应用进程(可选,可设为 0) |
目的端口号 | 16 | 标识接收端应用进程 |
长度 | 16 | 表示 UDP 头部+SDU 的总长度(最小 8 字节,即仅头部无数据) |
检验和 | 16 | 校验 UDP 头部+SDU 的完整性(IPv4 中可设为 0 表示不校验) |
7.2 网络层 PDU:IP 数据包(以 IPv4 为例)
IP 数据包是网络层(IPv4 协议)的 PDU,由"IP 头部(PCI)+ 网络层 SDU(来自传输层的 TCP 段/UDP 数据报)"组成,头部长度范围为 20~60 字节(20 字节固定头部+0~40 字节选项字段),各字段详情如下:
字段 | 长度(位) | 作用(PCI 功能) |
---|---|---|
版本 | 4 | 标识 IP 协议版本(IPv4 为 4,IPv6 为 6),确保收发双方协议版本兼容,避免格式解析错误 |
首部长度 | 4 | 指示 IP 头部总长度(单位:4 字节),区分头部与 SDU(传输层 PDU)的边界,最大值对应 60 字节头部 |
区分服务 | 8 | 用于 QoS(服务质量)控制,通过前 6 位 DSCP(差分服务代码点)字段定义数据传输优先级(如语音业务设高优先级,文件下载设低优先级) |
总长度 | 16 | 表示 IP 头部+SDU 的总长度(最大 65535 字节);若受 MTU 限制需分片,此值为当前分片的总长度 |
标识 | 16 | 为每个原始 IP 数据包分配唯一标识,分片后所有分片的标识字段相同,用于接收端识别同一数据包的分片 |
标志 | 3 | 控制分片逻辑: - DF(Don't Fragment)=1:禁止分片,若长度超 MTU 则丢弃数据包 - MF(More Fragment)=1:后续还有分片,MF=0:当前为最后一个分片 |
片偏移 | 13 | 指示当前分片在原始数据包中的相对位置(单位:8 字节),接收端通过该字段按序重组所有分片 |
生存时间(TTL) | 8 | 限制数据包的网络传输跳数(每经过一个路由器减 1,值为 0 时丢弃数据包),防止数据包在路由环路中无限循环 |
协议 | 8 | 标识 IP 数据包承载的上层协议类型(如 TCP=6,UDP=17,ICMP=1),用于解封装后将 SDU 交付对应上层协议 |
首部检验和 | 16 | 仅校验 IP 头部的完整性(不包含 SDU),采用反码算术运算;接收端计算结果不匹配则判定头部错误,丢弃数据包 |
源 IP 地址 | 32 | 标识发送端设备的逻辑地址(如 192.168.1.1),用于路由转发时定位数据来源 |
目的 IP 地址 | 32 | 标识接收端设备的逻辑地址(如 10.0.0.2),用于路由转发时定位数据目标 |
选项与填充 | 可变(0~40 字节) | 可选扩展字段(如路由记录、时间戳、安全选项);填充字段为 0,用于确保头部长度为 4 字节的整数倍,满足对齐要求 |
IP 数据包结构示意图:
7.3 数据链路层 PDU:以太网帧
以太网帧是数据链路层(以太网协议)的 PDU,由"帧头(PCI)+ 数据链路层 SDU(来自网络层的 IP 数据包)+ 帧尾(PCI)"组成,总长度范围为 64~1518 字节(符合 IEEE 802.3 标准):
字段 | 长度(字节) | 作用(PCI 功能) |
---|---|---|
前导码 | 7 | 同步信号,以 0x55 重复 7 次,告知接收端即将接收数据,实现收发双方时钟同步 |
帧开始定界符 | 1 | 标识帧的正式开始,固定为 0xD5,区分前导码与后续数据 |
目的 MAC 地址 | 6 | 标识接收端设备的物理地址(网卡硬件地址),用于局域网内的帧转发定位 |
源 MAC 地址 | 6 | 标识发送端设备的物理地址,用于接收端回传响应帧(如 ARP 应答) |
类型/长度 | 2 | 双重功能:值≥0x0600 时标识上层协议类型(如 IP=0x0800,ARP=0x0806);值 <0x0600 时标识 SDU 长度 |
SDU(IP 数据包) | 46~1500 | 来自网络层的 PDU(即数据链路层 SDU),不足 46 字节时需填充(确保帧总长度≥64 字节) |
帧检验序列(FCS) | 4 | 基于 CRC32 校验算法,校验帧头+SDU 的完整性,接收端计算结果不匹配则丢弃帧 |
以太网帧结构示意图:
8. SDU 与 PDU 的工程化应用场景
理解 SDU 与 PDU 需落地到网络设计、故障排查与性能优化中。以下为典型工程场景,结合二者逻辑分析问题本质与解决方案:
8.1 网络 MTU 配置与 IP 分片问题排查
MTU(最大传输单元)是数据链路层对 PDU(帧)的 SDU 部分(如以太网帧的 IP 数据包)的最大长度限制(以太网默认 MTU=1500 字节)。当网络层 PDU(IP 数据包)长度超过 MTU 时,会触发 IP 分片,若配置不当易导致丢包。
- 问题现象 :跨 VPN 传输大文件时频繁超时、卡顿,小数据包(如
ping 1000
字节)正常; - 原理分析:VPN 隧道(如 IPsec)会在原始 IP 头部外添加隧道头部(约 20~60 字节),导致封装后的 IP 数据包总长度超过物理链路 MTU(1500 字节);若发送端设置"禁止分片(DF=1)",中间路由器会丢弃数据包;
- 解决方案:1. 在发送端将 MTU 手动设置为 1400~1450 字节(预留隧道头部空间);2. 在 VPN 网关开启"路径 MTU 发现(PMTUD)"功能,自动协商两端最大可用 MTU。
8.2 LTE 网络 RLC 层 PDU 重传优化
在 LTE 无线链路中,RLC 层(确认模式 AMD)的 PDU 重传直接影响业务时延与可靠性(如语音通话、直播)。
- 问题现象:用户在弱信号区域(如电梯、地下室)使用视频通话时,画面频繁卡顿、音视频不同步;
- 原理分析:弱信号导致 RLC PDU 传输错误,接收端通过 STATUS PDU 请求重传;若基站侧 RLC 重传次数配置过少(默认 3 次),未收到则丢弃 RLC SDU,导致上层应用(如视频)丢失数据;
- 解决方案:1. 在基站侧将 RLC 确认模式的重传次数调整为 5~8 次,平衡时延与可靠性;2. 优化 HARQ(混合自动重传请求)的重传间隔(如从 20ms 缩短至 10ms),减少重传等待时间。
8.3 传输层 TCP 窗口控制与流量优化
TCP 段的"窗口大小"字段(PDU 的 PCI 部分)是流量控制的核心,直接决定 SDU(应用层数据)的传输速率。
- 问题现象:跨地域 TCP 传输(如北京到上海)速率始终低于带宽上限(100Mbps 带宽仅能跑 20Mbps);
- 原理分析:接收端操作系统默认 TCP 接收窗口较小(如 Linux 默认 256KB),结合长距离传输的往返时延(RTT≈50ms),根据"带宽×RTT"公式,最大传输速率仅为 256KB×8 / 0.05s = 40.96Mbps,实际因拥塞控制会更低;
- 解决方案:1. 在接收端开启"TCP 窗口缩放(Window Scaling)"选项,将接收窗口扩大至 4~8MB;2. 优化 TCP 拥塞控制算法(如从 CUBIC 改为 BBR 算法),利用带宽探测提升传输速率。
9. 总结
SDU 与 PDU 是网络分层架构的"数据载体",其逻辑贯穿数据从生成到传输的全流程,可通过三句关键结论概括:
-
定义本质差异:SDU 是"上层传递的原始业务数据",仅承载信息内容;PDU 是"本层添加控制信息后的传输单元",同时承载内容与控制指令,是对等层通信的最小单位。
-
层间传递规律:"上层 PDU = 本层 SDU,本层 PDU = 下层 SDU",数据在协议栈中传递时,本质是"SDU 被封装为 PDU,再作为下层 SDU 继续传递",仅更换"控制信息外套(PCI)",核心业务数据(SDU 内容)不变。
-
操作目标:封装/解封装实现"SDU 与 PDU 的转换",是分层通信的基础;分段/拼接、分割/组合解决"数据大小与通道能力匹配"的问题,平衡可靠性与传输效率。
掌握 SDU 与 PDU 的逻辑,是理解网络分层原理、排查协议故障(如分片丢包、重传超时)、优化网络性能(如 MTU 调整、TCP 窗口优化)的关键------从以太网帧的 FCS 校验到 LTE 的 RLC 重传,从 IP 分片重组到 TCP 流量控制,本质都是二者在不同场景下的具体应用。
10. Abbreviation
- SDU(Service Data Unit,服务数据单元)
- PDU(Protocol Data Unit,协议数据单元)
- PCI(Protocol Control Information,协议控制信息)
- OSI(Open Systems Interconnection,开放式系统互联)
- TCP(Transmission Control Protocol,传输控制协议)
- UDP(User Datagram Protocol,用户数据报协议)
- IP(Internet Protocol,网际协议)
- MTU(Maximum Transfer Unit,最大传输单元)
- LTE(Long Term Evolution,长期演进)
- RLC(Radio Link Control,无线链路控制)
- PDCP(Packet Data Convergence Protocol,分组数据汇聚协议)
- MAC(Media Access Control,媒体接入控制)
- ROHC(Robust Header Compression,鲁棒性头部压缩)
- ARQ(Automatic Repeat reQuest,自动重传请求)
- HARQ(Hybrid Automatic Repeat reQuest,混合自动重传请求)
- FCS(Frame Check Sequence,帧检验序列)
- VLAN(Virtual Local Area Network,虚拟局域网)
- QoS(Quality of Service,服务质量)
- TTL(Time To Live,生存时间)
- ICMP(Internet Control Message Protocol,互联网控制消息协议)
- IGMP(Internet Group Management Protocol,互联网组管理协议)
- OSPF(Open Shortest Path First,开放式最短路径优先)
via:
- SDU 与 PDU 详解 - CSDN 博客
https://blog.csdn.net/wind19/article/details/4669637 - 网络通信 PDU 和 SDU 的区别_tcp 的 sdu-CSDN 博客
https://blog.csdn.net/zhangxiao93/article/details/51253933 - PDU(Protocol Data Unit)协议数据单元 - CSDN 博客
https://blog.csdn.net/qq_36412526/article/details/119592956 - LTE 学习笔记 ------ SDU 与 PDU_sdu lte-CSDN 博客
https://blog.csdn.net/u012800825/article/details/85291610 - LTE 数据传输解析:从应用层到物理层的旅程 - CSDN 博客
https://blog.csdn.net/dxpqxb/article/details/111997057 - 计算机网络中的 PDU 与 SDU_pdu sdu-CSDN 博客
https://blog.csdn.net/weixin_43790779/article/details/130390042 - 计算机网络 - ISO/OSI 模型各层 PDU_计算机网络 pdu-CSDN 博客
https://blog.csdn.net/m0_74078647/article/details/143449578 - 计算机网络分层结构 - 薛定谔的AC - 博客园
https://www.cnblogs.com/againss/p/18310419