ARP地址解析协议分析

版权声明:<--本博客所有内容均为个人在学习工作中的总结、摘录等-- --转载请注明出处-- --如有侵权请联系删除--> https://blog.csdn.net/qq_42196196/article/details/83625615

地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址。

封包格式及各字段分析

ARP封包格式:

各字段分析:

  • DST:占36位 MAC帧头部,目的MAC地址。
  • SRC:占36位 MAC帧头部,源MAC地址。
  • 长度或类型:占16位 对于ARP (请求或应答), 2字节的长度或类型字段必须为0x0806 。
  • 硬件类型:占16位 表示硬件地址的类型,值为1即表示以太网地址,也就是MAC地址。
  • 协议类型:占16位 表示要映射的协议地址类型,值为0x0800即表示IP地址,因为是在IP协议的基础上进行分析的(即网络层逻辑地址为IP地址),所以所抓到的包的该字段类型都为0x0800。
  • 硬件地址长度:占8位 指出硬件地址的长度,单位为字节,因为是针对的是以太网,而以太网地址为MAC地址,占48位,即6字节,所以后面抓到的包中该字段的值都为6,不再作特别说明。
  • 协议地址长度:占8位 指出三层逻辑地址的长度,单位为字节,因为是针对的是以太网地址和IP地址的映射,而IP地址占32位,即6字节,所以后面抓到的包中该字段的值都为4,不再作特别说明。
  • 操作字段Op:指出操作类型,对应的值如下:ARP请求:1、ARP响应:2、RARP请求:3、RARP响应:4。RARP现在已经很少使用了。
  • 发送端以太网地址:占48位 准确上说是“发送端硬件地址”。
  • 发送端IP地址:占32位 准确上说是“发送端网络层逻辑地址”。
  • 目的以太网地址:占48位 。
  • 目的IP地址:占32位 。
  • FCS:帧校验序列。源节点发送数据帧时,由帧的帧头和数据部分计算得出FCS,目的节点接收到后,用同样的方式再计算一遍FCS,将计算得到的FCS与数据包中的FCS比对,如果FCS比对结果相同,则认为数据顺利传输,接受该帧。否则,则认为帧在传输过程中发生了错误,从而选择丢弃该帧。

数据包分析

还原主机向网关请求硬件地址的一个过程,以此对ARP报文进行分析

抓包:需要先清除arp缓存,使本机请求物理地址,得以抓取到请求包和响应包。

Dos控制台下:
>arp -d      //清空arp缓存
>arp -a      //查看arp缓存

分析:使用科来网络分析系统,分析数据包请求包和响应包

  • request:

  • response:

为了形象的描述这次会话,可以这样理解
本机(广播请求包):Who has 10.6.65.10?Tell 10.6.65.120
网关(定点发送响应包):10.6.65.10 is at 58:6A:B1:71:08:C6

其他相关

ARP缓存超时:
        超时通常与ARP缓存中的每个条目相关(我们在后面将会看到, arp命令允许管理员设置缓存条目永远不超时)。在大多数实现中,完整条目的超时为20分钟,而不完整条目的 超时为3分钟。
代理ARP :
        代理ARP使一个系统(通常是一台专门配置的路由器)可回答不同主机的ARP请求。它使ARP请求的发送者认为做出响应的系统就是目的主机,但实际上目的主机 可能在其他地方(或不存在)。
免费ARP:它发生在一台主机发送ARP请求以寻找自己的地 址时。它通常出现在启动时,当接口被配置为“上行”时常这样做。免费ARP需要达 到两个目标:
        1.允许一台主机确定另一台主机是否配置相同的IPv4地址。发送免费ARP的主机并不 期望它的请求获得应答。但是,如果它接收到一个应答,通常显示的是错误消息“从以太网 地址⋯⋯发送的重复IP地址”。这是对系统管理员和用户的警告,在同一广播域(例如局域 圃 网或vLAN)中有一个系统配置出错。
        2.如果发送免费ARP的主机已改变硬件地址(关闭主机或替换接口卡,然后重新启动 主机),该帧导致任何接收广播并且其缓存中有该条目的其他主机,将该条目中的旧硬件地址更新为与该帧一致。如前面所述,如果一台主机接收到一个ARP请求,该请求来自一个 已存在接收方缓存中的IPv4地址,则缓存条目更新为ARP请求中发送方的硬件地址。这由接收到ARP请求的主机完成,免费ARP正好利用这个特性。
