0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ARP地址解析协议简介和基本原理

jf_uPRfTJDa 来源: 移动Labs 2023-12-18 09:49 次阅读

导读

在我们平时发现上不了网的时候,或者刚刚配置好一台电脑的时候,有一个习惯就是ping,对于ping相信读者都比较熟悉,就是给你要ping的地址发送ICMP探测报文,看看这个目的地是否可达。对于网络的分层,读者应该或多或少有所了解,比如数据链路层、网络层、传输层、应用层,IP数据网络层,MAC属于数据链路层,完整的以太报文在网络中传输的时候,是携带MAC地址的,当你去ping某个地址的时候,比如ping 114.114.114.114,你可以知道IP,但你并不知道MAC地址,如何根据目的IP获取到MAC地址呢,这时候ARP就登场了,IP地址通过 ARP,获得MAC地址,有了MAC地址才能在物理网络上传输数据。

作者:尹彬

单位:中国移动智慧家庭运营中心

Part 01ARP简介

ARP,是地址解析协议(Address Resolution Protocol)。其基本功能为根据设备的IP地址来查询对应MAC地址的协议。主机通过ARP查询到MAC地址后,将在ARP缓存表中增加映射表项,即IP地址和MAC地址的映射表项,也就是我们常说的ARP表项。

ARP是一种常见又十分重要的协议,比如网络扫描、内网渗透、局域网流控、流量欺骗等都跟ARP脱不了干系。听上去这么重要的协议,说简单也简单,整个ARP完整交互过程仅需要两个报文搞定,一问一答。但是ARP协议本身也有令人迷惑的地方,由ARP本身延伸出来很多概念,比如动态ARP、静态ARP、免费ARP、代理ARP等等。

在深入到技术原理之前,我们先看下面三句话:

1、知道IP即可

一般情况下,上层应用程序更多关心IP地址而不关心MAC地址,而且我们平时接触更多的也是IP地址,只要知道了IP地址,我们可以通过协议来获取通信所需的MAC地址,完成数据封装,这就是ARP协议的作用。

2、IP--->MAC的映射

ARP(Address Resolution Protocol)即地址解析协议, 用于实现从IP地址到MAC地址的映射,即询问目标IP对应的MAC地址。

3、逐层封装到链路层

网络通信中,主机和主机通信的数据包需要依据OSI模型从上到下进行数据封装,当数据封装完整后,再向外发出。所以在局域网的通信中,不仅需要源目IP地址的封装,也需要源目MAC的封装。

ae33807a-9bf6-11ee-8b88-92fbcf53809c.png

Part 02ARP基本原理

以我们平时最简单的一个ping的流程来切入:

主机A ping主机B为例,ping过程在网络中需要构造ICMP报文,ICMP报文简单来说就是MAC头+IP头+ICMP头,其中,MAC头中包含源MAC、目的MAC地址信息以及以太网协议类型(IPv4协议族的类型值为0x0800)。IP头中主要包含源IP地址、目的IP地址、协议类型(这个协议类型主要指的传输层协议类型,比如UDP是17,TCP是6,ICMP是1)。ICMP头中是一些控制面的信息,比如type代表是ARP请求还是ARP应答等等。

ARP请求和应答的过程如下图所示:

ae4457ba-9bf6-11ee-8b88-92fbcf53809c.png

我们分几个步骤来简单的描述上图中所示的ARP报文协议流程:

为何要发送ARP

当在主机A命令行中敲入ping x.x.x.x(x.x.x.x为主机B的地址)的时候,系统会获取到目的IP(x.x.x.x),源IP(主机A的IP),ping字段代表要发送ICMP报文,要送入ICMP协议栈,所以以太网协议类型0x8000(代表IPv4)和IP头中的协议类型1(代表ICMP)也确定了,所以IP头的信息完整可以构造了,但是没有MAC头信息,所以在协议栈中封装完IP头后,封装MAC头前,主机A根据主机B的IP地址IP2去自己的ARP表中查询主机B的MAC,发现没有,说明要么没有发生过交互(如果发生过一次完整的ARP交互,会记录映射信息),要么就是发生过但是已经老化了(ARP表项每隔一段时间会老化),所以需要发送ARP请求给主机B。

发送的ARP报文是什么样子

ARP请求报文简单来说就是在网络中发送一帧广播报文,目的MAC为全F,内层封装中有自身的IP、MAC信息,以及请求目标的IP地址,同一广播域中的交换机收到全F的广播报文后,会在该广播域内广播。ARP报文格式如图所示:

ae51e6c8-9bf6-11ee-8b88-92fbcf53809c.png

