ARP 地址解析协议
前言
ARP(地址解析协议)---> 根据IP地址查询物理地址
1、地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。
2、主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息(返回信息包括目标IP地址的MAC地址),以此确定目标的物理地址;
3、收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。
4、地址解析协议(ARP协议)是建立在网络中各个主机互相信任的基础上的,局域网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存;
5、由此攻击者就可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗。ARP命令可用于查询本机ARP缓存中IP地址和MAC地址的对应关系、添加或删除静态对应关系等。相关协议有RARP、代理ARP。NDP用于在IPv6中代替地址解析协议。
6、OSI模型把网络工作分为七层,IP地址在OSI模型的第三层,MAC地址在第二层,彼此不直接打交道。在通过以太网发送IP数据包时,需要先封装第三层(32位IP地址)、第二层(48位MAC地址)的包头,但由于发送时只知道目标IP地址,不知道其MAC地址,又不能跨第二、三层,所以需要使用地址解析协议。使用地址解析协议,可根据网络层IP数据包包头中的IP地址信息解析出目标硬件地址(MAC地址)信息,以保证通信的顺利进行。
7、如果网络中的主机需要相互通信,那么源主机必须要知道目的主机的IP地址和MAC地址,因为在数据链路层封装的MAC帧中需要封装目的地址和源地址,当已知目的主机的IP地址时,可以通过ARP协议获得目的主机的MAC地址。
8、arp协议在TCP/IP模型中属于IP层(网络层),在OSI模型中属于链路层。arp协议即地址解析协议,是根据IP地址获取物理地址的一个TCP/IP协议。它可以解决同一个局域网内主机或路由器的IP地址和MAC地址的映射问题。
ARP地址解析协议工作原理
举例1
- 主机A的IP地址为192.168.1.1,MAC地址为0A-11-22-33-44-01;
- 主机B的IP地址为192.168.1.2,MAC地址为0A-11-22-33-44-02;
- 第1步:根据主机A上的路由表内容,IP确定用于访问主机B的转发IP地址是192.168.1.2。然后A主机在自己的本地ARP缓存中检查主机B的匹配MAC地址。
- 第2步:如果主机A在ARP缓存中没有找到映射,它将询问192.168.1.2的硬件地址(发送一个广播式的数据包询问),从而将ARP请求帧广播到本地网络上的所有主机。源主机A的IP地址和MAC地址都包括在ARP请求中。本地网络上的每台主机都接收到ARP请求并且检查是否与自己的IP地址匹配。如果主机发现请求的IP地址与自己的IP地址不匹配,它将丢弃ARP请求。
- 第3步:主机B确定ARP请求中的IP地址与自己的IP地址匹配,则将主机A的IP地址和MAC地址映射添加到本机的本地ARP缓存中。
- 第4步:主机B将包含其MAC地址的ARP回复消息直接发送回主机A。
- 第5步:当主机A收到从主机B发来的ARP回复消息时,会用主机B的IP和MAC地址映射更新ARP缓存。本机缓存是有生存期的,生存期结束后,将再次重复上面的过程。主机B的MAC地址一旦确定,主机A就能向主机B发送IP通信了。
举例2
当计算机需要访问某个IP地址,计算机必须知道这个IP的物理地址(MAC地址),这时计算机会发一个广播式的数据包询问:《ipx.x.x.x对应的mac是什么?我是IP y.y.y.y,我的mac是yy-yy-yy-yy-yy-yy》;
整个局域网的计算机都会收到这个询问,真正拥有这个IP的计算机就会回答它:《IP x.x.x.x的mac地址是我这个xx-xx-xx-xx-xx-xx》
计算机会临时将刚刚询问的MAC地址保存在“IP-MAC对照表”,如果一段时间内不与该IP再次通讯的话,会删除对应条目。“IP-MAC对照表”中的临时条目就是arp缓存。
另:即使不是正确的计算机也可以回答那个询问,回答一个错误的MAC,有可能让询问的机子发数据到错误的机子。这就叫“ARP欺骗“,可以说是利用arp协议设计上的漏洞。防止方法是设置静态“IP-MAC对照条目”。
举例3
注意:
ARP缓存
1、ARP缓存是个用来储存IP地址和MAC地址的缓冲区,其本质就是一个IP地址-->MAC地址的对应表,表中每一个条目分别记录了网络上其他主机的IP地址和对应的MAC地址。每一个以太网或令牌环网络适配器都有自己单独的表。(网络请求可以说都是通过不同的网络适配器向外发出,比如网卡或者无线网卡)
当ARP地址解析协议被询问一个已知IP地址节点的MAC地址时,先在ARP缓存中查看。若存在,就直接返回与之对应的MAC地址;若不存在,才发送ARP请求向局域网查询。
2、为使广播量最小,ARP维护IP地址到MAC地址映射的缓存以便将来使用。ARP缓存可以包含动态和静态项目。动态项目随时间推移自动添加和删除。每个动态ARP缓存项的潜在生命周期是10分钟。新加到缓存中的项目带有时间戳,如果某个项目添加后2分钟内没有再使用,则此项目过期并从ARP缓存中删除;如果某个项目已在使用,则又收到2分钟的生命周期;如果某个项目始终在使用,则会另外收到2分钟的生命周期,一直到10分钟的最长生命周期。
静态项目一直保留在缓存中,直到重新启动计算机为止。
3、ARP高速缓存(APR cache)是由最近的ARP项组成的一张临时表,表中记录了主机IP地址和MAC地址的对应关系。
4、ARP报文只能在发送主机所在的广播域中被使用:
ARP协议的工作媒介
地址解析协议是通过报文工作的。报文包括如下字段:
1、硬件类型:指明了发送方想知道的硬件接口类型,以太网的值为1;
2、协议类型:指明了发送方提供的高层协议类型,IP为0800(16进制);
3、硬件地址长度和协议长度:指明了硬件地址和高层协议地址的长度,这样ARP报文就可以在任意硬件和任意协议的网络中使用;
4、操作类型:用来表示这个报文的类型,ARP请求为1,ARP响应为2,RARP请求为3,RARP响应为4;
5、发送方硬件地址(0-3字节):源主机硬件地址的前3个字节;
6、发送方硬件地址(4-5字节):源主机硬件地址的后3个字节;
7、发送方IP地址(0-1字节):源主机硬件地址的前2个字节;
8、发送方IP地址(2-3字节):源主机硬件地址的后2个字节;
9、目标硬件地址(0-1字节):目的主机硬件地址的前2个字节;
10、目标硬件地址(2-5字节):目的主机硬件地址的后4个字节;
11、目标IP地址(0-3字节):目的主机的IP地址。
ARP协议命令
arp命令的用法如下:
arp -a :查询当前计算机系统中缓存的ARP表。ARP表用来维护IP地址与MAC地址的一一对应。
arp -a 命令的通俗解释:
比方说,某推拿室总有30名服务员,为了方便管理,服务员都编了号,由01编到30。客人们都只记得服务员的编号。我去这个桑拿房,因为25号技术特好,我就对前台的说:我要25号来给我做推拿。这时前台的管理人员脑子里有一张表,知道25号具体是哪个服务员,于是叫了那个服务员来给我做推拿。当然,为了防止忘记,抽屉里还放了纸质的一张编号和人名对应的表。 上面说的这个编号相当于计算机网络里的IP地址,而服务员的人名就是MAC地址,又叫物理地址,是一个网络节点的真正唯一标识。上面前台脑子里的编号和人名对应的表就是ARP表,但是有时是不全的,可能他只记得刚刚叫过的几个服务员的编号。这是缓存在本地的ARP表,是为了加快速度,避免每次都得拉抽屉看纸的麻烦的。而抽屉里的那张表保存有所有编号和人名的表,这样的ARP表往往保存在路由设备上,当路由转发数据时使用,也供其他网络节点查询。 计算机网络通讯时使用IP地址表示通讯的发起端和接收端,但当数据真正要发到哪个目的地的时候,还得根据IP地址查到MAC地址,根据MAC地址投递这个数据才能真正把数据送到。因此,要确认哪个IP是哪个MAC地址所有的,就得维护一张表,这张表就是ARP表。而ARP -A就是查询你当前的系统缓存了的ARP表,列出IP地址和MAC地址(前台脑子里的服务员编号表),如下: (IP) (MAC) (类型) Internet Address Physical Address Type 192.168.0.254 00-01-02-9a-3f-5d dynamic 192.168.0.3 00-e0-33-9b-0f-5c dynamic 现在,你也该知道有一种病毒是ARP欺骗的,他的原理是什么了: 明明25号服务员叫李小明的,病毒就告诉前台,25号服务员不是李小明了,是胡丁丁。结果呢,当我下次来叫25号服务员的时候,前台就给我错误地分配了一个服务员,甚至可能因为根本不存在胡丁丁,前台找不到一个服务员来(这前台可够笨的)。有时候这个病毒更麻烦,还直接修改了放在抽屉里的那个表,让前台根深蒂固地以为25号的确换了人了。 反映到计算机网络上,就是ARP表被篡改了,使得电脑找不到通向目的地的真正的合法MAC地址,信息传达不出去或者传达错误。传达不出去,就会表现为网络不通了,你上网上不了了。传达错误,有可能传达的数据被人恶意截走(被ARP伪装的计算机截走)。如果你传达的是QQ的帐号和密码,可能就会发生QQ帐号被盗的情况。
ARP欺骗
ARP地址解析协议是建立在网络中各个主机互相信任的基础上的,它的诞生使得网络能够更加高效的运行,但其本身也存在缺陷:
ARP地址转换表是依赖于计算机中高速缓冲存储器动态更新的,而高速缓冲存储器的更新是受到更新周期的限制的,只保存最近使用的地址的映射关系表项,这使得攻击者有了可乘之机,可以在高速缓冲存储器更新表项之前修改地址转换表,实现攻击。ARP请求为广播形式发送的,网络上的主机可以自主发送ARP应答消息,并且当其他主机收到应答报文时不会检测该报文的真实性就将其记录在本地的MAC地址转换表,这样攻击者就可以向目标主机发送伪ARP应答报文,从而篡改本地的MAC地址表。 ARP欺骗可以导致目标计算机与网关通信失败,更会导致通信重定向,所有的数据都会通过攻击者的机器,因此存在极大的安全隐患。
arp欺骗的防御措施
1、不要把网络安全信任关系建立在IP基础上或MAC基础上(RARP同样存在欺骗的问题),理想的关系应该建立在IP+MAC基础上。
2、设置静态的MAC-->IP对应表,不要让主机刷新设定好的转换表。
3、除非很有必要,否则停止使用ARP,将ARP做为永久条目保存在对应表中。
4、使用ARP服务器。通过该服务器查找自己的ARP转换表来响应其他机器的ARP广播。确保这台ARP服务器不被黑。
5、使用“proxy”代理IP的传输。
6、使用硬件屏蔽主机。设置好路由,确保IP地址能到达合法的路径(静态配置路由ARP条目),注意,使用交换集线器和网桥无法阻止ARP欺骗。
7、管理员定期用响应的IP包中获得一个RARP请求,然后检查ARP响应的真实性。
8、管理员定期轮询,检查主机上的ARP缓存。
9、使用防火墙连续监控网络。注意有使用SNMP的情况下,ARP的欺骗有可能导致陷阱包丢失。
10、若感染ARP病毒,可以通过清空ARP缓存、指定ARP对应关系、添加路由信息、使用防病毒软件等方式解决
总结
一、ARP协议的作用 1、ARP协议在以太网中使用,用来将通信的目标地址解析为MAC地址,跨网段通信时解析出网关的MAC地址。 2、如果计算机Aping计算机B的地址,首先计算机A判断目标IP地址和是否自己在一个网段,若在一个网段,数据链路层封装的目标MAC地址就是计算机C的MAC地址。 3、如果计算机Aping计算机C的地址,首先计算机A判断目标IP地址和是否自己在一个网段,若不在一个网段,数据链路层封装的目标MAC地址就是网关的MAC地址。 二、地址解析协议ARP要点 1、ARP请求分组:包含发送方硬件地址/发送方IP地址/目标方硬件地址(未知时填0) /目标方IP地址。 2、ARP请求发送的是广播地址(路由器不转发ARP请求)。 3、ARP响应分组:包含发送方硬件地址/发送方IP地址/目标方硬件地址/目标方IP地址。 4、ARP分组封装在物理网络的帧中传输。 三、地址解析协议ARP的工作过程 当主机A欲向本局域网上的某个主机B发送IP数据报时,就先在其ARP高速缓存中查看有无主机B的IP地址。 1.如有,就可查出其对应的硬件地址,再将此硬件地址写入MAC帧,然后通过局域网将该MAC帧发往此硬件地址。 2.如没有,ARP进程在本局域网上广播发送一个ARP请求分组。收到ARP响应分组后,将得到的IP地址到硬件地址的映射写入ARP高速缓存中。 四、总结 1、ARP用于解决同一个局域网上的主机或路由器的IP地址和硬件地址的映射问题。 2、如果所要找的主机和源主机不在同一个局域网上,那么就要通过ARP找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络,剩下的工作就由下一个网络来做。
参考链接
https://baike.baidu.com/item/ARP/609343?fr=aladdin
https://blog.csdn.net/lsdstone/article/details/125629036?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-0-125629036-blog-104444395.pc_relevant_landingrelevant&spm=1001.2101.3001.4242.1&utm_relevant_index=2
https://blog.csdn.net/weixin_39990410/article/details/110578427