聊一聊 ARP 协议

协议介绍

 

地址解析协议ARP(Address Resolution Protocol)是一种通过解析网络层IP地址来寻找数据链路层MAC地址的网络传输协议。由互联网工程任务组(IETF)在1982年11月发布的RFC 826中描述制定。

 

协议原理

 

下图是以太网帧结构:

 

媒体访问控制地址MAC( Media Access Control Address),也称为局域网地址(LAN Address),以太网地址(Ethernet Address)或硬件地址(Physical Address),是用来唯一标识网络接口的地址。

 

局域网中两台设备进行以太网通讯,必须要知道对方接口的MAC地址。这时即可利用对方(目标)IP发送ARP广播请求帧获得对方(目标)MAC地址。并存入本机对应接口A R P高速缓存的ARP列表中。

 

ARP帧格式如下:

 

协议工作流程

 

局域网中两台主机:

主机A的IP地址为192.168.1.1,MAC地址为0A-11-22-33-44-01

主机B的IP地址为192.168.1.2,MAC地址为0A-11-22-33-44-02

 

以主机A(192.168.1.1)向主机B(192.168.1.2)发送数据为例:


1.当发送数据时,主机A会在自己的ARP缓存表中寻找是否有目标IP地址。如果找到就知道目标MAC地址为(0A-11-22-33-44-02),直接把目标MAC地址写入帧中发送即可。

2.如果在ARP缓存表中没有找到相对应的IP地址,主机A就会在网络上发送一个广播(ARP request),广播帧中目标MAC地址是“FF.FF.FF.FF.FF.FF”,这表示向同一网段内的所有主机发出这样的询问:“192.168.1.2的MAC地址是什么?”

3.网络上其他主机并不响应ARP询问,只有主机B接收到这个帧时,才向主机A做出这样的回应(ARP response):“192.168.1.2的MAC地址是0A-11-22-33-44-02”,此回应为单播方式。这样,主机A就知道主机B的MAC地址,它就可以向主机B发送数据。同时它还更新自己的ARP高速缓存(ARP cache),下次再向主机B发送信息时,直接从ARP缓存表里查找即可。

 

ARP命令

 

Windows中ARP命令用于显示和修改地址解析协议(ARP)缓存中的条目。

 

语法:​​​​​​​

arp [/a [<Inetaddr>] [/n <ifaceaddr>]]arp [/d <Inetaddr> [<ifaceaddr>]]arp [/s <Inetaddr> <Etheraddr> [<ifaceaddr>]]

参数:

参数描述
/a [] [/n ]显示所有接口的当前 arp 缓存表。

若要显示特定 IP 地址的 arp 缓存条目,请将arp /a与Inetaddr参数一起使用,其中Inetaddr是一个 IP 地址。 

若要显示特定接口的 arp 缓存表,请结合 /a参数使用 /n ifaceaddr 参数,其中ifaceaddr是分配给接口的 IP 地址。
/d []删除具有特定 IP 地址的条目,其中Inetaddr是 ip 地址。

若要删除表中特定接口的条目,请使用ifaceaddr参数,其中ifaceaddr是分配给接口的 IP 地址。

若要删除所有条目,请使用星号(*)通配符替代Inetaddr
/s []将一个静态条目添加到 arp 缓存,将 IP 地址Inetaddr解析为物理地址Etheraddr

若要为特定接口将静态 arp 缓存条目添加到表中,请使用ifaceaddr参数,其中ifaceaddr是分配给接口的 IP 地址。

 

说明:

  • Inetaddr和ifaceaddr的 IP 地址以点分隔的十进制表示法表示。Inetaddr为条目IP地址,ifaceaddr为接口IP。

  • Etheraddr的物理地址包含六个用十六进制表示法表示并由连字符分隔的字节(例如,FF-FF-FF-FF-FF-FF)。

  • 用 /s 参数添加的条目是静态的(需要管理员身份操作),不会在 arp 缓存中超时。 如果重启 TCP/IP 协议(如重启主机、禁用网卡),则会删除这些条目。 

 

示例:

显示所有接口的 ARP 缓存表

 

这里,arp -a 不会列出已断开或已禁用的网络接口的ARP缓存。

 

ARP高速缓存

 

为最大限度地减少广播 ARP 请求帧的数量,许多 TCP/IP 堆栈实现都包含一个 ARP 缓存,它是一个记录了最近解析过的 IPv4 地址及其对应的 MAC 地址的表。在发送 ARP 请求帧之前,ARP 将首先检查此缓存。每个接口都有其自己的 ARP 缓存。

 

ARP 缓存条目可以是动态的(基于 ARP 应答),也可以是静态的。静态 ARP 缓存条目是永久性的。动态 ARP 缓存条目拥有与之相关的老化时间,在超过指定的时间后,将从缓存中删除它们。

 

ARP代理

 

当发送主机和目的主机不在同一个局域网中时,即便知道对方的MAC地址,两者也不能直接通信,必须经过路由转发才可以。所以此时,发送主机通过ARP协议获得的将不是目的主机的真实MAC地址,而是一台可以通往局域网外的路由器的MAC地址。此后发送主机发往目的主机的所有帧,都将发往该路由器,通过它向外发送。这种情况称为委托ARP或ARP代理(ARP Proxy)。

 

免费ARP

 

免费ARP(gratuitous ARP),他是指主机发送ARP查询自己的IP地址。通常发生在系统引导期间进行接口配置的时候。

 

两个作用:

  • 一个主机可以通过它来确定其他主机是否设置了相同的I P地址。

  • 如果发送免费A R P的主机正好改变了MAC地址,那么这个分组就可以使其他主机高速缓存中其旧的MAC地址进行相应的更新。如果主机收到某个I P地址的A R P请求,而且它已经在接收者的高速缓存中,那么就要用A R P请求中的发送端MAC地址对高速缓存中相应的内容进行更新。主机接收到任何A R P请求都要完成这个操作( A R P请求是在网上广播的,因此每次发送A R P请求时网络上的所有主机都要这样做)。

 

ARP相关问题

 

下面是西门子SIMATIC自动化系统中两个与ARP有关的问题,可以帮助大家加深对ARP的理解。

 

CP 343/443 修改MAC地址后,使用TCP/IP协议的诊断连接被拒绝

文档类型 常问问题 文档编号 15144693, 文档发布日期 2004年1月30日

https://support.industry.siemens.com/cs/cn/zh/view/15144693

 

在网络中分配了两次的IP地址的识别

文档类型 常问问题 文档编号 14450682, 文档发布日期 2004年1月30日

https://support.industry.siemens.com/cs/cn/zh/view/14450682

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

njrobin

来根Banana~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值