文章中心 article

您现在的位置:首页 > 文章中心 > 技术控 > ARP原理介绍

最新新闻news

ARP原理介绍

t01e69c0ae99155b498

在我带过的班里,我都会让他们知道:在一个局域网内部,所有的设备通信,是需要MAC地址的。他们的通信是依靠MAC地址的。后来也给他们做过ARP欺骗的实验。事实证明,如果IP不变,而目标的MAC字段被我修改,数据是不能到达目标的。那么MAC地址和IP地址的关系又是怎么样的呢?
举个例子来说吧!

小张和小明两人不在同一个城市,有一天他们同时来到一家学校读书,他们之前并不认识,后来在学校的关系相处的很好。放暑假了,小张和小明互相留了家里的电话号码。小张约小明到时候去自己家玩儿。
看一下,小明最后是如何找到小张的家的。因为他们之前并不认识,而且居住在不同的城市,那么可以肯定,小明最初是不知道小张家的实际住址的。我们知道:现实生活中,我们要去一个人的家,必须得知道对方的家庭住址!那么小明是如何得知小张的家庭住址呢?

对!他有小张家的电话号码!他给小张打了个电话:“小张啊,我是小明,我想去你家玩儿,但是我不知道你家在哪里啊!”于是小张就告诉了小明自己的家庭住址。

这个过程在日常生活中是再熟悉不过的啦!!!

现在我们就和网络中的IP 地址和MAC地址来进行比较一下。

小张的家里的电话号码,是一串数字,它能不能标识小张家的位置呢?不能!
小张的家庭住址,是不是一个实际存在的物理位置呢?能不能标识小张家的位置呢?
我们能不能打一个电话就能到对方家里呢?——除非你在电话接通的时候,自己变成一串电信号,沿电话线传输过去。但是我们可以通过打这个号码来询问对方的实际住址。对吧!!通过对方的电话号码来找到对方实际的位置,然后就可以顺利的找到对方了。

而网络中的IP地址呢?是不是和电话号码很相像啊?因为它也是一个逻辑的地址。并不能标识一台主机真实的位置。

MAC地址呢?它是在网卡出厂时就烧录在网卡芯片上的,它是一个真实存在的,物理上的,它可以准确在一个局域网里标识出一台设备的位置。

我们打电话给对方,询问对方的实际住址这个过程其实就是网络中ARP的工作过程!在这个过程中,IP,MAC一个也不能少。如果电话号码给错了,你能联系到对方并问到一个准确的实际地址吗?如果电话是对的,但是对方不想让你来,给了你一个“假”地址,那么你能找到对方吗?答案都是否定的!!!

现在我们来看一下ARP的工作。

ARP——地址解析协议,工作在数据链路层。

当主机A要和主机B通信时,这时候假定A,B刚开机,或者ARP缓存表是空的。既然谈到通信,那么一般来说,它们应该对数据完成一个封装和解封装的过程。其他的层次我们先不谈,只看数据链路层和网络层。在A这边,做为一个数据的源,它在发送数据时,数据被封装到网络层,需要添加一个IP报头,里面有源和目标IP地址字段,源的IP和目标的IP都知道,那么是可以顺利的封装的,但是封装好的包交给数据链路层,进行再一次封装时,问题发生了,因为在数据链路层,需要封装成帧,那么在帧的头部有源MAC和目标MAC字段,源MAC是它自己,当然知道,但是目标的MAC呢?没有!!!也就是说,没有实际的地址!!!那封装还能继续下去吗?那么通信难道要终止吗?

其实在封装之前,PC将会查看自己的ARP缓存表(我们可以通过手工查看start—run—cmd—arp-a)。如果缓存表中存在目标主机的MAC和IP信息,那么就可以顺利的成帧。如果没有的话,那么它将经历一次ARP的解析过程。它发出一个broadcast request(一个广播请求,请求对方的MAC地址。)用sniffer可以看到。这个ARP请求数据里面有一个问题:“喂,我是192.168.12.1,我的MAC地址是A!!192.168.12.2,你的MAC地址是多少?”这个时候,该网段中所有的主机都能收到该广播,只有IP地址是192.168.12.2的主机会响应(response)。同时接收主机会把A的IP地址和MAC地址的对应关系记录下来,放入ARP缓存中。通过了这个过程,A和B都有了对方的IP和MAC的对应关系了,那么第二层,第三层的封装就可以顺利的完成。

大家可以想像一下,如果在A发出广播后,收到了来自B的回应请求,同时,又有一个第三者通过某种方式监听到了A—B的对话,并截获了B回应给A的arp response。他可以把这个回应中的MAC地址字段该成另一个MAC地址,再把修改过的帧交给A。这个时候A是不是拿到了两种回应呢?它会以谁为准呢?它会以后来的为准!!!

上面的是ARP。ARP其实还有好几种。

RARP(反向地址解析协议):它是通过MAC地址来寻找自己的IP地址。它主要应用在早期的无盘网络技术中和DHCP的工作过程中。

代理ARP。比如一台路由器连接了两个以太网。当其中一个网络中的主机A要和另一个网络中的B主机通信,它首先要使用ARP解析B的MAC地址,当这个广播信息到达路由器接口时,路由器把该数解封装到第三层抽取网络层地址时,发现目标主机位于自己直连的另一个网络中,它将代替(默认情况下,CISCO路由器代理ARP功能是打开的)主机B向A发送一个arp response(这个过程,其实和上面所说到的ARP欺骗很相似),以自己接口的MAC地址和IP地址发出这个回应数据。那么A收到之后,将会把该信息加入ARP缓存中去,同时把数据封装成帧交给路由器接口。代理ARP有时候会引起协议冲突问题。

无故ARP,觉得好笑的是:曾看到过有的书上把它翻译成了无敌ARP,我不知道是翻译问题还是打错了或者是校验出了问题,反正,我觉得不可能叫无敌ARP。无故ARP,顾名思义,就是无缘无故发送ARP请求。那么发出这样一个请求有什么好处呢?可以刷新ARP缓存,可以检测冲突。

 

联系电话:400-0505-455/ 电子邮箱: info@e-strong.cn/ 请在工作日9:00~ 18:00 联系我们,其他时间请发送邮件.

姓 名:
邮箱
留 言:
点击这里给我发消息 点击这里给我发消息 点击这里给我发消息 点击这里给我发消息 点击这里给我发消息