<!-- title: 图解随机接入RACH四步握手 -->

# 图解随机接入：手机与基站的第一次握手

> 说明：本篇写作时在线检索通道受限，文中技术内容基于《通信原理》与主流 5G NR 教材的通识内容整理，参考来源以经典教材和长期稳定的权威站点为主。

## 一、从一个尴尬的场景说起

想象你走进一个巨大的礼堂，主持人不认识你，你也不知道自己该坐哪、什么时候能发言。你唯一能做的，是按照约定走到指定位置，**举一次手**，等主持人看到你、把话筒递给你，你才能说出自己的名字，正式加入会议。

手机开机入网的第一步，几乎就是这个过程。下行方向（基站→手机）其实不需要“举手”：基站不停地在广播信道上喊话（同步信号、系统消息），手机只要听就行。但上行完全不同——基站根本不知道：

1. **你在哪**：距离基站 300 米还是 3 公里？传播时延差了 10 微秒，上行如果不同步，所有用户的信号会在基站接收端“叠罗汉”，互相踩踏。
2. **你何时想说话**：手机不会预先告诉基站“我开机了”。上行时刻都没有专属资源。
3. **你是谁**：连接还没建立，基站连你的临时标识都没有。

所以必须设计一个**不需要任何先验信息、任何时刻都可以发起、且不会造成混乱**的上行通道——这就是**随机接入信道（RACH，Random Access Channel）**。“随机”二字，指的是发起时机和所用的前导码由手机自主随机选择，基站事先无从知晓。

> 顺带一提，本系列此前讲过“定时提前（TA）是拉住上行同步的绳子”——而随机接入，正是基站**第一次量出这根绳子长度**的地方。Msg2 里下发的 TA，就是这根绳子的初始长度。

随机接入不只是开机用。它至少在这些场景反复出现：

| 触发场景 | 说明 |
| --- | --- |
| 初始接入 | 开机/飞行模式解除后从空闲态入网 |
| RRC连接重建 | 无线链路失败后重新找回连接 |
| 切换 | 到达新小区后需要取得上行同步 |
| 失步后上行数据到达 | 连接态但TA已失效，有数据要发 |
| 上行失步时被寻呼 | 收到寻呼后回网络“我在” |
| 波束失败恢复 | 所用波束被遮挡后换波束重新报到 |

可以看到，**切换能否成功、寻呼响应是否及时，底层都卡在 RACH 上**。现网无线侧投诉中“上网慢”“刷不出页面”，相当一部分最终定位到的是 RACH 环节的问题。这是它值得每个无线工程师吃透的原因。

## 二、核心问题：敲门暗号该怎么设计？

### 2.1 设计约束

手机在 Msg1 里发送的不是普通数据，而是一段固定的、已知的序列，称为**前导码（Preamble）**。它要同时满足几个苛刻的条件：

- **基站事先不知道谁来、何时来**，所以检测必须是“盲检测”；
- **很多手机可能同时敲同一扇门**，序列之间必须互不干扰；
- 手机功率有限，序列最好是**恒包络**，功放不用来回切换增益；
- 最好还附带一个功能：**顺手量出传播时延**，一举两得。

### 2.2 答案：ZC 序列

通信理论给出过一个近乎完美的答案——**Zadoff–Chu 序列**。它的数学形式是：

$$x_u(n) = e^{-j\pi u n(n+1)/N_{ZC}}, \quad n = 0, 1, \dots, N_{ZC}-1$$

其中 $u$ 是根序列索引，$N_{ZC}$ 是序列长度。它有三条对随机接入至关重要的性质：

1. **恒包络**：幅度恒定为 1，只有相位在转，对手机功放非常友好；
2. **理想周期自相关**：与其自身的循环移位版本做相关运算，除对齐点外处处为零；
3. **不同根序列之间互相关近似为零**：$u$ 不同的两根序列，互相看对方就像看噪声。

第 2 条是整个检测机制的灵魂。由于循环移位彼此正交，同一个根序列可以通过**取不同的循环移位（循环偏移量，工程参数记作 nCS）** 派生出多个互相正交的“暗号”。每个小区从根序列出发，派生出 **64 个**前导码分配给用户。

