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

相关推荐
TechWayfarer4 小时前
精度极限的突破:AI与IPv6如何重塑高精度IP查询
人工智能·网络协议·tcp/ip·transformer
天行健,君子而铎5 小时前
数据分类分级的范式转换:从规则匹配到场景化高准确率一键部署
网络·数据库·安全
深圳市快瞳科技有限公司9 小时前
宠物门禁端侧AI落地解析:画质检测、活体甄别与离线推理
网络
墨神谕10 小时前
RPC框架与HTTP REST的区别
网络协议·http·rpc
一条泥憨鱼10 小时前
【从0开始学习计算机网络】| ARP 协议:地址解析,ARP 欺骗,链路层寻址
网络·后端·学习·计算机网络
m0_7156744311 小时前
数据分类分级的范式转换:从规则匹配到场景化高准确率一键部署
大数据·网络·人工智能·网络安全
Tech探索者11 小时前
没有公网 IP、不会端口映射?用 Natfrp 轻松远程访问家中 NAS
网络协议·tcp/ip·智能路由器
HY小宝F11 小时前
树莓派智能摄像头系统 30 天重学计划之 Day 04 · HTTP / API:控制链入口 —— 学习总结
网络协议·学习·http
dog25012 小时前
带宽,时延,抖动的不可能三角
网络·tcp/ip
砚凝霜12 小时前
【软考信息安全】第十六章 网络安全风险评估过程与技术方法
网络·安全·web安全