一、HTTP协议
1、HTTP协议概述
HTTP是一种应用层协议,使用TCP作为传输层协议,默认端口是80,基于请求和响应的方式,即客户端发起请求,服务器响应请求并返回数据(HTML,JSON)。在HTTP/1.1中,使用了长连接技术,允许一个连接复用多个请求和响应,减少了TCP三次握手的消耗。
2、HTTP的基本结构
请求行:包含请求方法(GET, POST等)、请求URL、协议版本。
请求头:包括各种元数据,如Connection、Host、Content-Type等。
空行:标识头部与载荷的分界线
请求体:通常在POST请求中出现,包含请求的具体数据。
3、HTTP的局限性
无状态性:HTTP是无状态协议,每次请求都是独立的,不会记录上一次请求的任何信息,如果需要记录用户状态,需要额外机制如: Cookies:浏览器在发送请求时,可以携带上次访问时服务器存储的Cookies(小型文本数据),服务器通过这些Cookies来识别用户的身份或维持会话状态。
高开销:每次请求都需要建立TCP连接,导致网络开销较大,尤其在频繁请求的场景下。
实时性差:HTTP通常是客户端主动发起请求,服务器无法主动推送数据。
二、MQTT协议概述
1、MQTT的基本概念
MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。使用TCP协议进行传输,端口为1883(非加密)和8883(加密),客户端通过发布(Publish)消息到某个主题(Topic),而其他订阅(Subscribe)该主题的客户端会接收到消息。协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。
2、MQTT的基本结构
主题(Topic):消息的标签,决定了消息的去向。订阅者根据主题来接收消息。
QoS(Quality of Service)级别:决定消息传输的可靠性。MQTT支持三个级别的QoS:
QoS 0:最多一次发送,不保证消息送达。
QoS 1:至少一次发送,确保消息至少送达一次。
QoS 2:只有一次发送,确保消息只送达一次。
保留标志:用于确保客户端在订阅时能接收到最后一条消息。