计算机网络(5) ARP协议

news2024/11/24 14:44:38

什么是ARP

地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。地址解析协议是建立在网络中各个主机互相信任的基础上的,局域网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存;

最直白的说法是:在IP以太网中,当一个上层协议要发包时,有了该节点的IP地址,ARP就能提供该节点的MAC地址。

大家都知道,OSI模式把网络工作分为七层,彼此不直接打交道,只通过接口(layre interface). IP地址在第三层(网络层), MAC地址在第二层(数据链路层)。协议在发送数据包时,首先要封装第三层(IP地址)和第二层 (MAC地址)的报头, 但协议只知道目的节点的IP地址,不知道其物理地址,又不能跨第二、三层,所以得用ARP的服务拿到MAC地址。

ARP工作过程

假设主机A和B在同一个网段,主机A要向主机B发送信息,具体的地址解析过程如下:

  1. 主机A首先查看自己的ARP缓存表,确定其中是否包含有主机B对应的ARP表项。如果找到了对应的MAC地址,则主机A直接利用ARP表中的MAC地址,对IP数据包进行帧封装,并将数据包发送给主机B。
  2. 如果主机A在ARP表中找不到对应的MAC地址,则将缓存该数据报文,然后以广播方式发送一个ARP请求报文。ARP请求报文中的发送端IP地址和发送端MAC地址为主机A的IP地址和MAC地址,目标IP地址和目标MAC地址为主机B的IP地址和全0的MAC地址。由于ARP请求报文以广播方式发送,该网段上的所有主机都可以接收到该请求,但只有被请求的主机(即主机B)会对该请求进行处理。
  3. 主机B比较自己的IP地址和ARP请求报文中的目标IP地址,当两者相同时进行如下处理:将ARP请求报文中的发送端(即主机A)的IP地址和MAC地址存入自己的ARP表中。之后以单播方式发送ARP响应报文给主机A,其中包含了自己的MAC地址。
  4. 主机A收到ARP响应报文后,将主机B的MAC地址加入到自己的ARP表中以用于后续报文的转发,同时将IP数据包进行封装后发送出去。

当主机A和主机B不在同一网段时,主机A就会先向网关发出ARP请求,ARP请求报文中的目标IP地址为网关的IP地址。当主机A从收到的响应报文中获得网关的MAC地址后,将报文封装并发给网关。如果网关没有主机B的ARP表项,网关会广播ARP请求,目标IP地址为主机B的IP地址,当网关从收到的响应报文中获得主机B的MAC地址后,就可以将报文发给主机B;如果网关已经有主机B的ARP表项,网关直接把报文发给主机B。

ARP缓存表和TTL

ARP表

网络设备一般都有一个ARP缓存(ARP Cache),ARP缓存用来存放IP地址和MAC地址的关联信息。在发送数据前,设备会先查找ARP缓存表。如果缓存表中存在对方设备的MAC地址,则直接采用该MAC地址来封装帧,然后将帧发送出去。如果缓存表中不存在相应的信息,则通过发送ARP request报文来获得它。学习到的IP地址和MAC地址的映射关系会被放入ARP缓存表中存放一段时间。在有效期内,设备可以直接从这个表中查找目的MAC地址来进行数据封装,而无需进行ARP查询。过了这段有效期,ARP表现会被自动删除。如果目标设备位于其他网络则源设备会在ARP缓存表中查找网关的MAC地址,然后将数据发送给网关,网关再把数据转发给目的设备。

ARP表项又分为动态ARP表项和静态ARP表项。

动态ARP表项

动态ARP表项由ARP协议通过ARP报文自动生成和维护,可以被老化,可以被新的ARP报文更新,可以被静态ARP表项覆盖。每个动态ARP缓存项的潜在生命周期是10分钟。新加到缓存中的项目带有时间戳,如果某个项目添加后2分钟内没有再使用,则此项目过期并从ARP缓存中删除;如果某个项目已在使用,则又收到2分钟的生命周期;如果某个项目始终在使用,则会另外收到2分钟的生命周期,一直到10分钟的最长生命周期。

静态ARP表项

静态ARP表项通过手工配置和维护,不会被老化,不会被动态ARP表项覆盖。直到重新启动计算机为止。

