您的位置:首页 > 理论基础 > 计算机网络

ARP使用及网络通信(查询、绑定MAC地址)

2009-07-28 08:34 363 查看
  ARP地址解析协议(Address Resolution Protocol),通过遵循该协议,只要我们知道了某台机器的IP地址,即可以知道其物理地址。
  在每台安装有TCP/IP协议的电脑里都有一个ARP缓存表,表里的IP地址与MAC地址是一一对应的,当每一次和一个新设备建立了通信,就会在ARP缓存表里记录该设备的IP和MAC地址,ARP缓存表里的记录并不是一直都不变的,当一段时间不再和这个新设备连接了,ARP缓存表里关于这个设备的IP和MAC地址记录就会因老化而丢掉,若一直和这个设备通信,在ARP缓存表里会一直记录这个设备的IP和MAC地址。
  假设主机A(192.168.0.1)向主机B(192.168.0.2)发送数据为例。当发送数据时,主机A会在自己的ARP缓存表中寻找是否有目标IP地址。如果找到了,也就知道了目标MAC地址,直接把目标MAC地址写入帧里面发送就可以了;如果在ARP缓存表中没有找到相对应的IP地址,主机A就会在网络上发送一个广播,目标MAC地址是“FF.FF.FF.FF.FF.FF”,这表示向同一网段内的所有主机发出这样的询问:“192.168.0.5的MAC地址是什么?”网络上其他主机并不响应ARP询问,只有主机B接收到这个帧时,才向主机A做出这样的回应:“192.168.0.5的MAC地址是00-aa-00-62-c6-09”。这样,主机A就知道了主机B的MAC地址,它就可以向主机B发送信息了。同时它还更新了自己的ARP缓存表,下次再向主机B发送信息时,直接从ARP缓存表里查找就可以了。
  在交换机连接的局域网中,识别主机的是MAC地址,而非IP地址。因为交换机是二层设备,它只能识别MAC地址,路由器才能识别IP地址,那么我们在两台电脑之间访问经常用IP地址,Ping一台电脑也用IP地址,而没用MAC地址,那又是为什么?
  道理很简单,因为对IP的访问在ARP表中转换成了对MAC地址的访问。
  ARP攻击就是通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量使网络阻塞,攻击者只要持续不断的发出伪造的ARP响应包就能更改目标主机ARP缓存中的IP-MAC条目,造成网络中断或中间人攻击。
  比如你的路由器的IP是192.168.0.1,MAC地址是:00E04C352C68,是多台电脑共享上网用的网关和DNS,当你要上网时,就要访问路由器,电脑向网上发出广播,以获得路由器的MAC地址,这时ARP攻击主机发出一个伪造的ARP响应包,把192.168.0.1的MAC地址乱写一个回应你,比如:512C0A665421,这样你的电脑ARP表中就会建一个192.168.0.1与512C0A665421对应的表,那你上网时的请求就会发向512C0A665421这个MAC地址,但它是不存在的,和你电脑相连的交换机无论如何也找不到是这个MAC地址的端口,你的请求帧将会被交换机丢掉,那意味着你无法上网。
  无论是局域网,还是广域网中的计算机之间的通信,最终都表现为将数据包从某种形式的链路上的初始节点出发,从一个节点传递到另一个节点,最终传送到目的节点。数据包在这些节点之间的移动都是由ARP(Address Resolution Protocol:地址解析协议)负责将IP地址映射到MAC地址上来完成的。下面我们来通过一个例子看看IP地址和MAC地址是怎样结合来传送数据包的。
  假设网络上要将一个数据包(名为PAC)由上海的一台主机(名称为A,IP地址为IP_A,MAC地址为MAC_A)发送到北京的一台主机(名称为B,IP地址为IP_B,MAC地址为MAC_B)。这两台主机之间不可能是直接连接起来的,因而数据包在传递时必然要经过许多中间节点(如路由器,服务器等等),我们假定在传输过程中要经过C1、C2、C3(其MAC地址分别为M1,M2,M3)三个节点。A在将PAC发出之前,先发送一个ARP请求,找到其要到达IP_B所必须经历的第一个中间节点C1的MAC地址M1,然后在其数据包中封装(Encapsulation)这些地址:IP_A、IP_B,MAC_A和M1。当PAC传到C1后,再由ARP根据其目的IP地址IP_B,找到其要经历的第二个中间节点C2的MAC地址M2,然后再将带有M2的数据包传送到C2。如此类推,直到最后找到带有IP地址为IP_B的B主机的地址MAC_B,最终传送给主机B。在传输过程中,IP_A、IP_B和MAC_A不变,而中间节点的MAC地址通过ARP在不断改变(M1,M2,M3),直至目的地址MAC_B。
  ARP缓存表是可以查看的,也可以添加和修改。在命令提示符下,输入“arp -a”就可以查看ARP缓存表中的内容。
  用“arp -d”命令可以删除ARP表中所有的内容;

  用“arp -d +空格+ <指定ip地址>” 可以删除指定ip所在行的内容

  用“arp -s”可以手动在ARP表中指定IP地址与MAC地址的对应,类型为static(静态),此项存在硬盘中,而不是缓存表,计算机重新启动后仍然存在,且遵循静态优于动态的原则,所以这个设置不对,可能导致网络访问出问题.
  比如已知路由器的IP:192.168.0.1,MAC:001CF0514CC2,是我们共享上网的路由器,我们可以在自己的电脑上绑定它:
  arp -s 192.168.0.1 00-1C-F0-51-4C-C2
  
本文出自 “坚强的技术交流blog” 博客,请务必保留此出处http://newthink.blog.51cto.com/872263/184200
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: