协议选型先看它位于哪一层。TCP、UDP 和 QUIC解决“数据怎样传输”,HTTP、SSE、WebSocket、gRPC 和 MQTT 解决“应用怎样交流”,Kafka 则是服务端事件流平台,不是浏览器或设备直接使用的网络替代品。

先看协议地图

1
2
3
4
5
应用层:HTTP | SSE | WebSocket | gRPC | MQTT | Kafka Client Protocol
安全层:TLS
传输层:TCP | UDP | QUIC
网络层:IP
链路层:Ethernet | Wi-Fi | 蜂窝网络

协议可以组合。例如 HTTPS 通常是 HTTP over TLS over TCP;HTTP/3 运行在 QUIC 之上,而 QUIC 基于 UDP 实现自己的可靠传输与加密机制。

TCP、UDP 与 QUIC

维度 TCP UDP QUIC
连接 面向连接 无连接 面向连接
可靠有序 提供 不提供 提供到流
拥塞控制 提供 由应用决定 提供
加密 需叠加 TLS 需应用另行处理 内置 TLS 能力
常见场景 HTTP/1.1、HTTP/2、数据库 实时音视频、DNS、局域网发现 HTTP/3

UDP 不是“更快的 TCP”。它只是约束更少,丢包、重传、排序和拥塞控制要由上层协议按业务需要处理。

应用协议怎么选

需求 常见选择 原因
普通请求响应 API HTTP 生态成熟、缓存与代理友好
服务器持续向浏览器推送文本 SSE 单向、自动重连、实现简单
浏览器和服务器双向实时通信 WebSocket 长连接、双向消息
内部服务强类型调用 gRPC 接口契约明确、支持流式调用
设备低带宽发布订阅 MQTT Topic、QoS、会话机制适合设备
服务端高吞吐事件流 Kafka 分区日志、消费组、保留与重放

AI 对话逐字输出通常适合 SSE;在线协作和游戏更常使用 WebSocket;设备遥测适合 MQTT;跨服务事件流水线适合 Kafka。

分层排障流程

1
2
3
4
5
6
7
8
1. 域名能否解析
2. IP 路由是否可达
3. 目标端口是否监听且防火墙放行
4. TCP/QUIC 连接能否建立
5. TLS 证书与握手是否正常
6. 反向代理和路由是否命中
7. 应用是否超时或报错
8. 缓存、数据库和下游是否健康

常用检查命令:

1
2
3
4
dig example.com
curl -v https://example.com/health
nc -vz example.com 443
openssl s_client -connect example.com:443 -servername example.com

ping 不通不能直接证明网站不可访问,因为 ICMP 可能被禁用;curl 成功也不能证明所有业务接口正常。

从现象快速定位

现象 优先检查
域名不存在 DNS 记录、缓存、权威服务器
Connection refused 服务未监听、端口错误
连接超时 路由、安全组、防火墙、服务拥塞
TLS 报错 证书、SNI、协议版本、本机时间
502 代理无法连接上游
504 上游处理超时
浏览器跨域错误 CORS 响应头和预检请求
长连接频繁断开 代理超时、心跳、网络切换、资源限制

设计时保留可观测性

客户端、网关和应用应使用同一个请求 ID 串联日志,并分别记录 DNS、连接、TLS、首字节和总耗时。只有“接口耗时 3 秒”时,很难判断时间究竟花在网络、排队、数据库还是下游接口。

延伸阅读

站内搜索

没有找到内容!