每天掌握一个网络协议----ARP协议

ARP协议

ARP(Adress Resolution Protocol,地址解析协议)是一种用于将网络层协议(IP地址)解析为数据链路层地址(MAC地址)的协议

ARP的工作原理

核心功能是通过广播请求和单播响应,将IP地址解析为MAC地址

ARP请求-响应

当设备需要与目标设备通信时,如果不知道目标设备的MAC地址,它会发送一个ARP请求广播包,询问谁拥有这个IP地址,参考格式:

局域网非目标设备收到该ARP广播报文,不进行处理;目标设备收到了该请求报文,会将请求中的源地址记录并封装到ARP响应报文中,这样一个ARP交互流程就完成了

ARP响应是单播而非广播的,因为响应设备已经获取了设备的MAC地址和IP地址

ARP缓存

ARP协议把IP => MAC的映射关系记录到本机操作系统的ARP缓存中

以Linux为例,ARP记录在内核的ARP表中;除此之外,还会同步到邻居子系统 /usr/sbin/ip neigh

复制代码
guangjie.wang@SW-Build:~$ cat /proc/net/arp
IP address       HW type     Flags       HW address            Mask     Device
10.0.10.8        0x1         0x2         34:73:5a:a0:80:dd     *        eno1
10.0.10.174      0x1         0x2         2c:ea:7f:e7:73:07     *        eno1
10.0.10.27       0x1         0x2         2c:ea:7f:e7:73:05     *        eno1
10.0.10.1        0x1         0x2         e4:3e:c6:bf:48:c1     *        eno1
10.0.10.100      0x1         0x0         00:00:00:00:00:00     *        eno1
10.0.10.18       0x1         0x2         4c:76:25:fe:3d:3d     *        eno1
10.0.10.6        0x1         0x2         20:04:0f:f9:fb:14     *        eno1
10.0.10.11       0x1         0x2         4c:d9:8f:c1:ff:8b     *        eno1

也可以使用arp -n进行查看

复制代码
guangjie.wang@SW-Build:~$ arp -n
Address                  HWtype  HWaddress           Flags Mask            Iface
10.0.10.8                ether   34:73:5a:a0:80:dd   C                     eno1
10.0.10.174              ether   2c:ea:7f:e7:73:07   C                     eno1
10.0.10.27               ether   2c:ea:7f:e7:73:05   C                     eno1
10.0.10.1                ether   e4:3e:c6:bf:48:c1   C                     eno1
10.0.10.100                      (incomplete)                              eno1
10.0.10.18               ether   4c:76:25:fe:3d:3d   C                     eno1
10.0.10.6                ether   20:04:0f:f9:fb:14   C                     eno1
10.0.10.11               ether   4c:d9:8f:c1:ff:8b   C                     eno1

ARP表存在于内存中,系统重启会清空ARP记录

不仅如此,在Linux系统中,ARP表不只是一张,而是每个接口都会维护一个ARP/邻居表

一个ARP表最多存放的记录条目可以通过以下命令查看:

复制代码
guangjie.wang@SW-Build:~$ sysctl net.ipv4.neigh.default.gc_thresh1
net.ipv4.neigh.default.gc_thresh1 = 128
guangjie.wang@SW-Build:~$ sysctl net.ipv4.neigh.default.gc_thresh2
net.ipv4.neigh.default.gc_thresh2 = 512
guangjie.wang@SW-Build:~$ sysctl net.ipv4.neigh.default.gc_thresh3
net.ipv4.neigh.default.gc_thresh3 = 1024

这三个阈值的含义分别是:

|------------|---------------|------|
| 参数 | 意义 | 阈值 |
| gc_thresh1 | 小于此值时不回收 | 128 |
| gc_thresh2 | 超过此值开始触发回收 | 512 |
| gc_thresh3 | 最大值,超过立即丢弃新条目 | 1024 |

ARP的应用场景

ARP广泛应用于以下场景:

  1. 局域网通信:
  • 设备在局域网中通信时,需要获取目标设备的MAC地址
  1. 路由器转发:
  • 路由器在转发数据包时,需要直到下一跳的MAC地址
  1. 网络诊断:
  • 使用ARP命令查看本地ARP缓存,诊断网络问题

ARP的安全性

ARP本身是不安全的,因为它是广播报文且缺少安全校验,容易收到以下攻击

  1. ARP欺骗
  • 攻击者使用伪造的ARP响应,将自己的MAC地址与目标IP地址关联,从而截获网络报文
  1. ARP泛洪
  • 攻击者发出海量的ARP请求,将局域网中的网络资源耗尽

为了提高安全性,可以使用以下方式防止网络收到ARP攻击

  1. 静态ARP表,手动配置局域网的IP和MAC地址的映射关系,适用于小型且固定的网络
  2. ARP检测,监控网络中的ARP流量,检测局域网中的异常行为设备
  3. 网络隔离,使用VLAN或子网隔离设备,减少ARP攻击的影响

ARP的替代方案

在某些场景下,可以使用以下替代方案:

  1. NDP(Neighbor Discovery Protocol)邻居发现协议

IPv6使用NDP协议替代ARP协议实现ip与mac的映射

相关推荐
DianSan_ERP2 天前
电商API接口全链路监控:构建坚不可摧的线上运维防线
大数据·运维·网络·人工智能·git·servlet
呉師傅2 天前
火狐浏览器报错配置文件缺失如何解决#操作技巧#
运维·网络·windows·电脑
gihigo19982 天前
基于TCP协议实现视频采集与通信
网络协议·tcp/ip·音视频
2501_946205522 天前
晶圆机器人双臂怎么选型?适配2-12寸晶圆的末端效应器有哪些?
服务器·网络·机器人
linux kernel2 天前
第七部分:高级IO
服务器·网络
数字护盾(和中)2 天前
BAS+ATT&CK:企业主动防御的黄金组合
服务器·网络·数据库
~远在太平洋~2 天前
Debian系统如何删除多余的kernel
linux·网络·debian
unfeeling_2 天前
Keepalived实验
linux·服务器·网络
坐吃山猪2 天前
OpenClaw04_Gateway常见问题
网络·gateway·openclaw
上海云盾商务经理杨杨2 天前
2025年重大网络安全事件回顾与趋势分析
网络·安全·web安全