切换主题
📡 UDP 监听器与 CoAP
UDP 代理用于代理无连接协议,内置 CoAP(RFC 7252) 协议解析。管理后台「UDP 代理 → 监听器」页面进行管理,保存后立即生效。
与 TCP 代理的区别
| 特性 | TCP 代理 | UDP 代理 |
|---|---|---|
| 连接模型 | 长连接 | 无连接(数据报) |
| 会话 | 真实 TCP 连接 | 每个客户端地址一个虚拟会话 |
| 协议 | 支持全部分帧类型 | 面向数据报协议(如 CoAP) |
| TLS | 支持 | 不支持 |
| 规则 / 录制 / 抓包 | 独立页签 | 与 TCP 共用表结构,按监听器归属隔离 |
虚拟会话机制
UDP 无连接语义下,为每个客户端地址建立一个独立会话(内部使用 connected UDP socket 与上游通信):
- 同一客户端的后续数据报复用其会话与上游连接
- 会话空闲超过
udp.idleTimeout(秒)自动回收 - 规则匹配、录制、抓包均以虚拟会话为单位进行
CoAP 协议解析
内置 CoAP Codec 按 RFC 7252 解析:
yaml
listeners:
- name: coap-demo
port: 5683
upstreamHost: 127.0.0.1
upstreamPort: 5684
protocol:
type: coap1
2
3
4
5
6
7
2
3
4
5
6
7
报文结构
CoAP 报文:4 字节固定头 + token + options + 可选 payload:
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Ver| T | TKL | Code | Message ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Token (if any, TKL bytes) ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Options (if any) ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|1 1 1 1 1 1 1 1| Payload (if any) ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
解析字段
| 字段 | 说明 |
|---|---|
version | 版本(必须为 1) |
type | 消息类型:CON / NON / ACK / RST |
method | 方法码或响应码(如 0.01 GET、2.05 Content) |
messageId | 消息 ID |
token | Token(hex) |
uriHost / uriPort | Uri-Host / Uri-Port 选项 |
uriPath | Uri-Path 选项拼接(如 sensors/temp) |
uriQuery | Uri-Query 选项拼接(a=b&c=d) |
contentFormat | Content-Format(如 50 (application/json)) |
maxAge | Max-Age 选项 |
accept | Accept 选项 |
observe | Observe 选项 |
payload | Payload(可读文本原样,否则 hex) |
value | 便捷字段:方法 /uriPath?uriQuery |
分帧语义
UDP 数据报天然成帧:一条报文即整个数据报。CoAP 报文无长度字段,报文结束于数据报边界。
方法 / 响应码
- 方法码:
0.01 GET、0.02 POST、0.03 PUT、0.04 DELETE - 响应码:
2.01 Created、2.04 Changed、2.05 Content、4.04 Not Found、5.00 Internal Server Error等
监听器管理
管理后台「UDP 代理 → 监听器」页面支持:
- 新建 / 修改 / 删除监听器(保存即生效)
- 单独启动 / 停止某个监听器
- 查看活跃会话列表
相关 API
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/udp/listeners | 监听器列表 |
| POST | /api/udp/listeners | 新建监听器 |
| PUT | /api/udp/listeners/:name | 更新监听器 |
| DELETE | /api/udp/listeners/:name | 删除监听器 |
| POST | /api/udp/listeners/:name/start | 启动 |
| POST | /api/udp/listeners/:name/stop | 停止 |
| GET | /api/udp/sessions | 活跃会话列表 |