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

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

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

相关推荐
工程师老罗20 小时前
龙芯2k0300 PMON取消Linux自启动
linux·运维·服务器
skywalk816320 小时前
网站证书自动续订失败的问题解决,原来是续订指令certbot renew出错,导致crontab定时任务续订失败
运维·服务器·证书·certbot
额呃呃20 小时前
游戏服务器和一般高性能服务器的区别
运维·服务器·游戏
liwulin050621 小时前
【JAVA】创建一个不需要依赖的websocket服务器接收音频文件
java·服务器·websocket
gaize121321 小时前
服务器分类及区别划分!多样化服务器用途体系架构及层次分类
运维·服务器·架构
oMcLin1 天前
如何在Manjaro Linux上配置并优化Caddy Web服务器,确保高并发流量下的稳定性与安全性?
linux·服务器·前端
济6171 天前
linux(第七期)--gcc编译软件-- Ubuntu20.04
linux·运维·服务器
星辰烈龙1 天前
黑马程序员JavaSE基础加强d5
服务器·网络·php
浩子智控1 天前
分区操作系统、容器化、虚拟机的概念
服务器·系统安全