Dennis的ARP初探,第一篇

  1. 云栖社区>
  2. 博客>
  3. 正文

Dennis的ARP初探,第一篇

技术小胖子 2017-11-10 01:27:00 浏览881
展开阅读全文
ARP,就是地址解析协议咯。工作在OSI七层中的第二层,数据链路层。
ARP只能在一个网段中使用,而跨网段通讯的话,就要自己设置arp表,或者,应用代理arp技术了。所以,这里,就先以同一网段的局域网来讨论一下ARP相关的事情咯。
首先,来看看我们在公司的局域网中访问其它机器的步骤吧。
比如,有一台计算机计算机名为office024,IP为10.4.2.234。mac地址为“00-50-ba-10-f2-12”。现在,我们对这台机器进行一次访问。如果是通过计算机名“office024”访问的话,那将先涉及到“NetBios”跟“WINS”(NetBios跟wins也都一样存在着安全漏洞,以后再找时间讨论咯)了。所以,这里只以IP地址访问为例。
要先说一句的是:IP地址是工作在网路层中的逻辑地址,这个地址可手动进行配置,也可有路由器或服务器进行自动分配。在一般的情况下,IP地址,在不同的局域网总,被频繁的重复使用着,估计,最多的就是192.168.x.x了吧。而,一台工作站的网络适配器即网卡的mac地址,却是唯一的,是由网卡生产厂家在制作网卡的时候,烧入网卡的EPROM中的,就如同我们的身份证号码一样,具有全球唯一性。
*****************************
之所以说是一般情况下,是因为,mac地址,也一样可以在网路设置中,手动修改的。(所谓,静止,是相对而言的咯。(*^__^*) 嘻嘻……)
*****************************
我们去找一个人,比如,在某一个社交圈子或是办公区中,我们会去找“张昕宇”,而不会去找他的身份证号码“23XXXXXXXXXXXX2511”;我们在浏览搜狐的时候,是键入[url]www.sohu.com[/url]而不是它的某个服务器IP地址“61.135.179.160”;所以,我们在访问局域网中的机器的时候,也就是去找它的IP,而不是mac地址咯。所以,就像DNS把TCP/IP主机名称映射为IP地址,WINS把NetBIOS主机名称映射为IP地址一样,ARP就负责将一个我们已知的一个IP地址解析成mac地址咯。
所以,我们在例子中,我们在访问IP地址10.4.2.234的时候,ARP就帮我们找到了mac地址为“00-50-ba-10-f2-12”的这台机器。
那么,为什么源主机可以找到目的主机呢?下面就来简单的介绍一下咯。
当源主机确定了目标主机的IP时,为了获得目标主机的mac地址,会查找自己的ARP缓存表。如果找到了对应的表项,就绑定、封装成数据帧,然后再发送此数据帧。当源主机在本地的ARP表中查找失败时,会初始化ARP请求过程,用来发现目标主机的mac地址。
ARP请求使用广播mac地址,即目标MAC地址是“FF.FF.FF.FF.FF.FF”,这表示向同一网段内的所有主机发出这样的询问:“10.4.2.234的MAC地址是什么?”(请求中包括了自己本身的IP地址跟mac地址),从而保证所有的联网设备都能够受到该请求。而当所有设备接收到ARP请求后,交给网络层处理;网络层进行判断,如果该目标IP与自己的IP地址相同,则目标设备会缓存源设备的IP地址跟mac地址的对应关系在自己的ARP表中,同时发送一个ARP回答,告诉源主机它的mac地址,如:10.4.2.234的mac地址为00-50-ba-10-f2-12;源主机接收到这个回应的数据报后,在自己的ARP表中添加目标设备的IP地址和mac地址的对应关系。(其他IP的主机自然不做任何回答)
******************************
一般情况下,是不会有人去绑定arp表的。
所以,也就有了arp网关欺骗这样的病毒趁虚而入的机会咯。
中毒的肉机会频繁向整个局域网发送arp表,声称自己是网关(自然是将自己的IP地址跟网关的mac地址绑定到一起咯。),从而达到欺骗其它上网主机的数据包发送方向。而关于ARP病毒,会在后面的文章中陆续发表。
******************************
 
ARP和RARP使用相同的报头结构,如图1所示。
报送格式
硬件类型字段:指明了发送方想知道的硬件接口类型,以太网的值为1;
协议类型字段:指明了发送方提供的高层协议类型,IP为0800(16进制);
硬件地址长度和协议长度:指明了硬件地址和高层协议地址的长度,这样ARP报文就可以在任意硬件和任意协议的网络中使用;
操作字段:用来表示这个报文的类型,ARP请求为1,ARP响应为2,RARP请求为3,RARP响应为4;
发送方的硬件地址(0-2字节):源主机硬件地址的前3个字节;
发送方的硬件地址(3-5字节):源主机硬件地址的后3个字节;
发送方IP(0-1字节):源主机硬件地址的前2个字节;
发送方IP(2-3字节):源主机硬件地址的后2个字节;
目的硬件地址(0-1字节):目的主机硬件地址的前2个字节;
目的硬件地址(2-5字节):目的主机硬件地址的后4个字节;
目的IP(0-3字节):目的主机的IP地址。
                                                                   图1
 
 
ARP基本命令:
arp -a [inet_addr] [-N [if_addr]
arp -d inet_addr [if_addr] 
arp -s inet_addr ether_addr [if_addr] 
参数 
-a 
通过询问 TCP/IP 显示当前 ARP 项。如果指定了 inet_addr,则只显示指定计算机的 IP 和物理地址。 
-g 
与 -a 相同。 
inet_addr 
以加点的十进制标记指定 IP 地址。 
-N 
显示由 if_addr 指定的网络界面 ARP 项。 
if_addr 
指定需要修改其地址转换表接口的 IP 地址(如果有的话)。如果不存在,将使用第一个可适用的接口。 
-d 
删除由 inet_addr 指定的项。 
-s 
在 ARP 缓存中添加项,将 IP 地址 inet_addr 和物理地址 ether_addr 关联。物理地址由以连字符分隔的6 个十六进制字节给定。使用带点的十进制标记指定 IP 地址。项是永久性的,即在超时到期后项自动从缓存删除。
ether_addr 
指定物理地址。
*************************
先写到这里吧,虽然仅仅是一个ARP的初探,但是,要写的东西,真的是好多。今天为了写这第一章,已经浏览了好多网路上的资料跟许多前辈们的文章了。在此先行谢过。:)
*************************
 


     本文转自dennisxinyu 51CTO博客,原文链接:http://blog.51cto.com/dennisxinyu/123314,如需转载请自行联系原作者



网友评论

登录后评论
0/500
评论
技术小胖子
+ 关注