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

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

  • 📌 项目选型
  • 📌 技术方案说明
  • 📌 面试回答
  • 📌 架构设计文档
  • 按"真正会用到的顺序"来讲,而不是死背 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 用于实时音视频。

相关推荐
笑锝没心没肺24 分钟前
fail2ban工具安装配置及使用
linux·运维·服务器
zt1985q2 小时前
本地部署开源智能家居集成平台 ioBroker 并实现外部访问( Windows 版本)
运维·服务器·智能家居
心心喵3 小时前
[linux] nohup和pm2的区别 进程保活
linux·运维·服务器
范什么特西8 小时前
网络代理问题
java·linux·服务器
utf8mb4安全女神9 小时前
【Redis数据库】哨兵集群/redis集群/安装配置/主从复制/数据持久化操作/数据结构/安全限制/PHP redis/
linux·服务器·数据结构·数据库·redis·缓存
Let's Chat Coding9 小时前
对称密钥认证:主机和设备共享同一把密钥
运维·服务器·网络
写代码的学渣9 小时前
Linux 安装 Swap 交换分区大小标准(通用 + 生产服务器 + 个人 PC)
linux·运维·服务器
fei_sun10 小时前
ARP(地址解析协议)与NDP(邻居发现协议)
运维·服务器
小石潭记丶11 小时前
本地mac创建秘钥,然后远程登录Linux服务器
linux·服务器·macos
Qimooidea12 小时前
祁木 CAD Translator 全套功能 & 官网入口汇总
运维·服务器