主流传输 / 通信协议的【使用场景 + 详细使用说明】大全

78 阅读3分钟

下面是一份 「主流传输 / 通信协议的【使用场景 + 详细使用说明】大全」偏工程实战 + 后端视角,可以直接用于:

  • 📌 项目选型
  • 📌 技术方案说明
  • 📌 面试回答
  • 📌 架构设计文档

按“真正会用到的顺序”来讲,而不是死背 OSI 模型。


一、TCP(Transmission Control Protocol)

1️⃣ 使用场景

只要你要求:

  • 数据 不丢
  • 顺序 不能乱
  • 结果 必须可靠

👉 基本都用 TCP

常见:

  • HTTP / HTTPS
  • 数据库连接(MySQL、PostgreSQL)
  • 文件传输
  • 后端服务之间调用

2️⃣ 使用说明(核心点)

特点

  • 面向连接(三次握手)
  • 可靠传输(重传、确认)
  • 有序
  • 流量控制、拥塞控制

建立连接

客户端 → SYN
服务端 → SYN + ACK
客户端 → ACK

Java 使用

Socket socket = new Socket("localhost", 8080);
OutputStream out = socket.getOutputStream();
InputStream in = socket.getInputStream();

什么时候不适合

❌ 实时音视频
❌ 游戏实时操作


二、UDP(User Datagram Protocol)

1️⃣ 使用场景

你更关心“快”而不是“准”

  • 视频通话
  • 实时直播
  • 在线游戏
  • 语音对讲
  • WebRTC 底层

2️⃣ 使用说明

特点

  • 无连接
  • 不保证送达
  • 不保证顺序
  • 延迟极低

Java 示例

DatagramSocket socket = new DatagramSocket();
DatagramPacket packet =
    new DatagramPacket(data, data.length, address, port);
socket.send(packet);

工程实践

  • 自己做:

    • 丢包补偿
    • 顺序控制
    • 重发策略

👉 WebRTC / QUIC 已帮你封装好


三、HTTP / HTTPS(最核心)

1️⃣ 使用场景

请求-响应模型

  • Web 接口
  • 前后端交互
  • 微服务调用
  • 第三方 API

2️⃣ 使用说明

常见版本

版本特点
HTTP/1.1简单、阻塞
HTTP/2多路复用
HTTP/3基于 QUIC

请求示例

POST /api/order
Content-Type: application/json

{"id":123}

Java(Spring Boot)

@PostMapping("/order")
public Result create(@RequestBody OrderDTO dto) {
    return Result.ok();
}

HTTPS

  • HTTP + TLS
  • 防监听、防篡改

四、WebSocket(实时通信)

1️⃣ 使用场景

服务端需要“主动推消息”

  • 审批流状态通知
  • 实时聊天
  • 在线人数
  • 任务进度推送

2️⃣ 使用说明

特点

  • 基于 TCP
  • 全双工
  • 长连接

连接流程

HTTP 握手 → 升级协议 → WebSocket

Spring Boot 示例

@ServerEndpoint("/ws/{userId}")
public class NoticeWs {
    @OnMessage
    public void onMessage(String msg) {}
}

不适合

❌ 大规模 IoT(连接太重)


五、gRPC(高性能 RPC)

1️⃣ 使用场景

微服务内部调用

  • 高并发
  • 内网服务
  • 强接口约束

2️⃣ 使用说明

特点

  • HTTP/2
  • Protobuf(二进制)
  • 多语言

proto 示例

service UserService {
  rpc getUser (UserReq) returns (UserResp);
}

Java 调用

UserResp resp = stub.getUser(req);

适合

  • 替代 Feign
  • 高 QPS 服务

六、MQTT(物联网 / 实时消息)

1️⃣ 使用场景

大量设备、低功耗、弱网络

  • 设备状态上报
  • IoT
  • 即时通知
  • 小程序 + 后端

2️⃣ 使用说明

模型

设备 → Broker ← 服务

主题(Topic)

device/123/status

QoS

等级含义
0最多一次
1至少一次
2仅一次

Java(Paho)

client.subscribe("device/+/status");

七、Kafka(高吞吐消息)

1️⃣ 使用场景

日志、事件流、大数据

  • 操作日志
  • 埋点
  • 流式计算

2️⃣ 使用说明

特点

  • 拉模型
  • 高吞吐
  • 不适合低延迟通知

Java

producer.send(new ProducerRecord<>("topic", msg));

八、WebRTC(实时音视频)

你做过 小程序 + 声网

1️⃣ 使用场景

超低延迟实时通信

  • 视频会议
  • 语音通话
  • 屏幕共享

2️⃣ 使用说明

依赖协议

  • UDP
  • ICE
  • STUN / TURN
  • DTLS / SRTP

核心流程

信令交换 → 建立通道 → 音视频传输

注意

  • 穿透 NAT
  • TURN 成本高

九、FTP / SFTP(文件)

1️⃣ 使用场景

  • 文件上传下载
  • 系统对接

2️⃣ 使用说明

  • 生产一定用 SFTP
  • 基于 SSH
  • 支持断点续传

十、QUIC / HTTP3(未来趋势)

1️⃣ 使用场景

  • 移动端
  • 高丢包网络
  • CDN

2️⃣ 特点

  • UDP
  • 0-RTT
  • 快速重连

十一、最重要的【选型速查表】

需求推荐
接口调用HTTP
实时推送WebSocket
高性能 RPCgRPC
音视频WebRTC
IoTMQTT
日志流Kafka
文件SFTP
弱网QUIC

十二、面试一句话总结(直接背)

HTTP 适合请求响应,WebSocket 适合实时双向;
TCP 保证可靠,UDP 保证低延迟;
gRPC 用于微服务,MQTT 用于物联网;
WebRTC 用于实时音视频。