基本功能
在以太网协议中规定,同一局域网中的一台 主机要和另一台主机进行直接通信,必须要知道目标主机的MAC地址。而在 TCP/IP协议栈中,网络层和 传输层只关心目标主机的IP地址。这就导致在以太网中使用IP协议时,数据链路层的以太网协议接到上层IP协议提供的数据中,只包含目的主机的IP地址。于是需要一种方法,根据目的主机的IP地址,获得其MAC地址。这就是 ARP协议要做的事情。所谓 地址解析(address resolution)就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。 另外,当发送主机和目的主机不在同一个 局域网中时,即便知道目的主机的MAC地址,两者也不能直接通信,必须经过 路由转发才可以。所以此时,发送主机通过ARP协议获得的将不是目的主机的真实MAC地址,而是一台可以通往局域网外的 路由器的某个端口的MAC地址。于是此后发送主机发往目的主机的所有帧,都将发往该路由器,通过它向外发送。这种情况称为 ARP代理(ARP Proxy)。工作原理
在每台安装有TCP/IP协议的电脑里都有一个ARP缓存表,表里的IP地址与 MAC地址是一一对应的。 以主机A(192.168.1.5)向主机B(192.168.1.1)发送数据为例。当发送数据时,主机A会在自己的ARP缓存表中寻找是否有目标IP地址。如果找到了,也就知道了目标MAC地址,直接把目标MAC地址写入帧里面发送就可以了;如果在ARP缓存表中没有找到目标IP地址,主机A就会在网络上发送一个广播,A主机MAC地址是“主机A的MAC地址”,这表示向同一网段内的所有主机发出这样的询问:“我是192.168.1.5,我的硬件地址是"主机A的MAC地址".请问IP地址为192.168.1.1的MAC地址是什么?”网络上其他主机并不响应ARP询问,只有主机B接收到这个帧时,才向主机A做出这样的回应:“192.168.1.1的MAC地址是00-aa-00-62-c6-09”。这样,主机A就知道了主机B的MAC地址,它就可以向主机B发送信息了。同时A和B还同时都更新了自己的ARP缓存表(因为A在询问的时候把自己的IP和MAC地址一起告诉了B),下次A再向主机B或者B向A发送信息时,直接从各自的ARP缓存表里查找就可以了。ARP缓存表采用了老化机制(即设置了生存时间TTL),在一段时间内(一般15到20分钟)如果表中的某一行没有使用,就会被删除,这样可以大大减少ARP缓存表的长度,加快查询速度。 ARP攻击就是通过伪造IP地址和MAC地址实现 ARP欺骗,能够在网络中产生大量的ARP通信量使 网络阻塞,攻击者只要持续不断的发出伪造的ARP响应包就能更改目标主机ARP缓存中的IP-MAC条目,造成网络中断或中间人攻击。 ARP攻击主要是存在于局域网网络中,局域网中若有一个人感染ARP 木马,则感染该ARP木马的系统将会试图通过“ARP欺骗”手段截获所在网络内其它 计算机的通信信息,并因此造成网内其它计算机的通信故障。 RARP的工作原理: 1. 发送主机发送一个本地的RARP广播,在此广播包中,声明自己的MAC地址并且请求任何收到此请求的RARP 服务器分配一个IP地址; 2. 本地网段上的RARP服务器收到此请求后,检查其RARP列表,查找该MAC地址对应的IP地址; 3. 如果存在,RARP服务器就给源主机发送一个响应 数据包并将此IP地址提供给对方主机使用; 4. 如果不存在,RARP服务器对此不做任何的响应; 5. 源主机收到从RARP服务器的响应信息,就利用得到的IP地址进行通讯;如果一直没有收到RARP服务器的响应信息,表示初始化失败。6.如果在第1-3中被ARP病毒攻击,则服务器做出的反映就会被占用,源主机同样得不到RARP服务器的响应信息,此时并不是服务器没有响应而是服务器返回的源主机的IP被占用。
RARP 反向地址解析协议
反向地址解析协议用于一种特殊情况,如果站点被初始化后,只有自己的物理网络地址而没有IP地址,则它可以通过RARP协议,并发出广播请求,征求自己的IP地址,而RARP服务器则负责回答。这样无IP的站点可以通过RARP协议取得自己的IP地址,这个地址在下一次系统重新开始以前都有效,不用连续广播请求。RARP广泛用于获取无盘工作站的IP地址。
ARP缓存表查看方法及修改
ARP缓存表是可以查看的,也可以添加和修改。在命令提示符下,输入“arp -a”就可以查看ARP缓存表中的内容了,如附图所示。
用“arp -d”命令可以删除ARP表中所有的内容;
用“arp+空格+ <指定ip地址>+空格-d” 可以删除指定ip所在行的内容
用“arp -s”可以手动在ARP表中指定IP地址与MAC地址的对应,类型为static(静态),静态ARP缓存除非手动清除,否则不会丢失。无论是静态还是动态ARP缓存,重启启动计算机后都会丢失。
ARP 常见问题1. 什么是ARP
ARP (Address Resolution Protocol) 是个地址解析协议。最白的说法是:在IP-以太网中,当一个上层协议要发包时,有了节点的IP地址,ARP就能提供该节点的MAC地址。2. 为什么要有ARP?
OSI 模式把网络工作分为七层,彼此不直接打交道,只通过接口(layer interface). IP地址在第三层,MAC地址在第二层。协议在发生数据包时,得先封装第三层 (IP地址),第二层 (MAC地址)的报头,但协议只知道目的节点的IP地址,不知道其地址,又不能跨第二、三层,所以得用ARP的服务。3. 什么是ARP cache
ARP cache 是个用来储存(IP,MAC)地址的缓冲区。当ARP被询问一个已知IP地址节点的MAC地址时,先在ARP cache 查看,若存在,就直接返回MAC地址,若不存在,才发送ARP request向局域网查询。4. ARP 有什么命令行?
常用的包括:(格式因操作系统、路由器而异,但作用类似) - 显示ARP cache: show arp;arp -a - 清除ARP cache:arp -d5. 路由器有ARP cache吗
有的。路由器若有接口连接到局域网,就会有ARP cache。如果路由器的接口都是点对点的接口(serial interface),就不会有ARP cache。6. 路由器怎么使用ARP cache
路由器在转发数据包到下一站时,得用下一站的MAC地址来封装链路报头 (Link header),它向ARP查询这个地址。如果ARP cache里没有这个地址,路由器的ARP会发送ARP Request去查询。7. ARP 和Ping 有什么关系?
Ping是个常用的网络工具,检查远程主机、路由器是否在线。 从源主机到目的主机,一路上ping可能被几个路由器转发,只要有一个ARP cache里没有下一站的MAC地址,路由器就会把ping丢弃 (称为ARP Miss)。由于ARP Miss而掉包,是个常见的掉包原因。ARP协议
ARP(Address Resolution Protocol)地址解析协议用于将计算机的网络地址(IP地址32位)转化为物理地址(MAC地址48位)[RFC826]。 ARP协议是属于链路层的协议,在以太网中的数据帧从一个主机到达网内的另一台主机是根据48位的以太网地址(硬件地址)来确定接口的,而不是根据32位的IP地址。内核(如驱动)必须知道目的端的硬件地址才能发送数据。当然,点对点的连接是不需要ARP协议的。可以说,在TCP/IP模型中,ARP协议属于IP层;在OSI模型中,ARP协议属于链路层。
在sniffer软件中,捕获协议数据时,如果使用IP地址是无法捕获到ARP包的,因为IP地址是ARP协议的载荷,不在包头中。但ARP协议的载荷中,也并不包含任何上层的IP数据包。所以,构造和使用ARP协议的主体理解IP地址。从这个角度考虑,将ARP协议划分到IP层也有一定道理。
总之,具体到某个协议,它到底属于哪一层,并不是那么严格。到目前为止,理解到此。