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

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

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

相关推荐
迪康coolmu31 分钟前
出差终端数据安全落地实战:基于迪康端点安全一体化管理系统的四道防线实践
运维·服务器·经验分享·笔记·其他·安全·php
qq_371802113 小时前
Ubuntu Linux中安装WorkBuddy
linux·运维·服务器·ubuntu
坤坤子吖5 小时前
Linux网络编程:TCP服务器的多进程与多线程实现
linux·服务器·开发语言·网络·c++·笔记·学习
say_fall6 小时前
【AI大模型】MCP 模型上下文协议:客户端-服务器架构、JSON-RPC 消息与能力协商、工具发现与调用链路、与函数调用的分工
服务器·人工智能·架构
木子欢儿9 小时前
国内 macOS/Linux 安装 rust
linux·运维·服务器·macos·rust
say_fall9 小时前
【Linux网络编程】计算机网络基础:局域网与广域网、OSI七层模型与TCP/IP五层模型、封装解包与MAC/IP地址、端口号与socket编程接口
linux·网络·tcp/ip·计算机网络·信息与通信
迪菲赫尔曼9 小时前
【基础篇 26】第一次在服务器完成训练:准备数据、断线继续、检查成果与备份
运维·服务器·人工智能·机器学习·计算机视觉
进击的荆棘9 小时前
Linux系统——线程同步与互斥
linux·运维·服务器·策略模式·同步·互斥·posix
.道阻且长.9 小时前
Linux基本开发工具:gdb和cgdb的使用
linux·运维·服务器·开发语言
叼烟扛炮10 小时前
Linux 学习笔记(五十四):内网穿透实战——用 frp 让外网访问你的私人电脑
linux·服务器·网络·笔记·学习