TA的每日心情 开心 2012-3-7 10:15
签到天数: 11 天
[LV.3]偶尔看看II
Arp详解实例
(主要针对的是初学者,如有错误请高手指点!)
写这个东西因为很多人(初学者)知道arp叫地址解析协议(Address Resolution Protocol),但是遇到问题不知道如何来用,也就是不知道如何来用ARP来解释问题。
我分下面几个部分来解释它:
一.什么是ARP及工作原理
二.如何使用ARP
三.ARP问题情况的分析
四.现存的ARP攻击及如何防范
一. 什么是ARP及工作原理
ARP协议(Address Resolve Protocol,地址解析协议)工作在TCP/IP协议的第二层(数据链路层),用于将ip地址转换为网卡地址(NIC的MAC地址,媒体访问控制地址)。无论是任何高层协议的通讯,最终都将转换为数据链路层的MAC地址来通讯。说白点,也就是将主机的ip地址转换为对应的48位物理地址(这个应该都清楚吧)。当然,还有对应的RARP也就是向反的过程48位的物理地址转换为ip地址。
举个例子来说明整个过程:
比如hostA地址为192.168.1.10,hostA现在想和hostB:192.168.1.20通讯,那么将进行如下的操作:
hostA主机查询自己的ARP缓存表,如果发现具有对应于ip地址192.168.1.20的MAC项,则直接使用此MAC地址项构造并发送数据包,如果没有发现则进行下一步操作.
hoatA主机发出ARP解析请求广播,目的MAC地址是ff:ff:ff:ff:ff:ff,请求hostB的MAC地址。当hostB收到ARP解析清求广播后回复给hostA一个ARP应答数据包。其中包含自己的ip地址和MAC地址;当hostA收到hostB的ARP回复后,将hostB的MAC地址放入自己的ARP缓存表,然后使用hostB的MAC地址作为目的MAC地址,hostB的ip:192.168.1.20作为目的ip地址,构造数据包并发送给hostB。
这个时候hostA如果还要继续给hostB:192.168.1.20发数据的话就不用发广播去请求了,因为hostA的ARP缓存里有hostB的ip和MAC的对应项了。当然如果是动态获取的话,超过两分钟没有使用这个项,那么这个表项将被删除。
二、如何使用ARP
每台主机都具有一个用于缓存MAC地址的ARP缓存列表,你可以使用命令ARP -a或ARP -g来查看当前的ARP缓存列表。此ARP缓存列表是动态更新的,默认情况下,当其中的缓存项超过两分钟没有活动时,此缓存项就会超时被删除。你可以使用ARP -s来静态绑定IP地址和MAC地址,不过在Windows server 2003和XP以前的Windows系统中,就算你设置了静态MAC地址绑定项,同样会通过接收其他主机的数据包而更新已经绑定的项。在Windows server 2003和XP中,静态绑定的项不会被动态更新,直到TCP/IP协议终止为止,例如重启计算机。如果要创建永久的静态MAC地址绑定项,你可以写一个脚本文件来执行ARP静态绑定,然后使用计划任务在启动计算机时执行该脚本即可。
三. ARP问题情况的分析
我来假设有三台pc:pc1:192.168.4.10/24
pc2:192.168.4.11/24,
pc3: 192.168.4.12/24
OK,三台pc在同一个网段里可以互相ping通没有任何问题。
这个时候我在pc1的机子上绑定pc2的MAC,当然这个时候 pc2pingpc1还是可以通的。只是在pc1上静态绑定了pc2的ip和mac罢了。好这个时候我将pc2关机,我在pc3上将它的ip改为刚刚关机的pc2 的地址就是:192.168.4.11/24不通了。怎么回事????
楼主热帖