首页 › deep-tech › 层层打包:数据的协议栈之旅

层层打包:数据的协议栈之旅

你在手机上发出一条微信,它穿过空气、穿过基站、穿过光纤,几百毫秒后出现在对方屏幕上。这中间没有任何一个「零件」独立完成全过程——它是一支分工严密的流水线在接力。这支流水线,就是协议栈。

上一轮我们把波束、调制这些「空气里的动作」讲清楚了。这一轮往后退一步,看全景:一条数据从应用到天线,要经过哪几道工序?每一道工序为什么存在?为什么5G还要对这支流水线动手术?

一、先看一个快递系统

把一条微信消息想象成一个包裹:

对端完全反着来:拆箱、验封条、拼大件、签收。每拆一层,就撕掉一层标签,直到还原出最初的东西。

这个类比里藏着协议栈最核心的两个机制:封装(每层加自己的「标签」)和对等通信(发送方第N层写的标签,只有接收方第N层才撕得懂)。

flowchart TD
    subgraph TX["发送端: 逐层穿衣服"]
        A1["应用: 原始数据"] --> B1["SDAP: 贴QoS标签"]
        B1 --> C1["PDCP: 加密与排序"]
        C1 --> D1["RLC: 拆成小段"]
        D1 --> E1["MAC: 排班上车"]
        E1 --> F1["PHY: 变成无线信号"]
    end
    subgraph RX["接收端: 逐层脱衣服"]
        A2["应用: 还原数据"] --> B2["SDAP: 撕QoS标签"]
        B2 --> C2["PDCP: 解密与排序"]
        C2 --> D2["RLC: 拼回大件"]
        D2 --> E2["MAC: 分流卸货"]
        E2 --> F2["PHY: 解调解码"]
    end
    F1 -->|"空口无线链路"| F2

二、为什么非要分层?

如果所有功能揉在一个「超级程序」里,也能跑通,那为什么全世界的通信系统都选择分层?

因为无线技术变得太快,而业务变得太慢。 空口从4G换成5G,调制方式全换了;但你手机里的微信、服务器上的视频站,一行代码都不用改。能做到这一点,靠的就是分层带来的「变化隔离」:每一层只依赖下一层提供的服务,只对本层的标签负责。底层天翻地覆,上层浑然不觉。

分层的第二条理由是故障定位。整条链路出问题时,逐层排查可以把问题域迅速收窄:应用层看到的只是「超时」,而工程师可以判断到底是空口信号差、调度没排上、还是核心网丢了包。

这个思想并非移动通信独创,TCP/IP、OSI七层模型都是同一哲学。5G空口协议栈可以理解为:把互联网的分层思想,针对「空气里传数据」这件事重新裁剪了一遍——空气干扰大、时延敏感、终端在移动,所以每一层都长出了自己的特色器官。

三、用户面五层楼:逐层看设计动机

5G用户面(真正跑数据的那个面)从上到下是五层:SDAP → PDCP → RLC → MAC → PHY。我们一层层看「它为什么长这样」。

1. SDAP:新来的调度台

SDAP是5G新增的一层,4G里根本没有。它只干一件事:把核心网来的「QoS流」映射到空口的「无线承载(DRB)」上,并打上QFI标签。

为什么5G需要这一层?因为5G的QoS模型变了。4G里一条承载从头到尾绑死,业务和管道基本一一对应;5G要支撑切片和多样化的业务承诺(关于QoS承诺本身,此前文章详细讲过,这里不展开),同一个终端可能同时跑着「说话不能卡的视频通话」和「晚一秒无所谓的下载」。核心网用QoS流标记每个数据包的待遇等级,但空口的无线承载是有限的——SDAP就是中间的翻译官兼分票员:决定哪股流坐哪条管道,并在包头贴上身份牌,让基站的调度器认得出谁是谁。

2. PDCP:安全与秩序的管家

PDCP的职责清单最长:加密、完整性保护、头部压缩、序号管理、重排序、去重复。它的存在回答了两个问题:

安全问题:空气是共享介质,谁都能听、谁都能伪造。PDCP对数据进行加密(别人听不懂),对信令做完整性保护(别人改一个比特都会被发现)。

秩序问题:数据在无线链路上可能乱序到达、可能重复投递。PDCP给每个包编上序号,接收方按序号重新排队,把一个整齐的序列交给上层。

