您的位置 首页 php

Http vs. Mqtt

549a0e7955944221b947c1eca0ed483b

背景

随着智能家居、智能穿戴产业、工业4.0、智慧城市等产业的飞速发展,物联网应用需求也越来越多,基于这种飞速发展的IoT物联网前景下,IoT物联网的协议也是也有许多。 一般常用的物联网应用层协议包括MQTT、HTTP等 ,常见的IoT物联网网络架构中,首先是终端的设备或者传感器采集到信号或者信息,对于不能上internet或者intranet网的设备,传感器先把探测到的信息发送到网关,然后网关把信息发送给服务器, HTTP 和 MQTT两者在操作上有很大不同,各有优缺点,本文将研究两种消息传递协议 HTTP 和 MQTT,了解协议的相对优势和劣势 。让您根据情况选择最适合 IoT 传输方案。


HTTP

介绍

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写 ,HTTP被设计于20世纪90年代初期是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的一种可扩展的应用层传送协议。 HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等) 。是目前绝大多数 Internet 和网站的消息传递协议。

8e95717fb6364ec1aab7e76cb7e75619

特性

HTTP协议到目前为止全部的版本可以分为HTTP 0.9、HTTP 1.0、HTTP 1.1、HTTP 2.0、HTTP 3.0 ,其中现在普遍应用的版本是HTTP 1.1版本,正在推进HTTP 2.0版本,以及未来的HTTP 3.0版本。

435217023a4f41279a6c36a6218f294c

协议特点

cs模式: 支持客户/服务器模式

协议简单: 虽然下一代HTTP/2协议将HTTP消息封装到了帧(frames)中,HTTP大体上还是被设计得简单易读

灵活性: HTTP允许传输任意类型的数据对象

可靠性: 因为http是基于tcp/ip传输的,因为tcp/ip是一个连接传输协议,因此是是一个可靠的传输

无状态: 在同一个连接中,两个执行成功的请求之间是没有关系的,服务器不跟踪不记录请求过的状态,

无连接: 无连接的含义是限制每次连接只处理一个请求

请求/响应模型

70003ae2f91743b3889357197b0dd351

  • 客户端浏览器先要与服务器建立连接, 即通过三次握手建立连接 。在浏览器上最常见的场景就是单击一个链接,这就触发了连接的建立。
  • 连接建立后,客户端浏览器发送一个请求到服务器 ,这个过程其实是组装请求报文的过程。
  • 服务器端接收到请求报文后,对报文进行解析,组装成一定格式的响应报文,返回给客户端。
  • 客户端浏览器接收到响应报文后,通过浏览器内核对其进行解析,按照一定的外观进行显示,然后与服务器断开连接。

优缺点

http优点:

  • 简单,灵活,易于扩展,因为无太多限制,因为简单可以叫用户自己扩展。
  • 应用广泛,环境成熟,因为过于简单,普及,因此应用很广泛
  • 因为本身不属于一种语言,因此,就无平台,语言界限,因此跨平台性很强。
  • 无状态,因为没有任何记录。可以减轻服务器的负担,能够更多的cpu和内存用来对外提供服务

http缺点:

  • 明文不安全,需要使用https
  • 因为无状态,因此无法做连续多个步骤的操作。
  • “请求 – 应答”模式则加剧了 HTTP 的性能问题,当顺序发送的请求序列中的一个请求因为某种原因被阻塞时,在后面排队的所有请求也一并被阻塞。


MQTT

介绍

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议) 由IBM在1999年发布, 是一种基于发布/订阅(publish/subscribe)模式的”轻量级”通讯协议 ,MQTT 与 HTTP 一样,MQTT 运行在传输控制协议/互联网协议 (TCP/IP) 堆栈之上。MQTT协议是为大量计算能力有限且工作在低带宽、不可靠网络的远程传感器和控制设备通讯而设计的一种协议,M QTT协议的优势是可以支持所有平台,它几乎可以把所有的联网物品和互联网连接起来。

8e3cdb74e75f43a3b79ffcb7b87a5efe

特点

