| 层号 | 中文名称 | 英文名称 | 关键职能(一句话) | 代表协议 / 技术 | 生活化比喻 | | --- | ---------- | ------------ | ----------------- | ----------------------------- | ---------------- | | 7 | 应用层 | Application | 面向终端用户提供具体网络应用 | HTTP/HTTPS、FTP、SMTP、DNS、MQTT… | 手机 App / 网页 | | 6 | 表示层 | Presentation | 数据格式转换、压缩、加密/解密 | JPEG、MP3、JSON、TLS 加解密… | 字幕翻译员 | | 5 | 会话层 | Session | 建立、管理、终止会话,保持对话状态 | TLS 握手、RPC 会话控制… | “嘟…嘟…—通话—挂断” | | 4 | 传输层 | Transport | 端到端可靠或高效传输、端口寻址 | TCP、UDP、QUIC | 是否保价 / 签收 | | 3 | 网络层(路由器) | Network | 跨网段寻址与路由选择 | IP、ICMP、OSPF、BGP | 选公路/铁路/空运把包裹送到城市 | | 2 | 数据链路层(交换机) | Data Link | 成帧、MAC 地址、差错检测 | 以太网、PPP、802.11 MAC | 物流园分拣输送带 | | 1 | 物理层 | Physical | 定义电/光信号及传输介质 | 双绞线、光纤、Wi-Fi 射频… | 修公路、铺轨道 | > **记忆口诀**:修路→分拣→选路→保价/签收→接通电话→翻译字幕→用 App。 下面这张 **Markdown 对比表** 从常见开发/运维关注点切入,帮你快速看出 **SSE、WebSocket、gRPC** 三种实时通信技术的差异: |对比维度|SSE(Server-Sent Events)|WebSocket|gRPC (gRPC-HTTP/2)| |---|---|---|---| |**协议栈定位**|应用层,基于 **HTTP/1.1** 的长连接|应用层,先 **HTTP/1.1 Upgrade**,随后自有帧格式|应用层 RPC 框架,默认 **HTTP/2**(可选 HTTP/3)| |**消息方向**|**单向**:服务器 ➜ 浏览器|**双向全双工**|**双向流**;支持单次请求、服务器流、客户端流、双向流四种模式| |**浏览器原生支持**|`EventSource` 接口,几乎所有现代浏览器支持|`WebSocket` 接口,全面支持|需要 **gRPC-Web** 或 Fetch/Protobuf 手动封装;原生支持有限| |**数据编码**|文本流(`text/event-stream`),字段简单|文本或二进制帧,自由度高|默认 **Protocol Buffers**;也可自定义编解码| |**多路复用**|无(1 连接 = 1 订阅流)|无(1 连接 Carry 全流量)|**HTTP/2**/3 自带多路复用,单 TCP 可并发多 RPC| |**保持 & 心跳**|浏览器自动重连;可自定义 retry|`ping/pong` 控制帧;需手动实现重连策略|HTTP/2 keep-alive;gRPC 内置健康探测 & Keepalive| |**对代理/防火墙友好度**|高:纯 HTTP GET,端口 80/443|中:升级握手后非 HTTP,个别代理需放行|高:仍是 HTTP/2/3 流量,CDN & 代理天然兼容| |**负载均衡要求**|建议 **粘性会话**(长连接)|建议 **粘性会话**|通常无需粘性;HTTP/2 流可被 LB 平滑分配| |**典型场景**|新闻/报价实时推送、日志流、简单仪表盘|聊天/游戏、协作编辑、低延迟互动|微服务内部 RPC、移动/IoT 后端、高性能双向流| |**实现门槛**|HTML5 特性,服务端输出符合格式即可|需握手+帧编解码;库生态成熟|需定义 `.proto`、生成 Stub;更偏后端工程| |**带宽/开销**|最低:文本包头极小|适中:自定义帧,少量协议开销|高效:二进制 Protobuf + HPACK 压缩,但头部更复杂| > **速记** > > - **SSE**:轻量“服务器→浏览器”单向推送,HTTP 友好。 > > - **WebSocket**:全双工、低延迟、浏览器原生,需自己管理协议细节。 > > - **gRPC**:基于 HTTP/2 的高性能 RPC 框架,强类型、流式、多语言,偏服务间通信。