Skip to content

通信协议概览

通信协议是网络中通信双方为了完成数据交换所约定的格式、顺序、动作和差错处理规则。一次完整的网络通信会同时涉及多层协议,每一层只关心自己负责的事情。理解协议先从分层入手,再针对每一层展开。

一、网络分层模型

工程中常用的两个模型:

OSI 与 TCP/IP 分层

层级OSI 七层TCP/IP 四层代表协议
7应用层应用层HTTP/HTTPS、WebSocket、SSE、DNS、SMTP、FTP、SSH、gRPC
6 / 5表示层 / 会话层(并入应用层)TLS、SSL
4传输层传输层TCP、UDP、QUIC
3网络层网络层IP、ICMP、ARP
2 / 1数据链路层/物理层网络接口层Ethernet、Wi-Fi

物理层管"信号怎么跑",网络层管"包怎么寻址",传输层管"端到端可不可靠",应用层管"数据怎么用"。

二、传输层

应用层协议都跑在传输层之上,先把传输层这两兄弟搞清楚。

TCP(Transmission Control Protocol)

面向连接、可靠、有序、字节流。

核心机制

  • 三次握手建立连接,四次挥手断开连接
  • 序号 + 确认号保证有序、不丢失、不重复
  • 滑动窗口做流量控制
  • 拥塞控制(慢启动、拥塞避免、快速重传、快速恢复)
  • 超时重传

适用场景:HTTP、HTTPS、WebSocket、数据库连接、文件传输等任何"丢一字节都不行"的场景。

代价:握手有 RTT 开销,重传和拥塞控制带来延迟,队头阻塞(HOL Blocking)。

UDP(User Datagram Protocol)

无连接、不可靠、保留消息边界。

核心特点

  • 没有握手,直接发包
  • 不保证到达、不保证顺序、不去重
  • 头部只有 8 字节,开销小
  • 天然支持广播、多播

适用场景:DNS、视频会议、实时游戏、音视频直播、物联网遥测、QUIC 的底层。

何时选 UDP:能容忍少量丢包、要低延迟、要广播多播、可靠性可以在应用层自己做。

QUIC

Google 提出、IETF 标准化的传输层协议,跑在 UDP 之上,是 HTTP/3 的底座。

关键特性

  • 0-RTT / 1-RTT 握手,比 TCP+TLS 的 2~3 个 RTT 快得多
  • 内置 TLS 1.3,加密是默认而不是可选
  • 多路复用且没有 TCP 的队头阻塞
  • 连接迁移:手机从 Wi-Fi 切到 4G 不会断流

TCP vs UDP 速查

TCP 与 UDP 通信模型对比

维度TCPUDP
是否连接面向连接无连接
可靠性可靠不可靠
顺序保证不保证
速度较慢
头部开销20~60 字节8 字节
流量控制
拥塞控制
数据边界字节流,无边界保留报文边界
典型协议HTTP、HTTPSDNS、QUIC、SNMP

三、应用层

HTTP(HyperText Transfer Protocol)

万维网的基石,请求-响应模型,明文传输,无状态。

版本演进

HTTP 版本演进

版本传输层关键变化
HTTP/0.9TCP只支持 GET,只能传 HTML
HTTP/1.0TCP引入头部、状态码、Content-Type,每请求新建连接
HTTP/1.1TCP长连接(Keep-Alive)、管线化、Host 头、分块传输
HTTP/2TCP+TLS二进制分帧、多路复用、头部压缩(HPACK)、服务端推送
HTTP/3QUIC基于 UDP 的 QUIC,解决 TCP 队头阻塞,握手更快,连接迁移

特点

  • 无状态:靠 Cookie / Token / Session 维持状态
  • 半双工:客户端发起请求,服务端被动响应,不能反向推送
  • 通用性强,所有浏览器、CDN、代理都原生支持

HTTPS(HTTP over TLS)

HTTPS 不是新协议,是 HTTP + TLS。在 HTTP 和 TCP 之间插了一层 TLS。

TLS 解决三个问题

  • 机密性:对称加密保护内容
  • 完整性:MAC / AEAD 防篡改
  • 身份认证:证书 + CA 体系防止中间人

握手过程(TLS 1.3)

  1. ClientHello:客户端发支持的密码套件、随机数、密钥交换参数
  2. ServerHello:服务端选定密码套件、返回证书和密钥交换参数
  3. 双方各自计算出会话密钥
  4. 完成握手,开始加密通信

TLS 1.3 把握手从 2-RTT 压到 1-RTT,会话恢复时还能做到 0-RTT。

WebSocket(WS / WSS)

为浏览器和服务器之间提供全双工通信而生,弥补 HTTP 不能服务端主动推送的短板。