注意一个关键细节:重排序这个职责,在5G里是从RLC搬上来的——这是5G对协议栈动的一次大手术,后文细说。

3. RLC:精简后的搬运工

RLC的活儿听起来朴素:把上层的包分段(太大的拆小以适配空口一次能运的块大小),把下层收到的小段重组回大包。它有三种工作模式:透明模式(TM,啥也不加,广播信道用)、非确认模式(UM,丢了就丢了,语音视频常用)、确认模式(AM,要回执)。

但对比4G,今天的RLC是被削过权的:它不再负责重传(ARQ),也不再负责重排序。为什么敢砍?因为重传的活儿被下面的MAC层HARQ接管了大部分(快速重传在更低层完成,时延小得多——软合并的原理此前文章讲过),而万一HARQ几轮都救不回来,PDCP可以兜底。砍掉这两项,数据包在RLC层「不过夜」,直进直出,正是为了压时延。

4. MAC:空口的交通调度台

MAC层是无线资源真正「花出去」的地方。它每1毫秒(一个子帧级的时间单位)都要回答三个问题:这个时刻让哪个用户上车?让他的哪股业务先上?给他多大的车?

具体器官包括:动态调度器、逻辑信道优先级处理(把同一用户的不同业务按优先级打包复用)、缓存状态报告(手机向基站汇报「我还有多少货没运」)、以及HARQ实体(快速重传,配合软合并)。

为什么调度必须在MAC做? 因为空气里的机会转瞬即逝:信道质量每几毫秒就变一副面孔,只有贴近物理层的MAC才能拿到最新的「路况」,实时决策。离天线越近,反应越快——这是移动协议栈和互联网协议栈最大的分工差异。

5. PHY:变水的最后一步

PHY负责信道编码(LDPC/Polar,给数据加冗余抗差错)和调制(把比特变成子载波上的幅度相位,即星座图上的点——这两道工序此前文章已深入讲过,不再重复)。再往下,就是OFDM把数据铺到一个个正交子载波上,经天线发出去。

一句话总结五层分工:

层次 一句话职责 关键动作 为什么必须有它
SDAP QoS翻译官 QoS流→DRB映射、打QFI标签 5G多业务共存,需要身份分票
PDCP 安全管家 加密、完整性、压缩、重排序 空口公开易窃听,链路会乱序
RLC 搬运工 分段/重组,三种模式 包大小与空口块大小不匹配
MAC 调度台 调度、复用、HARQ、缓存上报 无线资源瞬息万变,须就近决策
PHY 变信号 编码、调制、OFDM 比特无法直接飞上天

四、封装:每层只写自己的标签

封装的通用形式可以写成一个递归式:

$$P_n = H_n \,|\, P_{n-1}$$

第 $n$ 层的协议数据单元 $P_n$,等于本层的头部 $H_n$ 拼上($|$ 表示拼接)上一层的完整数据单元 $P_{n-1}$。层层嵌套,像俄罗斯套娃。

flowchart TD
    A["原始IP包"] --> B["SDAP加QFI标签"]
    B --> C["PDCP加头: 加密压缩"]
    C --> D["RLC加头: 标记分段"]
    D --> E["MAC加头: 复用多业务"]
    E --> F["PHY加校验与编码"]
    F --> G["调制后上天线"]

每一层的头部只有对端的同一层能解读:基站收到信号,PHY解调解码后把MAC头交给MAC层看,MAC层拆掉自己的头把RLC PDU递给RLC层……任何一层都不越权处理别层的字段。这就是「对等通信」:逻辑上,发送端PDCP和接收端PDCP在隔空对话,尽管这条对话链物理上要经过中间所有层。

顺便算一笔开销账。若每层平均加 4~8 字节头,五层叠下来头部开销约二三十字节;对一个 1500 字节的大包,效率损失不足 3%:

$$\eta = \frac{L_{payload}}{L_{payload} + \sum H_i}$$

但对语音这类几十字节的小包,同样多的头部占比就高得惊人——这也是为什么PDCP要做头部压缩:把IP/UDP/RTP那一大串重复出现的字段压成几个比特,对小包业务省下来的都是真金白银的空口资源。

五、控制面:RRC与NAS的双层行政