IPv4地址冲突检测(ACD):
        ACD定义了ARP探测分组和ARP通告分组。ARP探测分组是一个ARP请求分组,其中发送方协议(IPv4 )地址字段被设置为0。探测分组用于查看一个候选IPv4地址是否被广播域中的任何其他系统所使用。通过将发送方协议地址字段设置为0,避免候选IPv4地址被另一台主机使用时的缓存污染,这是它与免费ARP工作方式的一个差别。ARP通告与ARP探测相同,除了其发送方协议地址和目的协议地址字段被填充为候选IPv4地址外。它用于通告发送方使用侯选IPv4地址的意图。 
       为了执行ACD,当一个接口被启用或从睡眠中唤醒,或一个新链路建立(例如,当一个新的无线网络关联建立)时,这台主机发送一个ARP探测分组。在发送3个探测分组之前, 首先需要等待一个随机时间(范围为0 - 1秒,均匀分布)。当多个系统同时启用时,通过延迟来避免启用带来的拥塞,否则都立即执行ACD,这将导致网络流量激增。探测分组之间存在一个随机的时间间距,大约1 - 2秒的延迟(均匀分布)。 
        当请求站发送自已的探测时,它可能接收到ARP请求或应答。对其探测的应答表明其他站已使用候选IP地址。从不同系统发送的请求,其目的协议地址字段中包含相同的候选 IPv4地址,表明其他系统也在同时尝试获得候选IPv4地址。在这两种情况下,该系统将会显示一个地址冲突消息,并采用其他可选地址。例如,当使用DHCP分配地址时,这是推荐的行为。[ RFC5227]对尝试获得地址设置了10次的冲突限制,在请求的主机 进人限速阶段之前,它被允许每60秒执行一次ACD,直至成功。 
使用ARP设置一台嵌入式设备的IPv4地址:
       
随着越来越多的嵌人式设备与以太网、TCP/IP协议兼容,那些无法直接输人网络配置信息的联网设备越来越普遍(例如,它们没有键盘,难以输人自已使用的IP地址)。这些设备通常采用以下两种方式之一配置:一种是使用DHCP自动分配地址和其他信息 ; 另一种是使用ARP设置IPv4地址。
      通过ARP为嵌入式设备配置IPv4地址不是协议的初衷,这是由于它不是完全自动的。
它的基本思路是为设备手动建立一个ARP映射(使用arp -s命令),然后向这个地址发送一 个IP分组。由于相应ARP条目已存在,因此不会产生ARP请求/应答。相反,硬件地址可 以立即使用。当然,设备的以太网(MAC)地址必须已知。它通常印在设备上,有时兼作制 造商的设备序列号。当设备接收到一个目标为自身硬件地址的分组时,这个数据报包含的目 的地址用于指定其初始IPv4地址。此后,这台设备可用其他方式(例如通过一个嵌人式Web 服务器)完成配置。
与ARP相关的攻击:
ARP劫持,利用ARP制造广播风暴等,不再赘述。

总结

        ARP是TCP/IP实现中的一个基本协议,但它通常在应用程序或用户没有察觉的情况下运行。ARP用于确定本地可达的IPv4子网使用的IPv4地址对应的硬件地址。它在数据报的目的地与发送方处于同一子网时使用,还用于数据报的目的地不在当前子网时将其转发到一台路由器。ARP缓存是其运行的基础,我们可使用ap命令查看和处理缓存。缓存中每个条目都有一个计时器,用于清除不完整的条目和完整的条目。arp命令可显示和修改ARP缓存中的条目。
       我们深入了解特殊ARP的正常运行:代理ARP(一台路由器回答主机通过另一台路由器接口访问的ARP请求)和免费ARP (发送自已拥有的IP地址的ARP请求,通常用于引导)。我们还讨论了IPv4地址冲突检测,采用一种持续运行的类似免费ARP的交换,来避免在同一广播域中地址重复。最后,我们讨论了一系列涉及ARP的攻击。如果高层协议没有强大的安全措施,这可能会导致高层协议出现问题。

猜你喜欢

转载自blog.csdn.net/qq_42196196/article/details/83625615