首页 › deep-tech › 图解5G协议栈:层层封装之旅

你有没有想过:你在微信发出的一句话,是怎么穿过钢筋混凝土、穿过几百米到几公里的空气,准确落到基站天线上的?它并不是“一句话”过去的,而是一个被反复打包、贴标签、上锁、拆分、调制的数据包。而完成这一整套流程的“流水线”,就是协议栈。

这篇我们把5G的协议栈从顶到底走一遍。目标不是背下每一层的缩写,而是理解两件事:每一层为什么存在,以及数据每经过一层发生了什么。

一、为什么协议要分层:寄快递的智慧

先不讲5G,先讲寄快递。你要把一台相机寄给朋友,实际发生的事是:

注意两个关键点:每层只负责自己的包装,且拆包顺序和打包顺序严格相反;你和你的朋友只关心相机本身,但快递系统的每一环都在为它服务——这就是分层。

通信协议栈把这个思想形式化为三个概念:

  1. 分层:每层只做自己擅长的事,通过明确的接口向上一层提供服务。
  2. 对等实体:发送方的第N层和接收方的第N层,逻辑上是“同一部门的同事在对话”——比如手机的加密层和基站的加密层,它们之间约定的加密规则,中间的层完全不需要理解。
  3. 封装与解封装:上层交给下层一个数据单元(SDU),下层加上自己的头部变成自己的数据单元(PDU),再整体作为更下层的SDU往下传。收到时反过来逐层剥头。

$$L_{PDU} = L_{SDU} + L_{header}$$

一个朴素的公式,但它解释了后面所有的“旅行”:数据每下一层就“变重”一点,接收端每上一层就“变轻”一点。

为什么要费这个劲?因为无线通信极其复杂——信道在变、用户在移动、业务五花八门。如果写成一块巨石般的单一协议,任何改动都会牵一发动全身。分层之后,调制方式换代了不影响加密算法升级,调度策略优化了不碰重传逻辑。分层本质上是一种“关注点分离”的工程哲学,和软件工程里的模块化是同一个思想。

二、5G用户面协议栈全景:五层流水线

5G用户面(也就是你的业务数据)的空口协议栈,从上到下是:SDAP → PDCP → RLC → MAC → PHY。下图是手机与基站两端镜像的栈,以及数据在它们之间的流动:

flowchart TB
    subgraph UE["手机协议栈"]
        direction TB
        U1["IP数据包"] --> U2["SDAP"]
        U2 --> U3["PDCP"]
        U3 --> U4["RLC"]
        U4 --> U5["MAC"]
        U5 --> U6["PHY"]
    end
    subgraph GN["基站 gNB"]
        direction TB
        G6["PHY"] --> G5["MAC"]
        G5 --> G4["RLC"]
        G4 --> G3["PDCP"]
        G3 --> G2["SDAP"]
        G2 --> G1["GTP-U隧道"]
    end
    U6 -->|空口电波| G6
    U3 -.->|加密的对等搭档| G3
    G1 --> N["核心网UPF"]

先给一张总表,建立整体感,再逐层拆解:

层 核心职责 一句话类比 5G的显著变化
SDAP QoS流到无线承载的映射 分拣台:贴上「加急/普通」标签 5G全新增加,4G没有
PDCP 加密、完整性保护、头压缩、按序递交 上锁+贴封条+抽真空 用户面完整性保护、按序递交从RLC挪来
RLC 分段、重传 拆大件+催签收 砍掉重排序和级联,只留分段与ARQ
MAC 调度、复用、混合重传 装车调度员:谁先上车 与4G类似,按槽调度更密
PHY 编码、调制、多天线处理 把货物变成电波 灵活参数集、更宽频谱

SDAP:为数据贴上「服务等级」标签

SDAP是5G新增的一层,4G协议栈里根本没有它。为什么5G要专门加一层?

4G时代,服务质量(QoS)和无线承载是绑死的——一条EPS承载从核心网一直铺到手机,QoS属性和承载一体。这种设计简单,但不够灵活:业务稍微变一下QoS需求,就要动整条承载链路。

