gRPC 是什么?gRPC 传输与 WebSocket 有什么区别
gRPC 是一种基于 HTTP/2 的”传输方式 / 承载载体”,不是代理协议——它和 WebSocket 一样,用来把 VMess、VLESS 的流量装进一条像正常 HTTPS 请求的连接里运走。
快速结论
- gRPC 工作在
HTTP/2之上,属于”怎么运流量”的传输层面,本身不做代理; - 真正的加密与代理逻辑由 VMess、VLESS 负责,gRPC 只是承载它们的管道;
- 相比 WebSocket,gRPC 借 HTTP/2 的多路复用,多条流复用一条连接,某些网络下更稳;
- 它同样用于配合 CDN 中转,订阅里的
grpc只是一个传输字段。
对”协议 vs 传输”还不清楚的读者,建议先读什么是代理协议。
gRPC 原本是什么
gRPC 是 Google 开源的一套远程调用框架,本来给微服务之间通信用——一个服务像调用本地函数一样调用另一个服务。它跑在 HTTP/2 之上,用 Protobuf 编码数据。这些原始用途和代理没关系,但代理项目”借用”了它的一个核心特性:基于 HTTP/2 的多路复用。
HTTP/2 相比老的 HTTP/1.1 最大的进步,就是能在一条 TCP 连接上并行跑多条独立的数据流,互不阻塞。gRPC 把代理流量塞进这些流里,对外看就是一次正常的 HTTP/2 通信。想了解 TCP、HTTP/2 底下的承载差异,见 TCP、UDP 与 QUIC。
在代理里,gRPC 承载什么
和 WebSocket 完全一样:代理协议管”内容”,gRPC 管”外壳”。VLESS 决定怎么加密、怎么握手,gRPC 决定这些数据以什么形式在网络上流动。所以订阅里会写成 vless + grpc 这样的组合——VLESS 跑在 gRPC 里,gRPC 是承载它的传输方式,本身不改写也不解密代理内容。
也就是说,gRPC 从不单独存在,它必须搭配一个代理协议才有意义。
gRPC 与 WebSocket 对比
两者定位相同,取舍在细节:
| 对比维度 | WebSocket (WS) | gRPC |
|---|---|---|
| 底层 | HTTP/1.1 升级 | HTTP/2 |
| 多路复用 | 无 | 有(多流复用一条连接) |
| CDN 兼容性 | 极好,几乎全支持 | 好,但需 CDN 支持 HTTP/2 / gRPC |
| 弱网 / 断线恢复 | 一般 | 较好,连接复用更省握手 |
| 抗封锁 | 好 | 好,特征略不同,可作备选 |
| 配置复杂度 | 低 | 略高(服务名、路径需匹配) |
| 客户端支持 | 极广 | 广,主流内核均支持 |
一句话:WS 胜在通用和简单,gRPC 胜在多路复用带来的连接稳定性。
什么时候选 gRPC,什么时候选 WS
- 如果只是普通过 CDN、图省事,
WS兼容性最好,是默认之选; - 如果网络频繁抖动、需要长时间保持稳定连接,
gRPC的多路复用能减少反复握手,体验更平滑; - 如果某一种传输被针对性干扰,换另一种往往能恢复——这也是机场常常两种都提供的原因,背后逻辑见为什么机场要提供多种协议。
实际中不必纠结:机场会为节点配好合适的传输,客户端按订阅自动建立连接。
配合 CDN
和 WS 一样,gRPC 之所以有价值,很大程度是因为它能过 CDN。CDN 认 HTTP,gRPC 基于 HTTP/2,套上后 CDN 会把代理流量当成正常的 HTTP/2 网站流量转发,从而把真实服务器 IP 藏到 CDN 背后。需要注意的是,并非所有 CDN 对 gRPC 的支持都一样完善,具体原理与限制见 CDN 中转是什么。
多路复用到底带来什么
HTTP/1.1 时代,一条连接同一时间只能处理一个请求,要并发就得开很多条连接,反复握手、反复建立 TLS,开销不小。HTTP/2 的多路复用让一条连接内部可以同时跑很多条”流”,代理的多个请求复用同一条隧道,省下了大量重复握手。
对机场用户的实际意义是:在需要频繁开新连接的场景(比如一个网页里几十个资源同时加载),gRPC 节点的连接更”温”、更省事,长时间挂着也不容易掉线。反过来,如果只是单条大文件下载,多路复用的优势就不明显,这时 WS 和 gRPC 的差距很小。
订阅里的 gRPC 长什么样
gRPC 节点在订阅里会多一个专属参数:serviceName(服务名)。它类似 WS 里的 path,用来标识这条 gRPC 通道,服务端靠它区分是不是自己人的流量。这个值由机场设定并写进订阅,客户端导入后自动带上,你无需手动填写。
如果一个机场同时给你 WS 和 gRPC 两套节点,可以都试一下:哪套在你的网络下延迟更低、更少掉线就用哪套。这不是”哪个更先进”的问题,而是哪个更适配你当前的运营商和时段——这也是节点与订阅里强调”多测几个再定”的原因。
常见误区
- “gRPC 是一种新代理协议,比 VMess 强”——错。gRPC 不做代理,它只是承载 VMess/VLESS 的传输方式,二者不在一个层面。
- “gRPC 一定比 WS 快”——不一定。多路复用改善的是连接稳定性与握手开销,纯带宽仍取决于线路质量。
- “看到 grpc 要手动配置服务名”——不用。这些参数机场已写在订阅里,客户端自动读取。
下一步
想对照理解另一种更通用的承载方式,读 WebSocket 是什么;想知道 gRPC 与 WS 最终服务的目标——把流量藏进 CDN,读 CDN 中转是什么。