ARP协议分析

TCP/IP协议

Posted by Pele on March 6, 2022

ARP 协议分析

ARP协议,全名地址解析协议(Address Resolution Protocol),是一个通过解析网络层地址来找寻数据链路层地址的网络传输协议,它在IPv4中极其重要。ARP是通过网络地址来定位MAC地址。 ——Wikipedia

ARP报文首部格式

image-20220306193357963

ARP首部结构分析:

  • Hardware type(HTYPE)—-网卡类型,以太网(Ethernet)是1。我们常见的网络都是以太网,但这并不意味着只有以太网。
  • Protocol type(PTYPE)—-查询中提供的网络地址的类型,IPv4是0x0800。
  • Harware lenght(HLEN)—-网卡地址长度,以太网网卡是6字节。
  • Protocol lengt(PLEN)—-查询中提供的网络地址的的长度,IPv4是4字节。
  • Operation—-查询包值为1,响应包值为2。
  • Sender hardware address(SHA)—-发送者的Mac地址。
  • Sender protocol address(SPA)—-发送者的IP地址。
  • Target hardware address(THA)—-接收者的Mac地址,arp广播时填 00:00:00:00:00:00。
  • Target protocol address(TPA)—-要查询mac地址的ip。

寝室网络拓扑图:

截屏2022-03-06 下午7.28.56

在Windows 11系统中使用arp -a命令查看本地的arp缓存表

image-20220306193805105

从ARP路由表中可以看出,接入Windows共享的无线局域网的接口为192.168.0.1,且当前有五台设备接入了局域网

设备 IP地址 MAC地址
1 192.168.137.64 72:54:21:1e:67:77
2 192.168.137.104 d2:49:f5:a8:40:92
3 192.168.137.159 60:f8:1d:bd:ce:14
4 192.168.137.169 f0:18:98:96:00:86
5 192.168.137.200 86:eb:81:99:42:cb

使用WireShark工具抓取无线网卡上的数据包,并过滤显示arp数据包

image-20220306200427118

抓到了两个arp数据包

(1)第一个数据包

image-20220306200526861

  1. 网卡类型为以太网
  2. 协议类型:IPv4
  3. 网卡地址长度:6字节
  4. 协议长度:4字节
  5. 操作码:1(查询)
  6. 发送方MAC地址:f0:18:98:96:00:86(来自Apple设备)
  7. 发送方IP地址:192.168.137.169
    • 在MacBook上运行ifconfig命令可知,该IP地址和MAC地址来自我的MacBook
    • image-20220306201137870
  8. 接受方MAC地址:00:00:00:00:00:00 此ARP报文在局域网内广播
  9. 接收方IP地址:192.168.137.1
    • 此IP地址为软路由的IP地址,即Surface无线网卡的IP地址
    • image-20220306201534817

从第一个ARP报文可知,这是一个来自192.168.137.169的arp查询报文,询问的是局域网内IP为192.168.137.1的MAC地址

(2)第二个数据包

image-20220306201744551

  1. 网卡类型为以太网
  2. 协议类型:IPv4
  3. 网卡地址长度:6字节
  4. 协议长度:4字节
  5. 操作码:2(响应)
  6. 发送方MAC地址:9a:5f:d3:48:d5:93
  7. 发送方IP地址:192.168.137.1
    • 在Surface上运行ipconfig命令可知,该IP地址和MAC地址属于无线网卡
    • image-20220306201949896
  8. 接受方MAC地址:f0:18:98:96:00:86
  9. 接收方IP地址:192.168.137.169

由此可知第二个报文是从192.168.137.1发往192.168.137.169的arp响应报文

对比两个数据包发现,ARP查询报文和ARP响应报文的操作码不同 1代表该报文为查询报文,2代表该报文为响应报文

ARP测试:删除ARP缓存表中192.168.137.169的mac地址后,使用ping命令向192.168.137.169发送icmp报文

image-20220306203234560

使用Wireshark抓取arp数据包,发现主机会先向192.168.137.169发送arp报文询问mac地址,并记入arp缓存表,然后再发送icmp报文

image-20220306203546732

image-20220306203943765

image-20220306203812698