【网络基础】解析ARP协议:概念、工作原理、安全风险、相关指令

本文主要是介绍【网络基础】解析ARP协议:概念、工作原理、安全风险、相关指令,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 1. 引入
  • 2. 概念
  • 3. ARP协议工作过程
  • 4. 通过指令 获取当前主机所处局域网的所有IP和MAC地址?
  • 5. arp欺骗
    • 5.1 防护措施


1. 引入

在这里插入图片描述
我们知道,在局域网通信中,一台主机想向另一台主机发送数据,自然需要得到目标网络 以及 目标主机,但发送方只知道目标IP,而不知道对方的MAC地址,自然就无法封装MAC帧;

此时就有一个概念:在同一个网段,通过目标IP获取目标MAC地址 —— ARP协议(地址解析协议)
3解释ARP的工作过程前,我们先看ARP数据报的格式

在这里插入图片描述


以太网和ARP报文结构的说明:

  • 源 MAC 地址目的 MAC 地址 在以太网首部和 ARP 请求中各出现一次。在链路层为以太网的情况下,这些字段在 ARP 请求中可能显得多余,但对于其他类型的链路层网络,它们可能是必要的。

  • 硬件类型:指示链路层网络类型。例如,1 表示以太网。

  • 协议类型:指示要转换的地址类型。例如,0x0800 表示 IP 地址。

  • 硬件地址长度:对于以太网地址,长度为 6 字节。

  • 协议地址长度:对于 IP 地址,长度为 4 字节。


以上是固定的字段定义。接下来是 ARP 报文中的具体信息:

  • 发送端以太网地址:即发送方的 MAC 地址。

  • 发送端 IP 地址:即发送方的 IP 地址。

  • 目标以太网地址:目标的 MAC 地址,通常未知时设为全 1,即 ff:ff:ff:ff:ff:ff

  • 目标 IP 地址:即目标的 IP 地址。


关于 op 字段(操作码)的说明:

  • op 字段 指示 ARP 报文的类型:

    • op = 1:ARP 请求。
    • op = 2:ARP 应答。
  • 任何主机在网络中可能会向目标主机发起 ARP 请求,并在之后收到对应的 ARP 应答。

  • 同样,任何主机也可能会接收到来自其他主机的 ARP 请求。


2. 概念

有了上面的ARP协议的引入,简单介绍其概念:

ARP(Address Resolution Protocol,地址解析协议)是一种用于在局域网内通过IP地址来寻找对应的MAC地址的协议

  • 其主要作用是在网络中将IP地址转换为物理地址(即MAC地址),从而使得数据包可以在以太网或其他局域网介质中正确传输。

3. ARP协议工作过程

  1. 首先是发送方HA向目标HD发送数据:
    • 所有主机都会收到并处理(目的MAC地址为FF…FF,未知):
      在这里插入图片描述
  2. 随后HD会进行应答(一对一传输应答):
    • 只有HA(接收方)会收到并处理该应答(目的MAC地址已知):

在这里插入图片描述

  1. 从上面arp的工作流程来看,arp会进行一次请求和应答,是不是每次发送数据都得进行请求和应答?
    • 不是,arp请求成功后,请求方会将 [IP:MAC地址] 的映射关系暂时保存
  2. 是否只在目标端的子网中才进行arp,从发送端到目标端的路径中会不会进行?
    • 会进行,如上面的两图,arp的过程在整个局域网中随时可能发生。

4. 通过指令 获取当前主机所处局域网的所有IP和MAC地址?

在Windows/linux上,可以直接使用arp -a命令来查看本地ARP缓存中的IP和MAC地址。这会显示与当前主机通信过的其他设备的IP和MAC地址。

arp -a
Interface: 192.168.1.2 --- 0x3Internet Address      Physical Address      Type192.168.1.1           00-14-22-01-23-45     dynamic192.168.1.3           00-14-22-67-89-ab     dynamic192.168.1.4           00-14-22-cd-ef-12     dynamic

在这里插入图片描述


5. arp欺骗

ARP 欺骗(ARP Spoofing)是一种网络攻击方法,其中攻击者向局域网中的设备发送伪造的 ARP 消息,从而使目标设备将攻击者的 MAC 地址与目标 IP 地址进行关联。这会导致以下问题:

  1. 流量劫持:攻击者可以拦截和查看原本发送给目标设备的数据包。
  2. 中间人攻击:攻击者可以修改或伪造数据包,从而干扰通信。
  3. 网络瘫痪:通过发送大量伪造的 ARP 请求,可以使网络中的设备无法正常通信。

