实验3 Wireshark软件使用与协议分析
3.1-----ARP协议分析
- 实验目的
学习 Wireshark 的基本操作,抓取和分析有线局域网的数据包;掌握以太网 MAC帧的基本结构,掌握 ARP 协议的特点及工作过程。
- 实验内容
使用 Wireshark 抓取局域网的数据包并进行分析:
1. 学习 Wireshark 基本操作:重点掌握捕获过滤器和显示过滤器。
2. 观察 MAC地址:了解MAC地址的组成,辨识MAC地址类型。
3. 分析以太网帧结构:观察以太网帧的首部和尾部,了解数据封装成帧的原理。
4. 分析 ARP协议:抓取ARP请求和应答报文,分析其工作过程。
- 实验原理
3.1 Wireshark 简介
Wireshark 软件是目前全球使用最广泛的开源网络数据包分析工具(前身为Ethe-real),由Gerald Combs编写并于1988年获开源许可发布。网络数据包分析是指进入网络通信系统、捕获和解码网络上实时传输数据以及搜集统计信息的过程。通过Wireshark对网络数据进行分析,我们能够了解网络是如何运行的、数据包是如何被转发的、应用是如何被访问的;能够分析各层网络协议的性能、掌握通信主体的运行情况,确认带宽分配和时延大小、查看应用的快慢并改进优化,识别网络中存在的攻击或恶意行为、解决网络异常和故障。Wireshark 可以在 Windows、Linux 和 macOS 操作系统中运行,具备友好的图形界面、丰富的统计及图表分析功能。
3.2 以太网 MAC 帧格式
本实验基于使用最广泛的有线局域网(以太网 Ethernet II),以太网的帧结构如表1.1-1所示。其中,MAC地址(Media Access Control Address,媒体存取控制位址)或称物理地址(Physical Address),用于在网络中标识网卡。MAC地址的长度为48位 (6个字节),通常表示为12个16进制数,如:00-16-EA-AE-3C-40。其中前3个字节的16进制数00-16-EA代表网络硬件制造商的编号、即组织唯一标志符 (OUI),它由IEEE分配;而后3个字节的16进制数AE-3C-40代表该制造商所生产的某个网络产品(如网卡)的系列号。
表 1.1–1 以太网帧格式
前导字符 | 目的 MAC 地址 | 源 MAC 地址 | 类型 | IP 数据报 | 帧校验 |
8字节 | 6字节 | 6字节 | 2字节 | 46-1500字节 | 4字节 |
3.3 ARP 协议及数据报格式
地址解析协议(Address Resolution Protocol,ARP),主要作用是将IP地址解析为MAC 地址。当某主机或网络设备要发送数据给目标主机时,必须知道对方的网络层地址(即IP地址),而且在数据链路层封装成帧时,还必须有目标主机(或下一跳路由器)的MAC地址。本实验重点观察最简单的情形:同一个网段内,主机A要向主机B发送信息时,ARP解析的过程(主机A和B不在同一网段的情况请参阅课本相关内容)。具体如下:
1. 主机A首先查看自己的ARP表。如果找到了主机B的MAC地址,则利用这个地址对IP数据报进行帧封装,并将数据报发送给主机B。
2. 如果主机A在ARP表中找不到主机B的MAC地址,则以广播方式发送一个ARP请求报文。ARP请求报文中的发送端IP地址和发送端MAC地址为主机A的IP地址和MAC地址,目标IP地址和目标MAC地址为主机B的IP地址和全0的 MAC 地址。由于ARP请求报文以广播方式发送,该网段上的所有主机都可以接收到该请求,但只有被请求的主机B会对该请求进行处理。
3. 主机B比较自己的IP地址和ARP请求报文中的目标IP地址,当两者相同时进行如下处理:将ARP请求报文中的发送端(即主机A)的IP地址和MAC地址存入自己的ARP表中。然后以单播方式发送 ARP 响应报文给主机A,其中包含了自己的MAC地址。
4. 主机A收到ARP响应报文后,将主机B的MAC地址加入到自己的ARP表中以用于后续报文的转发,同时将IP数据报进行封装后发送出去。
ARP报文结构如图1.1–1所示,ARP报文总长度为28字节,MAC地址长度为6字节,IP地址长度为4字节。每个字段的含义如下:
• 硬件类型:指明了发送方想知道的硬件接口类型,以太网的值为1。
• 协议类型:表示要映射的协议地址类型。IP地址的类型值为0x0800。
• 硬件地址长度和协议地址长度:分别指出硬件地址和协议地址的长度,以字节为单位。在以太网中,它们的值分别为6和4。
• 操作码(op):用来表示这个报文的类型,ARP请求为1,ARP响应为2,RARP
请求为3,RARP响应为4。
3.4 实验方法及手段
使用Wireshark软件在有线局域网中捕捉相关网络操作的数据包,运用观察对比、计算验证、分析统计等方法,掌握以太网MAC帧和IP数据报的结构以及ARP 协议的工作原理。
- 实验条件
• PC 机一台,连入局域网;
• Wireshark软件,建议3.0 以上版本。
- 实验步骤
5.1 WireShark 基本使用
1. 通过Wireshark官网下载最新版软件,按默认选项安装。
2. 运行Wireshark软件,程序界面会显示当前的网络接口列表,双击要观察的网络接口,开始捕捉数据包,Wireshark软件选择网络接口的界面如图1.1–2所示。
图 1.1–2 Wireshark 软件启动界面
3. 点击工具栏上的红色方块按钮停止捕捉。
4. 菜单、工具栏、状态栏和主窗口如图1.1–3所示,可以根据需要通过菜单“视图”以及“编辑/首选项/外观”的相关选项对基本设置进行更改。例如图1.1–4中的语言、字体缩放、颜色、布局等项目。
5. 使用“显示过滤器”可以方便地从捕获的数据包中筛选出要观察的数据包。显示过滤器支持若干的过滤选项:源 MAC、目的 MAC、源IP、目的IP、TCP/UDP传输协议、应用层协议(HTTP, DHCP)、源端口Port、目的端口Port等。在显示过滤器栏中输入过滤表达式(更详细的显示过滤语法可以查看WireShark的官方文档1 )例如下面的命令:
. arp //显示 arp 协议报文,例如图1.1--5
. ip.src == a.b.c.d && icmp //显示源地址为 a.b.c.d 的icmp 报文
图 1.1–3 Wireshark 主窗口界面
图 1.1–4 Wireshark 的设置界面
图 1.1–5 显示过滤规则的示例
6. 通过主菜单“文件”/“导出特定分组”(如图1.1–6),可以保存捕获的网络数据(也可以先选中某些包,只保存部分数据)。
7. 如果只想捕捉特定的数据包,可以使用菜单“捕获”/“捕获过滤器”选定想要的类型(如图1.1–7)。例如,选择“IPv4 only”,Wireshark只抓取ipv4 类型的数据包。Wireshark过滤器官方文档提供了更加全面详细的语法和常用示例 2。
8. Wireshark还提供了丰富的统计功能供用户选用,如图1.1–8。更多文档可以查询Wireshark使用帮助3。
图 1.1–6 操作主菜单保存数据文件
图 1.1–7 选中特定的捕获类型
图 1.1–8 统计功能
5.2 观察MAC地址
启动Wireshark捕捉数据包,在命令行窗口分别 ping 网关和 ping 同网段的一台主机,分析本机发出的数据包。重点观察以太网帧的 Destination和Source的MAC地址,辨识MAC地址类型,解读OUI信息、I/G 和 G/L 位。
Ping网关:
分析得:
- Destination的MAC地址:(9a:7e:84:5a:7b:f5)
2、Source的MAC地址:(f8:89:d2:7e:e4:95)
3、MAC地址类型:Type: IPv4 (0x0800)
4、MAC地址的OUI信息:
源MAC地址的OUI信息:9a:7e:84:5a:7b:f5(9a:7e:84)
目标MAC地址的OUI信息:CloudNet_7e:e4:95(f8:89:d2)
5、I/G位和G/L位:
在这里,源MAC地址和目标MAC地址的I/G位都为0,表示它们是单播地址。
在这里,源MAC地址和目标MAC地址的G/L位都为0,表示它们是本地地址。
Ping同一网段的一台主机:
分析得:
1、Destination的MAC地址:(92:eb:8a:7a:f4:72)
2、Source的MAC地址:(f8:89:d2:7e:e4:95)
3、MAC地址类型:Type:IPv4 (0x0800)
4、MAC地址的OUI信息:
源MAC地址的OUI信息:92:eb:8a:7a:f4:72(92:eb:8a)
目标MAC地址的OUI信息:CloudNet_7e:e4:95(f8:89:d2)
5、I/G位和G/L位:
源MAC地址的I/G位为0,表示它是单播地址。
目标MAC地址的I/G位为0,表示它是单播地址。
源MAC地址的G/L位为0,表示它是全球唯一地址。
目标MAC地址的G/L位为0,表示它是全球唯一地址。
5.3 分析以太网的帧结构
选择其中一个数据包,点击Ethernet II展开(图1.1–9),查看MAC帧的各个字段。
5.4 ARP 协议分析
1. 使用arp-d命令(其语法见图1.1–10),清空本机的 ARP缓存,开启 Wireshark,ping 本机的同网段地址,在显示过滤器条框中输入“arp”,观察捕获的 ARP 报文的各个字段,分析请求/响应的过程。
Ping同网段地址:
该请求的目的 MAC 地址,是广播地址。回应的源MAC是子网网关。
2. 使用arp-d命令,清空本机的ARP缓存。开启 Wireshark,ping 与本机网段不同的IP地址或域名,观察捕获的ARP报文的各个字段,分析请求/响应的过程。
Ping不同网段:
图 1.1–9 以太网帧结构展开界面
图 1.1–10 arp 命令语法及参数
- 实验心得与体会
- 使用了显示过滤器后,Wireshark的抓包工作量会减少吗?
答:不会,但是可以减少需要分析的数据量。
- MAC帧的长度和IP数据报的长度有怎样的关系?请用你的数据记录进行验证。
答:MAC帧的长度限制网络上物理介质的数据传输,而 IP 数据报的长度则是指 IP 协议层中的数据部分的长度。它们之间的关系是,IP 数据报可以根据 MAC 帧的大小进行分片处理以适应网络设备的限制。
- ping同一局域网内的主机和局域网外的主机,都会产生ARP报文么?所产生的ARP报文有何不同,为什么?
答:ARP报文在同一局域网内和局域网外的主机之间都会产生。在同一局域网内,主机之间的通信需要获取目标主机的 MAC 地址,因此会发送 ARP 请求报文到本地网络的所有主机,并得到目标主机的 ARP 响应报文。而在局域网外,主机需要将目标主机的 IP 地址转换为目标路由器的 MAC 地址,因此会向本地网络的默认网关发送 ARP 请求报文,并得到路由器的 ARP 响应报文。
3.2-----IP与ICMP分析
- 实验目的
IP 和 ICMP 协议是 TCP/IP 协议簇中的网络层协议,在网络寻址定位、数据分组转发和路由选择等任务中发挥了重要作用。本实验要求熟练使用 Wireshark 软件,观察 IP数据报的基本结构,分析数据报的分片;掌握基于 ICMP 协议的 ping 和 traceroute 命令及其工作原理。
- 实验内容
启动 Wireshark,捕捉网络命令执行过程中本机接受和发送的数据报。
1. 执行 ping 命令,观察 IP 数据报和 ICMP 询问报文的结构:通过Wireshark 监视器观察捕获流量中的 ICMP 询问报文和 IP 数据报的结构。注意比较 ICMP 请求帧与回应帧,及其 IP 头部数据字段的异同。
2. 改变 ping 命令的参数,观察 IP 数据报分片:更改 ping 命令参数 MTU,使其发出长报文以触发 IP 数据报分片,再观察 IP 数据报的结构变化。
3. 执行 Traceroute 命令,观察 ICMP 差错报文的结构,并分析其工作原理:使用Linux 操作系统提供的 traceroute 命令(或者 Windows 系统提供的 tracert 命令),捕获和分析该命令所产生的 IP 数据报,特别注意相关的 ICMP 差错报文。结合捕获的具体数据,画出命令执行过程中数据交互的示意图,掌握 traceroute 的工作原理。
- 实验原理
3.1 IP 协议及数据报格式
网际互连协议(Internet Protocol,IP),是 TCP/IP 体系中的网络层协议,可实现大规模的异构网络互联互通,为主机提供无连接的、尽力而为的数据包传输服务。在网际协议第 4 版(IPv4)中,IP 数据报是一个可变长分组,包括首部和数据两部分 (如图1.2–1)。首部由 20~60 字节组成,包含与路由选择和传输有关的重要信息。其各字段意义如下:
- 版本(4 位):该字段定义 IP 协议版本,所有字段都要按照此版本的协议来解释。
图1.2-1 IP数据报结构示意图
2. 首部长度(4 位):该字段定义数据报协议头长度,表示协议首部具有 32 位字长的数量,最小值为 5,最大值为 15。
3. 服务(8 位):该字段定义上层协议对处理当前数据报所期望的服务质量,并对数据报按照重要性级别进行分配。前 3 位为优先位,后面 4 位为服务类型,最后1 位没有定义。这 8 位可用于分配优先级、延迟、吞吐量以及可靠性。
4. 总长度(16 位):该字段定义整个 IP 数据报的字节长度,包括协议首部和数据,其最大值为 65535 字节。
5. 标识(16 位):该字段包含一个整数,用于标识当前数据报。当数据报分片时,标识字段的值被复制到所有的分片中。
6. 标记(3 位):该字段由 3 位字段构成,其中最低位(MF)控制分片:若存在下一个分片则值为 1;否则置 0 代表该分片是最后一个。中间位(DF)指出数据报是否可进行分片,若置 1 则不允许该数据报进行分片。第三位即最高位保留不使用,值为 0。
7. 分片偏移(13 位):该字段指出数据分片在源数据报中的相对位置,以 8 字节为长度单位。
8. 生存时间(8 位):该字段是计数器,转发该数据报的路由器依次减 1 直至减少为 0。
9. 协议(8 位):该字段指出在 IP 层处理后,由哪种上层协议接收该数据报。
10. 头部校验和(16 位):该字段帮助确保 IP 协议头的正确性。计算过程是先将校验和字段置为 0,然后将整个头部每 16 位划分为一部分,并将各部分相加,其计算结果取反码,填入校验和字段中。第一单元 网络抓包与协议分析
11. 源地址(32 位):源主机的 IP 地址。
12. 目的地址(32 位):目标主机的 IP 地址。一个 IP 包从源主机传输到目标主机可能需要经过多个传输媒介不同的网络。每种网络对数据帧都设置了一个最大传输单元 (MTU) 的限制(例如以太网的 MTU 是 1500字节)。因此,当路由器在转发 IP 包时,如果数据包的大小超过了出口链路网络的 MTU时,需将对该 IP 数据报进行分片,才能在目标链路上顺利传输。每个 IP 分片将独立传输,直到所有分片都到达目的地后,目标主机才会把他们重组成一个完整的 IP 数据报。在 IP 数据报的分片与重组过程中,以下三个首部字段发挥了重要作用:
1. 标记的后两位:最低位记为 MF(More Fragment),MF = 1 代表还有后续分片,MF = 0 表示此为原始数据报的最后分片。次低位 DF(Don’t Fragment),用来控制数据报是否允许分片。DF = 1 表示该数据报不允许分片;DF = 0 允许分片。
2. 标识符:用于目的主机将 IP 数据报的各个分片重装成原来的数据报。
3. 片偏移:以 8 字节为单位,目的主机在重装 IP 数据报时需要根据该字段提供偏移量进行排序。这是因为数据分片的独立传输使各分片的到达顺序难以确定。
3.2 ICMP 协议及报文格式
因特网控制报文协议(Internet Control Message Protocol,ICMP),用于 IP 主机、路由器之间传递控制消息。控制消息是指网络是否连通、主机是否可达、路由是否可用等网络本身的控制管理消息,对网络正常运行起着重要的作用。ICMP报文的类型可以分为ICMP差错报文和ICMP询问报文两种(其结构如图1.2–2)。ICMP 差错报告报文主要有终点不可达、源站抑制、超时、参数问题和路由重定向5 种。ICMP 询问报文有回送请求和应答、时间戳请求和应答、地址掩码请求和应答以及路由器询问和通告 4 种。其常见的类型与代码如表1.2–1所示。
图1.2-2 ICMP报文结构示意图
表1.2-1 ICMP各类型报文的格式
类型 (TYPE) | 代码 (CODE) | 描述 (Description) | 查询类 (Query) | 差错类 (Error) |
0 | 0 | Echo Reply——回显应答(Ping 应答) | √ | |
3 | 1 | Host Unreachable——主机不可达 | √ | |
3 | 3 | Port Unreachable——端口不可达 | √ | |
3 | 4 | Fragmentation needed but no frag. bit set ——需要进行分片但设置不分片比特 | √ | |
8 | 0 | Echo request——回显请求(Ping 请求) | √ | |
11 | 0 | TTL equals 0 during transit ——传输期间生存时间为 0 | √ |
1.ping命令, 是测试网络最有效的工具之一。它是由主机或路由器执行ping命令 向一个特定的目的主机发送一份ICMP回显请求(Echo request)报文,并等待其返回 ICMP 回显应答(Echo Reply)。ping命令可以检测网络的连通性,简单估测数据报的往返时间(Round Trip Time),确定是否有数据包丢失或损坏,从而帮助分析网络故障。ping 命令格式和常用参数罗列如下:
2. traceroute/tracert 命令,利用TTL字段和ICMP差错类型报文,查找IP数据报的路由转发路径(含路由器信息)。源主机执行该命令向目的主机发送生存时间( TTL )不同的 ICMP 回送请求报文, 直至收到目的主机应答, 并通过分析应答报文获得转发路径和时延信息首先源主机发起一个TTL=1的ICMP报文。第一个路由器收到该报文后,TTL 减1变为0并丢弃此报文,返回一个[ICMP time exceeded]的消息。源主机通过这个消息获知IP数据报转发路径上的第一个路由器信息。然后,依次增加发送 ICMP报文的TTL值, 可以获取路径上的后续路由器的信息。当到达目的地时,目标主机返回一个[ICMP port unreachable]的消息,使发起者确认IP数据报已经正常到达。至此,traceroute 命令发起者已经获得了通向目标主机路径上的所
有路由信息。 tracert 命令( Linux )格式和常用参数罗列如下
3.3 实验方法和手段
1. 使用 Wireshark 软件, 捕获本机在 ping 和 traceroute 网络命令执行过程中接收和发出的全部数据流量。
2. 合理设置过滤条件, 观察 IP 数据报和 ICMP 报文, 着重分析报文首部和内容变化,从而掌握协议的工作原理。
3. 调整 ping 命令的参数,观察并分析 IP 数据报分片情况。
4. 结合所捕获的数据报,画出 traceroute 命令过程中数据交互示意图。
- 实验条件
装有 Wireshark 软件的 PC 机一台,处于局域网环境。
参考资料:
• J.F Kurose and K.W. Ross, Wireshark Lab: ICMP v8.0
• Wireshark 官方过滤器语法指导书
• IP 协议的 RFC
- 实验步骤
5.1 ping 命令
本机(示例 IP 为 192.168.1.251)启动 Wireshark 软件,选择要监听的网络接口(如eth0、wlan0);然后在终端发起网络命令:ping IP 地址/域名。
- 在 Wireshark监视器中设置过滤条件。例如图1.2–3设置过滤条件为 icmp,则显示出所捕获的ICMP数据包。
图1.2-3 Wireshark监视器界面
- 点击 Internet Protocol Version 4展开(如图1.2–4),查看 IP 数据报,特别观察 IP数据报的首部字段及其内容。
图1.2-4 查看IP数据报
- 点击 Internet Control Message Protocol展开(如图1.2–5),查看 ICMP 报文,并解释回显(Echo Request 和 Echo Reply)报文的首部字段。
图1.2-5 Echo request示例
- 清空 Wireshark 监控器,重新发起网络命令(如图1.2–6):ping IP 地址/域名–l#length,并解释对比前后两次执行 ping 命令的结果。其中,-l #length 确定 echo数据报的长度为 #length,其默认值为 32 字节,且小于 65,527 字节。
图1.2-6ping命令执行示例
- 可以多次改变 #length 的大小(例如 1000 字节、2000 字节和 4000 字节),观察IP 数据报何时会分片?请解释 IP 数据报分片的原因和具体情况。提示:请先确认该网络的 MTU,可在 Wireshark 记录中查找“IPv4 fragments”项目。
首先确认MTU,然后当长度大于MTU时IP数据报会分片。
①网络链路限制:不同类型的网络链路(如以太网、无线网络等)对传输数据的大小都有一定限制,即最大传输单元(MTU)。如果原始数据报的大小超过了链路的MTU,那么就需要进行分片,使得数据能够在链路上正常传输。
②路由器限制:在经过多个路由器进行传输时,每个路由器的出口链路的MTU 可能会不同。如果一个数据报的大小超过了某个路由器的MTU,那么该路由器就需要对数据报进行分片,以适应出口链路的要求。
5.2 traceroute 命令
本机(示例 IP 为 192.168.1.251)启动 Wireshark 软件,选择要监听的网络接口(如eth0、wlan0);然后在终端发起网络命令:traceroute IP 地址/域名。
- 启动 Wireshark 软件,选择要监听的网络接口,设置过滤条件icmp(如图1.2–7)。
-
图1.2-7 在Wireshark中设置过滤条件
- 在终端中使用 traceroute 命令,目的主机是外网的一台设备(如图1.2–8,示例IP为10.99.183.96)。
图1.2-8 在终端执行traceroute命令
- 点击 Internet Control Message Protocol 展开,查看 ICMP 差错报文,观察并解释ICMP 报文结构和字段内容。
-
结合 ICMP 报文记录画出数据交互示意图,并描述 tracert 工作原理。
Tracert工具通过向目标主机发送一系列TTL逐渐增加的ICMP报文,测量数据包从源主机到目标主机经过的路径和每一跳路由器的往返时间。在每个路由器上,tracert会发送多个报文并观察返回情况,从而获取路由器的IP地址和名称,帮助用户诊断网络问题。然而,部分路由器可能会禁止ICMP报文通过,导致tracert无法完整显示整个路径。
- 实验心得与体会
通过本次实验使我更加了解了MAC地址的组成和以太网帧的封装原理,这对我的理论知识有了更加好的理解,也对以后的学习有很大的帮助。其次在ARP协议中我了解到ARP请求的应答报文的工作原理,知道了ARP的重要性。
这次实验使用Wireshark软件,让我对这个软件有了一定的了解和熟悉,还对数据分析有了一定的学习,掌握的如何捕获过滤器和显示的方法,可以更加方便观看。本次实验还涉及到了IP数据报的分片,使我对其更加了解,也可以更加好理解。
本次实验让我更加明白了“纸上得来终觉浅,绝知此事要躬行”这句诗,实践和理论的相结合,能更好的理解理论知识,也可以增强动手能力,通过实验也可以学习到更多的新知识特别是一些书本上没有的知识,是一件非常有意义的事情。