跑数据的是用户面,跑「管理指令」的是控制面。控制面在五层楼之上还有两个信令层:RRC和NAS。它们经常被初学者混为一谈,其实管辖范围完全不同。

RRC(无线资源控制)住在基站里,是「本地市政厅」:管广播消息、连接建立、测量配置、切换命令——一切与这条无线连接本身有关的事。RRC信令到基站就落地了,基站自己消化。

NAS(非接入层)住在核心网侧(对端是AMF),是「中央政务系统」:注册、鉴权、寻呼触发、会话管理——这些事务跨越无数基站,不能依赖任何一条具体的无线连接。

sequenceDiagram
    participant U as 手机
    participant G as 基站
    participant A as 核心网AMF
    U->>G: NAS消息装在RRC里上送
    Note over G: 只拆RRC信封<br/>不看NAS内容
    G->>A: 转发NAS消息
    A->>G: 下发NAS响应
    G->>U: RRC下行消息携带NAS
    Note over U: 手机NAS层拆封处理

这张图里基站的处境很有意思:它是个只看信封不看信的邮差。NAS消息穿基站而过,基站既不解读也不修改。为什么要这样设计?因为移动性——手机从北京基站挪到上海基站,本地市政厅换了一茬又一茬,但「你在网内注册着」这个国家档案不能作废。把长效事务从基站剥离、收归核心网,切换和移动性才可能做到对业务无感。

NAS还有自己独立的一套加密和完整性保护,与PDCP的安全互为备份:就算某个环节的空口安全失效,端到端的核心网安全仍守住最后一道门。这种「安全不押注在单一环节」的冗余思想,和此前讲过的鉴权密钥分层一脉相承。

六、5G对4G协议栈动了哪三刀

对比4G,5G的协议栈有三处标志性改造,每一处背后都是同一个动机:更快。

对比项 4G LTE 5G NR 设计动机
SDAP层 不存在 新增,QoS流映射到DRB 支撑切片与灵活QoS分票
RLC层 含ARQ重传与重排序 砍掉ARQ与重排序,只留分段重组 减少层级级联,压低时延
PDCP层 重排序职责较轻 接管重排序、去重复,可对用户面做完整性保护 可靠性上收,RLC轻装疾行
头部压缩 ROHC ROHC并扩展以太网头压缩 适配更多业务形态

第一刀,SDAP的诞生,源于QoS模型重构:5G核心网的QoS流数量可以远多于无线承载,映射关系必须可配置、可动态调整,于是新增一层专职「分票」。

第二刀,RLC瘦身。4G时代数据包丢了要等RLC的ARQ慢速重传,几轮下来时延雪崩。5G把重传主力下沉给MAC层HARQ(毫秒级,还能软合并增益),RLC只留分段重组。数据在RLC层的停留时间被压到最短。

第三刀,PDCP扩权。RLC不管排序了,乱序问题就得有人兜底——PDCP凭序号重排。重排序窗口与序号长度相关:若序号长 $K$ 比特,窗口宽度为

$$W = 2^{K-1}$$

序号空间的一半。窗口太小会误判旧包为新包,太大则占用缓存——一半空间是序号回绕安全性的经典取舍,这个规则从TCP到移动通信一以贯之。

三刀合起来看,是一个清晰的架构取向:功能向两端集中,中间极简。中间的RLC越轻,数据流动越快;两端的PDCP(可靠与安全)和MAC+PHY(效率与速度)各司其职。

七、协议栈怎么住进真实的基站

分层不仅是一条逻辑流水线,还直接决定了物理设备怎么造。5G基站可以拆成两截:CU(集中单元)和DU(分布单元)。标准允许多种切分部署,最常见的切法是:SDAP和PDCP住在CU,RLC、MAC、PHY住在DU。

flowchart TD
    subgraph CU["CU: 集中单元"]
        P1["SDAP"] --> P2["PDCP"]
    end
    subgraph DU["DU: 分布单元"]
        P3["RLC"] --> P4["MAC"]
        P4 --> P5["PHY"]
    end
    P2 -->|"F1光纤接口"| P3
    P5 --> ANT["天线发射"]