**为什么是 64 个？** 这是一个典型的工程折中：前导码太少，两个用户撞号的概率高，冲突频繁；太多，则需要的根序列和循环移位组合变多，检测器要做的相关运算次数暴增，还要留出循环移位作为保护间隔。64 是“冲突概率可接受、检测复杂度可承受”的平衡点。

### 2.3 基站怎么“听见”敲门声：相关检测

基站收到 PRACH 时频资源上的信号后，把它分别与所有候选前导码（根序列 × 循环移位）做相关运算：

$$R_u(\tau) = \sum_{n} r(n) \cdot x_u^{*}(n - \tau)$$

如果某个前导码真的到达了，对应的 $R_u(\tau)$ 会出现一个**尖锐的相关峰**。这个峰携带两份信息：

```mermaid
flowchart TD
    A["PRACH时域接收信号"] --> B["与候选前导码逐一做相关"]
    B --> C{"是否存在超门限的相关峰"}
    C -->|无峰| D["判定无人接入 继续监听"]
    C -->|有峰| E["峰对应的移位编号 给出前导码ID"]
    E --> F["峰在时间轴上的偏移 换算环路时延"]
    F --> G["生成定时提前 并用RA-RNTI下发响应"]
```

**峰值序号告诉基站“用的是哪个暗号”，峰值位置告诉基站“敲门的人离我多远”**——TA 就是从这里第一次量出来的。一次相关检测，同时完成身份识别和距离测量，这正是选择 ZC 序列“为什么这样设计”的深层原因。

### 2.4 前导码格式：长度决定半径

前导码不是一个固定长度的东西。5G NR 沿用了长短两族格式：

| 属性 | 长格式前导码 | 短格式前导码 |
| --- | --- | --- |
| 序列长度 | 839 | 139 |
| 子载波间隔 | 1.25 / 5 kHz | 15 / 30 / 60 / 120 kHz |
| 典型适用场景 | 广覆盖大小区、低频段 | 常规宏站、小站、毫米波高频段 |
| 重复次数 | 单次长序列 | 短序列连续重复多次 |
| 波束扫描适配 | 较弱 | 强（可与波束轮扫对齐） |

直观理解：**序列越长，时间上铺得越开，能容纳的时延不确定范围越大**，所以长格式天然服务大半径小区（山区、海面覆盖）；短格式短小灵活，能塞进波束赋形时代的各种上行时隙里，还能重复叠加积累能量。

前导码前面还套了一段**循环前缀（CP）**，作用有二：对抗多径扩展；同时充当“时延不确定保护窗”——只要手机的传播时延落在这个窗口内，基站的相关峰就不会被糊掉。**CP 和保护间隔的长度，反过来决定了小区的最大支持半径**，这就是根序列与 nCS 规划时反复计算半径的由来。

另外一个工程细节：手机高速移动会产生多普勒频移，让接收序列的“转速”不再严格匹配本地副本，相关峰会分裂、变矮。为此标准设计了**受限集（restricted set）**前导码——通过限制允许的循环移位，让检测器能对多普勒造成的频偏进行补偿。**高铁、沿江沿湖高速场景的根序列规划，必须用受限集**，这是现网规划中一个经典易错点。

## 三、波束时代的敲门姿势：SSB 与 RO 的配对

5G 引入大规模波束赋形后，基站下行不再是全向“广播喇叭”，而是轮流朝各个方向发射同步信号块（SSB，可理解为一束束定向探照灯）。这就带来一个新问题：**手机看到了第 3 束灯，怎么让基站知道它是被第 3 束灯照到的？**

设计答案非常巧妙：**把 PRACH 时频资源位置（RO，RACH Occasion）和前导码编号，与 SSB 编号建立固定映射**。手机先测量各 SSB 的参考信号接收功率（RSRP），选最强的一束；再按映射表，在与这束 SSB 绑定的 RO 上、用绑定的那组前导码发送 Msg1。