关键点

  • 通过 HTTP 的 Upgrade 头握手,握手后切换协议,复用同一个 TCP 连接
  • 握手完成后是独立的二进制帧协议,不再走 HTTP
  • WS 走 80 端口(明文),WSS 走 443 端口(TLS 加密)
  • 全双工:客户端和服务端可以同时主动发送数据

典型场景:聊天、实时协作、行情推送、在线游戏、实时通知。

HTTP 和 WebSocket 的对比单独写了一篇:http-vs-websocket.md

SSE(Server-Sent Events)

基于 HTTP 的单向服务端推送协议,浏览器通过 EventSource API 使用。

特点

  • 跑在 HTTP 之上,本质是一个 Content-Type: text/event-stream 的长连接
  • 只能服务端推客户端,客户端要发数据还是走普通 HTTP
  • 浏览器原生支持自动重连和断点续传(Last-Event-ID
  • 文本协议,调试简单

何时选 SSE 而不是 WebSocket

  • 只需要服务端推、不需要客户端高频回传
  • 想直接复用 HTTP/2 多路复用、CDN、鉴权中间件
  • 想省去 WebSocket 的协议升级和心跳逻辑

典型应用:股票行情、日志流、ChatGPT 那种逐字输出的 AI 流式响应。

其他常见应用层协议

协议传输层用途
DNSUDP/TCP域名解析
FTP / SFTPTCP文件传输
SMTP/IMAP/POP3TCP邮件
SSHTCP远程登录、隧道
MQTTTCP物联网消息推送,发布订阅模型
gRPCHTTP/2高性能 RPC,基于 Protobuf
WebRTCUDP浏览器端到端音视频通信,NAT 穿透

四、嵌入式与工业通信协议

前面讲的都是互联网世界的协议,跑在以太网/Wi-Fi 上。嵌入式和工业现场是另一套体系:受限于 MCU 算力、功耗、布线成本,用的是更简单、更接近硬件的协议。

嵌入式四大总线接线示意

板内/近距离总线

协议物理层速率距离关键特性
UART/串口TX/RX 两根线9600~3 Mbps几米异步、点对点、最简单。RS-232 是电平标准,UART 是协议
RS-485差分两根线10 Mbps1.2 kmUART 套差分电平,支持多机、抗干扰强
I²CSCL+SDA100k/400k/3.4 M<1 m主从、多设备共享两线,地址寻址
SPI4 线(含片选)几十 Mbps<1 m全双工、速度快、无寻址,靠片选切换
1-Wire1 根线16.3 kbps几十米一根线既供电又通信,DS18B20 温度传感器经典
CAN差分两根线1 Mbps数十米多主、消息优先级仲裁,汽车电子标准

工业现场总线 / 工业以太网

协议基础用途
Modbus RTURS-485最广泛的工业从站协议,简单、易实现
Modbus TCPTCP/IPModbus 套到以太网上,工厂上位机标配
ProfibusRS-485西门子主导的现场总线
Profinet以太网Profibus 的以太网继任者,PLC 实时通信
EtherCAT以太网实时性极强的工业以太网,运动控制首选
OPC UATCP/IP工业互联网信息建模与通信,承上启下
LIN单线汽车低速从网,CAN 的低成本补充
FlexRay双通道差分汽车线控、X-by-Wire

物联网无线协议

协议频段/标准距离速率/特性
BLE 低功耗蓝牙2.4 GHz10~100 m低功耗、可穿戴、Mesh
Zigbee802.15.410~100 m低功耗 Mesh,智能家居
LoRa / LoRaWANsub-GHz数 km低功耗广域,远距离低速率
NB-IoT / Cat-M蜂窝蜂窝覆盖运营商级低功耗广域
Thread/Matter802.15.4屋内IPv6 over Mesh,智能家居新标准

详细说明、电平时序、典型代码示例和选型建议见单独一篇:嵌入式与工业通信协议详解

五、选型速查

需求推荐
普通 Web 接口、对外 APIHTTPS(HTTP/2 或 HTTP/3)
浏览器实时双向通信WebSocket(WSS)
服务端单向推流(AI 流式输出、日志)SSE
微服务内部 RPCgRPC
实时音视频WebRTC + UDP
物联网设备上报MQTT
对延迟敏感、可丢包UDP / QUIC
对可靠性要求极高TCP
弱网、移动端、要切网保活HTTP/3(QUIC)

六、关于 "SSR"

SSR(Server-Side Rendering)是服务端渲染,是一种前端架构模式,不是通信协议。它本质上还是用 HTTP 把渲染好的 HTML 返回给浏览器。如果要找"服务端推送"的协议,请看 SSE 或 WebSocket。

别急,先让缓存热一下。