前言

当你打开一个网页、发送一条消息、或者让 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

九、协议设计的原则

无论什么协议,好的设计都遵循这些原则:

  1. 简单:越简单越不容易出错,HTTP 的成功就是最好的例子
  2. 可扩展:HTTP 头、JSON 字段都是可扩展的设计
  3. 向后兼容:升级协议不该破坏旧客户端
  4. 无状态优先:无状态更容易横向扩展
  5. 分层解耦: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、发送一条消息时,数据正穿越这层层协议,跨越千山万水,到达另一个屏幕前。

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