配置静态ARP表项可以增加通信的安全性。静态ARP表项可以限制和指定IP地址的设备通信时只使用指定的MAC地址,此时攻击报文无法修改此表项的IP地址和MAC地址的映射关系,从而保护了本设备和指定设备间的正常通信。

静态ARP表项分为短静态ARP表项和长静态ARP表项。

  • 在配置长静态ARP表项时,除了配置IP地址和MAC地址项外,还必须配置该ARP表项所在VLAN和出接口。长静态ARP表项可以直接用于报文转发。
  • 在配置短静态ARP表项时,只需要配置IP地址和MAC地址项。如果出接口是三层以太网接口,短静态ARP表项可以直接用于报文转发;如果出接口是VLAN虚接口,短静态ARP表项不能直接用于报文转发,当要发送IP数据包时,先发送ARP请求报文,如果收到的响应报文中的源IP地址和源MAC地址与所配置的IP地址和MAC地址相同,则将接收ARP响应报文的接口加入该静态ARP表项中,之后就可以用于IP数据包的转发。

一般情况下,ARP动态执行并自动寻求IP地址到以太网MAC地址的解析,无需管理员的介入。

当希望设备和指定用户只能使用某个固定的IP地址和MAC地址通信时,可以配置短静态ARP表项,当进一步希望限定这个用户只在某VLAN内的某个特定接口上连接时就可以配置长静态ARP表项。

ARP报文格式

在局域网中,当主机或其它网络设备有数据要发送给另一个主机或设备时,它必须知道对方的网络层地址(即IP地址)。但是仅仅有IP地址是不够的,因为IP数据报文必须封装成帧才能通过物理网络发送,因此发送站还必须有接收站的物理地址,所以需要一个从IP地址到物理地址的映射。APR就是实现这个功能的协议。

ARP协议是通过报文进行工作的,是一个独立的三层协议,所以ARP报文在向数据链路层传输时不需要经过IP协议的封装,而是直接生成自己的报文,其中包括ARP报头,到数据链路层后再由对应的数据链路层协议(如以太网协议)进行封装。ARP报文分为ARP请求和ARP应答报文两种,它们的报文格式可以统一为下图所示。

前面Ethernet Address of destination, Ethernet Address of sender 和 Frame Type属于数据链路层的封装,往后的就是真正的ARP报文数据结构。

ARP请求

下面是Wireshark抓的ARP请求报文,大家可以看到数据链路层的Ethernet Address of destination是全ff,说明这是一个广播包,是为了获取指定IP的MAC地址,可以看到ARP包中的Target IP address是192.168.0.7,但Target MAC address是全0,说明当前还不知道目标主机的MAC地址,Opcode为1,说明这是一个ARP请求报文。

 

ARP响应

下面是Wireshark抓的ARP响应报文,大家参照上面的报文格式解析一下咯:

 

免费ARP

免费 ARP(Gratuitous ARP)包是一种特殊的ARP请求,它并非期待得到IP对应的 MAC 地址,而是当主机启动的时候,发送一个 Gratuitous ARP请求,即请求自己的IP地址的MAC地址。

免费ARP报文与普通ARP请求报文的区别在于报文中的目标IP地址。普通ARP报文中的目标IP地址是其他主机的IP地址;而免费ARP的请求报文中,目标IP地址是自己的IP地址。

免费 ARP 数据包有以下 3 个作用。

  • 该类型报文起到一个宣告作用。它以广播的形式将数据包发送出去,不需要得到回应,只为了告诉其他计算机自己的IP地址和MAC地址。
  • 可用于检测IP地址冲突。当一台主机发送了免费ARP请求报文后,如果收到了ARP响应报文,则说明网络内已经存在使用该IP地址的主机。
  • 可用于更新其他主机的ARP缓存表。如果该主机更换了网卡,而其他主机的ARP缓存表仍然保留着原来的MAC地址。这时,可以发送免费的 ARP数据包。其他主机收到该数据包后,将更新ARP缓存表,将原来的 MAC地址替换为新的MAC地址。

 

ARP欺骗