5G把这件事解耦了:QoS流(用QFI标识)负责描述“这股数据需要什么服务等级”,数据无线承载(DRB)负责描述“数据实际在空口哪条通道上跑”。两者之间需要一个“分拣台”来完成映射——这就是SDAP的全部工作。

一个细节很能体现设计者的克制:SDAP头不是永远存在的。只有配置了动态QoS映射时,数据包才会带上SDAP头;如果映射关系是静态配好的,这层头干脆省掉——毕竟空口的每一个字节都是宝贵的频谱资源。

PDCP:安全与秩序的守门人

PDCP是协议栈里“管辖权”最广的一层,四件事都归它管:

第一,加密与完整性保护。 手机和基站之间的PDCP层是一对“加密对等搭档”(图1中的虚线)。值得注意的一个演进:4G时代用户面数据只有加密、没有完整性保护——篡改了数据接收方也不知道;5G给用户面也加上了完整性保护,防篡改能力明显增强。加密的具体算法细节不在本文展开,这里只需要记住它在协议栈中的位置:PDCP。

第二,防重放。 加密需要序号,5G用一个叫COUNT的计数器来保证“同一个密文包不会被当成新包用第二次”:

$$COUNT = HFN \times 2^{L_{SN}} + SN$$

其中SN是包序号,HFN是超帧号。SN本身只有十几比特,很快数满一轮,HFN负责记住“已经数过几轮”——相当于手表的秒针和分针的关系。

第三,按序递交与重排序。 这里有个重要的架构变化:4G时代重排序是RLC的活,5G把它挪到了PDCP。为什么?因为重传可能发生在RLC层,但乱序的修复只需要做一次、而且应该在最靠近上层的地方做。功能收拢到一处,避免了两层各排各的队、结果越排越乱的尴尬。

第四,头压缩(RoHC)。 这个功能对语音业务是救命的。一帧编码后的语音可能只有三四十字节,而IP/UDP/RTP的头就能占四十多字节——不压缩的话,一半以上的空口资源在传“信封”而不是“信”。RoHC能把头压到几个字节,压缩比惊人。

RLC:拆包裹与催签收

RLC干两件事:分段与重传(ARQ)。

分段很好理解:PHY的传输块有大小限制(由调度决定),上层来的包如果太大,RLC负责切成小块,接收端再拼回去。就像超过货车限重的货物要拆成两票发运。

重传则有三种工作模式:

“语音为什么用UM”是理解无线设计的绝佳案例:语音包的有效期只有几十毫秒,重传一个迟到的包到达时,通话时序早就过去了,对一个过期的包做完美修复,不如让它体面地丢掉。丢一个包听感上只是轻微的“沙”声,延迟堆积却是所有人都能感知的卡顿。

5G对RLC做了一次“瘦身”:砍掉了重排序和级联(把多包拼成一个大包再切),只保留分段。原因前面提过——重排序移交PDCP;级联取消则让每个重传单元更小、更独立,出错重传的代价更低,还顺带降低了芯片处理复杂度。

MAC:装车调度员

如果说上层关心的是“数据对不对”,MAC层关心的就是“资源给谁、什么时候给”。它是整个空口最忙碌的一层:

PHY:把比特变成电波

物理层是唯一真正“接触”电波的一层:拿到MAC给的传输块(TB),先附上CRC校验,然后信道编码(加冗余抗噪声)、交织、调制(把比特映射到星座点)、多天线处理,最后映射到具体的时频资源上发射出去。空口调度、HARQ软合并、波束赋形这些话题都发生在这一层或与之紧耦合,这里不再展开——本文的视角是它在栈中的位置:一切上层的抽象,到这里都必须还原成具体的时频资源和波形。

三、一次下行的完整旅程

把前面所有层串起来,看一个1400字节的IP包(比如网页的一小块内容)从核心网到手机的全过程:

