ARP协议
一、ARP(地址解析协议)简介
1.1 ARP的使用场景
在局域网中,当主机或其它网络设备有数据要发送给另一个主机或设备时,它必须知道对方的逻辑地址(即IP地址)。但是仅仅有逻辑地址是不够的,因为IP数据报文必须封装成帧才能通过物理网络发送,因此发送站还必须有接收站的物理地址,所以需要一个从逻辑地址到物理地址的映射。地址解析协议ARP用于将IP地址映射为以太网MAC地址(或称物理地址)。
二、ARP的机制
2.1 ARP Announcement(免费ARP)
当配置第一个IPv4接口地址时,也可以说链路up起来时,设备主动使用自己的IP地址作为目的IP地址发送ARP请求,此种方式称免费ARP。
目的是为了用于DAD(冲突地址检测),或VRRP设备切换时候宣告主备设备切换。
2.2 ARP报文结构
# Hardware type 硬件地址类型 -指明硬件的类型,一般是以太网,值为1。 # Portocol type 协议类型 指明发送者映射到数据链路标识的网络层协议类型 # Hardware size 硬件地址长度。也就是MAC地址的长度,单位是字节 # Protocol size 硬件地址长度。也就是MAC地址的长度,单位是字节。 # Opcode: request (1) 指定了ARP报文的类型,包括ARP Request和 ARP Reply。 # Sender MAC address: 指的是发送ARP报文的设备的MAC地址 # Sender IP address: 指的是发送ARP报文的设备的IP地址 # Target MAC address: 目的MAC地址指的是接收者MAC地址 由于免费ARP通常作用于检测 所以目的MAC用全0填充 # Target IP address: 目的MAC地址指的是接收者IP地址 免费ARP用自己的IP地址进行填充,作用于重复检测
2.3 ARP表项
通过IP地址和MAC地址与接口进行关联的一张表。
动态ARP表项的表项老化时间一般为1200秒,即20分钟,时间快到时会发送ARP Request请求更新ARP表项。
关注此图,自身的192.169.1.1的地址没有生存时间。
三、ARP的工作原理
3.1 ARP协议的请求流程
3.2 ARP的工作过程
在两端设备刚刚建立时,只发送了免费ARP进行DAD检测,并没有获取对方的MAC地址
# 逻辑上接受处理流程 # if 广播 or 组播同一组 or 单播是自己 # 二层type交给arp协议 # target字段与自己无关 pass报文
所以在ICMP的ping测试下会进行如下的报文封装,具体的过程如下
查询路由表
- 如果没有路由不会发送
封装ICMP报文
- 但是封装时不知MAC地址
- 创建一条ARP表项 172.16.12.2 --- mac(incomplete)
发送ARP request请求
- 对端发送 ARP Reply回应 也会创建自己ARP表
四、ARP的一些趣事
4.1 前言
在刷抖音的过程中,我遇到了两台PC设备,两个跨网段的地址分别指向对端可以进行ping通测试。
ARP可以跨网段进行回复。
4.2 实现逻辑
其实统筹来讲,PC设备进行设置网关会添加一条缺省路由指向
0.0.0.0 0 nexthop 9.9.9.9,对于ping处理来说,Arp请求会指向nexthop地址。很不巧的是PC2尽然会跨网段的回复ARP。我清晨看到这个问题后想起来看到WireShark小试牛刀的书中,描述了(ARP的应答可以跨网段)
那对于PC来说,这个互通的现象可以说明了。
那抽象与路由器呢?
Ensp的试验下这个静态路由根本无法写入路由表。
对我而言来说应该是Nexthop地址不可达,无法写入这个路由,通常大家写入下一段IP地址的根本原因是在配置接口IP后,路由表会产生对应的直连路由。
那看起来这个问题比较有意思了,ARP确实可以跨网段回应。










浙公网安备 33010602011771号