目前支持和使用最广泛的版本是MQTT 3.1.1版本 。2017 年 8 月,OASIS MQTT Technical Committee 正式发布了用于 Public Review 的 MQTT 5.0 的草案。 2018 年,MQTT 5.0 已正式发布 ,支持特点如下。

发布/订阅: 使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合

消息传输: 对负载内容屏蔽的消息传输机制。

服务质量(QoS): 提供三种等级的服务质量,来提高数据传输质量

低功耗: 小型传输,开销很小(固定长度的头部是2字节),协议交换最小化,以降低网络流量

通知机制: 使用Last Will和Testament特性通知有关各方客户端异常中断的机制

dee7addfa58f4ba78c477f36f149fafd

协议原理

6515b8f38ad848ed89a7de0fb851ee4b

概念介绍

订阅(Subscription): 订阅包含主题筛选器(Topic Filter)和最大服务质量(QoS)

会话(Session): 每个客户端与服务器建立连接后就是一个会话,客户端和服务器之间有状态交互

主题名(Topic Name): 连接到一个应用程序消息的标签,该标签与服务器的订阅相匹配。服务器会将消息发送给订阅所匹配标签的每个客户端

主题筛选器(Topic Filter) 一个对主题名通配符筛选器,在订阅表达式中使用,表示订阅所匹配到的多个主题

负载(Payload): 消息订阅者所具体接收的内容

角色介绍

实现MQTT协议需要客户端和服务器端通讯完成,在通讯过程中,MQTT协议中有三种身份:发布者(Publish)、服务器(Broker)、订阅者(Subscribe),其中,消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者,MQTT传输的消息分为,Topic和负载payload 两部分。

发布者(Publish): Mqtt 客户端,发布其他客户端可能会订阅的信息

服务器(Broker): MQTT服务器可称为“消息代理”(Broker),可以是一个应用程序或一台设备。它是位于消息发布者和订阅者之间

订阅者(Subscribe) Mqtt 客户端,订阅其它客户端发布的消息

协议方法

MQTT协议中定义了一些方法, 来表示对确定资源所进行操作。这个资源可以代表预先存在的数据或动态生成数据,这取决于服务器的实现。通常来说,资源指服务器上的文件或输出

Connect: 等待与服务器建立连接

Disconnect: 等待MQTT客户端完成所做的工作,并与服务器断开TCP/IP会话

Subscribe: 等待完成订阅

UnSubscribe: 等待服务器取消客户端的一个或多个topics订阅

Publish: MQTT客户端发送消息请求,发送完成后返回应用程序线程

优缺点

优点

  • 开销小,MQTT的独特功能是每个消息头都可以缩短为2个字节,降低网络传输量
  • 稳定性,包容不稳定的网络,MQTT可以从诸如断开连接之类的故障中恢复,无需进一步的代码要求
  • 低功耗,MQTT专为低功耗目标而设计。
  • 高性能,MQTT可处理处理多达一百万个并发设备
  • 防火墙容错,MQTT 可 封装在一个 WebSockets 连接中,显示为一个 HTTP 升级请求,避免防火墙屏蔽
  • 支持各种流行编程语言(包括C,Java,Ruby,Python 等等)且易于使用的客户端

缺点

  • 根据不同设备需要开发不同的SDK软件包
  • 不支持文件和AV
  • 不支持与第三方HTTP集成


总结

HTTP 的优点是它只在设备发送和接收数据时保持连接的活动时间很短,而 MQTT 必须保持连接活动,MQTT 的优势在于,服务器可以向客户端发送数据而无需被要求,这在客户端设备上设计代码时非常有用 。不需要探测服务器的数据然后处理结果,它可以是事件驱动的。它还允许设备使用存储在服务器上的全局变量通过服务器轻松进行交叉通信。

HTTP

MQTT

低开销

容忍网络不稳定

低功耗

百万链接

是(成本高)

模式

client-server模式

发布订阅

复杂度

数据安全

不提供安全,需要https

SSL/TLS

设计原则

以文档为中心

以数据为中心


推荐阅读


文章来源:智云一二三科技

文章标题:Http vs. Mqtt

文章地址:https://www.zhihuclub.com/31925.shtml

关于作者: 智云科技

热门文章

网站地图