接收者收到之后会怎样

其他主机也会收到该广播报文,但是发现请求的不是自己的地址则不会做出回应,主机B收到之后,发现是请求自己的MAC地址,首先会将发起方(主机A)的IP和MAC的映射关系存入自身的ARP表项(简单来说,ARP请求首先要有自我介绍,然后才是询问),同时构造ARP应答报文发送到网络中。

接收者发送的是什么报文

因为主机A在发送ARP请求的时候,走的是二层转发,二层转发需要MAC地址转发,所以交换机并不知道目的MAC地址该往哪里去,只能在发送端(主机A)发送广播报文,但是当主机B回复ARP应答的时候,已经知道了主机A的MAC地址,所以只需要发送单播报文就可以了,这就是为什么ARP请求是广播报文,ARP应答是单播报文。ARP应答报文如图所示:

ae55be24-9bf6-11ee-8b88-92fbcf53809c.png

当然,如果在第一步,主机A查询自身ARP表项发现能够查到主机B的IP对应的MAC地址时,就不需要再发送ARP请求了,因为已经知道了MAC地址,直接封装二层头,然后发送完整的ICMP报文出去就可以了。

Part 03ARP表项

前面提到过,主机中会存一个IP地址和MAC地址的映射关系表,这就是ARP表项,因为如果每次主机A和主机B通信前都要发送一个广播的ARP请求报文,会极大的增加网络负担。而且同广播域的所有设备都需要接收和处理这个广播的ARP请求报文,也极大的影响了网络中设备的运行效率。

为了解决以上问题,每台主机或设备上都维护着一个高速缓存,这是ARP高效运行的一个关键。在这个高速缓存中,存放主机或设备最近学习到的IP地址到MAC地址的映射关系,即动态ARP表项。主机或设备每次发送报文时,会先在本地高速缓存中查找目的IP地址所对应的MAC地址。如果高速缓存中有对应的MAC地址,主机或设备不会再发送ARP请求报文,而是直接将报文发至这个MAC地址;如果高速缓存中没有对应的MAC地址,主机或设备才会广播发送ARP请求报文,进行ARP地址解析。

前面在ARP基本原理中反复提到过ARP表项,那么前面所说由ARP报文交互流程而学习到的ARP表项称之为动态ARP表项,通过静态配置生成的ARP表项称之为静态ARP表项。静态ARP表项的优点是配置上之后,不需要再发送ARP报文了,可以节省网络开销,缺点是如果对端的信息发生变化,这条表项就失去意义了。

一方面由于高速缓存的容量限制,另一方面为了保证高速缓存中ARP表项的准确性,设备会对动态ARP表项进行老化和更新。

动态ARP表项的老化参数有:老化超时时间、老化探测次数和老化探测模式。设备上动态ARP表项到达老化超时时间后,设备会发送老化探测报文(即ARP请求报文),如果能收到ARP应答报文,则更新该动态ARP表项,本次老化探测结束;如果超过设置的老化探测次数后仍没有收到ARP应答报文,则删除该动态ARP表项,本次老化探测结束。

Part 04静态ARP

前文也提到过静态ARP,这里详细介绍一下静态ARP。静态ARP表项在网络中也有着重要作用,比如某些流程中,不想通过触发ARP报文或者不允许触发ARP报文来学习链路层地址,则可以通过配置静态ARP表项来实现,配置完静态ARP表项之后,当协议栈在需要封装链路层信息的时候,不会发起ARP请求流程,而是直接从ARP表项中拿到对应的MAC地址,封装完成直接发出去。另外静态ARP表项在应对ARP攻击的时候也有重要作用。

静态ARP表项分为长静态ARP表项和短静态ARP表项。

➤ 长静态ARP表项:手动建立IP和MAC间的映射关系,并同时指定该ARP表项所在出接口。长静态ARP表项可以直接用于报文转发。

➤ 短静态ARP表项:手动建立IP和MAC间的映射关系,未同时指定出接口。如果出接口是处于二层模式的以太网接口,短静态ARP表项不能直接用于报文转发。当需要发送报文时,设备会先发送ARP请求报文,如果收到的ARP应答报文中的源IP和源MAC与所配置的IP和MAC相同,则将收到ARP应答报文的接口加入该静态ARP表中,后续设备可直接用该静态ARP表项转发报文。

Part 05结语

ARP协议非常重要并且常用,是数据通信的入门协议,在网络中扮演着十分重要的角色,但就是这么一个关键角色,却十分不安全,因为ARP协议是建立在网络中各个主机相互信任的基础上的,一旦有人利用这份信任,向某一主机发送伪ARP应答数据包,使该主机发送的信息无法到达预期的目的地或者走向错误的目的地,就是所谓的ARP欺骗或者ARP攻击。