```mermaid
flowchart TD
    A["UE测量各SSB的RSRP"] --> B["选定最强的一束SSB"]
    B --> C["查SSB与RO及前导码组的映射关系"]
    C --> D["在对应RO上用对应组内随机选一个前导码"]
    D --> E["基站收到后反查映射 推断UE面向哪条下行波束"]
    E --> F["后续Msg2 Msg4用该波束对准UE发送"]
```

于是**前导码 + 时频位置 = 一份隐式的“我看的是哪盏灯”的登记表**，基站无需任何额外信令就能选对下行发射波束。理解了这一点，你就理解了现网排查中的一个重要逻辑：**某几个 SSB 对应的 RACH 失败集中偏高，往往指向那几条下行波束方向上有新建遮挡（如广告牌、临时建筑），而不是 RACH 参数本身的问题**。

## 四、四步握手：竞争接入全流程

前导码只有 64 个，而用户成千上万，**两个手机选到同一个前导码、在同一个 RO 上发送（冲突）在所难免**。整套流程的设计核心就是：先快速放行，再事后验明正身。这就是**竞争型随机接入（CBRA）**的四步握手：

```mermaid
sequenceDiagram
    participant UE
    participant gNB
    Note over UE: 选定SSB对应RO并随机挑一个前导码
    UE->>gNB: Msg1 发送PRACH前导码
    Note over gNB: 相关检测出前导码ID与时延
    gNB->>UE: Msg2 随机接入响应（TA 上行授权 临时标识）
    Note over UE: 在响应窗口内监听 收不到则退避重发
    UE->>gNB: Msg3 用临时标识加扰 发送唯一身份信息
    gNB->>UE: Msg4 竞争解决（回显获胜者身份）
    alt 身份被回显
        Note over UE: 校验一致 接入成功 临时标识转正
    else 身份不是自己
        Note over UE: 本轮落败 退避后换前导码重来
    end
```

### Msg1：举手

手机按前述规则选好前导码，在 RO 上发出。发送功率不是一步到位，而是从初始值开始，**每失败一轮按固定步长（常见 2 dB）爬升**，即功率爬升（Power Ramping）——理由与此前讲过的上行功率控制一脉相承：先礼貌地小声说，听不见再逐渐提高音量，避免远端用户一上来就对近端造成底噪抬升。

### Msg2：基站递话筒

基站在检测到前导码后，通过一个由 **RA-RNTI** 加扰的调度指令下发随机接入响应（RAR）。以 NR 为例，RA-RNTI 由前导码所在的时频位置计算得出：

$$\text{RA-RNTI} = 1 + s_{id} + 14 \times t_{id} + 14 \times 80 \times f_{id} + 14 \times 80 \times 8 \times c_{id}$$

其中 $s_{id}$、$t_{id}$、$f_{id}$ 分别是前导码编号、RO 所在的时间位置和频域位置，$c_{id}$ 区分普通上行与补充上行。

**为什么用 RA-RNTI 而不是用户专属标识？** 因为此时基站只看见了“某个前导码在某个位置出现过”，完全不知道是哪个手机。RA-RNTI 相当于**“第 N 号窗口的取餐叫号”**：所有在这个窗口发过 Msg1 的手机都去监听这个号。RAR 中携带四样东西：定时提前量（TA）、上行授权（Msg3 的资源）、临时小区标识（TC-RNTI），以及可能的退避指示。手机必须在**响应窗口**（可配置，毫秒级）内等到这个响应，等不到就判本轮失败。

### Msg3：自报家门

拿到授权后，手机用 TC-RNTI 加扰，在 PUSCH 上发送真正的身份信息：初始接入时是注册类身份（如 5G-S-TMSI 或随机值），切换时则是源站分配的原 C-RNTI。**这是整条链路上第一次传输“内容”而非“暗号”**，因此走了完整的 HARQ 重传保护。

### Msg4：宣布赢家

冲突的本质：A 和 B 撞了同一个前导码，基站只检测出“有人敲门”，把同一份 TA 和授权发给了两个人，于是 **Msg3 在 PUSCH 上发生了真刀真枪的碰撞**（两者叠在一起，通常只有一个能被解出来，或都解不出来）。Msg4 中，基站把 Msg3 里收到的身份**原样回显**——谁看到自己的名字被点到，谁就是赢家，TC-RNTI 转正为正式 C-RNTI；没被点到名的手机，读取退避指示，随机等待一段时间，换一个前导码从头再来。

