【计算机网络实验】ARP协议和MAC帧的抓包分析(Wireshark):MAC帧、ARP数据包的格式&ARP缓表&具体实验操作和数据包的分析


ARP协议和MAC帧的抓包分析(Wireshark)



1、基础知识

  • IP地址和MAC地址之间的关系

    • IP地址是一个逻辑地址,是虚拟的,有公用IP和私用IP之分,用于在计算机网络中唯一标识一个路由、接口或一台主机。IP协议是网络层的东西,和TCP协议,UDP协议共同构成了网络层的核心。可以简单理解为:IP地址用来告诉我们这台主机在哪,而路由器告诉我们怎么到达那里
    • MAC地址是物理地址/硬件地址,是网卡或其他网络设备的固定地址,由生产厂商在生产时分配,并且通常不会更改,每个MAC地址都是唯一的,用于在局域网中唯一标识一个网络设备。MAC地址是一个6字节的十六进制数,MAC地址的前三位是由IEEE注册管理机构分配的厂商识别码,用于标识设备厂商,剩余的三个字节由厂商自行分配,用于区分同一厂家生产的不同设备。MAC地址是数据链路层的东西。可以简单理解为:MAC地址用来告诉我们到底是具体的谁,具体的哪一台主机
    • 根据公用的IP地址我们可以找到设备所在的局域网,但一个局域网中的所有设备的公用IP一般是相同的,这时候我们要确定到底是网内的哪个主机或者设备,就要借助MAC地址来实现了。就好比你能通过班级号定位到是哪个班,但你没办法定位到是班里的哪个同学,要借助学号来确定到具体的个人。
    • 而IP地址和MAC地址之间并不是简单的映射,是需要通过ARP协议来解析的,ARP协议就是连接这两个协议的桥梁,通过ARP协议可以根据IP地址解析到具体某台设备的MAC地址。

  • ARP地址解析协议的工作原理

    • ARP请求:
      当一个主机需要向另外一个主机发送数据时,首先会检查该主机是否在本地网络中,如果目标主机不在同一网络中,发送方主机将默认使用网关的MAC地址来发送数据。如果在同一个网络中,发送方主机将发送一个ARP请求广播到本地网络的所有主机,询问一下目标IP地址到底是哪台主机拥有,也就是询问目标地址对应的MAC地址。
    • ARP响应:
      接收到ARP请求的主机会检查请求中的目标IP地址是否与自己匹配。如果匹配,则该主机会发送一个ARP响应单播帧给发送主机,包含自己的MAC地址作为响应。发送主机接收到响应后,会将目标IP地址与对应的MAC地址建立映射关系,并将此映射信息存储在本地ARP缓存中,以便后续通信时直接使用。
    • ARP缓存:
      每台主机都会维护一个本地的ARP缓存表,用于存储IP地址与MAC地址的映射关系。这样,在发送数据时,发送主机可以直接查找本地的ARP缓存表,以获取目标IP地址对应的MAC地址,而无需再发送ARP请求。

  • ARP数据报文结构

在这里插入图片描述


  • MAC帧格式

在这里插入图片描述


2、实验操作

  • 本实验部分命令需要管理员权限,所以要用管理员权限打开控制台:按住win+r,输入cmd,再按住ctrl+shift+回车,打开管理员命令控制台。

  • 在命令控制台中输入:IPconfig查看本地IP地址:本地网卡IPV4地址为192.168.20.190,本地网关地址为192.168.20.1
    在这里插入图片描述

  • 在命令控制台中输入:for /L %i IN(1,1,254)Do ping -w 2 -n 1 192.168.20.%i对本网段即192.168.20.xxx(192.168.20.0到192.168.20.255)的IP地址发送一次ping请求,这会在本机的ARP缓存表中留下有效的记录。注意将20改为本机的网段。
    在这里插入图片描述

  • 在命令控制台中输入:ARP -a查看本地ARP缓存表(IP地址和对应的物理地址),重点关注本网段的地址,以下为实验开始前本机的ARP缓存表内容:
    在这里插入图片描述
    192开头的就都是本机的,关注这个就好了,其他的不用管
    接口: 192.168.20.190 — 0x19
    Internet 地址 物理地址 类型
    192.168.20.1 3c-6a-48-07-fe-07 动态
    192.168.20.100 00-e0-4c-36-29-f9 动态
    192.168.20.103 98-8f-e0-64-9d-28 动态
    192.168.20.104 08-8f-c3-68-c0-aa 动态
    192.168.20.106 08-8f-c3-77-bf-9c 动态
    192.168.20.109 20-7b-d2-3d-6c-d9 动态
    192.168.20.112 00-0e-c6-6c-43-a9 动态
    192.168.20.115 20-7b-d2-ed-96-a2 动态
    192.168.20.186 50-eb-f6-e3-e7-3d 动态

    224.0.0.2 01-00-5e-00-00-02 静态
    224.0.0.251 01-00-5e-00-00-fb 静态
    224.0.0.252 01-00-5e-00-00-fc 静态
    239.192.152.143 01-00-5e-40-98-8f 静态
    239.255.102.18 01-00-5e-7f-66-12 静态
    239.255.255.250 01-00-5e-7f-ff-fa 静态

  • 由上一步可以观察到,本网段的IP地址有9个,其中包括了网关,选择一个本网段的IP地址及其对应的物理地址记录下来作为实验目标(这里以192.168.20.112,00-0e-c6-6c-43-a9为例)

  • 在命令控制台中输入ARP -d删除本机现有的所有ARP缓存记录,方便我们实验进行对照。以下为删除后的本机ARP缓存表内容:
    在这里插入图片描述

