yy协议源码论坛_物联网防火墙himqtt源码之MQTT协议分析

本文详细分析了MQTT协议的CONNECT、PUBLISH、SUBSCRIBE和UNSUBSCRIBE指令,基于物联网防火墙himqtt的源码。himqtt是一款高性能的MQTT应用防火墙,采用C语言编写,支持高并发连接。内容涵盖了MQTT报文结构、身份认证、消息发布、订阅与取消订阅的协议细节,强调了在物联网设备中安全防护的重要性。
摘要由CSDN通过智能技术生成

本文为看雪论坛优秀文章

看雪论坛作者ID:xiaoduoduo

himqtt是首款完整源码的高性能MQTT物联网防火墙 - MQTT Application FireWall,C语言编写,采用epoll模式支持IoT数十万的高并发连接,并且兼容ModSecurity部分规则。

代码非常优秀,非常值得收藏和学习,今天笔者就从结合himqtt的源码来进行MQTT协议分析。

一、MQTT协议指令汇总

MQTT协议一共有14个指令,如下表所示:其中有9个报文都是固定的2~4个字节,非常简单适合小型物联网设备。

4529bd8aa66016a8be7cc051df06f15c.png

MQTT协议由指令号(1字节)+长度(1-4字节不定)+内容组成,比如下面第一个字节0x30表示publish发布消息指令,0x26表示后面的内容长度就是38个字节。

---------------MQTT PUBLISH- ------40bytes-------------------------------------------

| 30 26 00 14 68 6f 6d 65 2f 67 61 72 64 65 6e 2f   |0&..home/garden/|

| 66 6f 75 6e 74 61 69 6e 31 32 33 34 35 36 37 38  |fountain12345678|

| 39 30 61 62 63 64 65 66                        |90abcdef

先到github上下载himqtt最新源码:https://github.com/qq4108863/himqtt/ 打开src/waf/mqtt.c文件。

特别注意的是:长度占用的字节数是可变的(1-4字节),具体的计算方法在process_mqtt_msg这个函数里面,理论上这种算法后续消息内容是最大长度是268435455字节(约255M)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值