ARP地址解析协议

Posted EternallEi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ARP地址解析协议相关的知识,希望对你有一定的参考价值。

ARP 是什么?

ARP【Address Resolution Protocol 】 ,即地址解析协议,负责把目的主机的IP 地址解析成目的MAC地址。当发送者 知道目的主机的IP地址之后, 就可以使用这个IP地址去解析对方的MAC地址。

为什么需要ARP?

在发送者给其他的网络设备发送数据的时候, 是以数据帧的形式发送的,数据帧被网卡解析成电信号或者光信号传递到对端。

数据帧是由源MAC地址和目的MAC地址组成的,如果发送者只知道目的主机的IP地址, 不知道目的主机的MAC地址, 就不能把这个数据包转化成数据帧发走,而ARP 协议就是负责地址解析的, 使用目的主机IP地址来解析对方的MAC地址。

如果发送者和接收者在同一个网络内,arp解析的就是接收者的MAC地址。

如果发送者和接收者不在同一个网络内, arp解析的就是这个网络内网关的接口MAC地址。

arp 工作流程

在网络设备中会存在一个ARP缓存表,这个缓存表记录着这个IP 地址和MAC地址的映射关系,可以在设备终端使用arp -a 来查看本地的arp 缓存表的缓存信息。

arp 协议的作用就是形成这个arp缓存表

那么,交换机是如何形成这个缓存表的呢?

设备需要解析一个IP地址时, 会发出一个arp 请求报文的广播帧,2层报文中目的MAC地址为全F ,目的设备在收到ARP请求报文之后,会向源设备发送一个单播帧,该单播帧是一个ARP的应答报文,该应答报文中包含了目的设备的MAC地址。

下面分析一下:

同一个网络内的ARP请求和应答过程如下:

PC 1 只知道PC3 的IP地址是10.1.1.3, 但是不知道PC3的MAC, 现在想获取PC3 的MAC地址:

1、发送者PC1:PC 1 会发送一个广播帧, 源IP和源MAC是PC1, 目的IP是PC3,目的MAC为FF-FF-FF-FF-FF-FF, 这个帧是广播发送的, 该网络内所有主机都会接收到,这个报文的载荷内容是一个ARP请求报文,意思是我的MAC地址是MAC1,我想给10.1.1.3发送数据, 谁是10.1.1.3, 请回复一下我。

2、非目的主机PC2:由于这个广播帧网络内主机都可以收到,PC2 收到这个帧, 提取IP地址, 发现, 它要找的IP地址是10.1.1.3, 我的IP地址是10.1.1.2, 这个数据包不是发给我的, 丢弃, 不回复。

3、 目的主机PC3:PC 3 收到这个广播数据帧后,拆开数据帧, 提取IP地址, 发现和我本地IP地址是一样的, 这个数据包就是发给我的, 然后再拆, 提取报文后, 了解到对方要请求我自己的MAC地址,然后就打包一个ARP的应答报文,源IP和源MAC都是自己的,目的IP和目的MAC是对方的,单播的发送给接收者,这样PC1 就有了PC3的MAC地址。

03

代理ARP

如果这两个主机不在同一个网络内, 被3层设备隔离了, 怎么通信呢?

目的IP地址与本机的IP地址位于不同网络, 由于主机A没有配置网关,所以它将会以广播形式发送ARP Request报文,请求主机B的MAC地址。但是,广播报文无法被路由器转发,所以主机B无法收到主机A的ARP请求报文,当然也就无法应答。

在路由器上启用代理ARP功能,就可以解决这个问题。

启用代理ARP后, 主机A解析网关MAC 地址过程:

1、主机A发送arp 请求网关MAC: 在电脑主机要先配置网关地址,主机A给主机B发送数据,发现是不同网段的数据通信,而我本地是没有这个关于B的ARP映射关系的,就会发送一个arp请求报文,解析网关MAC地址,源IP和源MAC地址都是主机A,目的IP是网关IP地址,目的MAC地址是全0。

2、网关回复自己的MAC 地址:网关收到这个arp请求报文后, 检查目的主机是否可达,可达,就会把自己的MAC地址以arp reply报文回复给主机A,目的主机不可达就不回复。

