tcpdump及Wireshark工具的使用说明

1、摘要

Tcpdump + Wireshark 实现,在 Linux 里抓包,然后在wireshark里分析包。

2、软件安装

2.1、Wireshark安装

Wireshark下载地址:https://www.wireshark.org/download.html
在线指导手册:
https://www.wireshark.org/docs/wsug_html_chunked/index.html

2.2、Tcpdump安装

Tcpdump下载:https://www.tcpdump.org/
下载:libpcap-1.9.0tcpdump-4.9.2
解压完成后:
编译libpcap

cd libpcap-1.9.0

设置为T3交叉编译链

export CC=/tools/toolchain/gcc-linaro-arm-linux-gnueabihf-4.8-2014.04_linux/bin/arm-linux-gnueabi-gcc

配置

./configure --host=arm-linux --with-pcap=linux

编译

Make

编译tcpdump

cd tcpdump-4.9.2
export ac_cv_linux_vers=3
export CFLAGS=-static
export CPPFLAGS=-static
export LDFLAGS=-static

配置

./configure --host=arm-linux --disable-ipv6

编译

Make

还可以压缩可执行文件:

arm-linux-gnueabi-strip tcpdump

3、tcpdump使用:

AIBOX有两个网卡:与TBOX通信的eht0, 与DVR通信的usb0
在这里插入图片描述

(1)抓AIBOXDVR相关的网络包,capture1.pcap

./tcpdump -i usb0 -w capture1.pcap

(2)抓AIBOXTBOX之间的网络包,保存为capture2.pcap

./tcpdump -i eth0 -w capture2.pcap

4、Wireshark使用:

4.1、快捷键:

快捷键 内容
Ctrl + → 在数据包详细信息中,打开所有树项
Ctrl + ← 在数据包详细信息中,关闭所有树项
Ctrl + ↑ 即使数据包列表未聚焦,也要移至下一个数据包
Ctrl + ↓ 即使数据包列表未聚焦,也请移至上一个数据包。
Shift + → 在数据包详细信息中,打开所选树项及其所有子树

4.2、主界面介绍:

在这里插入图片描述
Packet List(数据包列表):这个最上面的面板用表格显示了当前捕获文件中的所有数据包,其中包括了数据包序号、数据包被捕获时的相对时间、数据包的源地址和目标地址、数据包的协议以及在数据包中找到的概况信息等列。
Packet Details(数据包细节);这个中间的面板分层次地显示了一个数据包中的内容,并且可以通过展开或是收缩来显示这个数据包中所捕获到的全部内容。
Packet Bytes(数据包字节);这个最下面的面板可能是最令人困惑的,因为它显示了一个数据包未经处理的原始样子,也就是其在链路上传播时的样子。这些原始数据看上去一点都不舒服而且不容易理解。

4.3、数据包细节介绍:

在这里插入图片描述

  1. Frame:物理层的数据帧概况。
  2. Ethernet II:数据链路层以太网帧头部信息。
  3. Internet Protocol Version 4:互联网层IP包头部信息。
  4. User Datagram Protocol, Src Port: 传输层的数据段头部信息,此处是UDP协议。
  5. Network Time Protocol(NTP Version 4, client)应用层的信息,此处是NTP协议。

(1)Frame:数据链路层以太网帧头部信息。
在这里插入图片描述
(2)Ethernet II 数据链路层以太网帧头部信息。
在这里插入图片描述
(3)Internet Protocol Version 4:互联网层IP包头部信息

在这里插入图片描述

(4)User Datagram Protocol, Src Port: 传输层的数据段头部信息,此处是UDP协议。

在这里插入图片描述

5、T3中相关数据包分析:

5.1、:ARP

地址解析协议(Address Resolution Protocol),其基本功能为透过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。
过程:

(1)TBOX首先查看自己的ARP表,如果找到了对应的MAC地址,则TBOX直接利用ARP表中的MAC地址,对IP数据包进行帧封装,并将数据包发送给主机B

因为没有找到进行第二步:

(2)若TBOX自己的ARP表没有找到对应MAC地址,则将缓存该数据报文,然后以广播方式发送一个ARP请求报文。ARP请求报文中的发送端IP地址和发送端MAC地址为TBOXIP地址和MAC地址,目标IP地址和目标MAC地址为主机BIP地址和全0MAC地址。
在这里插入图片描述

(3)AIBOX比较自己的IP地址和ARP请求报文中的目标IP地址,当两者相同时进行如下处理:将ARP请求报文中的发送端(即TBOX)的IP地址和MAC地址存入自己的ARP表中。之后以单播方式发送ARP响应报文给TBOX,其中包含了自己的MAC地址。
在这里插入图片描述
4)主机A收到ARP响应报文后,将主机BMAC地址加入到自己的ARP表中以用于后续报文的转发。

5.2、:DNS

AIBOX 进行DNS域名解析:
在这里插入图片描述
北京时间的NTP服务器:time.buptnet.edu.cn ->202.112.10.60
阿里云NTP服务器:ntp1.aliyun.com -> 120.25.115.20

5.3、:NTP

网络校时:
在这里插入图片描述

5.4、:MQTT

报文结构:
在这里插入图片描述
报文第一字节内容:
在这里插入图片描述

1. 连接CONNECT/连接确认CONNACK
格式:
固定报头:0x10 剩余长度
可变报头:协议名( Protocol Name
协议级别( Protocol Level
连接标志( Connect Flags
保持连接( Keep Alive

连接标志位具体作用:

  • 保留标志位(第 0 位):是否为0,如果不为0 必须断开客户端连接 。

  • 清理会话位置(第 1 位): 为 1客户端和服务端必须丢弃之前的任何会话并开始一个新的会话。

  • 遗嘱标志位置(第 2 位): 设置为 0连接标志中的 Will QoSWill Retain 字段必须设置为 0,并且有效载荷中不能包含 Will TopicWillMessage字段,网络连接断开时,不能发送遗嘱消息。

  • 遗嘱 QoS位置(第4 和第3 位)。这两位用于指定发布遗嘱消息时使用的服务质量等级,因为此例遗嘱标志位置被置 0,所以 0,遗嘱 QoS也必须设置为 0(0x00)。

  • 遗嘱保留位置(第 5 位) 遗嘱标志被设置为0, 遗嘱保留(Will Retain )标志也必须设置为0

  • 用户名标志位置(第7位)。此例用户名标志被设置为 0,有效载荷中不能包含用户名字段

  • 密码标志位置(第6位)。因为此例用户名标志被设置为0,密码标志也必须设置为 0

在这里插入图片描述

2. 确认连接:
格式:
固定报头:0x20 0x02
可变报头:连接确认标志、连接返回码
在这里插入图片描述
其中:连接状态码相关值:

返回码响应 描述
0x00 连接已被服务端接受
0x01 服务端不支持客户端请求的 MQTT 协议级别
0x02 客户端标识符是正确的 UTF-8 编码, 但服务端不允许使用
0x03 网络连接已建立, 但 MQTT 服务不可用
0x04 用户名或密码的数据格式无效
0x05 客户端未被授权连接到此服务器

3. 消息订阅SUBSCRIBE/订阅确认SUBACK
定阅与发布必须要有主题,只有当定阅了某个主题后,才能收到相应主题的payload,才能进行通信。
格式:
固定报头:0x82 剩余长度
可变报头:报文标识符
Payload: 主体过滤器(Tpoic Filter)、服务质量要求(Qos
在这里插入图片描述

4. SUBACK(订阅确认)
格式:
固定报头:0x90 剩余长度
可变报头:报文标识符
Payload: 和Tpoic Filter对应的实际Qos清单
在这里插入图片描述
其中Qos服务质量等级列表:
在这里插入图片描述

5. 发布消息PUBLISH在这里插入图片描述
6. Publish ACK
格式:
固定报头:0x40 0x20
可变报头:等待确认的PUBLISH 报文的报文标识符
Payload: 无
在这里插入图片描述
7. MQTT 心跳
在这里插入图片描述

5.5、:RTSP

发布了251 篇原创文章 · 获赞 93 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/qq_33487044/article/details/104086929