计算机网络之ARP

news/2025/4/1 3:32:35/

ARP

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

ARP协议

ARP(Address Resolution Protocol)地址解析协议,目的是实现IP地址到MAC地址的转换。

MAC是真正的电脑的唯一标识符

  • 为什么需要ARP协议呢

    因为在OSI七层模型中,对数据从上到下进行封装发送出去,然后对数据从下到上解包接收,但是上层(网络层)关心的IP地址,下层关心的是MAC地址,这个时候就需要映射IP和MAC。

ARP 简单请求应答

当两台计算机在同一个局域网通信,我们以ping命令为例,该命令使用的ICMP协议

image-20210331214509064

  1. ping IP2

  2. 先在arp缓存表中查询ip2的mac地址

  3. 如果没有就 发个包 我的ip是ip1, 告诉我是谁ip2

    pc2收到后把ip1和mac1的映射加入缓存表中

  4. 然后pc2 收到后 告诉他 我的ip是ip2, mac地址是mac2

    然后pc1 把ip2的mac2的映射加入缓存表中

PC1依据OSI模型①依次从上至下对数据进行封装,包括对ICMP Date加IP包头的封装,但是到了封装MAC地址的时候,②PC1首先查询自己的ARP缓存表,发现没有IP2和他的MAC地址的映射,这个时候MAC数据帧封装失败。我们使用ping命令的时候,是指定PC2的IP2的,计算机是知道目的主机的IP地址,能够完成网络层的数据封装,因为设备通信还需要对方的MAC地址,但是PC1的缓存表里没有,所以在MAC封装的时候填入不了目的MAC地址。

那么PC1为了获取PC2的MAC地址,③PC1要发送询问信息,询问PC2的MAC地址,询问信息包括PC1的IP和MAC地址、PC2的IP地址,这里我们想到一个问题,即使是询问信息,也是需要进行MAC数据帧的封装,那这个询问信息的目的MAC地址填什么呢,规定当目的MAC地址为ff-ff-ff-ff-ff-ff时,就代表这是一个询问信息,也即使后面我要说的广播。

PC2收到这个询问信息后,将这里面的IP1和MAC1(PC1的IP和MAC)添加到本地的ARP缓存表中,然后④PC2发送应答信息,对数据进行IP和MAC的封装,发送给PC1,因为缓存表里已经有PC1的IP和MAC的映射了呢。这个应答信息包含PC2的IP2和MAC2。PC1收到这个应答信息,理所应当的就获取了PC2的MAC地址,并添加到自己的缓存表中。

经过这样交互式的一问一答,PC1和PC2都获得了对方的MAC地址,值得注意的是,目的主机先完成ARP缓存,然后才是源主机完成ARP缓存。之后PC1和PC2就可以真正交流了。

ARP之广播请求单播回应

上图面的图解是不完全的ARP协议,因为在局域网里边不会只有两台主机,这里就要考虑如何在局域网众多主机里获得目的主机的MAC。

image-20210331214547018

和上面的一样,刚开始PC1并不知道PC2的MAC地址,同样需要发送ARP请求,但是这个局域网里主机很多,怎么唯独获取PC2的MAC呢,①我们想到和一群陌生人交流一样,可以挨着询问一遍,这就是我们要说的广播,首先PC1广播发送询问信息(信息和上一张图介绍的一样),在这个普通交换机上连接的设备都会受到这个PC1发送的询问信息。

接下来②需要做的是,所有在这个交换机上的设备需要判断此询问信息,如果各自的IP和要询问的IP不一致,则丢弃,如图PC3、Route均丢弃该询问信息,而对于PC2判断该询问信息发现满足一致的要求,则接受,同样的写入PC1的IP和MAC到自己的ARP映射表中。

最后,③PC2单播发送应答信息给PC1,告诉PC1自己的IP和MAC地址。

ARP数据包信息

ARP数据的详细信息列表如下

Hardware type硬件类型,标识链路层协议
Protocol type协议类型,标识网络层协议
Hardware size硬件地址大小,标识MAC地址长度,这里是6个字节(48bit)
Protocol size协议地址大小,标识IP地址长度,这里是4个字节(32bit)
Opcode操作代码,标识ARP数据包类型,1表示请求,2表示回应
Sender MAC address发送者MAC
Sender IP address发送者IP
Target MAC address目标MAC,此处全0表示在请求
Target IP address目标IP

ARP请求包

image-20210331214620520

ARP应答包

内容格式和上图相似,不过会有目的地址对应的MAC地址,ARP数据包类型字段为2。

ARP攻击/欺骗

image-20210331214650626

我们知道,当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攻击。

image-20210331214705383

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

参考 https://blog.51cto.com/13570193/2083332


http://www.ppmy.cn/news/558966.html

相关文章

【免费ARP】

下面关于免费ARP报文的作用描述错误的是()。 A、A.在VRRP备份组中用来通告主备发生变换 B、B.用于通告一个新的现AC地址:发送方更换网卡,AC地址发生改变,为了能够在AP表项老化前通告所有主机,发送方可以发送…

免费ARP的作用

免费ARP的作用(2010-07-01 06:58:10)转载▼标签: 杂谈 分类: 数据通信技术 免费ARP的作用,目前,免费ARP的作用有两种。第一种就是刚才上面所说的宣告广播的作用,以告诉整个广播域,目前这个IP所对应的MAC地址…

ARP简介

一、ARP协议的基本概念 ARP(Address Resolution Protocol,地址解析协议),其作用是根据IP地址来查找mac地址 二、ARP报文格式 1,ARP报文头的长度固定为28字节 硬件类型:2个字节,用来定义运行AR…

arp相关内容

对之前知识的复习: 对等网 --- 扩大 --- 1,延长传输距离; --- 放大器(中继器) --- 物理层设备 --- 5倍的传输距离 2,增加网络节点数量 --- 星型拓扑 集线器(hub) 1.地址, 2.冲…

计算机网络-MAC IP ARP

MAC地址、IP地址以及ARP协议 MAC地址是以太网的MAC子层所使用的的地址,属于数据链路层 IP地址是TCP/IP体系结构网际层所使用的的地址 ARP协议属于TCP/IP体系结构的网际层,其作用是已知设备所分配到的IP地址,使用ARP协议可以通过该IP地址获…

ARP有关的

1.ARP: 地址解析协议 把已知IP地址,解析成Mac地址 网络通信的基础协议 注:ARP协议分为两种包类型 ARP request 请求包 ARP reply 回应包 2.ARP攻击和欺骗 利用ARP协议的漏洞(无分辨接受任何主机的arp回应包)&#x…

免费ARP

一、免费ARP的定义 Gratuitous ARP也称为免费ARP,无故ARP。Gratuitous ARP不同于一般的ARP请求,它并非期待得到ip对应的mac地址,而是当主机启动的时候,将发送一个Gratuitous arp请求,即请求自己的ip地址的mac地址。(说…

免费ARP(gratuitousARP)

免费ARP的格式 免费ARP报文与普通ARP请求报文的区别在于普通的ARP请求报文,其ARP封装内的“目的IP地址”是其他机器的IP地址,而免费ARP的请求报文,其ARP封装内的“目的IP地址”是其自己的IP地址。免费ARP的封装格式如下图所示: 免…