地址解析协议(ARP)的学习(通过wireshark抓包分析)

看看维基百科的解释
地址解析协议(Address Resolution Protocol),其基本功能为通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。它是IPv4中网络层必不可少的协议,不过在IPv6中已不再适用,并被邻居发现协议(NDP)所替代。
基本功能[编辑]

在以太网协议中规定,同一局域网中的一台主机要和另一台主机进行直接通信,必须要知道目标主机的MAC地址。而在TCP/IP协议中,网络层和传输层只关心目标主机的IP地址。这就导致在以太网中使用IP协议时,数据链路层的以太网协议接到上层IP协议提供的数据中,只包含目的主机的IP地址。于是需要一种方法,根据目的主机的IP地址,获得其MAC地址。这就是ARP协议要做的事情。所谓地址解析(address resolution)就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。 另外,当发送主机和目的主机不在同一个局域网中时,即便知道目的主机的MAC地址,两者也不能直接通信,必须经过路由转发才可以。所以此时,发送主机通过ARP协议获得的将不是目的主机的真实MAC地址,而是一台可以通往局域网外的路由器的MAC地址。于是此后发送主机发往目的主机的所有帧,都将发往该路由器,通过它向外发送。这种情况称为ARP代理(ARP Proxy)。
原理[编辑]

在每台安装有TCP/IP协议的电脑或路由器里都有一个ARP缓存表,表里的IP地址与MAC地址是一对应的,如下表所示。
主机名称 IP地址 MAC地址
A 192.168.38.10 00-AA-00-62-D2-02
B 192.168.38.11 00-BB-00-62-C2-02
C 192.168.38.12 00-CC-00-62-C2-02
D 192.168.38.13 00-DD-00-62-C2-02
E 192.168.38.14 00-EE-00-62-C2-02
… … …
以主机A(192.168.38.10)向主机B(192.168.38.11)发送数据为例。当发送数据时,主机A会在自己的ARP缓存表中寻找是否有目标IP地址。如果找到了,也就知道了目标MAC地址为(00-BB-00-62-C2-02),直接把目标MAC地址写入帧里面发送就可以了;如果在ARP缓存表中没有找到相对应的IP地址,主机A就会在网络上发送一个广播(ARP request),目标MAC地址是“FF.FF.FF.FF.FF.FF”,这表示向同一网段内的所有主机发出这样的询 问:“192.168.38.11的MAC地址是什么?”网络上其他主机并不响应ARP询问,只有主机B接收到这个帧时,才向主机A做出这样的回应(ARP response):“192.168.38.11的MAC地址是(00-BB-00-62-C2-02)”。 这样,主机A就知道了主机B的MAC地址,它就可以向主机B发送信息了。同时它还更新了自己的ARP缓存表,下次再向主机B发送信息时,直接从ARP缓存表里查找就可以了。ARP缓存表采用了老化机制,在一段时间内如果表中的某一行没有使用,就会被删除,这样可以大大减少ARP缓存表的长度,加快查询速度。


来分析一个ARP包
在win7下,cmd中
看看本地ip和mac
以太网适配器 本地连接:

连接特定的 DNS 后缀 … … . :
IPv6 地址 … … … … : 2001:da8:100e:6c99:f4fc:78d9:6fea:d86
临时 IPv6 地址… … … . : 2001:da8:100e:6c99:990f:bec8:b536:b9
本地链接 IPv6 地址… … . . : fe80::f4fc:78d9:6fea:d86%14
IPv4 地址 … … … … : 10.10.16.49
子网掩码 … … … … : 255.255.252.0
默认网关… … … … . : fe80::290:1aff:fea3:7de4%14
10.10.16.1
再看看arp 缓冲表 arp -a
这里写图片描述

那我们就去arp一个arp表中没有的IP,
在cmd中
ping 10.10.16.10
在wireshark中抓包,找到这个包
“28”,”16.004655000”,”CompalIn_32:60:5d”,”Broadcast”,”ARP”,”42”,”Who has 10.10.16.10? Tell 10.10.16.49”
看看具体包的情况

这里写图片描述

这是帧的头部,目的地址为全FF表示广播询问,源地址本地的mac地址,类型字段是0806h为arp协议字段,
再看看ARP数据包

这里写图片描述

第一个16bit:硬件类型字段,0001h为以太网
第二个16bit:协议类型,0800h ,为IP协议
第三个8bit:mac地址长度 6bytes
第四个8bit:协议地址长度 4bytes
第五个16bit:操作码字段 0001h 是arp请求
第六个48bit:发送方的mac地址
第七个32bit:发送方的协议地址
第八个48bit:接受方的mac地址;一般全0
第九个32bit:接收方的协议地址,因为上面指明是IP协议,所以为IP地址,即使ping 后面的IP地址。
ARP数据包结束;

再看看回过来的数据包
“29”,”16.005449000”,”Unispher_a3:7d:e1”,”CompalIn_32:60:5d”,”ARP”,”60”,”10.10.16.10 is at 00:90:1a:a3:7d:e1”
具体看看包数据

这里写图片描述

在以太网头看看有个padding段
查看维基解释如下
Allowed Packet Lengths

