-- TOC --
ARP,Address Resolution Protocol,地址解析协议,用来根据IP地址获得Mac地址。很古老的协议,但在局域网中生命力很强。
局域网的同一网段中,主机通过DHCP获得了IP地址,但是相互通信时,还需要Mac地址才行。ARP协议在这里开发发挥作用,主机广播一个包含目的IP的ARP请求,拥有此IP的主机单播响应这个请求,告知自己的Mac地址。
假设主机A和B在同一个网段,主机A要向主机B发送信息,具体的地址解析过程如下:
ARP报文封装在Ethernet Frame中,结构如下:
Hardware Type: Hardware Type field in the Address Resolution Protocol (ARP) Message specifies the type of hardware used for the local network transmitting the Address Resolution Protocol (ARP) message. Ethernet is the common Hardware Type and the value for Ethernet is 1. The size of this field is 2 bytes.
Protocol Type: Each protocol is assigned a number used in this field. IPv4 is 0x0800.
Hardware Address Length(HLEN): Hardware Address Length in the Address Resolution Protocol (ARP) Message is length in bytes of a hardware (MAC) address. Ethernet MAC addresses are 6 bytes long.
Protocol Address Length(PLEN): Length in bytes of a logical address (IPv4 Address). IPv4 addresses are 4 bytes long.
Operation: 0表示请求广播,1表示应答单播;
网络上的主机都有一个ARP缓存(ARP Cache),ARP缓存用来存放IP地址和MAC地址的关联信息。在发送数据前,设备会先查找ARP缓存表。如果缓存表中存在对方设备的MAC地址,则直接采用该MAC地址来封装帧,然后将帧发送出去。如果缓存表中不存在相应的信息,则通过发送ARP request报文来获得它。学习到的IP地址和MAC地址的映射关系会被放入ARP缓存表中存放一段时间。在有效期内,设备可以直接从这个表中查找目的MAC地址来进行数据封装,而无需进行ARP查询。过了这段有效期,ARP表现会被自动删除。如果目标设备位于其他网络,主机会在ARP缓存表中查找网关的MAC地址,然后将数据发送给网关,网关再把数据转发给目的设备。
ARP表项又分为动态ARP表项和静态ARP表项。动态就是通过广播学习到的,静态就是手动配置的。
动态ARP表项
动态ARP表项由ARP协议通过ARP报文自动生成和维护,可以被老化,可以被新的ARP报文更新,可以被静态ARP表项覆盖。
静态ARP表项
静态ARP表项通过手工配置和维护,不会被老化,不会被动态ARP表项覆盖。直到重新启动计算机为止。
在交换机上配置静态arp,应该是要指定出端口的。主机上的静态arp,可通过ip查出端口。
免费 ARP(Gratuitous ARP)包是一种特殊的ARP请求,它并非期待得到IP对应的 MAC 地址,而是当主机启动的时候,自己主动广播发送一个 Gratuitous ARP请求,即请求自己的IP地址的MAC地址。免费ARP报文与普通ARP请求报文的区别在于报文中的目标IP地址。普通ARP报文中的目标IP地址是其他主机的IP地址;而免费ARP的请求报文中,目标IP地址是自己的IP地址。
免费 ARP 数据包有以下 3 个作用:
ARP欺骗(ARP spoofing),又称ARP毒化(ARP poisoning,网络上多译为ARP病毒)或ARP攻击,是针对ARP协议的一种攻击技术,通过欺骗局域网内访问者PC的网关MAC地址,使访问者PC错以为攻击者更改后的MAC地址是网关的MAC,导致网络不通。此种攻击可让攻击者获取局域网上的数据包甚至可篡改数据包,且可让网络上特定计算机或所有计算机无法正常连线。最早探讨ARP欺骗的文章是由Yuri Volobuev所写的《ARP与ICMP转向游戏》(ARP and ICMP redirection games)。
ARP欺骗的运作原理是由攻击者发送假的ARP数据包到网上,尤其是送到网关上。其目的是要让送至特定的IP地址的流量被错误送到攻击者所取代的地方。因此攻击者可将这些流量另行转送到真正的网关(被动式数据包嗅探,passive sniffing)或是篡改后再转送(中间人攻击,man-in-the-middle attack)。攻击者亦可将ARP数据包导到不存在的MAC地址以达到阻断服务攻击的效果,例如netcut软件。
例如某一的IP地址是192.168.0.254,其MAC地址为00-11-22-33-44-55,网络上的计算机内ARP表会有这一笔ARP记录。攻击者发动攻击时,会大量发出已将192.168.0.254的MAC地址篡改为00-55-44-33-22-11的ARP数据包。那么网络上的计算机若将此伪造的ARP写入自身的ARP表后,计算机若要透过网上网关连到其他计算机时,数据包将被导到00-55-44-33-22-11这个MAC地址,因此攻击者可从此MAC地址截收到数据包,可篡改后再送回真正的网关,或是什么也不做,让其断网。
是不是也可以通过发出ARP报文,把主机系统的arp缓存填满?
Proxy ARP is a technique by which a Layer 3 device can respond to ARP requests for a destination which is not in same network in which sender resides.The Router configured for Proxy ARP can respond to the ARP and map the router’s MAC address with the destination IP address and fool the sending station that it has found its destination.
AT the backend , the proxy router forwards the packets to the correct destination since it has the relevant information.
Reverse-ARP,这是最早的用来实现主机得到IP地址的协议,现在已经没人用了。这种方式需要管理员预先配置和IP和Mac的对应关系。
后来RARP进化成为BOOTP:
再后来,就是DHCP协议了!
本文链接:https://cs.pynote.net/net/eth/202111181/
-- EOF --
-- MORE --