(填个坑)MQTT协议抓包实验

实验目的

1)熟悉Wireshark抓包工具及抓包流程。

2)掌握MQTT通信流程。

实验准备

实验硬件:

笔记本电脑 x 1

实验软件:

Wireshark、MQTTX客户端、免费的公共MQTT服务器

实验原理

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。做为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。

MQTT 的连接地址通常包含:服务器 IP 或者域名、服务器端口、连接协议。mqtt是普通的 TCP 连接,端口一般为1883。mqtts是基于TLS/SSL的安全连接,端口一般为8883。比如mqtt://broker.emqx.io:1883是一个基于普通TCP的MQTT连接地址。

在建立连接时,首先客户端往服务器发送CONNECT连接建立报文。规定在网络连接建立后,客户端发送给服务端的第一个报文必须是CONNECT报文。在一个网络连接上,客户端只能发送一次CONNECT报文。服务端必须将客户端发送的第二个CONNECT报文当作协议违规处理并断开客户端的连接。在这个报文中包含了遗嘱信息、keep alive等标志位。

MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。

在服务器接收到CONNECT报文后,服务端发送CONNACK报文响应从客户端收到的CONNECT报文。服务端发送给客户端的第一个报文必须是CONNACK。如果客户端在合理的时间内没有收到服务端的CONNACK报文,客户端应该关闭网络连接。合理的时间取决于应用的类型和通信基础设施。在CONNACK报文中,主要包含连接确认标志和返回码,但是不包含有效载荷。

通过Wirshark对电脑网络通信的监听,抓取MQTTX客户端在连接MQTT服务器、订阅主题、发布消息和断开连接时发出的数据报文,通过对报文的抓包更加直观的学习和理解MQTT服务器与客户端之间的通信流程。

实验步骤

1)启动抓包工具Wireshark,选择WLAN接口(根据本机实际选择)进行网络数据的监听和记录。

2)使用MQTTX客户端连接公共MQTT服务器,在此过程中MQTTX客户端会向服务器发出建立连接请求,在成功建立连接后服务器则会返回客户端连接确认报文。

若是使用本地部署的EMQX服务器,则将EMQX启动后,将公共MQTT服务器的域名更换为EMQX服务器所在的IP地址,端口号不变。

3)与MQTT的服务器成功建立连接后,即可订阅主题和发布消息。

4)订阅该主题后,MQTT服务器在收到向该主题发布的消息后,会将该消息转发给所有订阅该主题的客户端。

5)在完成测试后,点击右上角的红色电源图标,即可断开与MQTT服务器的连接,此时会有断开连接的报文发送。

实验结果

在Wireshark软件中成功监听到MQTTX客户端和MQTT服务器进行通信的报文。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

渺若星辰_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值