通信协议全景讲解文档(从底层到应用一文讲透)


一、什么是“协议”?

协议(Protocol)本质是:

👉 通信双方约定好的一套规则

包括:

  • 数据怎么发送

  • 数据格式是什么

  • 谁先说话

  • 出错怎么处理


二、协议的分层体系(核心)

在计算机网络中,协议是分层的:

应用层(Application)
传输层(Transport)
网络层(Network)

三、各层协议详解


1️⃣ 网络层(Network Layer)

核心作用:

👉 决定数据从哪里到哪里(寻址 + 路由)


代表协议:

IP(Internet Protocol)

特点:

  • 每个设备有IP地址

  • 负责把数据包送到目标机器

  • 不保证可靠(可能丢)


2️⃣ 传输层(Transport Layer)

核心作用:

👉 保证数据怎么传(是否可靠)


(1)TCP

特点:

  • 面向连接(先建立连接)

  • 可靠传输(不丢、不乱序)

  • 有确认机制(ACK)

  • 有重传机制

适用:

  • Web请求

  • MQTT

  • 数据库通信


(2)UDP

特点:

  • 无连接

  • 不保证可靠

  • 速度快

适用:

  • 视频流

  • 实时通信


3️⃣ 应用层(Application Layer)

👉 最关键的一层(你现在工作的重点)


应用层协议分类


一类:通用互联网协议


(1)HTTP

特点:

  • 请求 / 响应模式

  • 一次请求一次响应

  • 无状态

流程:

客户端 → 请求 → 服务端 → 响应 → 结束

(2)WebSocket

特点:

  • 基于 TCP

  • 长连接

  • 双向通信

  • 服务端可主动推送

用途:

  • 实时聊天

  • 实时数据展示


(3)MQTT

特点:

  • 发布 / 订阅模式(Pub/Sub)

  • 轻量级

  • 长连接

  • 基于 TCP

核心角色:

Publisher(发布者)
Subscriber(订阅者)
Broker(服务器)

流程:

发布者 → Broker → 订阅者

二类:工业设备协议


(4)Modbus

特点:

  • 工业最常见协议

  • 本质:读写寄存器

  • 简单高效

示例:

读:地址100
写:地址200 = 1

运行方式:

  • 串口(RTU)

  • TCP(Modbus TCP)


(5)S7(西门子协议)

特点:

  • 用于西门子PLC

  • 按数据块(DB)读取

示例:

读取 DB1.DBW0

(6)OPC UA

特点:

  • 标准化工业协议

  • 支持结构化数据

  • 安全性高


(7)CoAP

特点:

  • 类似 HTTP

  • 更轻量

  • 基于 UDP


三类:业务自定义协议(重点)

👉 企业内部定义

通常基于:

  • MQTT

  • HTTP

形式:

  • JSON

  • 二进制


示例:

{
  "deviceId": "D001",
  "type": "report",
  "data": {
    "temp": 25
  }
}

四、协议之间的关系(重点)


示例1:HTTP

HTTP
↓
TCP
↓
IP

示例2:MQTT

MQTT
↓
TCP
↓
IP

示例3:Modbus TCP

Modbus
↓
TCP
↓
IP

示例4:WebSocket

WebSocket
↓
TCP
↓
IP

五、核心区别总结

类型协议作用
网络层IP定位
传输层TCP/UDP传输
应用层HTTP/MQTT/WS通信方式
设备协议Modbus/S7设备数据
业务协议JSON数据结构

六、MQTT vs HTTP vs WebSocket

对比项MQTTWebSocketHTTP
通信模式发布订阅双向通信请求响应
连接方式长连接长连接短连接
是否支持推送
适用场景设备通信实时前端Web接口

七、完整系统通信链路(典型物联网)

设备(PLC)
   ↓(Modbus / S7)
网关
   ↓(MQTT)
Broker
   ↓(MQTT)
Java服务
   ↓
数据库

八、协议的本质区别总结(最重要)


1️⃣ TCP

👉 解决:数据怎么可靠传输


2️⃣ WebSocket

👉 解决:浏览器如何长连接通信


3️⃣ MQTT

👉 解决:消息如何发布订阅


4️⃣ Modbus / S7

👉 解决:设备数据如何读取/控制


5️⃣ 业务协议

👉 解决:数据内容长什么样


九、常见误区


❌ MQTT = TCP

👉 错:MQTT 是跑在 TCP 上


❌ WebSocket = MQTT

👉 错:用途完全不同


❌ 协议只有一种

👉 错:是多层叠加


十、一句话总结

👉
网络层负责“去哪”,传输层负责“怎么传”,应用层负责“传什么”。


(完)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值