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

相关推荐
小豪GO!1 小时前
HTTPS原理
网络协议·http·https
星瞰物联1 小时前
融合北斗与天通卫星通信技术的堤坝水文监测卫星图传系统
网络·物联网·安全·系统架构
周杰伦_Jay1 小时前
【GRPC 和 HTTP】设计目标和底层实现
网络·网络协议·http
汤愈韬2 小时前
防火墙用户管理技术
网络协议·网络安全·huawei
木子欢儿2 小时前
Prometheus Blackbox域名SSL证书监控并设置AlertManager告警
网络·网络协议·ssl·prometheus
北京耐用通信2 小时前
解码协议迷雾:耐达讯自动化Profinet转Devicenet让食品包装称重模块“跨界对话”的魔法
人工智能·物联网·网络协议·自动化·信息与通信
猫天意2 小时前
【即插即用模块】AAAI2025 | 高频 + 空间感知!新 HS-FPN 让“极小目标”不再消失!SCI保二区争一区!彻底疯狂!!!
网络·人工智能·深度学习·学习·音视频
草根站起来2 小时前
SSL证书根证书没有二级根证书、三级根证书、四级根证书,SSL证书参数诈骗被迫使用了套牌贴牌非原厂SSL和证书
网络·网络协议·ssl
谢尔登3 小时前
HTTP 协议组成
网络·网络协议·http
m0_738120723 小时前
渗透测试——靶机DC-4详细渗透教程
运维·网络·安全·web安全·php