ARP详解

**

ARP地址解析协议

**

1.ARP简介

地址解析协议(Address Resolution Protocol),其功能十位透过目标设备的IP地址查询目标设备的MAC地址,以保证通信的顺利进行。它是IPV4中网络必不可少的协议,不过在IPV6中不再适用,并被邻居发现协议(NDP)所替代。

2.ARP工作流程

假设主机A和B在同一个网段,主机A向主机B发送信息,具体的地址解析过程。
1.主机A首先查看自己的ARP表,确定其中是否包含有主机B对应的ARP表项。如果找到了对应的MAC地址,则主机A直接利用ARP表中的MAC地址,对IP数据包进行帧封装,并将数据包发送给主机B。
2.如果主机A在ARP表中找不到对应的MAC地址,则将缓存该数据报文,然后以广播方式发送一个ARP请求报文。ARP请求报文中的发送端IP地址和发送端MAC地址为主机A的IP地址和MAC地址,目标IP地址和目标MAC地址为主机B的IP地址和全0的Mac地址。由于ARP请求报文以广播方式发送,该网段上所有主机都可以接收该请求,但只有被请求的主机(主机B)会对该请求进行处理。
3.主机B比较自己的IP地址和ARP请求报文中的目标IP地址,当两者相同时会进行如下处理:将ARP请求报文中的发送端(主机A)的IP地址和MAC地址存入自己的ARP表中。之后以单播方式发送ARP响应报文给主机A,其中包含了自己的MAC地址。
4.主机收到ARP响应报文后,将主机B的MAC地址加入到自己的ARP表中以用来后续豹纹的转发,同时将IP数据包进行封装发送出去。

3.ARP报文格式

ARP详解_第1张图片

字段1:ARP请求的目标以太网地址,全1代表广播地址(FF-FF-FF-FF-FF-FF),其目标主机是网络上的所有主机。
字段2:发送ARP帧的节点MAC地址
字段3:占两字节,这里用来标识帧封装的上层协议,因为本帧的数据部分是ARP报文,所以直接用ARP的协议号0x0806表示就可以了。
字段4:表示硬件地址的类型,硬件地址不只有以太网类型,是以太网类型时 值为1.
字段5表示要映射的协议地址的类型,要对IPv4地址进行映射,此时的值为0x800
字段6,7:表示硬件地址长度和协议地址长度,MAC地址占6字节,IP占4字节
字段8:操作类型字段,值为1,表示进行ARP请求;值为2,表示进行ARP应答,值为3,表示进行RARP请求;值为4表示进行RARP应答。
字段9:发送设备的硬件地址,这里是以太网地址和字段2相同
字段10:发送设备的IP地址
字段11:目标端的MAC地址在请求报文中该字段全为0,表示任意地址
字段12:表示接受方的IP地址
说明:ARP是不能直接在网络层进行传输的,他需要向下传输到数据链路层,所以当ARP报文传输到数据链路层之后,需要进行再次封装。以以太网为例,ARP报文传输到以太网数据链路层后会形成ARP帧。ARP帧就是在ARP报文上加一个以太网头部。

4.wireshark抓包分析

1.图中红框圈出的为一对ARP请求和应答
ARP详解_第2张图片

2.ARP请求报文
ARP详解_第3张图片

3.ARP应答报文
ARP详解_第4张图片在这里插入图片描述

5.ARP表

1.ARP表

ARP详解_第5张图片

设备通过ARP解析到目标的MAC地址后,将会在自己的ARP表中增加IP地址到MAC地址的映射表项,以用于后续到统一目的地报文的转发。

2.动态ARP表

动态ARP表项由ARP协议通过ARP报文自动生成和维护,可以被老化,可以被新的ARP报文更新,可以被静态ARP表项覆盖。当到达老化时间、接口down时会删除相应的动态ARP表项。

3.静态ARP表

静态ARP表项通过手工配置和维护,不会被老化,不会被动态ARP表项覆盖。
配置静态ARP表项可以增加通信的安全性。静态ARP表项可以限制和指定IP地址的设备通信时只使用指定的MAC地址,此时攻击报文无法修改此表项的IP地址和MAC地址的映射关系,从而保护了本设备和指定设备间的正常通信。

6.ARP类型

1.正向ARP(普通ARP)(AARP)

功能:通过IP地址获取对端的MAC地址。
工作过程:网络设备A发送数据包给网络设备B,数据包需要填写A、B的源目ip地址和源目MAC地址,这时候会在本地的ARP缓存表查询B的MAC地址,查询不到的话就会发ARP请求包以广播的形式在局域网中散开,B收到并核实目的IP地址是本地的IP地址就会以单播方式发送ARP回应包给A,ARP回应包记录了B的MAC地址。

2.反向ARP(RARP)

功能介绍:已知对端的MAC地址,通过二层单播、三层广播来 获取对端的IP地址。

3.代理ARP

• 功能介绍:路由器收到ARP request时,发现源目ip不在相同网段,就会饰演代理ARP角色,代为回答,告诉查询者它想要的MAC地址。
• 跨网段查询MAC地址方法:主机设置了默认网关,当查询的对象在局域网外时,将查询任务交给网关。
• 代理ARP过程:网段A的设备广播ARP request包,源MAC写自己的MAC地址,目的MAC写FFFF.FFFF.FFFF,网关收到后返回接口的MAC地址,A收到网关返回的ARP reply包后更新自己的ARP缓存表,于是A发出去的包都要通过网关路由器转发,网关路由器再在从网段B中广播得到B的MAC地址。

4.无故ARP(免费ARP)

功能介绍:查询想使用的ip地址是否在局域网中已被占用。
报文介绍:源目ip都是写本机的ip,源MAC写本机的MAC,目的MAC写广播地址。
用途:

  1. 确定设备的ip是否与其他设备ip冲突,当其他设备接收到免费ARP时,就会核对是否与本机 ip冲突,如果冲突了就会返回一个arp应答包告知ip地址已被占用。
  2. 设备改变物理地址时,可以通过免费arp报文通知其他设备更新arp表项。
5.逆向ARP(IARP)

功能介绍:通过物理地址获得ip地址
一般存在于帧中继网络中,用于实现IP和DLCI地址的映射。

7.ARP攻击

ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的进行。基于ARP协议的这一工作特性,黑客向对方计算机不断发送和有欺骗性质的ARP数据包,数据包内包含有与当前设备重复的MAC地址,使对方在回应报文时,由于简单的地址重复错误而导致不能进行正常的通信。
一般情况,收到ARP攻击的计算机会出现两种现象:
1.不断弹出“本机的XXX端硬件地址与网络中的XXX段地址冲突”的对话框
2.计算机不能正常上网,出现网络中断的症状。
因为这种攻击是利用ARP请求报文进行欺骗的,所以防火墙会误以为是正常的请求数据包,不予拦截。因此普通的防火请很难抵挡这种攻击。

(本文是收集各大博主的,主要为了学习交流)

你可能感兴趣的:(网络,网络)