**为什么要在 Msg4 做回显校验，而不是在 Msg1 就解决冲突？** 因为前导码检测只能告诉你“序列出现了”，无法区分"一个人敲了一次"和“两个人同时敲了同一个”。冲突的分辨必须依赖**每个用户独一无二的高层身份**，而这个身份只有到 Msg3 才首次出现。把仲裁放在最后一环，前面三步就能保持极简、极快。

## 五、两步接入与免竞争接入：两条快捷通道

### 5.1 两步接入（2-step RACH）

四步流程虽然稳健，但对“发个小包就走”的场景（传感器上报、心跳包）太重了：一来一回四次空口交互，时延和开销都不划算。两步接入把四步压成两步：

| 对比维度 | 四步接入 | 两步接入 |
| --- | --- | --- |
| 消息构成 | Msg1→Msg2→Msg3→Msg4 | MsgA（前导码+数据捆绑）→ MsgB（响应+竞争解决合一） |
| 交互次数 | 4 次空口往返 | 2 次空口往返 |
| 时延 | 较高 | 显著降低 |
| 适用场景 | 通用、稳健 | 小数据包、时延敏感 |
| 失败回退 | 退避后重试四步 | 可回退为四步继续 |

设计动机一句话概括：**把“报到”和“说事”合并成一次发射，把“发号”和“宣布赢家”合并成一次响应**。同时保留回退到四步的通路——竞争太激烈或资源不足时退回老路，保证兼容与稳健。

### 5.2 免竞争接入（CFRA）

有些场景**付不起冲突的代价**。典型如切换：手机已经与源站建立了完整连接，源站和目标站之间可以先打好招呼，由目标站**指定一个专用前导码**。手机到达新小区后直接用这个“专属暗号”敲门：

```mermaid
flowchart TD
    subgraph 竞争型CBRA
        A1["初始接入"] --> M["自行随机选前导码"]
        A2["失步后重建"] --> M
        A3["未获专用前导码的切换"] --> M
    end
    subgraph 免竞争型CFRA
        B1["切换前目标站分配专用前导码"] --> N["用指定前导码发起 无需竞争"]
        B2["波束失败恢复"] --> N
    end
    M --> O["走完整四步握手"]
    N --> P["基站按号识人 直接下发TA与授权"]
```

由于前导码与用户一一对应，基站收到即知是谁，**Msg3 和 Msg4 的仲裁环节可以整体省略**。波束失败恢复同理：手机用专用前导码在新波束上重新报到，快速找回同步。

## 六、工程实践：RACH 失败怎么定位

RACH 成功率是现网核心 KPI 之一。关键调试思维是：**不要把 RACH 当成一个黑盒指标，而要按失败发生的“步骤”拆开定位**——失败在 Msg1、Msg2、Msg3 还是 Msg4，病因完全不同。

| 失败位置 | 现象 | 常见病因 |
| --- | --- | --- |
| Msg1 未被检测 | 基站根本没收到前导码 | 覆盖弱、PRACH 初始功率偏低、根序列规划冲突、前导码重发次数上限过小 |
| Msg2 未收到 | 手机发了但等不到响应 | 响应窗口配置不当、下行覆盖问题、同频段上行干扰淹没了 PRACH |
| Msg3 解码失败 | 授权给了但数据收不回 | 授权资源过小、调制阶数过高、干扰导致 HARQ 屡败 |
| Msg4 身份不符 | 冲突持续增多 | 前导码资源不足、高话务小区撞号率上升 |

```mermaid
flowchart TD
    A["RACH成功率下降"] --> B{"按步骤拆分定位"}
    B -->|Msg1层失败| C["查覆盖与PRACH功率 重规划根序列"]
    B -->|Msg2层失败| D["查响应窗口与下行覆盖 查上行干扰"]
    B -->|Msg3层失败| E["查授权资源与干扰 检查HARQ重传"]
    B -->|Msg4层失败| F["扩前导码资源 分析话务与冲突率"]
    C --> G["回归验证成功率与时延两项指标"]
    D --> G
    E --> G
    F --> G
```

