ARP协议详解
文章目录
- ARP协议详解
- ARP协议介绍
- ARP抓包
- ARP包解析
ARP协议介绍
ARP(Address Resolution Protocol)是一种用于将网络层地址(如IP地址)转换为数据链路层地址(如MAC地址)的协议,当一个主机需要向另一个主机发送数据包时,它需要知道目标主机的MAC地址。在发送数据包之前,发送主机将发送一个ARP请求广播,询问目标主机的MAC地址。目标主机会在ARP响应中回复自己的MAC地址,发送主机就可以将数据包发送到目标主机了。
ARP抓包
-
下载安装
wireshark
-
查看应该抓包的端口,以
ubuntu18.04
为例,直接发送命令进行查看当前的arp
缓存arp -a
-
从上面我们知道其中一个
arp
包发送的ip
地址为192.168.1.1
,其发送的网口是enp2s0f1
所以我们可以可以手动发送一条命令来发送
arp
请求arping -c 1 -I enp2s0f1 192.168.1.1
- 打开wireshark,根据上面命令的结果我们知道缓存的
mac
地址的arp
包是从enp2s0f1
上发送的,所以我们选择抓取enp2s0f1
网口,在过滤处填写arp
- 从上面的
arp -a
的结果我们知道其中一个arp
包发送的ip
地址为192.168.1.1
,其发送的网口是enp2s0f1
所以我们可以可以手动发送一条命令来发送arp
请求,抓到的包如下图所示
arping -c 1 -I enp2s0f1 192.168.1.1
ARP包解析
ARP
协议发送ARP
包的流程是这样的,源主机广播一个ARP请求数据包,其中包含源主机的IP地址和MAC地址,以及目标主机的IP地址。该数据包会被发送到本地网络的所有主机。其他主机收到该数据包后会检查其中的目标IP地址是否为自己的IP地址,如果是,则返回一个ARP响应数据包,其中包含自己的MAC地址,发送给源主机;否则,忽略该数据包。
所以我们在源主机处抓包如果能ping
通的话会抓到两个包,一个是发送出去的包,request
包
一个是收到回复主机的包reply
包
两个包的结构都一样,只是内容不一样,抓取包中常见字段意思如下
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ktirG7wM-1682161028398)(ARP%E5%8D%8F%E8%AE%AE%E8%AF%A6%E8%A7%A3.assets/image-20230422185552167.png)]
- Hardware Type(硬件类型):表示发送方的网络接口类型,例如以太网。
- Protocol Type(协议类型):表示上层协议类型,通常为IP协议。
- Hardware Address Length(硬件地址长度):表示硬件地址的长度,例如MAC地址长度为6个字节。
- Protocol Address Length(协议地址长度):表示协议地址的长度,例如IPv4地址长度为4个字节。
- Operation Code(操作码):表示ARP包的类型,包括ARP请求、ARP响应、RARP请求、RARP响应等。
- Sender Hardware Address(发送方硬件地址):表示发送方的MAC地址。
- Sender Protocol Address(发送方协议地址):表示发送方的IP地址。
- Target Hardware Address(目标硬件地址):表示目标主机的MAC地址。
- Target Protocol Address(目标协议地址):表示目标主机的IP地址。