5.1 防护措施

  1. 启用静态 ARP 表:在网络设备上配置静态 ARP 表项,防止 ARP 表被篡改。
  2. 使用 ARP 监控工具:使用工具检测和警报 ARP 欺骗活动。
  3. 网络分段和 VLAN:通过网络分段和 VLAN 限制 ARP 欺骗的影响范围。
  4. 启用动态 ARP 检测:在支持的交换机上启用动态 ARP 检测功能。

这篇关于【网络基础】解析ARP协议:概念、工作原理、安全风险、相关指令的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1125460

相关文章

Spring Boot 实现 IP 限流的原理、实践与利弊解析

《SpringBoot实现IP限流的原理、实践与利弊解析》在SpringBoot中实现IP限流是一种简单而有效的方式来保障系统的稳定性和可用性,本文给大家介绍SpringBoot实现IP限... 目录一、引言二、IP 限流原理2.1 令牌桶算法2.2 漏桶算法三、使用场景3.1 防止恶意攻击3.2 控制资源

Java Spring ApplicationEvent 代码示例解析

《JavaSpringApplicationEvent代码示例解析》本文解析了Spring事件机制,涵盖核心概念(发布-订阅/观察者模式)、代码实现(事件定义、发布、监听)及高级应用(异步处理、... 目录一、Spring 事件机制核心概念1. 事件驱动架构模型2. 核心组件二、代码示例解析1. 事件定义

CSS place-items: center解析与用法详解

《CSSplace-items:center解析与用法详解》place-items:center;是一个强大的CSS简写属性,用于同时控制网格(Grid)和弹性盒(Flexbox)... place-items: center; 是一个强大的 css 简写属性,用于同时控制 网格(Grid) 和 弹性盒(F

SpringBoot整合Flowable实现工作流的详细流程

《SpringBoot整合Flowable实现工作流的详细流程》Flowable是一个使用Java编写的轻量级业务流程引擎,Flowable流程引擎可用于部署BPMN2.0流程定义,创建这些流程定义的... 目录1、流程引擎介绍2、创建项目3、画流程图4、开发接口4.1 Java 类梳理4.2 查看流程图4

python常见环境管理工具超全解析

《python常见环境管理工具超全解析》在Python开发中,管理多个项目及其依赖项通常是一个挑战,下面:本文主要介绍python常见环境管理工具的相关资料,文中通过代码介绍的非常详细,需要的朋友... 目录1. conda2. pip3. uvuv 工具自动创建和管理环境的特点4. setup.py5.

全面解析HTML5中Checkbox标签

《全面解析HTML5中Checkbox标签》Checkbox是HTML5中非常重要的表单元素之一,通过合理使用其属性和样式自定义方法,可以为用户提供丰富多样的交互体验,这篇文章给大家介绍HTML5中C... 在html5中,Checkbox(复选框)是一种常用的表单元素,允许用户在一组选项中选择多个项目。本

Python包管理工具核心指令uvx举例详细解析

《Python包管理工具核心指令uvx举例详细解析》:本文主要介绍Python包管理工具核心指令uvx的相关资料,uvx是uv工具链中用于临时运行Python命令行工具的高效执行器,依托Rust实... 目录一、uvx 的定位与核心功能二、uvx 的典型应用场景三、uvx 与传统工具对比四、uvx 的技术实

Python中使用uv创建环境及原理举例详解

《Python中使用uv创建环境及原理举例详解》uv是Astral团队开发的高性能Python工具,整合包管理、虚拟环境、Python版本控制等功能,:本文主要介绍Python中使用uv创建环境及... 目录一、uv工具简介核心特点:二、安装uv1. 通过pip安装2. 通过脚本安装验证安装:配置镜像源(可

LiteFlow轻量级工作流引擎使用示例详解

《LiteFlow轻量级工作流引擎使用示例详解》:本文主要介绍LiteFlow是一个灵活、简洁且轻量的工作流引擎,适合用于中小型项目和微服务架构中的流程编排,本文给大家介绍LiteFlow轻量级工... 目录1. LiteFlow 主要特点2. 工作流定义方式3. LiteFlow 流程示例4. LiteF

SpringBoot排查和解决JSON解析错误(400 Bad Request)的方法

《SpringBoot排查和解决JSON解析错误(400BadRequest)的方法》在开发SpringBootRESTfulAPI时,客户端与服务端的数据交互通常使用JSON格式,然而,JSON... 目录问题背景1. 问题描述2. 错误分析解决方案1. 手动重新输入jsON2. 使用工具清理JSON3.