11# FCC 协议 Wireshark 分析器使用说明
22
3- 这是一个用于分析 FCC (Fast Channel Change) 协议的 Wireshark Lua dissector。
3+ 这是一个用于分析 FCC (Fast Channel Change) 协议的 Wireshark Lua dissector,支持电信 (Telecom) 和华为 (Huawei) 两种协议变体 。
44
55## 快速开始
66
@@ -32,8 +32,11 @@ Dissector 会自动识别以下情况的 FCC 协议包:
3232
3333- UDP 端口 8027/15970 的流量(默认 FCC 服务器端口)
3434- 符合 FCC 协议特征的 RTCP 包(自动启发式检测)
35+ - 华为 NAT 穿透包(8 字节,magic 0x0003)
3536
36- ## 支持的消息类型
37+ ## 支持的协议变体
38+
39+ ### 电信协议 (Telecom)
3740
3841| FMT | 消息类型 | 说明 |
3942| --- | ----------------- | ------------------------ |
@@ -42,26 +45,56 @@ Dissector 会自动识别以下情况的 FCC 协议包:
4245| 4 | Sync Notification | 同步通知(可加入组播) |
4346| 5 | Termination | 终止消息 |
4447
48+ ### 华为协议 (Huawei)
49+
50+ | FMT | 消息类型 | 说明 |
51+ | --- | ----------------- | --------------------------- |
52+ | 5 | Client Request | RSR - Rapid Stream Request |
53+ | 6 | Server Response | 服务器响应 |
54+ | 8 | Sync Notification | 同步通知(可加入组播) |
55+ | 9 | Termination | SCR - Stream Change Request |
56+ | - | NAT Traversal | NAT 穿透包(非 RTCP 格式) |
57+
58+ > ** 注意** : FMT 5 在两种协议中含义不同。Dissector 会根据包长度自动区分:
59+ >
60+ > - 32 字节:华为客户端请求
61+ > - 16 字节:电信终止消息
62+
4563## 过滤器示例
4664
4765``` text
4866# 显示所有 FCC 协议包
4967fcc
5068
51- # 只显示客户端请求
69+ # 只显示客户端请求(电信)
5270fcc.fmt == 2
5371
54- # 只显示服务器响应
72+ # 只显示服务器响应(电信)
5573fcc.fmt == 3
5674
57- # 只显示成功的响应
75+ # 只显示华为服务器响应
76+ fcc.fmt == 6
77+
78+ # 只显示华为终止消息
79+ fcc.fmt == 9
80+
81+ # 只显示成功的电信响应
5882fcc.resp.result == 0
5983
60- # 只显示服务器重定向消息
84+ # 只显示成功的华为响应
85+ fcc.hw.resp.result == 1
86+
87+ # 只显示服务器重定向消息(电信)
6188fcc.resp.action == 3
6289
90+ # 只显示华为重定向消息
91+ fcc.hw.resp.type == 3
92+
6393# 显示特定组播地址的请求
6494fcc.req.mcast_ip == 239.1.1.1
95+
96+ # 显示华为 NAT 穿透包
97+ fcc.hw.nat.session_id
6598```
6699
67100## 字段说明
@@ -72,14 +105,14 @@ fcc.req.mcast_ip == 239.1.1.1
72105- ` fcc.fmt ` : 反馈消息类型
73106- ` fcc.media_ssrc ` : 媒体源地址(显示为 IP)
74107
75- ### 客户端请求字段
108+ ### 电信客户端请求字段
76109
77110- ` fcc.req.client_port ` : 客户端端口
78111- ` fcc.req.mcast_port ` : 组播端口
79112- ` fcc.req.mcast_ip ` : 组播地址
80113- ` fcc.req.stb_id ` : 机顶盒 ID
81114
82- ### 服务器响应字段
115+ ### 电信服务器响应字段
83116
84117- ` fcc.resp.result ` : 结果代码(0=成功,1=错误)
85118- ` fcc.resp.action ` : 动作代码(2=启动单播,3=重定向)
@@ -89,11 +122,37 @@ fcc.req.mcast_ip == 239.1.1.1
89122- ` fcc.resp.speed ` : 突发速率(自动显示为 Mbps/Kbps)
90123- ` fcc.resp.speed_after_sync ` : 同步后速率
91124
92- ### 终止消息字段
125+ ### 电信终止消息字段
93126
94127- ` fcc.term.stop_bit ` : 停止位(0=正常,1=强制)
95128- ` fcc.term.seqn ` : 首个组播包序列号
96129
130+ ### 华为客户端请求字段
131+
132+ - ` fcc.hw.req.local_ip ` : 本地 IP 地址
133+ - ` fcc.hw.req.client_port ` : 客户端端口
134+ - ` fcc.hw.req.flag ` : 标志位
135+ - ` fcc.hw.req.redirect_flag ` : 重定向支持标志
136+
137+ ### 华为服务器响应字段
138+
139+ - ` fcc.hw.resp.result ` : 结果代码(1=成功,其他=错误)
140+ - ` fcc.hw.resp.type ` : 响应类型(1=无需单播,2=单播流,3=重定向)
141+ - ` fcc.hw.resp.nat_flag ` : NAT 标志
142+ - ` fcc.hw.resp.server_port ` : 服务器端口
143+ - ` fcc.hw.resp.session_id ` : 会话 ID
144+ - ` fcc.hw.resp.server_ip ` : 服务器 IP 地址
145+
146+ ### 华为终止消息字段
147+
148+ - ` fcc.hw.term.status ` : 状态(1=成功加入组播,2=错误)
149+ - ` fcc.hw.term.seqn ` : 首个组播包序列号
150+
151+ ### 华为 NAT 穿透包字段
152+
153+ - ` fcc.hw.nat.magic ` : Magic 值 (0x0003)
154+ - ` fcc.hw.nat.session_id ` : 会话 ID
155+
97156## 自定义端口
98157
99158如果你的 FCC 服务器使用非标准端口,可以编辑 ` fcc_dissector.lua ` 文件:
@@ -126,3 +185,9 @@ udp_port:add(8027, fcc_proto) -- 改为你的端口
126185
127186- 确认数据包完整(未被截断)
128187- 检查数据包长度是否符合协议要求
188+
189+ ** Q: 如何区分电信和华为协议?**
190+
191+ - 查看 Info 列:会显示 "(Telecom)" 或 "(Huawei)" 后缀
192+ - 电信协议使用 FMT 2/3/4/5
193+ - 华为协议使用 FMT 5/6/8/9
0 commit comments