每天掌握一个网络协议----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的映射

相关推荐
阿珊和她的猫3 小时前
HTTP 状态码 301 和 302 的区别与使用场景
网络·网络协议·http
深度学习04074 小时前
【网络实验】-VLAN工作原理
网络
会飞的土拨鼠呀5 小时前
通过Linux进程id找到程序路径
linux·服务器·网络
GIS数据转换器5 小时前
GIS+大模型助力安全风险精细化管理
大数据·网络·人工智能·安全·无人机
让学习成为一种生活方式6 小时前
植物中验证蛋白相互作用的Pull-down和Co-IP技术--文献精读181
网络·网络协议·tcp/ip
普普通通的南瓜6 小时前
IP证书在关键信息基础设施安全防护中的实践与挑战
网络·数据库·网络协议·tcp/ip·安全·ssl
讨厌下雨的天空8 小时前
网络基础
网络·1024程序员节
0和1的舞者8 小时前
《网络编程核心概念与 UDP Socket 组件深度解析》
java·开发语言·网络·计算机网络·udp·socket
华普微HOPERF8 小时前
Matter协议,如何赋能智能家居构建跨生态的互操作网络?
网络·智能家居