3.1-----ARP协议分析
一、实验目的
- 学习Wireshark的基本操作,抓取和分析有线局域网的数据包;
- 掌握以太网MAC帧的基本结构,掌握ARP协议的特点工作过程。
二、实验内容
使用Wireshark抓取局域网的数据包并进行分析:
- 学习Wireshark基本操作:重点掌握捕获过滤器和显示过滤器。
- 观察MAC地址:了解MAC地址的组成,辨识MAC地址类型。
- 分析以太网帧结构:观察以太网帧的首部和尾部,了解数据封装成帧的原理。
- 分析ARP协议:抓取ARP请求和应答报文,分析其工作过程。
三、实验原理
3.1 Wireshark 简介
Wireshark软件是目前全球使用最广泛的开源网络数据包分析工具(前身为Ethe real),由Gerald Combs编写并于1988年获开源许可发布。网络数据包分析是指进入网络通信系统、捕获和解码网络上实时传输数据以ࣿ搜集统计信息的过程。通过Wireshark对网络数据进行分析,我们能够了解网络是如何运行的、数据包是如何被转发的、应用是如何被访问的;能够分析各层网络协议的性能、掌握通信主体的运行情况,确认带宽分配和时延大小、查看应用的快慢并改进优化,识别网络中存在的攻击或恶意行为、解决网络异常和故障。Wireshark 可以在 Windows、Linux和macOS操作系统中运行,具备好的图形界面、丰富的统计图表分析功能。
3.2 以太网MAC帧格式
本实验基于使用最广泛的有线局域网(以太网Ethernet II),以太网的帧结构如表3.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代表该制造商所生产的某个网络产品(如网卡)的系列号。
表3.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不在同一网段的情况请参阅课本相关内容)。具体如下:
- 主机A首先查看自己的ARP表。如果找到了主机B的MAC地址,则利用这个地址对IP数据报进行帧封装,并将数据报发送给主机B。
- 如果主机A在ARP表中找不到主机B的MAC地址,则以广播方式发送一个ARP请求报文。ARP请求报文中的发送端IP地址和发送端MAC地址为主机A的IP地址和MAC地址,目标IP地址和目标MAC地址为主机B的IP地址和全0的MAC地址。由于ARP请求报文以广播方式发送,该网段上的所有主机都可以接收到该请求,但只有被请求的主机B会对该请求进行处理。
- 主机B比较自己的IP地址和ARP请求报文中的目标IP地址,当两者相同时进行如下处理:将ARP请求报文中的发送端(即主机A)的IP地址和MAC地址存入自己的ARP表中。然后以单播方式发送ARP响应报文给主机A,其中包含了自己的MAC地址。
- 主机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.1 ARP 报文结构示意图
3.4 实验方法及手段
使用Wireshark软件在有线局域网中捕捉相关网络操作的数据包,运用观察对比、计算验证、分析统计等方法,掌握以太网MAC帧和IP数据报的结构以ARP协议的工作原理。
四、实验条件
- PC机一台,连入局域网;
- Wireshark 软件,建议3.0以上版本。
五、实验步骤
5.1 WireShark 基本使用
- 通过Wireshark官网下载最新版软件,按默认选项安装。
- 运行Wireshark软件,程序界面会显示当前的网络接口列表,击要观察的网络接口,开始捕捉数据包,Wireshark软件选择网络接口的界面如图5.1所示。
图5.1 Wireshark 软件启动界面
- 点击工具栏上的红色方块按钮停止捕捉。
- 菜单、工具栏、状态栏和主窗口如图5.2所示,可以根据需要通过菜单“视图”。以及“编辑/首选项/外观”的相关选项对基本设置进行更改。例如图5.3中的语言、字体缩放、颜色、布局等项目。
图5.2 Wireshark主窗口界面
图5.3 Wireshark的设置界面
- 使用“显示过滤器”可以方便地从捕获的数据包中筛选出要观察的数据包。显示过滤器支持若干的过滤选项:源MAC、目的MAC、源IP、目的IP、TCP/UDP传输协议、应用层协议(HTTP, DHCP)、源端口Port、目的端口Port等。在显示过滤器栏中输入过滤表达式(更详细的显示过滤语法可以查看WireShark的官方文档1),例如下面的命令:
arp // 显示arp协议报文,例如图5.4
ip.src == a.b.c.d && icmp // 显示源地址为a.b.c.d的icmp报文
图5.4 显示过滤规则的示例
- 通过主菜单“文件”/“导出特定分组”(如图5.5),可以保存捕获的网络数据(也可以先选中某些包,只保存部分数据)。
- 如果只想捕捉特定的数据包,可以使用菜单“捕获”/“捕获过滤器”选定想要的类型(如图5.6)。例如,选择“IPv4 only”,Wireshark只抓取ipv4类型的数据包。Wireshark过滤器官方文档提供了更加全面详细的语法和常用示例2。
- Wireshark还提供了丰富的统计功能供用户选用,如图5.7。更多文档可以查询 Wireshark使用帮助3。
图5.5 操作主菜单保存数据文件
图5.6 选中特定的捕获类型
图5.7 统计功能
5.2 观察MAC地址
启动Wireshark捕捉数据包,在命令行窗口分别ping网关和ping同网段的一台主机,分析本机发出的数据包。重点观察以太网帧的Destination和Source的MAC地址,辨识MAC地址类型,解读OUI信息、I/G和G/L位。
5.2.1 ping网关
- 在命令行利用ipconfig/all命令查看无线网WALN的默认网关为192.168.43.1;
- 启动Wireshark,点击要观察的无线网WALN,开始捕捉数据包;
- 在命令行输入ping 192.168.43.1;
- 使用ip.addr==192.168.43.1作为显示过滤条件进行过滤获取本机发出的数据包;
观察以太网帧的Destination和Source的MAC地址,辨识MAC地址类型,解读OUI信息、I/G和G/L位。
(1)Source的MAC地址:38:68:93:53:00:f2 0xf2=(FFFF0010)2,本地MAC地址。
- 根据第8bit为0,判断该MAC地址为单播地址;
- 该MAC地址的前3个字节38:68:93,称为组织唯一标识符OUI,是由IEEE的注册管理机构给不同厂家分配的代码,区分了不同的厂家;
- I/G位在第一个字节中的最低位,在该MAC地址中为0,表示此为某台设备的MAC地址,即单播地址;
- G/L位在第一个字节中的次低位,在该MAC地址中为0,表示此为全局管理地址,由IEEE分配。
(2)Destination的MAC地址:f2:c4:86:b7:88:09 0x38=(00111000) 2,默认网关地址。
- 根据第8bit为0,判断该MAC地址为单播地址;
- 该MAC地址的前3个字节f2:c4:86,称为组织唯一标识符OUI,是由IEEE的注册管理机构给不同厂家分配的代码,区分了不同的厂家;
- I/G位在第一个字节中的最低位,在该MAC地址中为0,表示此为某台设备的MAC地址,即单播地址;
- G/L位在第一个字节中的次低位,在该MAC地址中为0,表示此为全局管理地址,由IEEE分配。
5.2.2 ping同网段的一台主机
- 获取到同网段的一台主机IP地址为192.168.43.233;
- 启动Wireshark,点击要观察的无线网WALN,开始捕捉数据包;
- 在命令行输入ping 192.168.43.233;
- 使用ip.addr==192.168.43.233作为显示过滤条件进行过滤,获取本机向同网段另一个主机发出的数据包;
观察以太网帧的Destination和Source的MAC地址,辨识MAC地址类型,解读OUI信息、I/G和G/L位。
(1)Source的MAC地址:38:68:93:53:00:f2 0xf2=(FFFF0010)2,本地MAC地址。
- 根据第8bit为0,判断该MAC地址为单播地址;
- 该MAC地址的前3个字节38:68:93,称为组织唯一标识符OUI,是由IEEE的注册管理机构给不同厂家分配的代码,区分了不同的厂家;
- I/G位在第一个字节中的最低位,在该MAC地址中为0,表示此为某台设备的MAC地址,即单播地址;
- G/L位在第一个字节中的次低位,在该MAC地址中为0,表示此为全局管理地址,由IEEE分配。
(2)Destination的MAC地址:de:42:c2:82:78:b5 0xb5=(10110101) 2,默认网关地址。
- 根据第8bit为0,判断该MAC地址为单播地址;
- 该MAC地址的前3个字节de:42:c2,称为组织唯一标识符OUI,是由IEEE的注册管理机构给不同厂家分配的代码,区分了不同的厂家;
- I/G位在第一个字节中的最低位,在该MAC地址中为0,表示某台设备的MAC地址,即单播地址;
- G/L位在第一个字节中的次低位,在该MAC地址中为1,表示此为本地管理地址,是网络管理员为了加强自己对网络管理而指定的地址。
总结:
- MAC地址类型分为广播Mac地址、组播Mac地址和单播Mac地址三类。其中,广播Mac地址是每个字节都为1的Mac地址,即FF:FF:FF:FF:FF:FF,其传输目的地是所有用户,其只能用作目的MAC地址,而不能用作源MAC地址;广播MAC地址是组播MAC地址的一个特例。组播Mac地址是第一个字节的最低位为1的Mac地址,单播Mac地址是第一个字节的最低位为0的Mac地址。
- MAC地址的前3个字节为组织唯一标识符OUI,由IEEE的注册管理机构给不同厂家分配的代码,区分不同的厂家;后3个字节是由厂家自己分配的,称为扩展标识符。
- 每个字节的高位在前,低位在后,I/G位和G/L分别在第一个字节中的最低位和次低位。如果G/L=0,则是全局管理地址,由IEEE分配;如果G/L=1,则是本地管理地址,是网络管理员为了加强自己对网络管理而指定的地址。如果I/G=0,则是某台设备的MAC地址,即单播地址;如果I/G=1,则是多播地址(组播+广播=多播)。
5.3 分析以太网的帧结构
以太网的帧结构:
- Frame:物理层的数据帧情况;
- Ethernet II , Src:数据链路层以太网帧头部信息;
- 0x0800:帧包含的是IPv4数据报。
- Internet Protocol Version 4, Src:互联网层IP包头信息。
- Internet Control Message Protocol:互联网控制信息协议。
选择其中一个数据包,点击 Ethernet II 展开,查看 MAC 帧的各个字段。
以ping同网段的一台主机时的MAC帧为例,选择一个数据包查看Ethernet II内容:
在5.2.2中已做分析,Ethernet II内容说明:
- Destination的MAC地址为de:42:c2:82:78:b5,根据G/L位(第一个字节中的次低位)为0,表示此为本地管理地址,是网络管理员为了加强自己对网络管理而指定的地址,不是出厂默认地址;根据I/G位(第一个字节中的最低位)为1,表示多播地址(组播+广播=多播);
- Source的MAC地址为38:68:93:53:00:f2 ,根据G/L位(第一个字节中的次低位)为0,表示此为全局管理地址,由IEEE分配;根据I/G位(第一个字节中的最低位)为0,表示此为某台设备的MAC地址,即单播地址。
5.4 ARP 协议分析
1. 使用CTR–F命令(其语法见图5.8),清空本机的ARP缓存,开启Wireshark,ping本机的同网段地址,在显示过滤器条框中输入“arp”,观察捕获的ARP报文的各个字段,分析请求/响应的过程。
图5.8 arp 命令语法及参数
- ping本机的同网段地址
- 在显示过滤器条框中输入“arp”
- 观察捕获的ARP报文的各个字段,分析请求/响应的过程。
a. 本主机首先查看自己的ARP表,寻找ping的另一个主机的MAC地址,此案例中成功找到,则利用这个地址对IP数据报进行帧封装,并将数据报发送给主机B。
b. 主机B比较自己的IP地址和ARP请求报文中的目标IP地址,当两者相同时将ARP请求报文中的发送端(即主机A)的IP地址和MAC地址存入自己的ARP表中。然后以单播方式发送ARP响应报文给主机A,其中包含了自己的MAC地址;
c. 主机A收到ARP响应报文后,将主机B的MAC地址加入到自己的ARP表中以用于后续报文的转发,同时将IP数据报进行封装后发送出去。
2. 使用CTR–F命令,清空本机的ARP缓存。开启Wireshark,ping 与本机网段不同的IP地址或域名,观察捕获的ARP报文的各个字段,分析请求/响应的过程。
- Ping与本机不同网段的IP地址
- 在显示过滤器条框中输入“arp”
- 观察捕获的ARP报文的各个字段,分析请求/响应的过程。
主机A首先查看自己的ARP表,寻找主机B的MAC地址,此案例为没找到,则以广播方式发送一个ARP请求报文。ARP请求报文中的发送端IP地址和发送端MAC地址为主机A的IP地址和MAC地址,目标IP地址和目标MAC地址为主机B的IP地址和全0的MAC地址。
总结:
ping IP地址或域名的过程:
- 主机A首先查看自己的ARP表,如果找到了主机B的MAC地址,则利用这个地址对IP数据报进行帧封装,并将数据报发送给主机B;如果找不到主机B的MAC地址,则以广播方式发送一个ARP请求报文。ARP请求报文中的发送端IP地址和发送端MAC地址为主机A的IP地址和MAC地址,目标IP地址和目标MAC地址为主机B的IP地址和全0的MAC地址;
- 主机B比较自己的IP地址和ARP请求报文中的目标IP地址,当两者相同时将ARP请求报文中的发送端(即主机A)的IP地址和MAC地址存入自己的ARP表中。然后以单播方式发送ARP响应报文给主机A,其中包含了自己的MAC地址;
- 主机A收到ARP响应报文后,将主机B的MAC地址加入到自己的ARP表中以用于后续报文的转发,同时将IP数据报进行封装后发送出去。
六、思考题
1. 使用了显示过滤器后,Wireshark 的抓包工作量会减少吗?
答:不会减少,过滤只是查找只显示的信息,不会减少任何抓包工作量。但捕抓过滤会减少,对确定的捕抓类型抓包。
2. MAC 帧的长度和 IP 数据报的长度有怎样的关系?请用你的数据记录进行验证。
答:MAC帧 = 6字节源mac地址 + 6字节目标mac地址 + 2字节类型(ipv4或ipv6) + ip数据报(46~1500字节)+ 4字节帧检验序列FCS。具体如下图所示:
MAC帧长度是需要在64~1518字节之间的,太长或者太短都是无效的帧。
数据记录验证:
(1)获取百度的ip地址为180.101.49.14
(2)wireshark分析MAC帧
3. ping 同一局域网内的主机和局域网外的主机,都会产生 ARP 报文么?所产生的 ARP 报文有何不同,为什么?
答:Ping查找地址都会产生ARP报文。所产生的arp报文不同在于,它们的发送端mac地址不同,同一局域网是该连接的交换机mac,局域网外是目的端交换机的mac。
七、实验心得与体会
该实验的主要内容是学习使用Wirshark软件抓取局域网的数据包并进行分析。
在实验初,在下载完Wirshark软件并联网打开时,WLAN处没有网波产生,上网查询资料也没有找到解决办法。后来寻找老师帮助,发现是安装路径D盘权限设置的问题,需要用管理员身份运行Wirshark。
在根据实验指导书的提示步骤一步步操作下,我掌握了Wireshark的基本操作,如显示过滤器、捕获过滤器等,其中两者的差别在于,显示过滤只是查找只显示的信息,不会减少任何抓包工作量;而捕抓过滤时对确定的捕抓类型抓包,会减少抓包工作量。
并且,通过在命令行窗口分别ping网关和同网段主机,分析本机发出的数据包,观察MAC地址,了解了MAC地址的组成,掌握了MAC地址类型的辨识,学习解读OUI信息、I/G和G/L位。其中,MAC地址类型分为广播Mac地址(每个字节都为1)、组播Mac地址(第一个字节的最低位为1)和单播Mac地址(第一个字节的最低位为0)三类。另外,选择一个数据包查看,查看MAC帧的各个字段,观察以太网帧的首部和尾部,了解数据封装成帧的原理。具体知识点见5.2总结,不再赘述。
此外,通过使用显示过滤器进行分析,抓取ARP请求和应答报文,了解了其工作过程,具体过程在5.4总结中已经描述,不再赘述。