flowchart TD
    P0["IP数据包到达基站"] --> P1["SDAP:打上QFI服务等级标签"]
    P1 --> P2["PDCP:头压缩并加密,加序号头"]
    P2 --> P3["RLC:超出调度块就分段"]
    P3 --> P4["MAC:与其他用户数据复用进传输块"]
    P4 --> P5["PHY:加CRC、编码、调制"]
    P5 --> P6["变成符号从天线发出"]

手机收到后,从PHY往上逐层剥头、校验、解密、重组、重排,还原出原始IP包交给应用——发送端每一层的包装,正好是接收端同一层的解包说明书。

算一笔开销账就能看出各层设计的苦心:1400字节的大包,五层头部合计只有十来个字节,开销不到2%,可以忽略;但一帧30多字节的语音小包,不压缩时头部开销可能超过100%。这就是为什么PDCP的头压缩对语音是刚需,也解释了为什么实时小包业务的空口效率永远是工程难点。

四、控制面:RRC与NAS的分工

以上讲的都是“运货”的用户面。管理这条流水线本身的信令走的是控制面,核心是两个协议:

RRC(无线资源控制)——手机和基站之间的“总管家”:广播系统消息、寻呼、建立/释放连接、配置测量、下发各层参数。你手机里SDAP怎么映射、PDCP用什么加密配置、RLC用UM还是AM,全是RRC信令配置出来的。

NAS(非接入层)——注意名字里的“非接入”:它的对等实体不是基站,而是核心网的AMF。注册、鉴权、寻呼响应、会话管理这些涉及“你这个人”的管理,都由NAS负责。基站对NAS消息只是搬运工——把它装在RRC信令的“信封”里转发,自己不读内容:

flowchart LR
    UE["手机 UE"] -->|RRC信令| G["基站 gNB"]
    G -->|RRC信令| UE
    G -->|NAS装在RRC里转发| A["核心网AMF"]
    UE -.->|NAS的逻辑对等端| A

这张图请多看一眼,它是无数工程师踩坑的地方:在基站侧抓RRC信令能看到NAS内容,但NAS的决策逻辑在AMF——注册被拒时,基站信令里只能看到“AMF让拒的”,原因要到核心网侧找。

RRC的三种状态:手机的三种睡姿

5G引入了一个新的RRC状态,这是控制面最值得讲的演进:

flowchart LR
    S1["RRC IDLE 深睡"] -->|有业务发起 建立连接| S3["RRC CONNECTED 满速运转"]
    S3 -->|释放连接| S1
    S3 -->|数据间歇 挂起上下文| S2["RRC INACTIVE 小憩"]
    S2 -->|数据再来 快速恢复| S3
    S2 -->|移动出通知区| S1
状态 上下文在哪 手机能收什么 恢复代价
IDLE 网络只有粗略位置(跟踪区) 寻呼 完整建连,信令多、时延长
INACTIVE 锚点基站完整保留 RAN侧寻呼 快速恢复,几条信令搞定
CONNECTED 服务基站完整保留 一切 无需恢复,即刻收发

4G只有“在线/离线”两态,间隙性小数据业务(比如心跳、推送)很尴尬:保持连接费电费资源,断开再连信令又太重。5G的INACTIVE态是折中方案——连接挂起但上下文不销毁,数据再来时凭一个恢复标识快速唤醒,基站侧“记忆”都还在。这是5G支撑海量物联和突发小包业务的关键设计之一。

五、基站被切开的年代:CU/DU与协议栈放置

5G还做了一件4G没做的事:把基站从一台“一体机”切成了分布式架构。功能上分成CU(集中单元)、DU(分布单元)、RU(射频单元)三级,而切分线正是画在协议栈上:

