05 地址解析协议ARP
阅读原文时间:2023年08月29日阅读:1

地址解析协议(ARP)

ARP(Address Resolution Protocol)地址解析协议:

根据已知的IP地址解析获得其对应的MAC地址

ARP工作流程

HOST1通信之前需要封装数据包,其中在封装二层数据链路层时,终端查询自己的ARP缓存表,ARP缓存表维护一个IP和MAC地址的对应关系,根据对端IP地址再查询ARP缓存表可知道对方的MAC地址,然后直接封装就好了,默认ARP缓存表是没有对应关系的(ARP的默认老化时间为180秒,就是原本的ARP记录如果180秒没有被使用,那么此对应关系会被删除)

终端1发生ARP请求来获取IP和MAC地址的对应关系并存到自己的ARP表中,由于不知道对方的MAC地址因此在封装ARP请求的Ether_II目的MAC为ff:ff:ff:ff:ff:ff(广播地址),在ARP报文中由于不知道对端的MAC地址因此设置目的MAC为00:00:00:00:00:00

HOST1发送的ARP请求为广播,在同一广播域的主机都会收到,HOST2在收到ARP请求报文后,对比ARP报文中的目的IP,发现和本机的IP匹配,讲ARP请求报文中的源IP和源MAC的对应关系写入到自己的ARP缓存表中

HOST2需要对ARP请求进行回复,由于上一步中已经从ARP请求将HOST1的IP和MAC地址的对应关系写入到了ARP缓存中,在封装ARP回复时目的MAC就可以封装进去了,不用以广播的形式,而是单播,ARP Replay的封装和ARP请求一样,只是ARP类型该成了ARP Replay,在ARP Replay报文中封装了源目IP和MAC地址

HOST1收到ARP Replay后将ARP报文中的源IP和源MAC记录进ARP缓存表中,之后HOST1和HOST2通信就不需要考虑二层封装目的MAC未知问题

免费ARP报文

在终端获取到了自己的IP地址后,会发送一个免费的ARP报文,免费ARP是一个ARP请求报文,封装ARP时源目IP和源MAC都是自己,Ether_II的源MAC是自己,目的MAC是广播地址,如果有人回ARP Replay,代表此IP已经和其他MAC地址绑定了,免费ARP报文的作用是查询自己的IP是否和其他终端冲突了

抓包

在GE0/0/0上抓

AR1

sys

Enter system view, return user view with Ctrl+Z.

[Huawei]sys AR1

[AR1]inte gi 0/0/0

[AR1-GigabitEthernet0/0/0]ip addr 192.168.1.1 255.255.255.0

Aug 27 2023 22:47:03-08:00 AR1 %%01IFNET/4/LINK_STATE(l)[0]:The line protocol IP

on the interface GigabitEthernet0/0/0 has entered the UP state.

AR2

sys

Enter system view, return user view with Ctrl+Z.

[Huawei]sys AR2

[AR2]inte gi 0/0/0

[AR2-GigabitEthernet0/0/0]ip addr 192.168.1.2 255.255.255.0

Aug 27 2023 22:48:50-08:00 AR2 %%01IFNET/4/LINK_STATE(l)[0]:The line protocol IP

on the interface GigabitEthernet0/0/0 has entered the UP state.

AR1 ping AR2

[AR1]ping 192.168.1.2

PING 192.168.1.2: 56 data bytes, press CTRL_C to break

Reply from 192.168.1.2: bytes=56 Sequence=1 ttl=255 time=90 ms

Reply from 192.168.1.2: bytes=56 Sequence=2 ttl=255 time=20 ms

Reply from 192.168.1.2: bytes=56 Sequence=3 ttl=255 time=20 ms

--- 192.168.1.2 ping statistics ---

3 packet(s) transmitted

3 packet(s) received

0.00% packet loss

round-trip min/avg/max = 20/43/90 ms