接口: 192.168.20.190 — 0x19
Internet 地址 物理地址 类型
192.168.20.1 3c-6a-48-07-fe-07 动态
224.0.0.2 01-00-5e-00-00-02 静态
239.255.255.250 01-00-5e-7f-ff-fa 静态

  • 打开抓包工具wireshark,选择监听网卡接口,设置过滤条件为ARP
  • 在命令控制台中输入ping 192.168.20.112发送Ping请求,这会产生ARP缓存并且产生一个ARP请求数据包和一个响应数据包。在发送完ping命令并且收到全部回复后要及时关闭抓包监听。
  • 抓到了两个数据包,一个是ARP请求数据包,另外一个是ARP响应数据包。打开ARP协议的部分,其内容如下:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

ARP请求数据包:
Address Resolution Protocol (request)
Hardware type: Ethernet (1)
Protocol type: IPv4 (0x0800)
Hardware size: 6
Protocol size: 4
Opcode: request (1)
Sender MAC address: LCFCElectron_52:bc:b7 (84:a9:38:52:bc:b7)
Sender IP address: 192.168.20.190
Target MAC address: 00:00:00_00:00:00 (00:00:00:00:00:00)
Target IP address: 192.168.20.112


ARP响应数据包:
Address Resolution Protocol (reply)
Hardware type: Ethernet (1)
Protocol type: IPv4 (0x0800)
Hardware size: 6
Protocol size: 4
Opcode: reply (2)
Sender MAC address: AsixElectron_6c:43:a9 (00:0e:c6:6c:43:a9)
Sender IP address: 192.168.20.112
Target MAC address: LCFCElectron_52:bc:b7 (84:a9:38:52:bc:b7)
Target IP address: 192.168.20.190
从上到下分别是ARP数据报的各首部字段:硬件类型,协议类型,硬件地址长度,协议地址长度,操作码,发送方硬件地址,发送方协议地址,目标硬件地址,目标协议地址

  • 让我们再看一下数据包中MAC帧封装的内容(这里之前在做的时候忘了截图了,随便找了2个ARP包截的)
    在这里插入图片描述在这里插入图片描述

从上到下分别是:目的MAC地址,源MAC地址,数据类型(0806代表ARP)。可以看到,请求数据包的特点是,目标MAC帧是置空的,等着目标自己往上填数据


3、实验可能出现的问题

有其他问题可以评论区留言

  • 对ARP工作流程的理解

其实就是源主机发送一个ARP请求说“哪个主机手里握着这个IP啊,自报家门谢谢”请求数据包的MAC帧中目标MAC地址是留空的,让他们“自报家门”的时候再填上。请求数据包局域网内的所有主机都会收到,然后他们就都会检查一下自己的IP地址,看看是不是说自己呢,如果检查到请求数据包中的IP地址和自己的吻合,就会发回去一个ARP响应说“是我,这是我MAC地址,有事再联系”,把自己的MAC地址填到MAC帧中然后发回给源主机。

  • 没发送Ping命令前能监听到大量ARP包的原因

    • 有其他后台网络流量
    • 系统自动发送问候请求,看看某台机器是否还活着
    • 抓包工具需要不断对网络设备进行扫描,这也可能导致额外的ARP包
  • 18
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,关于ARP协议的问题,我来逐一回答: 1. ARP协议流程: ARP协议是用于将IP地址转换为MAC地址的协议。当主机A需要与主机B通信时,如果它不知道主机B的MAC地址,就会向网络中的所有主机发送一个ARP请求,请求其中的主机告诉它主机B的MAC地址。当主机B收到ARP请求后,它会向主机A发送一个ARP响应,告诉它自己的MAC地址。主机A收到ARP响应后,就可以将要发送的数据包封装上MAC地址,然后发送给主机B。 2. ARP协议抓包分析: 使用Wireshark等工具可以抓取网络中的ARP协议数据包。在Wireshark中,可以设置过滤器来只显示ARP协议数据包抓包分析时可以查看数据包中的源MAC地址、目的MAC地址、源IP地址、目的IP地址等字段,以及数据包的类型(ARP请求或ARP响应)。 3. 源MAC地址和目的MAC地址: 在ARP请求中,源MAC地址为发送ARP请求的主机的MAC地址,目的MAC地址为广播地址(FF:FF:FF:FF:FF:FF);在ARP响应中,源MAC地址为发送ARP响应的主机的MAC地址,目的MAC地址为接收ARP请求的主机的MAC地址。 4. 广播地址: 广播地址是一个特殊的MAC地址,用于向网络中的所有主机发送数据包。在ARP请求中,源MAC地址为发送ARP请求的主机的MAC地址,目的MAC地址为广播地址(FF:FF:FF:FF:FF:FF),这样所有的主机都可以接收到这个请求;在ARP响应中,源MAC地址为发送ARP响应的主机的MAC地址,目的MAC地址为接收ARP请求的主机的MAC地址,这样只有接收到ARP请求的主机才能收到ARP响应。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值