地址解析协议是建立在网络中各个主机互相信任的基础上的,它的诞生使得网络能够更加高效的运行,但其本身也存在缺陷:

ARP地址转换表是依赖于计算机中高速缓冲存储器动态更新的,而高速缓冲存储器的更新是受到更新周期的限制的,只保存最近使用的地址的映射关系表项,这使得攻击者有了可乘之机,可以在高速缓冲存储器更新表项之前修改地址转换表,实现攻击。ARP请求为广播形式发送的,网络上的主机可以自主发送ARP应答消息,并且当其他主机收到应答报文时不会检测该报文的真实性就将其记录在本地的MAC地址转换表,这样攻击者就可以向目标主机发送伪ARP应答报文,从而篡改本地的MAC地址表。ARP欺骗可以导致目标计算机与网关通信失败,更会导致通信重定向,所有的数据都会通过攻击者的机器,因此存在极大的安全隐患。

「防御措施」

  • 不要把网络安全信任关系建立在IP基础上或MAC基础上(RARP同样存在欺骗的问题),理想的关系应该建立在IP+MAC基础上。
  • 设置静态的MAC-->IP对应表,不要让主机刷新设定好的转换表。
  • 除非很有必要,否则停止使用ARP,将ARP做为永久条目保存在对应表中。
  • 使用ARP服务器。通过该服务器查找自己的ARP转换表来响应其他机器的ARP广播。确保这台ARP服务器不被黑。
  • 使用“proxy”代理IP的传输。
  • 使用硬件屏蔽主机。设置好路由,确保IP地址能到达合法的路径(静态配置路由ARP条目),注意,使用交换集线器和网桥无法阻止ARP欺骗。
  • 管理员定期用响应的IP包中获得一个RARP请求,然后检查ARP响应的真实性。
  • 管理员定期轮询,检查主机上的ARP缓存。
  • 使用防火墙连续监控网络。注意有使用SNMP的情况下,ARP的欺骗有可能导致陷阱包丢失。
  • 若感染ARP病毒,可以通过清空ARP缓存、指定ARP对应关系、添加路由信息、使用防病毒软件等方式解决。

ARP攻击

ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的进行。基于ARP协议的这一工作特性,黑客向对方计算机不断发送有欺诈性质的ARP数据包,数据包内包含有与当前设备重复的Mac地址,使对方在回应报文时,由于简单的地址重复错误而导致不能进行正常的网络通信,或者如果不及时处理,便会造成网络通道阻塞、网络设备的承载过重、网络的通讯质量不佳等情况。

一般情况下,受到ARP攻击的计算机会出现两种现象:

  1. 不断弹出“本机的XXX段硬件地址与网络中的XXX段地址冲突”的对话框。
  2. 计算机不能正常上网,出现网络中断的症状。

因为这种攻击是利用ARP请求报文进行“欺骗”的,所以防火墙会误以为是正常的请求数据包,不予拦截。因此普通的防火墙很难抵挡这种攻击。

NDP

地址解析协议是IPv4中必不可少的协议,但在IPv6中将不再存在地址解析协议。在IPv6中,地址解析协议的功能将由NDP(邻居发现协议,Neighbor Discovery Protocol)实现,它使用一系列IPv6控制信息报文(ICMPv6)来实现相邻节点(同一链路上的节点)的交互管理,并在一个子网中保持网络层地址和数据链路层地址之间的映射。邻居发现协议中定义了5种类型的信息:路由器宣告、路由器请求、路由重定向、邻居请求和邻居宣告。与ARP相比,NDP可以实现路由器发现、前缀发现、参数发现、地址自动配置、地址解析(代替ARP和RARP)、下一跳确定、邻居不可达检测、重复地址检测、重定向等更多功能。

「NDP与ARP的区别」

  • IPv4中地址解析协议是独立的协议,负责IP地址到MAC地址的转换,对不同的数据链路层协议要定义不同的地址解析协议。IPv6中NDP包含了ARP的功能,且运行于因特网控制信息协议ICMPv6上,更具有一般性,包括更多的内容,而且适用于各种数据链路层协议;
  • 地址解析协议以及ICMPv4路由器发现和ICMPv4重定向报文基于广播,而NDP的邻居发现报文基于高效的组播和单播。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1817475.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

