arp地址解析协议

158 阅读3分钟

arp协议参数

已知本身ip/mac地址/对端ip地址 求对端mac地址

  1. sender-ip:本身ip地址
  2. sender-mac:本身mac地址
  3. target-ip:对端ip地址
  4. target-mac:00-00-00-00-00-00 [未知mac地址]
  5. D.MAC ff-ff-ff-ff-ff-ff (广播)
  6. S.MAC 本身mac地址
  7. TYPE 0x0806

1727171047408_d.jpg

1727171061843_d.jpg

arp协议处于osi七层模型的2.5层 报文特殊 没有三层封装 请求对端mac采用二层广播形式 无法穿越三层接口

以太网类型需要封装arp p2p不需要


arp收发过程

  1. 首先判断是否在arp表项存在 ip对应的mac
  2. 首先判断对端ip地址与本端ip地址是否与自己同网段 对端ip+子网掩码 本端ip+子网掩码
  3. 同一网段使用arp获取对端mac地址
  4. 接收端接受到arp报文后 查看target-ip是否为接收端ip 是回应报文 不是丢弃报文
  5. 接收端回应报文 采用单播的形式
  6. 发收两端都记录对端的arp 加入arp 表项中(接收端先记录 arp 表)

arp老化时间20分钟(1200秒) arp老化探测机制 单播/单播/广播 华为10-15-20 跨网段的情况 是arp找网关


免费arp(无故arp)

  1. 设备重启或者接口配置地址后 会广播发送一个arp包 用来告诉其他人该接口地址 为免费arp
  2. 作用 检测地址冲突
  3. 与正常arp报文的区别 免费arp报文的sender-ip/target-ip一致 原因?问一问有没有该地址 一旦有人回复 就说明地址冲突

arp代理 (路由式 / vlan间 / vlan内)

  1. 如果arp请求是从一个网络的主机发往同一网段却不在同一物理网络上的另一台主机,那么连接他们的具有代理arp功能的设备就可以回答该请求,这个过程称作代理arp

  2. 特点

    a. 部署在网关上,网络中的主机不必做任何改动。

    b. 可以隐藏物理网络细节,使两个物理网络可以使用同一个网络号

    c. 只影响主机arp表,对网关的arp表和路由表没有影响

路由式arp代理

1727171077913_d.jpg PC1去pingPC2时,根据ip+子网掩码判断与自己属于同一网段 就会直接发送arp包请求对端mac 而不是通过网关 但是又会被网关隔离 所以需要网关开启arp代理 proxy-arp enable [获取到的mac都是网关mac 不是真实mac]

开启ARP代理PC1pingPC2

ARP报文分析

不开启ARP代理无回应

如果左边开启了arp代理 那么左边的pc能ping通右边的pc 但是右边pc不能ping通左边

实际MAC地址为arp代理mac地址

1727171182003_d.jpg

VLAN内代理ARP

需要互通的主机处于相同网段,并且属于相同VLAN,但VLAN内配置了端口隔离的场景

开启端口隔离默认不通_开启后_通

[vlanif]local-proxy-arp enable

[vlanif]local-proxy-arp enable ip-range 192.168.1.1 to 192.168.1.2

VLAN间代理ARP

需要互通的主机处于相同网段,但属于不同VLAN的场景 例如supervlan

1727171216287_d.jpg

[super-vlanif]local-proxy-arp enable

[super-vlanif]local-proxy-arp enable ip-range 192.168.1.1 to 192.168.1.2


arp绑定[ip绑定mac]

[接口视图]ip source binding ip-address <ip-address> mac-address <mac-address>

清空arp表项

  1. 清空所有arp表项 reset arp all
  2. 清除单条arp表项 [router]undo arp ip-address

常见问题

为什么二层接入设备没有arp表项?

arp表项是ip地址对应mac地址 两者缺一不可 一般存在于网关设备 接入层一般不会处理同网段的ip地址 1. 能收到arp报文 2. 有与之对应网段的ip地址