> 文章列表 > ARP协议详解

ARP协议详解

ARP协议详解

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协议详解

  • 从上面我们知道其中一个arp包发送的ip地址为192.168.1.1,其发送的网口是enp2s0f1

    所以我们可以可以手动发送一条命令来发送arp请求

    arping -c 1 -I enp2s0f1 192.168.1.1
    

ARP协议详解

  • 打开wireshark,根据上面命令的结果我们知道缓存的mac地址的arp包是从enp2s0f1上发送的,所以我们选择抓取enp2s0f1网口,在过滤处填写arp

ARP协议详解
ARP协议详解

  • 从上面的arp -a的结果我们知道其中一个arp包发送的ip地址为192.168.1.1,其发送的网口是enp2s0f1所以我们可以可以手动发送一条命令来发送arp请求,抓到的包如下图所示
arping -c 1 -I enp2s0f1 192.168.1.1

ARP协议详解
ARP协议详解

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)]

  1. Hardware Type(硬件类型):表示发送方的网络接口类型,例如以太网。
  2. Protocol Type(协议类型):表示上层协议类型,通常为IP协议。
  3. Hardware Address Length(硬件地址长度):表示硬件地址的长度,例如MAC地址长度为6个字节。
  4. Protocol Address Length(协议地址长度):表示协议地址的长度,例如IPv4地址长度为4个字节。
  5. Operation Code(操作码):表示ARP包的类型,包括ARP请求、ARP响应、RARP请求、RARP响应等。
  6. Sender Hardware Address(发送方硬件地址):表示发送方的MAC地址。
  7. Sender Protocol Address(发送方协议地址):表示发送方的IP地址。
  8. Target Hardware Address(目标硬件地址):表示目标主机的MAC地址。
  9. Target Protocol Address(目标协议地址):表示目标主机的IP地址。