补—数据链路层

📅 2026/8/13 23:23:56
补—数据链路层
六、ARP协议6.1 定义ARP地址解析协议是一个比较特殊的协议——它介于数据链路层和网络层之间既不是纯粹的数据链路层协议也不是纯粹的网络层协议。ARP的作用建立主机IP地址和MAC地址的映射关系为什么需要ARP网络通信时源主机知道目的主机的IP地址和端口号但不知道目的主机的硬件地址数据包是先被网卡硬件接收再交给上层协议处理的因此在通信之前必须先获得目的主机的MAC地址6.2 工作流程可以概括为广播请求单播应答。具体步骤1、主机A想和主机B通信知道B的IP地址但不知道B的MAC地址2、主机A发送ARP请求包以广播形式发送到整个局域网以太网帧目的MAC填 FF:FF:FF:FF:FF:FFARP请求中包含发送端IP、发送端MAC、目标IP、目标MAC请求内容IP地址是172.20.1.2的主机你的MAC地址是多少3、同一网段的所有主机都收到这个广播请求但只有IP地址匹配的主机B会处理4、主机B发送ARP应答包以单播形式直接回给主机A以太网帧目的MAC填主机A的MAC地址ARP应答中包含发送端IP、发送端MAC应答内容我就是172.20.1.2我的MAC地址是08:00:20:74:CE:EC5、主机A收到应答后就知道了主机B的MAC地址可以正常通信了6.3 缓存表每次通信都发ARP请求那也太低效了。实际上每台主机都维护一个ARP缓存表用来存放最近学到的IP-MAC映射关系。查看ARP缓存表$ arp -a gateway (192.168.1.1) at 10:bd:18:08:af:62 [ether] on enp0s3 ? (192.168.1.107) at e4:f8:9c:be:af:41 [ether] on enp0s3两个问题Q1为什么要有缓存表如果每次通信都发ARP请求网络上会充斥大量ARP广播效率很低。有了缓存表大部分通信直接查表就能拿到MAC地址不需要每次都请求。Q2为什么表项要有过期时间而不是一直有效因为网络环境是动态的——主机可能更换网卡、可能更换IP地址、可能下线了。如果缓存永久有效就会出现IP还对应着旧MAC的问题导致通信失败。6.4 数据报格式ARP报文封装在以太网帧中传输其格式如下各字段含义字段长度字节含义硬件类型2链路层网络类型1表示以太网协议类型2要映射的协议地址类型0x0800表示IP硬件地址长度1硬件地址长度以太网为6协议地址长度1协议地址长度IPv4为4op2操作类型1ARP请求2ARP应答发送端以太网地址6发送方MAC地址发送端IP地址4发送方IP地址目的以太网地址6目标MAC地址目的IP地址4目标IP地址注意到源MAC地址、目的MAC地址在以太网首部和ARP请求/应答报文中各出现了一次。对于以太网来说确实有些冗余但ARP协议设计时考虑了通用性——如果链路层不是以太网而是其他类型的网络这两份地址就不一定相同了。6.5 在局域网中的完整过程场景说明局域网中有多台主机A、B、C、D、E和一台路由器网关路由器连接外网和局域网路由器的接口有IP地址和MAC地址主机A想和外网通信需要先把数据发给网关路由器因此需要知道网关的MAC地址主机A发送ARP广播请求谁是网关IP请告诉我你的MAC地址路由器收到后以单播形式回复自己的MAC地址主机A学到网关的MAC后就可以把发往外网的数据先封装到目的MAC为网关MAC的帧中交给路由器转发七、欺骗原理7.1 本质ARP协议设计时没有任何认证机制——主机收到ARP应答后不管这个应答是不是自己请求的都会直接用应答中的IP-MAC映射更新自己的ARP缓存表。这就是ARP欺骗得以实现的根本原因攻击者可以伪造ARP应答包让目标主机的ARP缓存中写入错误的IP-MAC映射从而把流量劫持到攻击者的机器上。7.2 三步骤步骤一正常通信状态正常情况主机A的ARP缓存中网关IP→ 网关MAC网关R的ARP缓存中主机A的IP→ 主机A的MAC主机A和网关之间正常通信流量直接走网关步骤二攻击者发送伪造ARP应答攻击者主机M开始行动主机M向主机A大量发送伪造的ARP应答我是网关IP我的MAC地址是macM主机M同时向网关R大量发送伪造的ARP应答我是主机A的IP我的MAC地址是macM因为ARP没有认证主机A和网关R都会更新自己的ARP缓存更新后主机A认为网关IP → macM网关R认为主机A的IP → macM步骤三中间人攻击形成此时主机M就成了中间人主机A发往网关的数据 → 目的MAC是macM → 数据先到了主机M网关发往主机A的数据 → 目的MAC是macM → 数据也先到了主机M主机M可以选择转发数据也可以选择不转发主机A和网关都以为在和对方直接通信实际上所有流量都经过了攻击者ARP欺骗的危害极大攻击者可以窃听敏感信息、篡改数据、植入恶意代码、进行DNS劫持等。这也是局域网安全中一个非常经典的攻击手段。7.3 防御方案针对ARP欺骗常见的防御手段有以下几种方案一静态ARP绑定原理手动在主机和网关设备上配置静态的IP-MAC映射静态ARP表项不会被动态ARP应答更新。配置示例# 查看当前ARP表 $ arp -a # 添加静态ARP绑定网关IP和网关MAC $ arp -s 192.168.1.1 10:bd:18:08:af:62 # 删除静态ARP绑定 $ arp -d 192.168.1.1优点简单直接效果可靠缺点大型网络中配置和维护成本高设备更换网卡或IP时需要手动更新适用场景小型网络、关键服务器方案二交换机端口安全原理在交换机端口上配置允许接入的MAC地址数量甚至绑定特定MAC地址防止伪造MAC地址的设备通信。配置示例[Switch] interface GigabitEthernet 0/0/1 [Switch-GigabitEthernet0/0/1] port-security enable [Switch-GigabitEthernet0/0/1] port-security max-mac-num 1 [Switch-GigabitEthernet0/0/1] port-security protect-action restrict适用场景企业级网络接入层交换机部署方案三DAI原理交换机结合DHCP Snooping绑定表检查ARP报文中的源IP和源MAC是否匹配绑定表不匹配则丢弃。方案四ARP防火墙软件在主机上安装ARP防火墙软件会主动检测ARP应答的合法性拦截伪造的ARP包。适用场景个人用户、公共WiFi环境各个方案对比防御方案部署位置效果维护成本适用规模静态ARP绑定主机网关好高小型网络端口安全接入交换机较好中企业网络DAI接入交换机好中企业网络ARP防火墙终端主机一般低个人用户