边缘网关在智能制造工厂中的创新应用及效果-天拓四方

在数字化浪潮席卷之下,智能制造工厂正面临着前所未有的数据挑战与机遇。边缘网关,作为数据处理与传输的关键节点,在提升工厂运营效率、确保数据安全方面发挥着日益重要的作用。本文将通过一个具体案例,详细阐述边缘网关在智能制造…

华为云DDoS攻击下的应对策略

当华为云上的服务遭遇大规模DDoS攻击导致网络流量异常,触发了华为云的自动防护机制,即所谓的“黑洞”状态时,服务将暂时无法访问,直至攻击停止或流量恢复正常。本文将探讨如何在这一情况下,通过引入第三方安全产品来快…

如何利用智能家居打造一个“会呼吸的家”?一体化电动窗帘

如何利用智能家居打造一个“会呼吸的家”?一体化电动窗帘 史新华 隐藏式一体化智能电动窗帘与市面上其他窗帘不同的是,电机内置于轨道之中,一体化,美观、安静、滑动顺畅。 每次都会自动打开和关闭,相当漂亮。 众多家庭…

【精品方案】大型企业数字化转型管控平台解决方案(55页PPT),干货满满!

引言:随着信息技术的飞速发展,数字化转型已成为大型企业提升竞争力、实现持续创新的必经之路。本解决方案旨在为企业提供一套全面、高效、灵活的数字化转型管控平台,助力企业实现业务流程的数字化重构、数据资产的智能管理以及决策过程的精准…

人工智能--制造业和农业

欢迎来到 Papicatch的博客 文章目录 🍉人工智能在制造业中的应用 🍈 应用场景及便利 🍍生产线自动化 🍍质量控制 🍍预测性维护 🍍供应链优化 🍈 技术实现及核心 🍍机器学习和…

【吊打面试官系列-Mysql面试题】MySQL 数据库作发布系统的存储,一天五万条以上的增量,预计运维三年,怎么优化?

大家好,我是锋哥。今天分享关于 【MySQL 数据库作发布系统的存储,一天五万条以上的增量,预计运维三年,怎么优化?】面试题,希望对大家有帮助; MySQL 数据库作发布系统的存储,一天五万条以上的增量…

R语言统计分析——图形文本、自定义坐标轴和图例

参考资料&#xff1a;R语言实战【第2版】 我们可以在图形上添加标题&#xff08;main&#xff09;、副标题&#xff08;sub&#xff09;、坐标轴标签&#xff08;xlab、ylab&#xff09;并指定标轴范围&#xff08;xlim、ylim&#xff09;。 # 录入数据 dose<-c(20,30,40,4…

JAVA反编译工具-CFR(class单个反编译、JAR包整体反编译)

环境说明 1、win10 2、JAVA8&#xff08;环境变量要配置好&#xff09; 3、cfr版本&#xff1a;C:\Users(xx)当前用户\cfr-0.152.jar 4、命令行操作路径&#xff1a;C:\Users(xx)当前用户 5、示例反编译jar包&#xff1a;C:\Users(xx)当前用户\ruoyi-admin.jar CFR工具相关参…

HarmonyOs修改应用名称和图标方法

最近在开发Harmony应用&#xff0c;发现修改app.json5下的lable:app_name和icon不生效 后来经过查找&#xff0c;原来还需要更改entry下的src/main/module.json5才行&#xff0c;具体操作路径是&#xff1a; 更改后生效&#xff1a;

LeetCode刷题之HOT100之不同的二叉搜索树

1、题目描述 2、逻辑分析 给定一个有序序列 1⋯n&#xff0c;为了构建出一棵二叉搜索树&#xff0c;我们可以遍历每个数字 i&#xff0c;将该数字作为树根&#xff0c;将 1⋯(i−1) 序列作为左子树&#xff0c;将 (i1)⋯n 序列作为右子树。接着我们可以按照同样的方式递归构建…

读AI未来进行式笔记11丰饶时代与奇点