3:主机A 给主机B 发送数据:主机A收到这个arp应答报文就会把网关MAC和网关的IP地址添加进arp表,A要给主机B发送数据,需要先解析B的MAC地址,发送一个arp请求报文,源IP 和源MAC是A的信息,目的IP地址是B的IP地址,目的MAC是网关MAC。

4:网关收到数据包后的处理:网关收到这样的请求,会查找路由表,如果存在主机B的路由表项,路由器将会使用自己的G0/0/0接口的MAC地址来回应该ARP request。主机A收到ARP reply后,将以路由器的G0/0/0接口MAC地址作为目的MAC地址进行数据转发。

实验:

实验一:配置静态ARP

查看结果:display arp all

命令:[Huawei]arp static 10.1.1.4 AA-BB-CC

实验二 :在交换机S5700配置 代理arp

实验环境:S5700交换机上创建VLAN10 和VLAN20, 把这两个PC放到不同的VLAN, 然后使用vlanif下配置IP 和代理arp功能

拓扑如下:

接下来进行配置:

[SW1]display current-configuration
#
sysname SW1
#
vlan batch 10 20 创建VLAN
interface Vlanif10 进入这个VLAN的网关接口
ip address 10.1.1.254 255.255.255.0
#
interface Vlanif20
ip address 10.1.2.254 255.255.255.0
arp-proxy enable
#
interface GigabitEthernet0/0/1
port link-type access
port default vlan 10
#
interface GigabitEthernet0/0/2
port link-type access
port default vlan 20

查看效果

1, 先不开启arp代理, PC1 ping PC2 , 发现是不通的

2, 分别进入这两个vlanif 接口, 开启代理arp功能

3, 检查效果, 发现 PC 1 和PC2 可以通信了,

4, 接下来进入vlnif 10, 关闭代理arp功能,

在PC1 和PC2 上使用 arp -d 来清理本地缓存的ARP表,检查连通性。

可以发现,关闭arp代理后, 主机就不可以解析到对方的MAC地址表,也就不能完成通信,可以多次验证检验效果。

ARP (地址解析协议)

ARP


地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。地址解析协议是建立在网络中各个主机互相信任的基础上的,网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存;由此攻击者就可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗ARP命令可用于查询本机ARP缓存中IP地址和MAC地址的对应关系、添加或删除静态对应关系等。相关协议有RARP代理ARPNDP用于在IPv6中代替地址解析协议。

ARP命令

 

·arp -a或arp -g
  用于查看高速缓存中的所有项目。-a和-g参数的结果是一样的,多年来-g一直是UNIX平台上用来显示ARP高速缓存中所有项目的选项,而Windows用的是arp -a(-a可被视为all,即全部的意思),但它也可以接受比较传统的-g选项。

  ·arp -a IP
  如果我们有多个网卡,那么使用arp -a加上接口的IP地址,就可以只显示与该接口相关的ARP缓存项目。

  ·arp -s IP 物理地址
  我们可以向ARP高速缓存中人工输入一个静态项目。该项目在计算机引导过程中将保持有效状态,或者在出现错误时,人工配置的物理地址将自动更新该项目。

  ·arp -d IP
  使用本命令能够人工删除一个静态项目。

  例如我们在命令提示符下,我们使用过 Ping 命令测试并验证从这台计算机到 IP 地址为 10.0.0.99 的主机的连通性,然后再键入 Arp -a,则 ARP 缓存显示以下项: 
  Interface:10.0.0.1 on interface --- 0x1
  Internet Address   Physical Address   Type
  10.0.0.99       00-e0-98-00-7c-dc   dynamic

  在此例中,缓存项指出位于 10.0.0.99 的远程主机解析成 00-e0-98-00-7c-dc 的媒体访问控制地址,它是在远程计算机的网卡硬件中分配的。媒体访问控制地址是计算机用于与网络上远程 TCP/IP 主机物理通讯的地址。

  至此我们可以用ipconfig和ping命令来查看自己的网络配置并判断是否正确、可以用netstat查看别人与我们所建立的连接并找出ICQ使用者所隐藏的IP信息、可以用arp查看网卡的MAC地址。

以上是关于ARP地址解析协议的主要内容,如果未能解决你的问题,请参考以下文章

认识ARP协议

计算机网络-----ARP协议

ARP (地址解析协议)

地址解析协议(ARP)

011-通过网络协议解析网络请求-DNS-ARP-TCPIP

第二章ARP——地址解析协议