摘要

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

计算机网络知识脑图

计算机网络——计算机网络知识脑图_庄小焱的博客-CSDN博客_计算机网络面试题总结

计算机网络大厂面试问题集合

计算机网络——大厂面试问题集合_庄小焱的博客-CSDN博客

计算机网络基础知识

计算机网络——网络基础知识_庄小焱的博客-CSDN博客_数据转发服务器

IP相关基础原理

计算机网络——IP协议基础原理_庄小焱的博客-CSDN博客_ip网络技术

HTTP协议原理

计算机网络——HTTP协议原理_庄小焱的博客-CSDN博客_http协议原理

HTTP的优化方式

计算机网络——HTTP的优化方式_庄小焱的博客-CSDN博客

HTTPS协议原理

计算机网络——HTTPS协议原理_庄小焱的博客-CSDN博客_https协议原理

HTTPS的优化方式

计算机网络——HTTPS的优化方式_庄小焱的博客-CSDN博客

TCP可靠性传输原理

计算机网络——TCP可靠性传输原理_庄小焱的博客-CSDN博客_tcp的可靠性是如何实现的

TCP/IP三次握手四次挥手原理

计算机网络——HTTP的三次握手与四次挥手原理_庄小焱的博客-CSDN博客_三次握手和四次挥手原理

TCP的优化方式

计算机网络——TCP的优化方式_庄小焱的博客-CSDN博客_tcp协议优化技术

DNS协议(域名解析)原理

计算机网络——DNS协议(域名解析)原理_庄小焱的博客-CSDN博客_计算机网络dns

ARP协议(地址解析)原理

计算机网络——ARP协议(地址解析)原理_庄小焱的博客-CSDN博客_地址解析协议的工作原理

ARQ协议(自动重传请求)原理

计算机网络——ARQ协议(自动重传请求)原理_庄小焱的博客-CSDN博客_连续arq协议的原理

DHCP协议原理

计算机网络——DHCP(动态获取IP)原理_庄小焱的博客-CSDN博客_计算机网络dhcp

NAT协议原理

计算机网络——NAT协议(网络地址转换)原理_庄小焱的博客-CSDN博客

ICMP/IGMP协议原理

计算机网络——ICMP/IGMP协议原理_庄小焱的博客-CSDN博客_计算机网络igmp

HTTP网络访问全流程

计算机网络——HTTP网络访问全流程_庄小焱的博客-CSDN博客_网络访问流程

虚拟网路模型原理

计算机网络——虚拟网路模型原理_庄小焱的博客-CSDN博客

其他网络知识

计算机网络——select/poll/epoll底层原理_庄小焱的博客-CSDN博客

计算机网络——cookie/session/token原理_庄小焱的博客-CSDN博客

计算机网络——网络通信加密原理_庄小焱的博客-CSDN博客_网络通信加密

计算机网络——GRPC通信原理_庄小焱的博客-CSDN博客_grpc原理

计算机网络——tcpdump/Wireshark抓包实战_庄小焱的博客-CSDN博客_网络抓包

计算机网络——TCP抓包连接实战_庄小焱的博客-CSDN博客_tcp全连接和半连接

ARP协议全流程

在共享总线型以太网中,B要发送数据给C,但是只知道C的IP地址,不知道MAC地址

B在数据链路层封装MAC帧时,就无法填写目的MAC地址,也就无法构建要发送的MAC帧,实际上,每个主机都有一个ARP高速缓存表,表中记录了IP地址和MAC地址的对应关系,当B要给C发送数据包,首先在表中查找IP地址所对应的MAC地址,但是没有找到

因此,B需要发送ARP请求报文,以获得C的MAC地址,主机B发送广播帧,A和C都会收到,A收到广播帧后,将其上交上层处理,上层ARP进程解析ARP报文,发现不是自己的IP地址,丢弃,同理,C解析发现IP地址是自己的,需要进行响应。

  • 将B的IP地址和MAC地址记录到自己的ARP高速缓存表中
  • 然后给B发送ARP响应报文,以告知自己的MAC地址

