通信协议完全指南:从 TCP/IP 到 MCP,一篇文章讲清楚
前言
当你打开一个网页、发送一条消息、或者让 AI 帮你操作浏览器时,背后都有通信协议在默默工作。协议就是计算机之间"对话的语法"——双方约定好用什么样的格式、顺序、规则来交换信息。
本文将从互联网底层到AI 应用前沿,系统梳理所有主流通信协议,帮你建立完整的知识体系。
一、协议的分层模型
理解协议之前,先理解"层"的概念。业界有两套主流模型:
OSI 七层模型(理论)
| 层号 | 名称 | 职责 | 典型协议 |
|---|---|---|---|
| 7 | 应用层 | 为用户程序提供服务 | HTTP, FTP, SMTP, DNS |
| 6 | 表示层 | 数据格式转换、加密 | TLS/SSL, JPEG, ASCII |
| 5 | 会话层 | 建立/管理/终止会话 | NetBIOS, RPC |
| 4 | 传输层 | 端到端可靠传输 | TCP, UDP |
| 3 | 网络层 | 寻址和路由 | IP, ICMP, ARP |
| 2 | 数据链路层 | 相邻节点间的数据传输 | Ethernet, WiFi, PPP |
| 1 | 物理层 | 比特流的物理传输 | 光纤、网线、无线电 |
TCP/IP 四层模型(实际)
这是互联网实际使用的模型,比 OSI 更精简:
┌────────────────────────────────────┐
│ 应用层 (HTTP/FTP/SMTP/DNS/...) │
├────────────────────────────────────┤
│ 传输层 (TCP/UDP) │
├────────────────────────────────────┤
│ 网络层 (IP/ICMP) │
├────────────────────────────────────┤
│ 网络接口层 (Ethernet/WiFi/...) │
└────────────────────────────────────┘
数据的封装过程就像套娃:
你的数据
→ 加上 TCP 头(端口号) → 段(Segment)
→ 加上 IP 头(IP 地址) → 包(Packet)
→ 加上以太网头(MAC 地址) → 帧(Frame)
→ 转换成电信号/光信号发送出去
二、互联网基础协议
TCP(传输控制协议)
TCP 是互联网的基石,提供可靠、有序、面向连接的数据传输。
核心机制:
-
三次握手建立连接:
客户端 → SYN → 服务器 客户端 ← SYN+ACK ← 服务器 客户端 → ACK → 服务器 -
四次挥手断开连接:
客户端 → FIN → 服务器 客户端 ← ACK ← 服务器 客户端 ← FIN ← 服务器 客户端 → ACK → 服务器 -
可靠传输保障:序列号、确认应答、超时重传、流量控制、拥塞控制
适用场景:网页浏览(HTTP)、文件传输(FTP)、邮件(SMTP)、数据库连接等几乎所有需要"数据不能丢"的场景。
一句话总结:TCP 就像寄挂号信——确认对方收到,丢了重发,顺序不能乱。
UDP(用户数据报协议)
UDP 是 TCP 的"极简版兄弟",不建立连接、不保证可靠、不保证顺序。
特点:
- 无连接:直接发,不用握手
- 无状态:不维护连接状态
- 低延迟:没有 TCP 的重传和拥塞控制开销
- 支持广播和多播
适用场景:
- 视频直播/语音通话(丢几帧不影响体验)
- 在线游戏(延迟比完整更重要)
- DNS 查询(一次往返就够了)
- DHCP 地址分配
一句话总结:UDP 就像寄明信片——直接扔出去,对方收没收到不管,顺序也不保证。
IP(互联网协议)
IP 负责寻址和路由,解决"数据包怎么从 A 到 B"的问题。
IPv4:32 位地址,如 192.168.1.1,约 43 亿个地址(已耗尽)
IPv6:128 位地址,如 2001:db8::1,地址数量几乎是无限的
关键概念:
- IP 地址:设备在网络上的唯一标识
- 子网掩码:区分网络号和主机号
- 路由:路由器根据路由表决定下一跳
- TTL(生存时间):每经过一跳减 1,为 0 时丢弃,防止无限循环
HTTP/HTTPS
HTTP 是 Web 的基石,采用请求-响应模型。
HTTP 的发展:
| 版本 | 特点 |
|---|---|
| HTTP/0.9 | 只能 GET,纯文本 |
| HTTP/1.0 | 增加 POST、HEAD,每次请求新建 TCP 连接 |
| HTTP/1.1 | 持久连接、管道化、Host 头(支持虚拟主机) |
| HTTP/2 | 多路复用、头部压缩、服务器推送 |
| HTTP/3 | 基于 QUIC(UDP),彻底解决队头阻塞 |
常见的 HTTP 方法:
GET:获取资源POST:提交数据PUT:替换资源PATCH:部分修改DELETE:删除资源
HTTPS = HTTP + TLS/SSL,在 TCP 之上加了一层加密层,保证:
- 机密性(内容加密,第三方看不到)
- 完整性(内容未被篡改)
- 身份验证(确认你在和真正的服务器通信)
DNS(域名系统)
DNS 是互联网的"电话簿",把域名翻译成 IP 地址。
解析过程:
你输入 www.example.com
→ 1. 浏览器缓存
→ 2. 操作系统缓存(hosts 文件)
→ 3. 本地 DNS 服务器
→ 4. 根域名服务器
→ 5. .com 顶级域名服务器
→ 6. example.com 权威 DNS 服务器
→ 7. 返回 IP 地址:93.184.216.34
三、RPC / 服务间通信协议
REST(表述性状态转移)
REST 是目前最主流的 API 设计风格,基于 HTTP 协议。
核心原则:
- 资源:URL 代表资源,如
/users/123代表 ID 为 123 的用户 - 无状态:每个请求独立,服务器不保存客户端状态
- 统一接口:用 HTTP 方法(GET/POST/PUT/DELETE)操作资源
示例:
GET /users # 获取用户列表
GET /users/123 # 获取 ID 为 123 的用户
POST /users # 创建新用户
PUT /users/123 # 更新用户
DELETE /users/123 # 删除用户
gRPC
Google 开发的高性能 RPC 框架,基于 HTTP/2 + Protocol Buffers。
特点:
- 使用 Protocol Buffers(二进制序列化),体积小、速度快
- 基于 HTTP/2,支持多路复用、双向流
- 自动生成客户端/服务端代码
- 支持四种调用模式:一元调用、服务端流、客户端流、双向流
对比 REST:
- gRPC 用二进制,REST 用 JSON(gRPC 更省流量)
- gRPC 有强类型接口定义(.proto 文件),REST 自由但缺乏约束
- gRPC 适合微服务内部通信,REST 适合对外开放的 API
GraphQL
Facebook 开发的查询式 API 协议,让客户端精确指定要什么数据。
# 查询:只取 name 和 email,不返回多余字段
query {
user(id: 123) {
name
email
}
}
优势:避免 REST 的"过度获取"或"获取不足"问题
劣势:实现复杂,缓存困难,查询深度可能拖垮服务器
WebSocket
在 HTTP 基础上升级为全双工通信,适合实时场景。
// 客户端
const ws = new WebSocket('ws://server.com/chat');
ws.onmessage = (event) => console.log(event.data);
ws.send('Hello!');
与 HTTP 的区别:
- HTTP:请求-响应,一问一答
- WebSocket:建立连接后双向自由通信,服务器可主动推送
适用场景:在线聊天、实时行情、协同编辑、游戏
SSE(服务器推送事件)
SSE 是更简单的服务端推送方案,服务器单向推送,客户端只接收。
const source = new EventSource('/events');
source.onmessage = (event) => console.log(event.data);
与 WebSocket 对比:
- SSE 更简单,HTTP 原生支持
- SSE 只能服务器→客户端,WebSocket 双向
- SSE 自动重连,WebSocket 需手动处理
- MCP 协议支持 SSE 作为传输方式
四、消息队列 / 异步通信协议
AMQP(高级消息队列协议)
RabbitMQ 使用的协议,支持复杂的消息路由。
核心概念:
- Exchange(交换机):接收消息,按规则转发
- Queue(队列):存储消息
- Binding(绑定):连接 Exchange 和 Queue 的规则
- Routing Key:路由规则
MQTT(消息队列遥测传输)
极轻量级协议,专为物联网设计。
特点:
- 二进制协议,头部最小只有 2 字节
- 发布/订阅模式
- 支持 QoS(服务质量)三级
- 遗嘱机制(客户端异常断线时自动发送遗言消息)
适用场景:智能家居、传感器网络、车联网
Kafka Protocol
Apache Kafka 使用的二进制协议,专为高吞吐量设计。
特点:
- 持久化存储(消息不删除,按时间或大小清理)
- 消费者组(多个消费者共享一个 Topic)
- 分区机制(水平扩展)
- 支持回放(可重新消费历史消息)
五、实时通信协议
WebRTC(网页实时通信)
浏览器之间点对点音视频通信的协议。
技术栈:
- 音视频编解码
- NAT 穿透(STUN/TURN)
- P2P 数据通道
- 信令服务器(交换连接信息)
适用场景:视频会议、在线教育、远程医疗
QUIC
Google 开发的基于 UDP 的传输协议,HTTP/3 的底层。
特点:
- 0-RTT 握手(首次连接也很快)
- 无队头阻塞(一个包丢了不影响其他流)
- 连接迁移(从 WiFi 切到 4G 不需重建连接)
- 强制加密
六、AI 应用层协议
这是最新的前沿领域,让大语言模型能调用外部工具和服务。
MCP(模型上下文协议)
Anthropic 提出的AI 调用工具的标准协议。
架构:
┌──────────┐ ┌─────────────┐ ┌──────────┐
│ AI 模型 │ ←──→ │ MCP Server │ ←──→ │ 外部服务 │
│(Claude) │ │ (独立进程) │ │ (API/DB) │
└──────────┘ └─────────────┘ └──────────┘
↑ ↑
用户交互 工具调用
核心概念:
- Client:AI 应用(Claude Code 等)
- Server:提供工具的独立进程
- Tool:Server 暴露的具体功能(如
browser_navigate) - Resource:Server 提供的数据资源
传输方式:
- stdio:本地进程通信(本机安装的 MCP)
- HTTP/SSE:远程服务调用(云端的 MCP)
支持的传输: stdio 和 HTTP+SSE 两种
实际例子(你本机就装了这些):
{
"playwright": {
"command": "npx",
"args": ["@playwright/mcp@latest"]
}
}
AI 说"打开百度" → MCP 翻译成 browser_navigate("https://baidu.com") → Playwright 执行
A2A(Agent-to-Agent)
Google 提出的多个 AI Agent 之间的协作协议。
与 MCP 的区别:
- MCP 解决 AI ↔ 工具的通信
- A2A 解决 AI ↔ AI 的协作
场景举例:
用户:"帮我规划一趟东京旅行"
→ 旅行规划 Agent → 调用 MCP 查机票
→ 翻译 Agent → 调用 MCP 翻译日语文档
→ 财务 Agent → 计算预算
→ A2A 协调这三个 Agent 协作完成
Function Calling
OpenAI 和 Anthropic 模型原生的函数调用能力。
与 MCP 的区别:
- Function Calling 是模型层面的能力(模型能理解"我该调用哪个函数")
- MCP 是协议层面的标准化(让不同的工具提供商按统一规范发布工具)
类比:Function Calling 是汽车的"内燃机"(核心能力),MCP 是"USB 接口"(标准化连接方式)。
七、IoT / 嵌入式协议
| 协议 | 特点 | 典型场景 |
|---|---|---|
| MQTT | 极轻量,发布/订阅,低带宽 | 智能家居、传感器 |
| CoAP | HTTP 的精简版,基于 UDP | 物联网设备 REST 通信 |
| Zigbee | 低功耗网状网络 | 智能灯泡、门锁 |
| BLE | 蓝牙低功耗 | 穿戴设备、信标 |
| Modbus | 古老但广泛使用的工业协议 | 工厂 PLC、传感器 |
| CAN Bus | 车辆内部通信 | 汽车电子控制单元 |
八、协议对照表
按场景快速查找你需要的协议:
| 场景 | 推荐协议 |
|---|---|
| 网页/API | HTTP/HTTPS + REST |
| 微服务内部通信 | gRPC |
| 灵活查询 API | GraphQL |
| 实时聊天/推送 | WebSocket |
| 服务器单向推送 | SSE |
| 文件传输 | FTP/SFTP |
| 邮件 | SMTP/IMAP |
| 消息队列 | AMQP (RabbitMQ) / Kafka |
| IoT 设备 | MQTT |
| 视频会议 | WebRTC |
| VoIP 电话 | SIP |
| 数据库查询 | 数据库自有协议 (MySQL Protocol / PostgreSQL Protocol) |
| 域名解析 | DNS |
| 网络诊断 | ICMP (ping) |
| AI 调用工具 | MCP |
| AI Agent 协作 | A2A |
九、协议设计的原则
无论什么协议,好的设计都遵循这些原则:
- 简单:越简单越不容易出错,HTTP 的成功就是最好的例子
- 可扩展:HTTP 头、JSON 字段都是可扩展的设计
- 向后兼容:升级协议不该破坏旧客户端
- 无状态优先:无状态更容易横向扩展
- 分层解耦:TCP 不关心上层是 HTTP 还是 FTP,IP 不关心下层是网线还是 WiFi
十、总结
通信协议是互联网的骨架,从底层的 TCP/IP 到上层的 MCP,每一层解决不同的问题:
AI 应用层 | MCP, A2A, Function Calling ← 2024+ 新兴领域
应用层 | HTTP, gRPC, WebSocket, GraphQL ← 日常开发最常用
消息层 | AMQP, MQTT, Kafka Protocol ← 异步解耦
传输层 | TCP, UDP, QUIC ← 可靠 vs 速度
网络层 | IP, ICMP ← 寻址路由
链路层 | Ethernet, WiFi, BLE ← 物理传输
理解协议,就是理解"计算机如何对话"。当你写下一行代码、调用一个 API、发送一条消息时,数据正穿越这层层协议,跨越千山万水,到达另一个屏幕前。
更多推荐

所有评论(0)