当前位置:   article > 正文

ARP协议报文格式及ARP表简述

arp表

目录

1 ARP协议报文概述

1.1 ARP/RARP报文格式

1.2 ARP报文抓包

1.2.1 arp请求

1.2.2 arp应答

2 ARP映射表

2.1 动态ARP表项

2.2 静态ARP表项

2.3 短静态ARP表项

2.4 长静态ARP表项

3 ARP攻击(mac地址欺骗)


1 ARP协议报文概述

ARP(Address Resolution Protocal,地址解析协议)是将IP地址解析为以太网的MAC地址(或者称为物理地址)的协议。在局域网中,当主机或其他网络设备有数据要发送给另一个主机或设备时,它必须知道对方的网络层地址(即IP地址)。但是仅仅有IP地址还是不够的,因为IP数据报文必须封装成帧才能通过物理网络发送,因为发送站还必须有接收站的物理地址,所以需要一个从IP地址到物理地址的映射。ARP就是实现这个功能的协议。

1.1 ARP/RARP报文格式

ARP是一个独立的三层协议,所以ARP报文在向数据链路层传输时不需要经过IP协议的封装,而是直接生成自己的报文,其中包括ARP报头,到数据链路层后再由对应的数据链路层协议(如以太网协议)进行封装。ARP报文分为ARP请求和ARP应答报文两种,它们的报文格式可以统一为下图所示。
ARP报文格式

  • 硬件类型:占两字节,表示ARP报文可以在哪种类型的网络上传输,值为1时表示为以太网地址。
  • 上层协议类型:占两字节,表示硬件地址要映射的协议地址类型,映射IP地址时的值为0x0800。
  • MAC地址长度:占一字节,标识MAC地址长度,以字节为单位,此处为6。
  • IP协议地址长度:占一字节,标识IP得知长度,以字节为单位,此处为4。
  • 操作类型:占2字节,指定本次ARP报文类型。1 标识ARP请求报文,2 标识ARP应答报文,3 标识RARP请求报文,4 标识RARP应答报文
  • 源MAC地址:占6字节,标识发送设备的硬件地址。
  • 源IP地址:占4字节,标识发送方设备的IP地址。
  • 目的MAC地址:占6字节,表示接收方设备的硬件地址,在请求报文中该字段值全为0,即00-00-00-00-00-00,表示任意地址,因为现在不知道这个MAC地址。
  • 目的IP地址:占4字节,表示接受方的IP地址。

ARP报文不是直接在网络层上发送的,它还是需要向下传输到数据链路层,所以当ARP报文传输到数据链路层之后,需要再次进行封装。以以太网为例,ARP报文传输到以太网数据链路层后会形成ARP帧。ARP帧如下图所示,他就是在ARP报文前面加了一个以太网帧头。
ARP帧格式

以太网帧头的三个字段说明

  • 目的MAC地址:占6字节,如果是ARP请求帧,因为它是一个广播帧,所以要填上广播MAC地址(FF-FF-FF-FF-FF-FF),其目标主机是网络上的所有主机。
  • 源MAC地址:占6字节,这是发送ARP帧的节点MAC地址。
  • 帧类型:占两字节,这里用来标识帧封装的上层协议,因为本帧的数据部分是ARP报文,所以直接用ARP的协议号 0x0806 表示就可以了,而RARP的类型帧为0x8035。

1.2 ARP报文抓包

1.2.1 arp请求

1.2.2 arp应答

2 ARP映射表

无论是主机,还是交换机都会有一个用来缓存同一网段设备IP地址和MAC地址的ARP映射表,用于数据帧的转发。设备通过ARP解析到目的MAC之后,将会在自己的ARP映射表中增加IP地址到MAC地址的映射表,以用于后续到同一目的地数据帧的转发。ARP表项分为动态ARP表项和静态ARP表项。

  1. [root@Node_A ~]# arp
  2. Address HWtype HWaddress Flags Mask Iface
  3. 10.228.90.1 ether 74:4a:a4:0f:07:fc C eth9
  4. 10.228.90.12 ether 00:22:93:75:9c:85 C eth9---|
  5. 1.1.0.3 ether 96:42:4f:e5:e5:31 CM tap0 |
  6. 10.228.90.44 ether 74:85:c4:b0:31:65 C eth9 |
  7. 192.168.1.12 ether 00:22:93:75:9c:85 C eth9---|
  8. [root@Node_A ~]#

