day35-系统编程之网络编程IV及MQTT协议
一、wireshark
数据发出,有封包过程;数据接收时,有拆包的过程
专业术语:
1.MTU:(以太网限制,帧分包是按1500[即1.5K]发送)指网络能够传输的最大数据包大小,以字节为单位。MTU的大小决定了发送端一次能够发送报文的最大字节数。如果MTU超过了接收端所能够承受的最大值,或者是超过了发送路径上途经的某台设备所能够承受的最大值,就会造成报文分片甚至丢弃,加重网络传输的负担。如果太小,那实际传送的数据量就会过小,影响传输效率。
注意:除MAC头,剩下的东西称为IP数据报
- ip_top total length指不包含IP头的长度 IP Flags(IP标志位) TTL(生存时间)默认时间为64,每执行一次默认减一,直到为0
![]()
- udp_top
wireshark安装及使用:
sudo apt-get install wireshark//安装
sudo wireshark//启动wireshark
其中:Loopback自收自发 ens33与外部收发 any不知道选哪个选这个
从左向右依次为开始抓包、停止抓包、重新开始抓包、抓包选项(用于更换网卡)
三次握手四次挥手展现:
步骤:
1.选择网络设备
2.设置条件
点击
写入自己端口号,按回车:
变灰,设置成功
3.开始抓包
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
二、MQTT协议
2.1 概述
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。
2.2 设计原则
由于物联网的环境是非常特别的,所以MQTT遵循以下设计原则:
(1)精简,不添加可有可无的功能;
(2)发布/订阅(Pub/Sub)模式,方便消息在传感器之间传递;
(3)允许用户动态创建主题,零运维成本;
(4)把传输量降到最低以提高传输效率;
(5)把低带宽、高延迟、不稳定的网络等因素考虑在内;
(6)支持连续的会话控制;
(7)理解客户端计算能力可能很低;
(8)提供服务质量管理;
(9)假设数据不可知,不强求传输数据的类型与格式,保持灵活性。
MQTT协议中,一个MQTT数据包由:固定头(Fixed header)、可变头(Variable header)、消息体(payload)三部分构成。MQTT数据包结构如下:
心跳包:在长时间未接收需求,发送检查链路是否连通(客户端发送)