文章

MQTT如此简单:MQTT和Websocket的区别是什么?为什么MQTT优于HTTP?

2024-11-13HMS工业网络

407阅
在了解了MQTT的协议特点和数据包结构、如何连接阿里云之后,我们来一起了解一下MQTT和Websocket和HTTP的区别。

    MQTT是一种基于发布/订阅模式的"轻量级"通讯协议。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。

    在了解了MQTT的协议特点和数据包结构、如何连接阿里云之后,我们来一起了解一下MQTT和Websocket和HTTP的区别。

1 MQTT和Websocket的区别是什么?

    WebSocket,是一种网络传输协议,位于OSI模型的应用层。可在单个TCP连接上进行全双工通信,能更好的节省服务器资源和带宽并达到实时通信,客户端和服务器只需要完成一次握手,两者之间就可以创建持久性的连接,并进行双向数据传输。

    MQTT协议是一种消息队列传输协议,采用订阅、发布机制,订阅者只接收自己已经订阅的数据,非订阅数据则不接收,既保证了必要的数据的交换,又避免了无效数据造成的储存与处理。

    WebSocket是一种简单的报文协议,仅仅定义了会话的发起方式和报文格式及类型;MQTT则是一种比较复杂的消息协议,MQTT不仅规定了具体的协议编码,还规定了客户端和服务器的通信模型。

    支持有序双向连接的网络协议都可以支持MQTT,MQTT over WebSocket即使用WebSocket来支持MQTT Client和Broker的连接,这样就可以用于MQTT设备跟Web端通信。

2 在物联网应用中,为什么MQTT优于HTTP?

    在MQTT协议中,数据包由:固定报头(Fixed header)、 可变报头(Variable header)、 消息体(payload)三部分构成。

   最小的数据包只有2字节,且无应用消息头。使用发布/订阅消息模式;提供一对多的消息发布和应用程序之间的解耦;消息传输不需要知道负载内容;使用 TCP/IP 提供网络连接。

    有三种消息发布的服务质量:

    至多一次

    至少一次

    只有一次

    MQTT提供will和Retain的消息选项,在客户端断线情况下,代理会通知所有订阅的客户端;保留消息使得新订阅的客户端也能收到消息通知。

    HTTP超文本传输协议,是为了提供和接收HTML界面开发,是基于客户端和服务器的请求响应协议。

    HTTP有以下要点:

    1,HTTP客户端通过URL向HTTP服务端发送请求。服务器根据接收到的请求后,向客户端发送响应信息。

    2,请求消息Request:HTTP请求由四个部分组成,请求行(request line)、请求头部(header)、空行和请求数据四个部分组成。

    3,响应消息Response:HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。

    从上可以看出,相比之下,MQTT有非常短的消息头,发布/订阅的消息模式。

    对比而言,HTTP的请求/应答方式的会话都是客户端发起的,缺乏服务器通知客户端的机制,不支持will和Retain选项,MQTT不需要设备有强大的计算能力,更适用于移动设备,对电池消耗更低,在吞吐量、响应时间、带宽使用率方面都更适合物联网应用。

责任编辑:杨培
本文来源于互联网,e-works本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供,并以尽力标明作者与出处,如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。联系方式:editor@e-works.net.cn tel:027-87592219/20/21。
读者评论 (0)
请您登录/注册后再评论