01简介
这篇文章介绍一个好用的抓包工具Wireshark, 用来获取网络数据封包,包括HTTP、TCP、UDP等网络协议包。
开始界面
wireshark是捕获机器上的某一块网卡的网络包,当你的机器上有多块网卡的时候,你需要选择一个网卡。直接双击上面的某个网卡即可。
02Wireshark窗口
Wireshark 窗口介绍:
WireShark 主要分为这几个界面:
1. Display Filter(显示过滤器), 用于过滤。
2. Packet List Pane(封包列表),显示捕获到的封包, 有源地址和目标地址,端口号。颜色不同,代表。
3. Packet Details Pane(封包详细信息),显示封包中的字段。
4. Dissector Pane(16进制数据)。
5. Miscellanous(地址栏,杂项)。
常用操作按钮
①开始捕获,②停止捕获,③重新捕获
03Wireshark显示过滤
使用过滤是非常重要的,初学者使用wireshark时,将会得到大量的冗余信息,在几千甚至几万条记录中,以至于很难找到自己需要的部分。搞得晕头转向。
过滤器会帮助我们在大量的数据中迅速找到我们需要的信息。
比如上图的过滤方式,只会显示TCP端口为5005的通信数据包。
注意:这里设置的是显示过滤是只显示,实际上wireshark还是会抓取这个网卡上的所有数据包。
过滤器有两种:
一、显示过滤器
就是主界面上那个,用来在捕获的记录中找到所需要的记录。
二、捕获过滤器
用来过滤捕获的封包,以免捕获太多的记录,在捕获->捕获过滤器中设置。这种适用于只抓取某个通道的通信。
保存显示过滤
通常情况下,我们在工作中每次打开wireshark都是抓取同样类型的数据,比如公司产品的默认TCP的端口是5005,也就是上面的tcp.port== 5005。我们不希望每次打开wireshark时都重新输入一遍过滤表达式,我们可以保存下来。
再输入表达式后,点击左侧的书签按钮,选择保存此过滤器。
然后修改名字。
下次点击左侧书签,可以直接选择这个保存显示过滤条件,不用重复输入。
04过滤表达式的规则
1. 协议过滤
比如TCP,只显示TCP协议。
2. IP 过滤
比如ip.src ==192.168.1.102 显示源地址为192.168.1.102。
ip.dst==192.168.1.102, 目标地址为192.168.1.102。
3. 端口过滤
tcp.port ==80, 端口为80的。
tcp.srcport == 80, 只显示TCP协议的为端口为80的。
4. Http模式过滤
http.request.method==”GET”, 只显示HTTPGET方法的。
5. 逻辑运算符为AND/ OR
常用的过滤表达式:
05封包详细信息
封包详细信息(Packet Details Pane)面板是我们最重要的,用来查看协议中的每一个字段。
各行信息分别为:
Frame: 物理层的数据帧概况。
Ethernet II: 数据链路层以太网帧头部信息。
Internet Protocol Version 4: 互联网层IP包头部信息。
Transmission Control Protocol: 传输层的数据段头部信息,此处是TCP。
Data:应用层的信息。
wireshark与对应的TCP/IP四层模型
详细的使用wireshark抓取数据包,分析TCP/IP协议簇的IP首部字节,TCP首部字节等等,请看专栏《STM32网络开发》。
06自动保存
开发中,我们有时候需要抓取某个设备运行过程中一段时间的数据,可能是几天,甚至十几天。如果我们按照上面的方法,抓取数据,运行一段时间,wireshark一直在抓取数据,运行几个小时后,在内存小的PC上就崩溃了。这个时候我们需要wireshark抓取一段时间,自动保存一下。
设置方法:捕获->选项->输出。
在实际项目中,有些嵌入式设备并不是和PC进行数据通信,可能与另一台嵌入式设备通信。这时候我们要借助带有端口镜像的交换机进行数据监控。如下图,将交换机端口配置成3是2的镜像,配合wireshark的自动保存功能,可以监控一个网络设备的全部数据包。
07Wireshark的统计功能
Wireshark的一个强大的功能在于他的统计工具,使用Wireshark的时候我们有各种类型的工具可供选择。
比如协议分级。协议分级统计窗口显示为,捕捉文件包含的所有协议和树状分支;分组百分比永远按照的是相同协议层。
再比如可以展示TCP的吞吐量。
这些统计功能是wireshark的重要功能,运维工作人员,网络维护人员使用的比较多,嵌入式或单片机网络开发,还是以TCP/IP协议簇抓包分析为主,详细的统计功能这里不再详解。
本文转载自微信公众号「知晓编程」,可以通过以下二维码关注。转载本文请联系知晓编程公众号。