# 使用 UDP/KCP 连接 NPS

> 在特定网络中用 KCP 替代 TCP 承载 NPC 与 NPS 的桥接连接

---

LLMS 索引： [llms.txt](/llms.txt)

---

KCP 使用 UDP 承载 NPC 与 NPS 之间的桥接连接。在低丢包、低抖动且 UDP 畅通的专线或内网中，它可能降低部分交互延迟；公网、移动网络或受限网络不一定更快。

## 服务端配置

在 `nps.conf` 中设置并重启 NPS：

```ini
bridge_type=kcp
bridge_port=8024
```

`bridge_port` 此时是 **UDP** 端口。需要同时修改云安全组、主机防火墙和容器端口发布，例如 Docker 使用 `8024:8024/udp`。

## 客户端配置

无配置文件模式：

```shell
./npc -server=nps.example.com:8024 -vkey=客户端验证密钥 -type=kcp
```

配置文件模式：

```ini
[common]
server_addr=nps.example.com:8024
vkey=客户端验证密钥
conn_type=kcp
```

两端协议必须一致。服务端切换后，所有 NPC 都必须改为 KCP；TCP NPC 无法连接 KCP 监听。

## 不兼容与排障

- KCP 不能使用基于 TCP 的[端口复用](/extend/feature/port-reuse.html)。
- TLS 桥接监听只用于 TCP，不能叠加到 KCP。
- NPC 的 `proxy_url` 只用于 TCP 代理连接，不解决 UDP/KCP 被阻断的问题。
- 某些运营商、企业防火墙和云平台会限制 UDP，NAT 映射也可能更快失效。

切换前先从 NPC 所在网络测试服务端 UDP 可达，并保留回滚到 TCP 的维护窗口。上线后比较实际业务延迟、丢包、CPU 和重连次数；若日志持续出现 ping timeout，优先恢复 TCP，再排查 UDP 路径和 MTU。

---

反链：

- [使用说明](/client/use.html)