1. 第四次工业革命 1.1. 在AI轰轰烈烈地拉开第四次工业革命帷幕的同时&#xff0c;一场清洁能源革命也紧锣密鼓地展开 1.1.1. 清洁能源革命好比一场“及时雨”&#xff0c;不但将解决日益加剧的全球气候变化问题&#xff0c;而且会大幅降低全世界的电力成本 1.1.2. 人们将致…

谷歌发布HyperDreameBooth:单张人像20秒内完成模型训练,速度比DreamBooth快25倍,模型小10000倍

HyperDreamBooth是谷歌去年发布的革命性模型训练方法&#xff0c;单张人像20秒内完成模型训练&#xff0c;速度比DreamBooth快25倍&#xff0c;模型小10000倍&#xff0c;但是没有不开源。 今年&#xff0c;论文《HyperDreamBooth: HyperNetworks for Fast Personalization of…

【沟通管理】项目经理《葵花宝典》之跨部门沟通

为什么每次跟其它部门的沟通总是不欢而散&#xff1f; 为什么每次想好好的就事论事的时候&#xff0c;却总是像在吵架&#xff1f; 为什么沟通总是不同频&#xff1f; 这是不是你作为项目经理在跨部门沟通时经常会遇到的问题&#xff1f; 在企业项目管理中&#xff0c;跨部门沟…

32岁TVB「最强关系户」快速上位,嫁巨星家族屡传婚变。

现年32岁的王敏奕贵为总经理曾志伟的新抱,经常被外界以「家嫂」称呼,而王敏奕近年亦凭出色演技获大赞,继在TVB剧集《婚后事》中饰演Mira一角,介入陈自瑶与罗子溢的婚姻,被封为「港版最美小三」之后,早前在剧集《家族荣耀之继承者》中大展「哭功」,获观众激赞! 除了演技…

平板消解加热台-温度均匀,防腐蚀-实验室化学分析

DBF系列防腐电热板 是精致路合金加热板块表面经进口高纯实验级PFATeflon氟塑料防腐不粘处理&#xff0c;专为实验室设计的电加热产品&#xff0c;是样品前处理中&#xff0c;加热、消解、煮沸、蒸酸、赶酸等处理的得力助手。可以满足物理、化学、生物、环保、制药、食品、饮品…

国内院线电影票api接口如何开发小程序

要开发一个基于国内院线电影票API接口的小程序&#xff0c;你需要遵循以下步骤&#xff1a; 1. 确定API提供方 首先&#xff0c;你需要确定一个提供电影票API接口的服务商。这可能是一个电影票务平台、院线自己的API服务&#xff0c;或者是一个第三方的数据提供商。 2. 阅读…

opencv roi改进版

点击鼠标左键开始画roi,右键或者回车代表画框完毕 并且做了封装。 import cv2 import numpy as npclass ROIDrawer:def __init__(self, image_path):self.drawing = Falseself.ix, self.iy = -1, -1self.roi = Noneself.image_o = cv2.imread(image_path)self.image = self.…

vue中使用emit

1. vue中使用emit 1.1. 在子组件中触发事件 1.1.1. 子组件示例 (ChildComponent.vue) 1.2. 在父组件中监听事件 1.2.1. 父组件示例 (ParentComponent.vue) vue3中使用emit 1.3. 使用 setup 函数和 defineEmits 1.3.1. 子组件示例 (ChildComponent.vue)1.3.2. 父组件示例 (Pare…

Python入门教程 - 模块、包(八)

目录 一、模块的概念 二、模块的导入方式 三、案例演示 3.1 import模块名 3.2 from 模块名 import 功能名 3.3 from 模块名 import * 3.4 as定义别名 四、自定义模块 4.1 制作自定义模块 4.2 测试模块 4.3 注意事项 4.4 __all__ 五、Python包 5.1 包的概念 5.2 …

大数据学习——linux操作系统(Centos)安装mysql(Hive的元数据库)

一. 准备工作 1. 打开虚拟机并连接shell工具 2. 将mysql安装包上传至虚拟机 mysql安装包 提取码&#xff1a;6666 将下载好的jar包拖至install_package目录下 3. 检查环境 rpm -qa|grep mariadb 如果上述命令返回有结果 那么进行mariadb的卸载 rpm -e --nodeps mariadb-l…