ARP 协议分析
ARP协议,全名地址解析协议(Address Resolution Protocol),是一个通过解析网络层地址来找寻数据链路层地址的网络传输协议,它在IPv4中极其重要。ARP是通过网络地址来定位MAC地址。 ——Wikipedia
ARP报文首部格式
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。
寝室网络拓扑图:
在Windows 11系统中使用arp -a
命令查看本地的arp缓存表
从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数据包
抓到了两个arp数据包
(1)第一个数据包
- 网卡类型为以太网
- 协议类型:IPv4
- 网卡地址长度:6字节
- 协议长度:4字节
- 操作码:1(查询)
- 发送方MAC地址:f0:18:98:96:00:86(来自Apple设备)
- 发送方IP地址:192.168.137.169
- 在MacBook上运行
ifconfig
命令可知,该IP地址和MAC地址来自我的MacBook
- 在MacBook上运行
- 接受方MAC地址:00:00:00:00:00:00 此ARP报文在局域网内广播
- 接收方IP地址:192.168.137.1
- 此IP地址为软路由的IP地址,即Surface无线网卡的IP地址
从第一个ARP报文可知,这是一个来自192.168.137.169的arp查询报文,询问的是局域网内IP为192.168.137.1的MAC地址
(2)第二个数据包
- 网卡类型为以太网
- 协议类型:IPv4
- 网卡地址长度:6字节
- 协议长度:4字节
- 操作码:2(响应)
- 发送方MAC地址:9a:5f:d3:48:d5:93
- 发送方IP地址:192.168.137.1
- 在Surface上运行
ipconfig
命令可知,该IP地址和MAC地址属于无线网卡
- 在Surface上运行
- 接受方MAC地址:f0:18:98:96:00:86
- 接收方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报文
使用Wireshark抓取arp数据包,发现主机会先向192.168.137.169发送arp报文询问mac地址,并记入arp缓存表,然后再发送icmp报文