ARP欺骗或者攻击可以导致目标主机与网关通信失败,也会让报文更改方向,所有的数据都会流入攻击者的主机中,造成数据外泄,影响安全。

当然,使用一些防范ARP攻击的杀毒软件可以提高一定的安全性,或者可以通过减少过期时间、建立静态ARP表项等手段去提高网络安全性。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 网络协议
    +关注

    关注

    3

    文章

    240

    浏览量

    21371
  • Mac
    Mac
    +关注

    关注

    0

    文章

    1067

    浏览量

    50847
  • ARP
    ARP
    +关注

    关注

    0

    文章

    50

    浏览量

    14651
  • 物理网络
    +关注

    关注

    0

    文章

    2

    浏览量

    6431

原文标题:技术 | 浅析常用网络协议之ARP

文章出处:【微信号:5G通信,微信公众号:5G通信】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    ARP地址解析协议简介

    英文原义:Address Resolution Protocol 中文释义:(RFC-826)地址解析协议 地址解析
    发表于 02-24 08:27

    第23章     RL-TCPnet之地址解析协议ARP

    本帖最后由 lee_st 于 2017-11-16 16:49 编辑 转最新网络教程 本章节为大家讲解ARP(Address Resolution Protocol,地址解析协议
    发表于 11-15 17:37

    ARP协议攻击及其解决方案

    由于ARP协议的设计缺陷,使得ARP协议在使用的过程中存在着盗用IP地址ARP欺骗等严重的安全
    发表于 06-11 10:17 16次下载

    地址解析协议ARP

    地址解析协议ARP 地址解析协议
    发表于 06-09 21:53 1041次阅读
    <b class='flag-5'>地址</b><b class='flag-5'>解析</b><b class='flag-5'>协议</b><b class='flag-5'>ARP</b>

    地址解析协议(ARP),地址解析协议(ARP)是什么意思

    地址解析协议(ARP),地址解析协议(
    发表于 04-06 09:07 1983次阅读

    TCP-IP详解卷2_ARP地址解析协议

    TCP-IP详解卷2 ARP地址解析协议,学习TCP很好的资料。欢迎下载。
    发表于 05-09 14:13 0次下载

    arp协议的作用是什么?arp协议的工作原理介绍

    地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理
    发表于 11-02 16:14 6.3w次阅读
    <b class='flag-5'>arp</b><b class='flag-5'>协议</b>的作用是什么?<b class='flag-5'>arp</b><b class='flag-5'>协议</b>的工作原理介绍

    arp协议的缺点介绍及防范

     地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理
    发表于 11-02 16:28 6080次阅读

    TCP IP协议地址解析协议ARP

    TCP IP协议进级讲座:2,地址解析协议
    的头像 发表于 07-03 06:05 3548次阅读

    ARP是什么意思?ARP是什么协议ARP协议用于什么地方

    ARP是什么意思?ARP是什么协议ARP协议用于什么地方 ARP是什么意思?
    发表于 11-10 18:00 1.8w次阅读

    arp协议属于哪一层_arp协议的主要功能

    arp协议在TCP/IP模型中属于IP层(网络层),在OSI模型中属于链路层。arp协议地址解析
    发表于 01-11 15:51 3.8w次阅读

    ARP协议原理是什么

    ARP协议地址解析协议(`Address Resolution Protocol`)是通过解析
    的头像 发表于 02-14 10:10 1795次阅读
    <b class='flag-5'>ARP</b><b class='flag-5'>协议</b>原理是什么

    FPGA以太网-ARP协议介绍

    ARP协议地址解析协议,在网络中有MAC地址和IP地址
    发表于 07-06 09:23 779次阅读
    FPGA以太网-<b class='flag-5'>ARP</b><b class='flag-5'>协议</b>介绍

    进阶课程-地址解析协议(ARP)

    电子发烧友网站提供《进阶课程-地址解析协议(ARP).pdf》资料免费下载
    发表于 07-31 11:41 0次下载
    进阶课程-<b class='flag-5'>地址</b><b class='flag-5'>解析</b><b class='flag-5'>协议</b>(<b class='flag-5'>ARP</b>)

    一文解析Linux中ARP学习和老化机制

    ARP学习和老化机制在Linux网络通信中起着至关重要的作用。ARP(Address Resolution Protocol)地址解析协议
    发表于 08-04 16:55 923次阅读