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

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

  • 📌 项目选型
  • 📌 技术方案说明
  • 📌 面试回答
  • 📌 架构设计文档
  • 按"真正会用到的顺序"来讲,而不是死背 OSI 模型。

一、TCP(Transmission Control Protocol)

1️⃣ 使用场景

只要你要求:

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

👉 基本都用 TCP

常见:

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

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

特点

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

建立连接

plain 复制代码
客户端 → SYN
服务端 → SYN + ACK
客户端 → ACK

Java 使用

plain 复制代码
Socket socket = new Socket("localhost", 8080);
OutputStream out = socket.getOutputStream();
InputStream in = socket.getInputStream();

什么时候不适合

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

二、UDP(User Datagram Protocol)

1️⃣ 使用场景

你更关心"快"而不是"准"

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

2️⃣ 使用说明

特点

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

Java 示例

plain 复制代码
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

请求示例

plain 复制代码
POST /api/order
Content-Type: application/json

{"id":123}

Java(Spring Boot)

plain 复制代码
@PostMapping("/order")
public Result create(@RequestBody OrderDTO dto) {
    return Result.ok();
}

HTTPS

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

四、WebSocket(实时通信)

1️⃣ 使用场景

服务端需要"主动推消息"

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

2️⃣ 使用说明

特点

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

连接流程

plain 复制代码
HTTP 握手 → 升级协议 → WebSocket

Spring Boot 示例

plain 复制代码
@ServerEndpoint("/ws/{userId}")
public class NoticeWs {
    @OnMessage
    public void onMessage(String msg) {}
}

不适合

❌ 大规模 IoT(连接太重)

五、gRPC(高性能 RPC)

1️⃣ 使用场景

微服务内部调用

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

2️⃣ 使用说明

特点

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

proto 示例

plain 复制代码
service UserService {
  rpc getUser (UserReq) returns (UserResp);
}

Java 调用

plain 复制代码
UserResp resp = stub.getUser(req);

适合

  • 替代 Feign
  • 高 QPS 服务

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

1️⃣ 使用场景

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

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

2️⃣ 使用说明

模型

plain 复制代码
设备 → Broker ← 服务

主题(Topic)

plain 复制代码
device/123/status

QoS

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

Java(Paho)

plain 复制代码
client.subscribe("device/+/status");

七、Kafka(高吞吐消息)

1️⃣ 使用场景

日志、事件流、大数据

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

2️⃣ 使用说明

特点

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

Java

plain 复制代码
producer.send(new ProducerRecord<>("topic", msg));

八、WebRTC(实时音视频)

你做过 小程序 + 声网

1️⃣ 使用场景

超低延迟实时通信

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

2️⃣ 使用说明

依赖协议

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

核心流程

plain 复制代码
信令交换 → 建立通道 → 音视频传输

注意

  • 穿透 NAT
  • TURN 成本高

九、FTP / SFTP(文件)

1️⃣ 使用场景

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

2️⃣ 使用说明

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

十、QUIC / HTTP3(未来趋势)

1️⃣ 使用场景

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

2️⃣ 特点

  • UDP
  • 0-RTT
  • 快速重连

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

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

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

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

相关推荐
Gensors传感器13 小时前
Gensors解读:TCP/IP协议在压力扫描系统中的作用详解
网络·网络协议·tcp/ip·压力测试·压力扫描阀·扫描阀
我送炭你添花13 小时前
树莓派部署 GenieACS 作为终端TR-069 ACS(自动配置服务器)的详细规划方案
运维·服务器·网络协议
m0_7360348513 小时前
1.27笔记
linux·服务器·笔记
华农第一蒟蒻13 小时前
一次服务器CPU飙升的排查与解决
java·运维·服务器·spring boot·arthas
j_xxx404_14 小时前
Linux:进程状态
linux·运维·服务器
济61714 小时前
linux 系统移植(第二十三期)---- 进一步完善BusyBox构建的根文件系统---- Ubuntu20.04
linux·运维·服务器
hweiyu0014 小时前
Linux 命令:csplit
linux·运维·服务器
守正出琦14 小时前
Linux信号核心函数速查表
linux·运维·服务器
花花鱼14 小时前
Linux中的755及644等等速记
linux·运维·服务器
cws20040114 小时前
Linux如何通过命令实现立即关机?shutdown命令的now参数使用详解
linux·运维·服务器