嵌入式开发学习日志(linux系统编程--网络抓包及MQTT协议)Day35
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设
一、wireshark
、
数据发出,有封包过程;数据接收时,有拆包的过程
专业术语:
1.MTU:(以太网限制,帧分包是按1500[即1.5K]发送)指网络能够传输的最大数据包大小,以字节为单位。MTU的大小决定了发送端一次能够发送报文的最大字节数。如果MTU超过了接收端所能够承受的最大值,或者是超过了发送路径上途经的某台设备所能够承受的最大值,就会造成报文分片甚至丢弃,加重网络传输的负担。如果太小,那实际传送的数据量就会过小,影响传输效率。

注意:除MAC头,剩下的东西称为IP数据报
ip_top
ip_top total length指不包含IP头的长度 IP Flags(IP标志位) TTL(生存时间)默认时间为64,每执行一次默认减一,直到为0
![]()
udp_top
tcp_top
wireshark安装及使用:
sudo apt-get install wireshark//安装
sudo wireshark//启动wireshark
三次握手四次挥手展现:
步骤:
1.选择网络设备
2.设置条件
写入自己端口号,按回车:
ip.addr == 192.0.2.1 && tcp.port == 50000
sudo tcpdump -n -i eth0 -xx src or dst www.taobao.com -AXX -vv|less
-n 抓网址 -i 抓网卡 -AXX字符或字符串
tcpdump ==》命令行 ===>www.tcpdump.com
二、常用网络测试命令及工具
1、telnet 工具
远程登录工具,默认都是系统安装。
使用格式: telnet ip地址 端口
eg: telnet 192.168.1.1 8888
注意:如果没有写端口,则默认登录23 号端口。
2、netstat 命令
测试查看网络端口使用情况
netstat -anp
netstat -n ===>列出当前所有网络端口使用情况
netstat -n -t ===>列出所有TCP通信的端口信息
netstat -n -u ===>列出所有UDP通信的端口信息
netstat -n -i ===>列出默认接口上的通信信息
netstat -lnp |grep 8888 ===>查看指定端口上的通信详情
3、ping 命令
测试网路的联通状况
ping ip地址
ping 域名
4、arp 命令
地址解析命令
arp -an ===>列出当前主机的地址ARP表
arp -d ip地址
三、MQTT协议
3.1 概述
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。
3.2 设计原则
由于物联网的环境是非常特别的,所以MQTT遵循以下设计原则:
(1)精简,不添加可有可无的功能;
(2)发布/订阅(Pub/Sub)模式,方便消息在传感器之间传递;
(3)允许用户动态创建主题,零运维成本;
(4)把传输量降到最低以提高传输效率;
(5)把低带宽、高延迟、不稳定的网络等因素考虑在内;
(6)支持连续的会话控制;
(7)理解客户端计算能力可能很低;
(8)提供服务质量管理;
(9)假设数据不可知,不强求传输数据的类型与格式,保持灵活性。
MQTT协议中,一个MQTT数据包由:固定头(Fixed header)、可变头(Variable header)、消息体(payload)三部分构成。MQTT数据包结构如下:
心跳包:在长时间未接收需求,发送检查链路是否连通(客户端发送)
更多推荐












所有评论(0)