ARP

ARP,即地址解析协议 ,实现通过IP地址 得知其物理地址。在TCP/IP 网络环境下,每个主机都分配了一个32位的IP地址,这种互联网地址是在网际范围标识主机的一种逻辑地址。为了让报文在物理网路上传送,必须知道对方目的主机的物理地址。这样就存在把IP地址变换成物理地址的地址转换问题。以以太网 环境为例,为了正确地向目的主机传送报文,必须把目的主机的32位IP地址转换成为48位以太网的地址。这就需要在互连层有一组服务将IP地址转换为相应物理地址,这组协议就是ARP协议 。另有电子防翻滚系统也称为ARP。

 

基本功能

  在以太网协议中规定,同一局域网中的一台主机要和另一台主机进行直接通信,必须要知道目标主机的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被占用。

数据结构

  [1] ARP协议的数据结构:   

typedef struct arphdr   {   

    unsignedshortarp_hrd;/*硬件类型*/   

    unsignedshortarp_pro;/*协议类型*/   

    unsignedchararp_hln;/*硬件地址长度*/   

    unsignedchararp_pln;/*协议地址长度*/   

    unsignedshortarp_op;/*ARP操作类型*/   

    unsignedchararp_sha[6];/*发送者的硬件地址*/   

    unsignedlongarp_spa;/*发送者的协议地址*/   

    unsignedchararp_tha[6];/*目标的硬件地址*/   

    unsignedlongarp_tpa;/*目标的协议地址*/   

}ARPHDR,*PARPHDR;

RARP 反向地址转换协议

   反向地址转换协议用于一种特殊情况,如果站点被初始化后,只有自己的物理网络地址而没有IP地址,则他可以通过RARP协议,并发出广播请求,征求自己 的IP地址,而RARP服务器则没有负责回答。这样无IP的站点可以通过RARP协议取得自己的IP地址,这个地址在下一次系统重新开始以前都有效,不用 连续广播请求。RARP广泛用于获取无盘工作站的IP地址。

ARP和RARP报头结构

  ARP和RARP使用相同的报头结构,如图所示。

报送格式

硬件类型字段:指明了发送方想知道的硬件接口类型,以太网的值为1;   

协议类型字段:指明了发送方提供的高层协议类型,IP为0800(16进制);   

硬件地址长度和协议长度:指明了硬件地址和高层协议地址的长度,这样ARP报文就可以在任意硬件和任意协议的网络中使用;   

操作字段:用来表示这个报文的类型,ARP请求为1,ARP响应为2,RARP请求为3,RARP响应为4;   

发送方的硬件地址(0-2字节):源主机硬件地址的前3个字节;   

发送方的硬件地址(3-5字节):源主机硬件地址的后3个字节;   

发送方IP(0-1字节):源主机硬件地址的前2个字节;

ARP缓存表查看方法

  ARP缓存 表是可以查看的,也可以添加和修改。在命令提示符下,输入“arp -a”就可以查看ARP缓存表中的内容了,如附图所示。

arp -a

用“arp -d”命令可以删除ARP表中所有的内容;   用“arp -d +空格+ <指定ip地址>” 可以删除指定ip所在行的内容   用“arp -s”可以手动在ARP表中指定IP地址与MAC地址的对应,类型为static(静态),此项存在硬盘中,而不是缓存表,计算机重新启动后仍然存在,且遵循静态优于动态的原则,所以这个设置不对,可能导致无法上网.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值