一、HTTP详细解析
HTTP(Hypertext Transfer Protocol)是一个基于请求-响应模式的应用层协议,主要用于浏览器和服务器之间传输网页、接口数据等信息。
在 HTTP 模型中,客户端(比如浏览器)主动向服务器发送请求,服务器接收后处理并返回响应,流程非常直接。比如,当我们在浏览器地址栏输入网址并回车时,就是一次 HTTP 请求,服务器会返回网页代码,浏览器渲染后展示给我们看。
HTTP 的特点是无状态(每次请求相互独立),但可以通过 Cookie、Session 等方式维护会话信息。
它支持多种请求方法(如 GET、POST、PUT、DELETE 等),也有一套完善的状态码(比如 200 表示成功,404 表示未找到,500 表示服务器错误等),以及丰富的请求头和响应头,帮助控制缓存、身份认证、内容协商等。
在性能上,HTTP/1.1 支持「长连接(Keep-Alive)」,多个请求可以复用同一条 TCP 连接;HTTP/2 和 HTTP/3 则引入了多路复用、头部压缩等机制,大幅提高了传输效率。
✅ 常见请求方法(HTTP Methods)
|
方法 |
作用 |
典型场景 |
|
GET |
获取资源,不应有副作用 |
请求网页、获取数据 |
|
POST |
提交资源,可能改变服务器状态 |
表单提交、登录接口 |
|
PUT |
更新资源(幂等) |
更新用户信息、修改配置 |
|
DELETE |
删除资源(幂等) |
删除用户、删除文件 |
|
PATCH |
对资源进行部分修改(非幂等) |
更新部分字段 |
|
HEAD |
与 GET 类似,但只返回头部 |
检测资源是否存在 |
|
OPTIONS |
查询支持哪些方法,或做预检请求 |
CORS 预检请求 |
幂等:多次请求结果一样(GET、PUT、DELETE);
非幂等:多次请求结果可能不一样(POST、PATCH)。
✅ 常见状态码(Status Codes)
|
类别 |
范围 |
描述 |
示例 |
|
1xx |
100–199 |
信息性 |
100 Continue(继续) |
|
2xx |
200–299 |
成功 |
200 OK、201 Created |
|
3xx |
300–399 |
重定向 |
301 Moved Permanently、302 Found |
|
4xx |
400–499 |
客户端错误 |
400 Bad Request、401 Unauthorized、404 Not Found |
|
5xx |
500–599 |
服务器错误 |
500 Internal Server Error、502 Bad Gateway |
✅ HTTP 头部(Headers)
Host:请求的主机名Content-Type:请求体的数据格式(如application/json,text/html)Authorization:携带认证信息Cookie:客户端存储的状态信息Set-Cookie:服务器返回设置 CookieCache-Control:缓存控制策略User-Agent:客户端信息(浏览器、系统)Accept:客户端可接受的内容类型(内容协商)Range:请求部分内容(用于断点续传)
✅ 持久连接(Keep-Alive)
- HTTP/1.0 默认短连接,HTTP/1.1 开始默认开启 持久连接(Keep-Alive),可以复用同一 TCP 连接处理多个请求,减少建立连接开销。
✅ 缓存机制
- 强缓存:
Expires、Cache-Control: max-age - 协商缓存:
Last-Modified+If-Modified-Since、ETag+If-None-Match - 可以减少资源重复下载,提高访问效率。
✅ 内容协商
- 根据
Accept、Accept-Encoding、Accept-Language等头部,服务器可以返回不同版本的内容(比如中英文版本、不同压缩格式)。
✅ HTTPS(HTTP Secure)
- HTTP + TLS/SSL,保障数据加密传输、安全认证、防篡改。】
二、MQTT详细解析
MQTT(Message Queuing Telemetry Transport)是一种基于发布-订阅模式的轻量级消息传输协议,最早专门为物联网(IoT)设计,适用于低带宽、低功耗、不稳定网络环境(比如传感器、智能家居、工业设备)。
在 MQTT 中,客户端不会直接互相通信,而是通过一个中间服务器(Broker)进行消息转发。
- 发布者将消息发送到某个「主题(Topic)」
- 订阅者订阅这个主题,Broker 接收到消息后会主动把消息推送给订阅者
这种模型相比 HTTP 的请求-响应方式,更适合需要实时推送消息的场景,比如智能门锁状态更新、传感器实时告警等。
MQTT 特别强调轻量:消息头部极小,只需几字节,就能显著降低网络流量;同时,它提供多种消息质量保障(QoS):
- QoS 0:最多一次,可能丢失
- QoS 1:至少一次,可能重复
- QoS 2:确保只有一次,可靠但更慢
此外,MQTT 还支持「遗嘱消息」(客户端异常下线自动发送)、「保留消息」(保存最后一条主题消息给新订阅者)等机制,增强系统的可靠性和灵活性。
✅ 核心概念
|
概念 |
作用 |
|
Broker |
消息中转服务器 |
|
Client |
发布者或订阅者 |
|
Topic |
消息主题,类似路由 |
|
Message |
具体传输的消息内容 |
三、HTTP vs MQTT 更深入对比
|
对比项 |
HTTP |
MQTT |
|
传输模型 |
请求-响应 |
发布-订阅 |
|
连接方式 |
短连接为主,可 Keep-Alive |
长连接 |
|
推送能力 |
需要轮询或 HTTP/2 推送 |
Broker 主动推送 |
|
实时性 |
一般 |
非常高,适合毫秒级通知 |
|
带宽占用 |
相对大(完整报文) |
极小(几字节头部) |
|
消息确认 |
没有内置确认机制(需要应用层做) |
QoS 支持多级确认 |
|
适用场景 |
Web 服务、API 调用、网页请求 |
IoT 设备、消息推送、传感器网络 |
|
协议规范 |
RFC 2616/7540/9114 |
OASIS MQTT v3.1.1/v5.0 |
1317

被折叠的 条评论
为什么被折叠?



