1:引言
- ARP用于将IPV4地址解析为MAC地址,ARP 提供 IP 地址到 MAC 地址的动态映射。
- IPV6使用的是邻居发现协议,它被合并入ICMPV6
- PPP点到点链路不使用ARP协议,目的地址是一个广播地址
2:例子
如果我们要访问一台主机B
- 如果主机B不和主机在同一子网中,那么肯定需要可到达的路由器,先转发到B所在的子网中才行,也就是需要先进行路由吧
跨越路由器时 - 如果主机B和我们主机当前在一个子网中,ARP才能发挥作用。
3:直接交付和ARP
直接交付发生在一个IP数据报被发送到一个IP地址,而该地址与发送方具有相同IP前缀的情况下。
直接交付的基本 操作:
- 先得到IP地址,这可能回用到DNS
- 应用程序要求TCP协议建立一条对B主机IP地址的连接
- 我们假设主机B与发送机有相同的网络前缀,数据报可以直接到达而不需要经过路由器
- ARP在正常工作模式下,仅适用于广播网络,链路层能够将一个消息交付到它连接的所有网络设备。
- ARP首先向所有主机发送一个称为ARP请求的以太网帧,这被称为链路层广播。目的地址全一,就是本地广播。
- 通过ARP,同一广播域中所有主机可以收到ARP请求。这包括可能不允许IPV4或IPV6的系统,但不包括位于不同VLAN中的系统。
- 如果某个系统使用请求中的IPV4地址,它仅需要响应一个ARP应答。这个应答包括自己的IPV4地址和MAC地址。应答通常不是广播,而是直接发送给请求方。
- 同时,接收到ARP请求的所有主机还能学习到发送ARP请求的主机的IP地址到MAC地址的映射。
- ARP应答被请求方接收,学习到该IP地址到MAC地址的映射,储存到ARP缓存。
- 学习到之后,发送方可以把数据报封装到以太网帧 中发送给目的主机
4:ARP缓存
ARP高效运行的关键是维护各个主机和路由器上的ARP缓存(或表)
该表为每个接口维护IP地址到MAC地址的最新映射
5:ARP帧格式
6:ARP缓存超时
一般完整条目的超时时间为20分钟,不完整条目的超时时间为3分钟
-
如果执行一次到不存在主机的ARP请求会形成一个不完整的条目。
-
而且在每次使用这个条目过后,回重新启动二十分钟的超时
7:代理ARP
指定一个系统(可以是一个专门配置的路由器)来回答不同主机的ARP请求。它使ARP请求的发送方认为做出响应的就是目的主机,但实际上目的主机在其他地方或者不存在。不常用应该避免
历史用途:两个网络互相隐藏自己
这种情况下,两个网络可以使用相同的IP前缀,只要将中间的路由器设置为代理ARP,由代理响应其他网络主机的ARP请求。
这样做两个原因:
- 有些系统无法子网划分
- 有些系统使用较旧的广播地址,全0,无法进行ARP操作
8:免费ARP
- 发生在一台主机发送ARP请求查询自己的IP地址对应的MAC地址时
免费ARP需要达到两个目标(两个实际的应用):
- 允许一台主机确定另一台主机是否配置相同的IP地址,如果发送ARP请求的主机收到了一个回答,那么说明有IP地址相同的主机,是一个警告!!!!只想起到宣告作用而不想收到回应,有回应就是发生了IP冲突。
- 如果发送ARP请求的主机已经改变硬件地址,该帧导致任何接收广播并且其缓存中由该条目的其他主机,将其条目中的硬件地址更新为与帧中一致。可以用来更新已经存在的条目。
9:IPV4地址冲突检测(ACD)
ACD定义了ARP探测分组和ARP通告分组
- ARP探测分组
探测分组是一个ARP请求,其中发送方的IPV4地址被设置为0 。探测分组用于查看一个IPV4地址是否被广播域中其他任何系统所使用。通过将发送方地址设置为0,防止候选IPV4地址被另一台主机使用时的缓存污染,这是它与免费ARP工作方式的一个差别。如果已经被其他主机使用这个IP地址,那么可能就会更改其他主机缓存的条目,通过设置为0来避免。 - ARP通告分组
通告ARP与探测ARP相同,除了其发送方地址和目的地址都被填充为候选IP地址外。它用于通告发送方使用候选IPV4地址的意图。就是一个免费ARP,利用其作用之一来进行通告,更新广播域中主机的条目
当请求方发送自己的探测时,它可能会收到一个应答或者请求。对其探测的应答说明其他站已经使用了这个IP地址。如果是一个不同系统发送的请求,其目的地址包含相同的候选IP地址,说明其他系统也在尝试获取该IP地址。这两种情况下,这个地址都发生了冲突,并采用其他候选地址。
如果发送请求的系统没发现IP冲突,就可以每隔两秒发送两个ARP通告,其目的和源IP地址都是其候选地址,来告诉广播域中的系统其使用这个IP地址,并且更新广播域中所有主机关于该IP地址的条目信息。就是一个ARP通告分组。
ACD被认为是一个持续的过程,这次与免费ARP区别的一个地方。当一台主机通告它的IP地址后,会一直检测有没有发送IP地址与其IP地址是一样的,如果有说明有其他系统与自己使用一样的IP地址。就要采取一些列解决方案:
- 停止使用这个地址
- 保留地址,并且发送通告,如果还冲突,停止使用
- 不理会冲突,继续使用
10:设置一台嵌入式设备的IPV4地址
这种方法不常见。
手动为该设备建立一个ARP映射。当然,设备的以太网地址必须得知,这样就可以为该设备分配一个IP地址。而不需要ARP请求和应答。
当目的设备接收到一个IP分组时,这个数据报包含的IP地址作为其初始的IPV4地址。