为什么要切?三个理由:

  1. 集中带来统计复用:PDCP以上集中部署后,多个DU的用户可以在CU汇聚,干扰协调、双连接切换都在CU内完成,快得多。
  2. 各自按需伸缩:CU适合云化虚拟化跑在通用服务器上,DU贴近天线部署满足实时性,硬件形态各得其所。
  3. 解耦接口:CU/DU之间的接口标准化后,设备可以混搭部署。标准也允许多种切分和部署方式,具体形态以各厂家官方文档为准,但“切在PDCP和RLC之间”是现网的主流选择——因为RLC以下对时延极其敏感,必须留在天线附近;PDCP以上相对从容,可以放到机房甚至云上。

理解协议栈,你就理解了5G网络架构演变的底层逻辑:所谓架构演进,很大程度上就是在回答“每一层应该放在哪里”。

六、实战连接:这套知识在现网哪里用得上

场景1:丢包定位。 在核心网N3接口抓包,看到的是GTP-U隧道里封装的原始IP包——也就是还没进空口协议栈“加工”前的样子。如果N3口有包、终端收不到,问题在空口协议栈(逐层排查:是RLC重传耗尽,还是HARQ残留误块?);如果N3口就没有,问题根本不在无线侧。一抓一比,故障域立刻二分。

场景2:QoS不生效。 用户投诉“签约的加速通道没效果”,排查链路是:核心网下发的5QI有没有映射成QFI → SDAP把这个QFI映射到了哪个DRB → 该DRB的RLC模式(AM还是UM)和调度优先级对不对。任何一环断了,QoS就是纸面文章。

场景3:掉话分析。 大量掉话的根因是RLC达到最大重传次数触发无线链路失败。看到RLC重传到达上限的计数器飙升,方向就该转向覆盖、干扰或切换参数,而不是傻查传输。

场景4:空口信令看不懂。 排查问题时发现空口抓包里PDCP往上是密文——对,加密就在PDCP,这是分层知识直接告诉你的事实。想看明文得用诊断密钥解密,而不是怀疑抓包工具坏了。

常见误解清单:

常见问题

Q: HARQ和RLC都是重传,为什么不能合并成一层? A: 两者的设计目标差了一个数量级。HARQ在MAC层,重传在毫秒内完成,配合软合并,目标是用最小代价把误块率压到可接受;RLC ARQ在确认模式下兜底,处理HARQ几轮都没救回来的“顽固错误”。合并到一层意味着要么所有错误都用慢速重传(时延爆炸),要么都用快速重传(可靠性不够)。梯度分工是时延与可靠性的最优折中。

Q: 5G为什么要把重排序从RLC挪到PDCP? A: 因为按序递交只需要做一次,而且应该在最靠近上层的地方做。4G时代RLC和PDCP都可能牵涉重排,两层各维护状态机既浪费又容易出bug。5G收拢到PDCP后,RLC变成纯粹的“分段+重传”简单模块,处理时延更低,也让CU/DU切分后的功能归属更清晰。

Q: SDAP、QFI、5QI、DRB是什么关系? A: 5QI是“服务等级的说明书”(时延、误码率要求是多少);QFI是某股数据的标签(“你属于哪个等级”);SDAP拿着QFI决定数据装进哪条DRB;DRB是空口上实际跑车的通道。一个类比:5QI是快递公司的服务标准,QFI是包裹上贴的加急标签,SDAP是决定加急件走哪条专线车道的分拣台,DRB就是那条专线。

Q: INACTIVE状态和4G的连接挂起有什么本质区别? A: 4G厂商私有的挂起方案各自为政,跨厂商切换后状态就丢了。5G的INACTIVE是标准化的:锚点基站保留完整上下文、有统一的恢复标识和RAN寻呼区机制,网络内移动时状态可迁移。对用户是更快的恢复时延,对运营商是更少的信令风暴风险。

Q: 为什么说“理解了协议栈就理解了5G架构演进”? A: 因为CU/DU切分、核心网重构、边缘计算,本质上都在回答同一个问题:每一层协议应该物理上放在哪里、逻辑上归谁管。协议栈是5G所有架构决策的坐标系。

参考来源

  1. ShareTechnote — 经典通信工程学习站,5G各协议层逐层笔记与图示

本文由「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学通信知识星球海报-扫码加入