注意:arp表以ip地址为单位,当出现外部 pc的一个接口上配置两个 ip 地址时,本端会有两条arp表项,如上所示:192.168.1.12 、10.228.90.12均属同一个网口。

2.1 动态ARP表项

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

2.2 静态ARP表项

静态ARP表项通过手工配置(通过对应设备的IP地址与MAC地址绑定命定进行)和维护。不会被老化,也不会被动态ARP表项覆盖。配置静态ARP表项可以增加通信的安全性,因为静态ARP可以限定和指定IP地址的设备通信时只使用指定的MAC地址(也就是我们通常所说的IP地址和MAC地址的绑定),此时攻击报文无法修改此表项的IP地址和MAC地址的映射关系,从而保护了本设备和指定设备间正常通信。静态ARP表项又分为短静态ARP表项和长静态ARP表项

2.3 短静态ARP表项

在配置短静态ARP表项时,只需要配置IP地址和MAC地址项。如果出接口是三层以太网接口,短静态ARP表项可以直接用于报文转发;如果出接口是VLAN虚接口,短静态ARP表项不能直接用于报文转发,当要发送IP数据包时,先发送ARP请求报文,如果收到的相应报文中的源IP地址和源MAC地址与所配置的IP地址和MAC地址相同,则将接受ARP响应报文的接口加入该静态表项中,之后就可以用于IP数据包的转发了。

2.4 长静态ARP表项

在配置长静态ARP表项时,除了配置IP地址和MAC地址项外,还必须配置该ARP表所对应的VLAN(虚拟局域网)和出接口。也就是长静态ARP表项同事绑定了IP地址、MAC地址、VLAN和端口,可以直接用于报文转发。

3 ARP攻击(mac地址欺骗)

以下转载《ARP原理和ARP***》

ARP--在TCP/IP协议栈中,最不安全的协议莫过于ARP了,我们经常听到的网络扫描,内网渗透,流量欺骗等等,他们基本上都与ARP有关系,甚至可以说,他们的底层都是基于ARP实现的。但是ARP的是实现仅需一问一答的两个包即可,实现上很简单。

新建 Microsoft Visio 绘图 (3).png

我们知道,当PC1对PC2正常通信的时候(先别管攻击者PC3),PC2、PC1会先后建立对方的IP和MAC地址的映射(即建立ARP缓存表),同时对于交换机而言,它也具有记忆功能,会基于源MAC地址建立一个CAM缓存表(记录MAC对应接口的信息),理解为当PC1发送消息至交换机的Port1时,交换机会把源MAC(也就是MAC1)记录下来,添加一条MAC1和Port1的映射,之后交换机可以根据MAC帧的目的MAC进行端口转发,这个时候PC3只是处于监听状态,会把PC1的广播丢弃。

正常的PC3会把广播包丢弃,同样的PC3可以抓住这一环节的漏洞,把不属于自己的广播包接收,同时回应一个虚假的回应包,告诉PC1我就是PC2(IP2-MAC3),这样PC1会收到两个回应包(一个正确的IP2-MAC2,一个虚假的IP2-MAC3),但是PC1并不知道到底哪个是真的,所以PC1会做出判断,并且判断后到达的为真,那么怎么让虚假的回应包后到达呢,PC3可以连续不断的发送这样的回应包,总会把哪个正确的回应包覆盖掉。

而后PC1会建立IP2-MAC3这样一条ARP缓存条目,以后当PC1给PC2发送信息的时候,PC1依据OSI模型从上至下在网络层给数据封装目的IP为IP2的包头,在链路层通过查询ARP缓存表封装目的MAC为MAC3的数据帧,送至交换机,根据查询CAM表,发现MAC3对应的接口为Port3,就这样把信息交付到了PC3,完成了一次ARP攻击。

新建 Microsoft Visio 绘图 (4).png

如果ARP攻击严重话,会导致同一个局域网(也是同一个广播域)的所有主机的ARP缓存表中都存放着错误的IP和MAC的映射,如上图,每台主机的ARP缓存表中,不论哪个IP,都会映射到攻击者的MAC地址MAC1上,这样该局域网内的所有主机的消息都发送到Hacker的主机上。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/723823
推荐阅读
相关标签
  

闽ICP备14008679号