**三个最常见的误解与陷阱：**

1. **“RACH 失败率高 = 覆盖差”。** 不一定。根序列规划冲突（相邻小区用了会产生强互相关的根序列组合）会让基站“看错号”，表现为检测异常；高话务下撞号增多则会让 Msg4 竞争失败占比升高——这两类问题加功率毫无用处。
2. **“随机 = 任意时刻随便发”。** 前导码的选择和 RO 的位置都严格受限：必须先选定 SSB，再按映射关系选资源和前导码组。手机真正的自由度只是“组内选哪一个”。
3. **TDD 网络忽略帧结构配比。** PRACH 只能出现在允许上行的时隙里，跨链路干扰（远端基站下行信号飘进本站上行接收）会直接抬高 PRACH 底噪，这类“空气接口的串扰”是 TDD 大规模组网后 Msg2 失败的隐蔽元凶。

最后把整个流程放回全局视角：你此前学过的 FFT（相关检测靠频域快速卷积实现）、信道估计与衰落原理（PRACH 一样穿过多径信道）、定时提前（Msg2 首次下发）、链路自适应（Msg3 起生效），在随机接入这一条链上全部交汇。**理解 RACH，等于把空口上行侧的半本教科书串了一遍。**

## 常见问题

**Q: RACH 和调度请求（SR）有什么区别？**
A: 两者都是“我发消息”，但处于连接生命周期的不同阶段。RACH 用在**上行完全失步、基站对手机一无所知**的时刻，连时延都未对齐，所以要用免调度的专用序列；SR 用在**保持上行同步、已有专属配置**的连接态，手机只需在分配好的资源上发一个简单的请求标记。可以粗略记成：RACH 是敲门重新入会，SR 是举手要话筒。

**Q: 两个用户撞了同一个前导码，会不会双双接入成功？**
A: 不会。两者使用完全相同的时频资源和相同序列，在基站接收端波形叠加，通常只能解出（至多）一份 Msg3。Msg4 只会回显被成功解码的那份身份，另一个用户校验失败后自动出局重来。理论上若两份 Msg3 碰巧都被解出，回显也只能指向其中之一，仲裁结果同样唯一。

**Q: Msg2 的监听为什么要用 RA-RNTI，而不是手机自己的标识？**
A: 因为发 Msg1 时基站不知道手机身份，手机也没有任何被网络认可的标识可用来加扰响应。RA-RNTI 由发起 Msg1 的时频位置唯一算出，双方无需任何先验协商就能对上暗号——它本质上是“这次敲门事件”的编号，而不是“某个人”的编号。

**Q: 短前导码为什么撑不起大小区？**
A: 序列时长短，对应的循环前缀和保护间隔也短，能容纳的往返传播时延范围小。半径 5 公里的小区往返时延就有约 33 微秒，短格式加长 CP 后虽可扩展，但能量积累与检测窗口的折中使其更适合中小半径；广覆盖仍由长格式担纲。

**Q: 为什么手机开机不直接用普通数据信道发接入请求？**
A: 普通数据信道的接收依赖精确的上行同步和已分配的调度资源，而这两样恰恰是接入前不具备的。ZC 前导码的特殊性在于它**同时是对序列和时间都免疫的探测信号**——无需同步就能被相关捕获，还顺带量出时延。用一个“自带标尺的暗号”完成从零到一的建立，这正是随机接入设计的精髓。

## 参考来源

2. [ShareTechnote — 5G/NR 技术站点](https://www.sharetechnote.com/) — 站内 Random Access / PRACH 系列图文，工程师视角的流程与参数解读
3. Erik Dahlman, Stefan Parkvall, Johan Sköld,《5G NR: The Next Generation Wireless Access Technology》, Academic Press — 随机接入设计与帧结构原理的系统教材
4. 樊昌信等，《通信原理》（第7版），国防工业出版社 — 伪随机序列与相关接收的基础理论出处

---
> 本文由「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学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