为什么恰好切在PDCP和RLC之间?因为这条分界线在工程上最划算:DU要贴着天线部署(调度和PHY对时延极其敏感,离天线远几公里就玩不转),必须放在站点机房;而PDCP以上的功能对实时性不敏感,可以集中到几公里外的机房池,多个DU共享一套CU——安全、压缩这些「重脑力」活儿集中做,省钱好管理。协议栈的层与层,就这样变成了机房与机房的分界线。

八、现网实战:这套知识用在哪

抓包定位问题域。 排障的第一问是「我在哪一层抓的包」:在核心网N3接口抓到的是GTP-U封装的包,在CU-DU之间抓到的是F1传输的包,在空口侧分析的是MAC/PHY行为。同一个用户投诉,三个位置看到的现象可能完全不同——不知道协议栈,就不知道自己看的是哪一层「套娃」。

时延毛刺排查。 双连接或载波聚合场景下,数据可能从两条支路到达,PDCP重排序需要等齐序号才能交付。如果一条支路质量差,另一条支路明明有数据也要干等——表现为业务间歇性卡顿,而信号强度看起来「明明很好」。这时要看的不是信号,而是PDCP序号跳变。

QoS不生效排查。 业务明明签了高优先级,实测却和普通业务抢不到资源。常见病根在SDAP:QoS流没有映射到正确的DRB,或者QFI标签没打上,调度器「认不出」这个包的待遇。检查映射配置,往往一击即中。

两个常见误解。 一是以为「RLC确认模式就万无一失」——5G的RLC已经不做重排序,最终有序交付靠PDCP,只盯RLC统计会误判。二是以为「语音业务也走确认模式最稳」——实际上语音这类小包实时业务,现网普遍配置非确认模式:重传一次的到来包早已过时,宁可丢帧也不要迟到,这是时延与可靠性的经典取舍。

常见问题

Q: QoS流和DRB到底是什么关系,谁管谁? A: QoS流是核心网视角的「待遇等级」,DRB是空口视角的「物理管道」。SDAP负责把前者装进后者,可以多对一(几股流共用一条管道),也可以一对一。核心网只认QoS流,空口只认DRB,SDAP是两者之间唯一的翻译。

Q: RLC不重传了,可靠性谁负责? A: 两道保险。第一道是MAC层HARQ,毫秒级快速重传,配合软合并增益,解决绝大多数丢包;第二道是PDCP,在级联场景下可依据状态报告补发漏网之鱼。层层设防,但每一道的时延代价不同,靠前的越快越粗,靠后的越慢越细。

Q: NAS和RRC都是信令,为什么要分成两层? A: 管辖范围不同。RRC管一条无线连接的「本地事务」,生命周期跟着连接走;NAS管终端在网络里的「国家档案」,生命周期跟着注册状态走。分开后,手机换一百个基站,NAS状态纹丝不动——移动性管理的地基就在这里。

Q: 这个协议栈和TCP/IP分层是什么关系? A: 同一哲学的两个剖面。TCP/IP解决「异构网络互联互通」,5G空口栈解决「空气里高效可靠地传」。两者在IP包处衔接:核心网以下,空口栈负责把IP包可靠快速地送过无线段,出了空口,IP层接着走自己的路。

Q: 为什么重排序放在PDCP而不是继续留在RLC? A: 把功能上收一层,中间层就少一次「收下来、排好、再交上去」的级联处理,时延和处理开销同时下降。而且PDCP看得更全——跨载波、跨支路的数据都汇聚于此,由它统一排序,天然覆盖多连接场景;留在RLC反而各排各的,拼不出全局顺序。

参考来源

  1. 5G NR - Wikipedia — NR协议栈分层与SDAP等新特性的权威概览
  2. ShareTechnote: 5G/NR Protocol Stack — 逐层功能图解与LTE/NR对比的工程向整理
  3. 3GPP官网 — 各层技术规范的原始出处(本文按科普定位不引规范编号)
  4. 《通信原理》(樊昌信 等)— 分层封装、序号与窗口等数字通信基础思想
  5. 《移动通信原理》(啜钢 等)— 移动协议栈与无线资源管理的教材体系

本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护,聚焦5G/6G核心网、3GPP标准解读、通信前沿技术深度分析。 出版作品有《5G核心网原理与实践》《IMS原理与实践》等4本通信专业书籍。知识星球「51学通信」提供深度技术答疑和行业洞察。

[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。

51学通信知识星球海报-扫码加入