ARP 协议

总结 ARP 协议,包括请求、应答、免费ARP、探测和通告分组

 

ARP 协议用于网络层地址和硬件地址之间的映射,实际使用中只用于 IPv4 地址到以太网 MAC 地址的映射

ARP 协议封装在链路层中传输,并且只能工作在支持广播的网络中。协议帧如下:

 

1、ARP 请求

在本地缓存中没有需要的 IPv4 地址到 MAC 地址的映射时,就需要发送一个 ARP 请求来获取 MAC 地址

发送 ARP 请求时,链路层中的目的地址填为全 f(广播),ARP 帧里的目的 MAC 地址填为0

链路层广播操作类型发送方 MAC发送方 IP目的 MAC目的 IP
1(请求)0:0:c0:6f:2d:4010.0.0.56010.0.0.3

 

2、ARP 应答

IP 地址为 10.0.0.3 的设备收到请求后,回复一个 ARP 应答消息,消息中包括应答方的 IP 和 MAC 地址(填在发送方地址字段)

应答消息不是广播

链路层广播操作类型发送方 MAC发送方 IP目的 MAC目的 IP
2(应答)0:0:c0:c2:9b:2610.0.0.30:0:c0:6f:2d:4010.0.0.56

 

3、免费 ARP

源 IP 和目的 IP 相同的 ARP 请求叫做免费 ARP,通过广播发送:

链路层广播操作类型发送方 MAC发送方 IP目的 MAC目的 IP
1(请求)0:0:c0:6f:2d:4010.0.0.56010.0.0.56

这样只有 IP 地址和自己相同的才会回应。发送免费 ARP 后并不期望收到回应,当收到一个回应时说明有地址冲突。免费 ARP 主要用来实现两个功能:

  1. 允许一台主机确定另一台主机是否配置相同的 IP 地址
  2. 通知其它主机发送方主机的 MAC 地址变了,更新其它主机中的缓存

如果一个主机A接收到一个主机B的 ARP 请求,该请求的发送方B的 IP 已经在接收方A的 ARP 缓存中了,则接收主机A用请求消息里的发送方 IP、MAC 地址对来更新本地 ARP 缓存里的记录,第二点正是通过这个特性来实现的。也正是由于这个特性,在地址冲突的情况下会存在缓存污染的问题。

所以免费 ARP 又根据发送方 IP 地址是否填 0 分成了两种:探测分组和通告分组。

3.1、ARP 探测分组

发送方 IP 地址是 0 的叫探测分组,通过广播发送。当一个接口被启用或从睡眠中唤醒,或一个新的链路建立时,主机会发送一个ARP 探测分组,将发送方 IP 填为 0 避免了在 IP 地址冲突的情况下存在的缓存污染问题,用来实现免费 ARP 中的冲突检测功能:

链路层广播操作类型发送方 MAC发送方 IP目的 MAC目的 IP
1(请求)0:0:c0:6f:2d:400010.0.0.56

 

3.2、ARP 通告分组

发送方 IP 地址不是 0 的叫通告分组,用来实现免费 ARP 中的通知 MAC 地址变更功能

链路层广播操作类型发送方 MAC发送方 IP目的 MAC目的 IP
1(请求)0:0:c0:6f:2d:4010.0.0.56010.0.0.56

 

4、免费 ARP 和探测、通告分组的关系

ARP 探测分组和通告分组属于 IPv4 地址冲突检测(ACD)功能的一部分,免费 ARP 的两个功能分别由它们实现:

  1. 检测冲突的功能由探测分组实现
  2. 通知 MAC 地址变更的功能由通告分组实现

 

5、以上消息的应用场景

  1. 正常请求另一个 IP 地址对应的 MAC 地址时,发送请求分组,收到应答分组
  2. 当一个接口被启用或从睡眠中唤醒,或一个新的链路建立时,主机会发送一个ARP 探测分组。如果收到应答分组,说明其它站已使用候选 IP 地址。如果收到其它站发送的探测请求,说明其它站也在尝试获得候选 IP 地址。这两种情况系统都会提示地址冲突,然后使用其它可用的地址(比如使用 DHCP 分配)
  3. 如果前面的探测分组没有检测到冲突,则发送通告分组,更新其它站的缓存
  4. ACD 持续检测收到的请求和应答消息,如果自己的地址有出现在消息的发送方 IP 地址字段中,则说明有地址冲突(只检测发送方地址,不需要处理探测分组,因为收到探测分组后用正常的应答来阻止对方继续使用此 IP 即可)。这时候有三种处理方式:①停止使用此地址;②发送通告分组,如果冲突继续则停用此地址;③不理会冲突继续使用
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值