新兴 IoT 物联网场景中 MQTT 与 TCP 通信协议对比

在IoT 物联网开发中,大多数通信模组都支持 TCP、UDP、MQTT、CoAP、HTTPLwM2M 等网络通信协议,其中既有传输层协议,也有应用层的协议,不同协议适用的场景也不同。

我们在设计IoT硬件产品时,通常只需选择一种协议即可。那么,如何选择一种符合业务应用场景的通信协议就显得尤为重要。

网络通信协议分层

719a2c97951b4ccd423101897ce88246.png

上图中例举了网络分层中最常见的协议:

1bc23b7cb18e0f6ef957ade0a40ecbe4.png

MQTT vs TCP

b8340bbbe1e47df096b8b30b6eef4da0.png

d1fc2439460bdac357ac8ddef5ce358a.png

MQTT 协议在 IoT 场景的优势

传输层TCP协议是否适合直接运用到IoT物联网终端设备上?

传输层协议负责传输数据,好比是一辆物流配送的货车。但我们想让货物完好运到目的地,就需要做打包、装车、验货、入库、签回单等工作。这些工作也就是应用层协议要做的工作。所以物联网设备终端要想对数据进行稳定、可靠高效地交互,就需要使用应用层的协议,而不是直接使用传输层的协议。

MQTT 相比于 TCP 长连接的优势有如下几点:

1. MQTT协议更标准

MQTT是标准的RFC协议,相比于基于TCP的私有协议而言更加标准。

(1)协议非常完整,能够马上用于生产。设备和云端服务器约定Topic和ayload之后,就能进行通信;私有协议还需要进行大量的验证,排除缺陷。

(2)大量的开源组件,降低开发难度。随着物联网生态越来越好,开源组件越来越丰富,可以减少重复编码和底层Bug。

(3)标准协议利于第三方接入。当第三方设备、平台想要对接的时候,只需拿出标准的MQTT协议对接即可。

2. MQTT协议特点

(1)MQTT协议提供了qos0、qos1和qos2的服务质量,简化了消息发送的工作量。MQTT客户端和服务端通过Session来保障不同的QoS等级。TCP协议需要自己实现类似机制,而MQTT自带这一功能,无需应用开发人员重复造轮子。

(2)心跳机制。不需要自己做业务协议层的心跳了。

(3)MQTT协议可以根据不同Topic来实现消息的业务划分,有灵活的Topic订阅匹配的机制。

(4)MQTT协议支持双向的通信,订阅发布机制。轻松实现远程控制、远程下发、远程升级等功能。

(5)MQTT协议Payload采用二进制协议可以更节约流量。流量比HTTP协议要低

(6)MQTT协议有LWT遗嘱机制,异常情况下,通知相应Topic的订阅者客户端已经离线了。

(7)MQTT协议支持TLS安全,保证数据传输过程的安全性。

(8)MQTT协议轻巧、简单,容易实现,mqtt客户端哪怕在单片机中也可以运行。

(9)MQTT协议支持一对多的消息分发。一次发布,多个客户端订阅,这对于M2M场景很省电、省流量。

(10)MQTT协议客户端Connect时,可以带有用户名和密码,用于验证客户端。服务端可以根据clientid、IP地址、用户名等进行ACL访问控制。可以通过自定义应用消息实现客户端对服务端的身份验证。

(11)MQTT协议可以通过MQTT over websocket来穿越防火墙,不需要开1883(MQTT)或8883(MQTTS)端口。

当然,以上的功能基于TCP自己开发也能做到,但如果我们全部实现了,其实不就是MQTT协议了吗?

与其重复造轮子,不如投入精力到业务架构设计中去。

往期推荐

☞ 云厂商的「物联网平台」不香了吗?

☞ 2021国内四大IoT平台性能对比

☞ 国内MCU行业发展研究报告

☞ 2021年4G通信模组企业排行

☞ 艾瑞 2021中国 IoT物联网平台研究

☞ 动图|带你了解PCB板制作过程?

531601fed2b99660901bbe14e4f6e748.gif

  • 5
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
物联网服务器开发MQTT是一个常用的消息传输协议。它是ISO标准下基于发布/订阅范式的消息协议,工作在TCP/IP协议族上。MQTT协议适用于硬件性能低下的远程设备以及网络状况较差的情况下进行消息传输。为了实现MQTT协议,需要使用一个消息间件。该协议具有轻量、简单、开放和易于实现等特点,广泛应用于机器与机器通信(M2M)和物联网IoT)等领域。在许多情况下,包括卫星链路通信传感器、偶尔拨号的医疗设备、智能家居以及一些小型化设备都广泛使用MQTT协议。 开发物联网服务器时,可以使用MQTT协议与设备进行通信。通过使用MQTT客户端库,我们可以实现从设备到服务器的数据发布和订阅的功能。服务器可以在接收到来自设备的消息后,根据需求进行相应的处理和响应。具体来说,物联网服务器开发,可以使用MQTT协议建立与设备之间的连接,并通过MQTT消息格式进行数据的传输和处理。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [物联网项目实战开发之基于STM32+W5500以太网RJ45数据上传阿里云aliyun物联网平台MQTT代码程序(多路继电器...](https://download.csdn.net/download/weixin_39804904/85448877)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [物联网开发学习笔记——MQTT协议学习](https://blog.csdn.net/secretboys/article/details/108582880)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值