Ethernet packets with less than the minimum 64 bytes for an Ethernet packet (header + user data + FCS) are padded to 64 bytes, which means that if there’s less than 64-(14+4) = 46 bytes of user data, extra padding data is added to the packet.
上面为补充到60个字节,再加上4个crc一共64字节。
在以太网头部和请求帧的一致,
具体看看ARP包数据;

这里写图片描述

此时,操作码字段为0002h,为应答;
这时候将IP对应的mac地址发回去。这时得到的mac地址为
00:90:1a:a3:7d:e1
看看在win下的arp表中是否有
接口: 10.10.16.49 — 0xe
Internet 地址 物理地址 类型
10.10.16.1 00-90-1a-a3-7d-e1 动态
10.10.16.44 00-90-1a-a3-7d-e1 动态
10.10.19.255 ff-ff-ff-ff-ff-ff 静态
224.0.0.2 01-00-5e-00-00-02 静态
224.0.0.22 01-00-5e-00-00-16 静态
224.0.0.252 01-00-5e-00-00-fc 静态
239.255.255.250 01-00-5e-7f-ff-fa 静态
255.255.255.255 ff-ff-ff-ff-ff-ff 静态
确实是刷新了

  • 15
    点赞
  • 91
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Wireshark是一款网络协议分析工具,可以用来抓取和分析网络数据包。ARP协议是一种用于解析IP地址和MAC地址之间映射关系的协议。在Wireshark中,可以通过抓取网络数据包来分析ARP协议的工作原理和流程。 具体来说,可以通过以下步骤来分析ARP协议: 1. 打开Wireshark软件,并选择要抓取的网络接口。 2. 开始抓取网络数据包,可以使用过滤器来只抓取与ARP协议相关的数据包。 3. 分析抓取到的数据包,可以查看每个数据包的详细信息,包括源地址、目标地址协议类型等。 4. 查看ARP请求和响应数据包,可以了解ARP协议的工作流程和原理。 5. 分析数据包中的MAC地址和IP地址,可以确定网络设备之间的映射关系。 通过以上步骤,可以使用Wireshark来抓取和分析ARP协议,从而更好地理解网络通信的工作原理和流程。 ### 回答2: ARP协议地址解析协议)是一种用于将网络层地址(例如IP地址)映射为物理层地址(例如MAC地址)的协议Wireshark是一种用于网络分析抓包的强大工具,可以帮助我们深入了解网络通信的细节。 使用Wireshark抓取ARP流量: 首先,我们需要打开Wireshark并选择要监视的网络接口。接着,我们可以使用过滤器来仅抓取与ARP协议相关的流量。在过滤器栏中输入“arp”并按下“应用”按钮即可。 现在,我们可以看到捕获的ARP流量。在Wireshark中,每个包都包含许多信息,包括源地址、目的地址协议类型等。在ARP包中,最重要的信息是源MAC地址、源IP地址、目标MAC地址、目标IP地址等。 分析ARP流量: 使用Wireshark抓取的ARP流量,我们可以进行一些有趣的分析。例如,我们可以查看网络中哪些主机具有哪些IP地址。对于这个目的,我们可以使用一个不同的过滤器:“arp.opcode == 1”。这将仅筛选ARP请求(opcode = 1)的包。在ARP请求中,源IP地址是我们想要查看的目标。 另一个有趣的应用程序是查看ARP欺骗攻击。这是一种攻击类型,攻击者将假的MAC地址和IP地址映射到目标主机。使用Wireshark,我们可以查看ARP响应中的MAC地址,确保它与实际的MAC地址相同。我们也可以使用Wireshark来检测ARP欺骗攻击,通过使用ARP欺骗检测工具或配置ARP欺骗防御机制来防止此类攻击。 综上所述,Wireshark是一种非常有用的工具,可用于捕获和分析网络流量。使用Wireshark和相关技术,可以帮助我们更好地了解网络层和物理层之间的交互,并帮助我们识别网络中的潜在安全问题。 ### 回答3: arp协议是一种链接层协议,用于在局域网上解析ip地址和mac地址之间的对应关系。wireshark作为一种流行的网络抓包工具,可以帮助我们分析arp协议的工作原理。 首先,打开wireshark并选择相应的网络接口开始抓包。在过滤栏中输入“arp”可以过滤出arp相关的网络数据包。通过分析这些数据包的内容,我们可以了解arp协议的通信过程。 arp协议的通信过程中,一般包含以下几个步骤: 1. arp请求 当一台设备需要发送数据包到目标设备时,它会首先广播一个arp请求,请求其他设备告诉它目标设备的mac地址arp请求的包头中包含发送设备的mac地址、源ip地址、目标ip地址等信息。 2. arp应答 当目标设备收到arp请求后,它会向发送设备回应一个arp应答,包头中包含目标设备的mac地址、目标ip地址等信息。 3. arp缓存 发送设备在收到目标设备回应的arp数据包后,会在自己的arp缓存中保存目标设备的mac地址和ip地址的对应关系,这样在以后发送数据包时就可以直接使用目标设备的mac地址了,无需再广播arp请求。 通过wireshark抓包分析arp协议的通信过程,我们不仅可以了解arp协议的工作原理,还可以较为直观地观察到数据包的传输过程,对于网络问题的定位和解决有一定的帮助作用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值