ARP响应报文封装在MAC帧,C给B发送该单播帧,总线上的其他主机也能收到该帧,A收到帧后发现目的MAC地址与自己的不匹配,直接丢弃,B发现是自己的MAC地址,将帧交给上层处理。

上层ARP进程解析ARP响应报文,将包含C的IP地址和MAC地址记录到自己的ARP高速缓存表中

B现在可以给C发送数据包了

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(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请求时,出口路由器/网关设备将自身MAC地址回复该请求时,这个过程称为代理ARP。(eg:1.没有路由功能的主机;2.有路由功能,目的地指向本地出口)

地址解析协议工作在一个网段中,而代理ARP(Proxy ARP,也被称作混杂ARP(Promiscuous ARP))工作在不同的网段间,其一般被像路由器这样的设备使用,用来代替处于另一个网段的主机回答本网段主机的ARP请求。

例如,主机PC1(192.168.20.66/24)需要向主机PC2(192.168.20.20/24)发送报文,因为主机PC1不知道子网的存在且和目标主机PC2在同一主网络网段,所以主机PC1将发送ARP协议请求广播报文请求192.168.20.20的MAC地址。这时,路由器将识别出报文的目标地址属于另一个子网(注意,路由器的接口IP地址配置的是28位的掩码),因此向请求主机回复自己的硬件地址(0004.dd9e.cca0)。之后,PC1将发往PC2的数据包都发往MAC地址0004.dd9e.cca0(路由器的接口E0/0),由路由器将数据包转发到目标主机PC2。(接下来路由器将为PC2做同样的代理发送数据包的工作)。代理ARP协议使得子网化网络拓扑对于主机来说是透明的(或者可以说是路由器以一个不真实的PC2的MAC地址欺骗了源主机PC1)。

ARP欺骗

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

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

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的邻居发现报文基于高效的组播和单播。

ARP缓存表

既然是"缓存"表,意味着它有时效性,并且如果电脑或者通信设备重启的话,这张表就会清空;也就是说,如果下次需要通信,又需要进行ARP请求。在我们的windows/macos系统下,可以通过命令行"arp -a"查看具体信息。

ARP协议广播

实际网络中,这个LAN可能有几十上百的主机,这时,ARP协议就需要采用以太网的"广播"功能:将请求包以广播的形式发送,交换机或WiFi设备(无线路由器)收到广播包时,会将此数据发给同一局域网的其他所有主机。

ARP数据包原理

为了让大家更好的理解ARP协议以及广播和单播的概念,我们来看一下用Wireshark抓取到的真实网络中的ARP过程,通过数据包的方式来呈现,地址信息如下,部分MAC信息隐去。

主机1 <---> 主机2主机1: IP1 10.1.20.64 MAC1:00:08:ca:xx:xx:xx主机2: IP2 10.1.20.109 MAC2:44:6d:57:xx:xx:xx

ARP请求包

ARP回应包

博文参考

彻底搞懂系列之:ARP协议 - 知乎

【计算机网络】ARP协议的工作原理 - 知乎

图解ARP协议(一) - 知乎

计算机网络——ARP协议(地址解析)原理相关推荐

  1. 计算机网络——IP协议基础原理

    摘要 IP协议提供的一种统一的地址格式.它为互联网上的每一个网络和主机分配一个逻辑地址所以IP地址也叫逻辑地址,用来屏蔽物理地址的差异,MAC地址每一个机器都有一个编码.IP地址是32位二进制数据分为 ...

  2. ARP协议 地址解析协议:IP地址转换为MAC地址

    ARP协议 地址解析协议 ARP协议全称 Address Resolution Protocol. ARP协议能实现任意网络层地址到任意物理地址的转换,我们在此只讨论IP到以太网MAC地址的转换. 工 ...

  3. ARP协议详解,ARP协议执行原理、ARP协议如何根据IP地址寻找Mac地址?

    「作者主页」:士别三日wyx 「作者简介」:CSDN top200.阿里云博客专家.华为云享专家.网络安全领域优质创作者 ARP协议 一.什么是ARP协议 1. Mac地址 2. 网络层的数据 3. ...

  4. 使用长角牛演示:防止ARP协议被攻击原理和配置

    使用长角牛演示:防止ARP协议被攻击原理和配置 1. *实验环境* 虚拟机window7.window10.长角牛软件.ensp软件,关闭真机.虚拟机win7和win8的防火墙. 2. *实验描述* ...

  5. ARP协议工作原理及ARP欺骗(中间人攻击)

    网络中的数据传输所依赖的是MAC地址而不是IP地址,ARP协议负责将IP地址转换为MAC地址 ARP协议工作原理 ARP协议规定,每台计算机都需要一个ARP表,用来保存IP地址和MAC地址的映射关系 ...

  6. 【计算机网络】ARP协议工作原理

    地址解析协议ARP 一 发送数据的过程 在学习ARP协议的工作原理之前,我们需要先知道为什么需要ARP协议,它在数据传输过程中有怎样的作用. 以下是计算机网络中发送数据的一个大致过程. 首先要知道,源 ...

  7. 计算机网络- ARP(地址解析协议)

    ARP协议就是将IP地址转换为MAC物理地址: 与之有关联的还有RARP,就是ARP的逆向,也就是将MAC物理地址转换为IP地址 主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机 ...

  8. 计算机网络 ARP协议全面实验分析讲解

    本实验感谢计嵌老大哥LYJ的帮助 目录 ☀️| 一.实验原理 ☀️| 二.实验环境 ☀️| 三.实验原理 ☀️| 四.实验内容 ⭐️练习1--领略真实的ARP(同一子网) ⭐️练习2--编辑并发送AR ...

  9. ARP 协议工作原理(同网段及跨网段)

    目录 一.ARP简介 二.ARP的工作原理 三.ARP协议在同网段工作原理 四.ARP协议在不同网段工作原理 一.ARP简介 ARP全称是"Address Resolution Protoc ...

最新文章

  1. java 反射 注解 运用_Java注解与反射的使用
  2. python3.7安装turtle步骤-Python turtle安装和使用教程
  3. python语言自学-python自学难吗
  4. HDU——2064汉诺塔III
  5. Jmeter 及 JDK 下载 安装教程
  6. spring boot 设置启动时初始化DispatcherServlet
  7. python导入鸢尾花数据集_python可视化分析鸢尾花数据集
  8. 【面向对象】UML类图、用例图、顺序图、活动图、状态图、通信图、构件图、部署图
  9. 2019年前端年度工作总结
  10. python取数组最后一个元素_python数组最后一个元素
  11. Summernote 上传图片至 SMMS 图床 Api
  12. 泛函,变分与变分不等式
  13. c语言省二级编程证书,c语言二级考试
  14. arduino控制超声波传感器
  15. Why we need activation function?
  16. bus_dev_drv 模型
  17. java中的mybatis作用_mybatis作用、基本使用、小结
  18. rz命令上传文件乱码,无关be参数
  19. 中国武术职业联赛(WMA)筹备活动报道--山东烟台
  20. 机器自动翻译古文拼音 - 十大宋词 - 破阵子 醉里挑灯看剑 辛弃疾

热门文章

  1. 设备Y电容和漏电流测量
  2. 企业信息安全的重点防护应该放在哪个方面?
  3. Nginx八(CPU亲缘性配置)
  4. 计算机数据链路层协议之HDLC和PPP协议
  5. python 读取txt文件、转为json文件_使用python操作json文本文件
  6. 防雷设计、防雷检测为什么选同为科技(TOWE)?
  7. (java)定义长方形类,含: 属性:宽、高(整型); 方法:求周长、面积; 进行测试。
  8. 纪念关老,沉痛的默哀
  9. 快速上手JDBC——Java如何在底层操作数据库
  10. 【缓存】分布式缓存系统-DCache、redis、Memcached、SSDB