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

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

3天内不再提示

ARP协议原理是什么

汽车电子技术 来源:物联网IoT开发 作者: 杰杰 2023-02-14 10:10 次阅读

引言

从前一篇“网络底层知识讲解”文章中,我们知道计算机中会维护一个ARP缓存表,这个表记录着IP地址与MAC地址的映射关系,我们可以通过在电脑的控制台通过arp -a指令查看一下我们自己计算机的ARP缓存表:

图片

ARP缓存表

那么什么是ARP协议呢?

初识ARP

ARP协议是地址解析协议(Address Resolution Protocol)是通过解析IP地址得到MAC地址的,是一个在网络协议包中极其重要的网络传输协议,它与网卡有着极其密切的关系,在TCP/IP分层结构中,把ARP划分为网络层,为什么呢,因为在网络层看来,源主机与目标主机是通过IP地址进行识别的,而所有的数据传输又依赖网卡底层硬件,即链路层,那么就需要将这些IP地址转换为链路层可以识别的东西,在所有的链路中都有着自己的一套寻址机制,如在以太网中使用MAC地址进行寻址,以标识不同的主机,那么就需要有一个协议将IP地址转换为MAC地址,由此就出现了ARP协议,所有ARP协议在网络层被应用,它是网络层与链路层连接的重要枢纽,每当有一个数据要发送的时候都需要在通过ARP协议IP地址转换成MAC地址,在IP层及其以上的层次看来,他们只标识IP地址,从不跟硬件打交道,就像我一样,我做应用层的工作,而不会去写底层驱动,得专门有个同事将驱动写完给我,我只需要知道他提供的API接口就行了,而我就专心处理我的工作,我相信他能把驱动写好,我只需要直接调用即可。

ARP缓存表

既然已经解释了ARP协议的用途及重要性,那么它是如何工作的?为了实现IP地址MAC地址查询与转换ARP协议引入了ARP缓存表的概念,每台主机或路由器在维护着一个ARP缓存表(ARP table),这个表包含IP地址到MAC地址的映射关系,表中记录了对,我称之为ARP表项,如我们前面那张所展示的一样,他们是主机最近运行时获得关于其他主机的IP地址MAC地址的映射,当需要发送数据的时候,主机就会根据数据报中的目标IP地址信息,然后在ARP缓存表中进行查找对应的MAC地址,最后通过网卡将数据发送出去。ARP缓存表包含一个寿命值(TTL,也称作生存时间),它将记录每个ARP表项的生存时间,生存时间到了就会从缓存表中删除。从一个表项放置到ARP缓存表中开始,一个表项通常的生存时间一般是10分钟吗,当然,这些生存时间是可以任意设置的,我们一般使用默认即可。

一句话总结ARP协议的工作

ARP协议的主要工作就是建立、查询、更新、删除ARP表项。

ARP表项的建立

当主机开机的时候,ARP缓存表肯定是空的,那么怎么一步步建立 ARP表项呢?如果此时想发送数据怎么办呢?因为没有ARP表项,说明就找不到IP地址MAC地址映射关系,这样子也就无法发送数据了。

其实协议栈的实现还是很强大的,如果没有ARP表项,那么主机就会去建立ARP表项

以我们的电脑为例,在开机的时候,我们的电脑肯定是没有ARP表项的(或者应该说只有路由器的ARP表项,因为可能是动态获取IP地址):

图片

7

对于局域网

如果我想向局域网中的某个电脑发送一个数据,那么我的电脑就会从已有的ARP缓存表中寻找这个IP地址对应的物理地址的ARP表项,然后直接将数据写入以太网数据帧中让网卡进行发送即可,而如果没有找到这个IP地址,那么这个数据就没法立即发送,电脑会先在局域网上广播一个ARP请求(目标MAC地址为FF-FF-FF-FF-FF-FF),广播的ARP请求发出后,处于同一局域网内的所有主机都会接收到这个请求,如果目标IP地址与接收到ARP请求的主机自身IP地址吻合就会返回一个ARP应答,告诉请求者(即我的电脑)自身的MAC地址,当我的电脑收到这个ARP应答后,就去建立一个ARP表项,并且重新将数据发送出去。

ARP协议的核心就是对缓存表的操作,发送数据包的时候,查找ARP缓存表以得到对应的MAC地址,在ARP缓存表中的TTL即将过期的时候更新缓存表以保证ARP表项有效,此外ARP协议还需要不断处理来自局域网中其他主机的ARP请求

对于公网

比如我的电脑向访问我的博客:https://jiejietop.cn

因为我的博客主机是处于外网的,那么我的电脑在访问的时候,也是找不到缓存表的,那它只能通过网关,让网关将数据转发到我的博客主机上,即:

图片

8

因为我的电脑与博客主机不在一个网段,电脑查询自己的路由表,知道如果想和博客主机通信则必须通过网关(gateway)来中转,所以会在与网关直连的网卡上请求网关的MAC地址,因为电脑要把发给博客主机的数据先发给网关,当合法以太帧到达网关并且顺利接收,网关会将数据递交给IP层,IP层查询路由表,找到与博客主机直连的接口(假设是直连的,实际上肯定不是直连的),网关会发一个ARP请求到博客主机上,请求它的MAC地址,网关收到应答后将建立新的ARP表项并将开始维护ARP缓存表,然后完成最终的通信。

ARP缓存表的超时处理

ARP是动态处理的,现在总结一下:ARP表项的生存时间是一般为5-10分钟(LwIP中默认是5分钟),而ARP请求的等待时间是5秒钟,当这些时间到达后,就会更新ARP表项,如果在物理链路层无法连通则会删除表项。

因此每个协议栈的实现都必须维护着一个定时器(超时机制)来管理ARP缓存表,在必要的时候更新及删除ARP表项,关于怎么处理的我们就不多追究,有兴趣的可以看LwIP的etharp_tmr()源码。

说点题外话:因为ARP协议是一个动态的协议,很多网络攻击都是利用ARP协议进行的,如ARP欺骗,ARP洪水攻击等等,而且这种攻击是很难防御的,当然也有办法,直接将动态的ARP缓存表设置为静态就行了,但是这就违背了ARP协议动态地址解析特性。

ARP报文

ARP的请求与应答都是依赖ARP报文结构进行的,ARP报文是放在以太网数据帧中进行发送的,下面是ARP报文的格式:

图片

9

当它封装在以太网帧中的格式:

图片

10

在ARP表建立前,主机并不知道目标MAC地址,所以在一开始的时候只能通过广播的方式将ARP请求包发送出去,处于同一局域网的主机都能接收到广播的数据包。所以一开始目标MAC地址FF-FF-FF-FF-FF-FF,而以太网首部的帧类型是有多种,对于ARP数据包来说,其值为0x0806,对于IP数据报来说,其值为0x0800

在ARP首部一开始的2个字节存储的是硬件类型,表示要知道目标网卡的硬件类型,其中,值为1表示以太网地址;接下来还有2字节的协议类型,其中,0x0800表示IP协议,其他还可能是ICMP/IGMP协议等;接下来有1个字节表示硬件地址长度,指出该报文中硬件地址的长度,对于以太网硬件类型,它的值为6;还有1字节的协议地址长度,如果是ARP协议、IP协议等,该值为4;ARP首部最后的op字段用于记录ARP操作的类型,分别是:

  • ARP请求,其值为1。
  • ARP应答,其值为2。
  • RARP请求,其值为3。
  • RARP应答,其值为4。

我们只关心ARP的请求与应答即可,RARP是逆地址解析协议,在这里我们就不用去了解,它在网络中基本已经被淘汰,用于主机在启动的时候获得自己的IP地址。

对于ARP首部后面的四个字段分别是源MAC地址、源IP地址、目标MAC地址、目标IP地址,这些就是比较简单的了。

为了加深理解,我们使用wireshark网络抓包工具形象地讲解报文格式与内容,关于wireshark网络抓包工具的使用方式我就不做过多讲解,网上教程一大把,打开工具,然后抓取电脑网络中的数据包。

图片

11

图片

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

    关注

    0

    文章

    240

    浏览量

    16741
  • ARP协议
    +关注

    关注

    0

    文章

    9

    浏览量

    6875
  • 网络传输协议

    关注

    0

    文章

    5

    浏览量

    5833
收藏 人收藏

    评论

    相关推荐

    关于ARP协议发送与接收, FPGA板子上面与PC端主机通信,出现以下情况怎么办?

    关于ARP协议发送与接收:FPGA板子上面与PC端主机通信,出现以下情况:1:当FPGA板子发送ARP请求时会与PC主机发送ARP请求发送线路冲突2:当FPGA板子发送数据时与PC主机
    发表于 03-26 15:02

    ARP协议攻击及其解决方案

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

    基于ARP协议的非法入网检测与阻止技术研究

    介绍ARP 协议、Windows 系统中ARP 实现,设计了一个非法入网检测及阻止系统。该系统通过ARP 扫描,实时检测非法主机(未知主机)接入内部网络的企图,并通过发送冲突包和其
    发表于 06-11 16:28 15次下载

    基于ARP协议的攻击及其防御方法分析

    ARP 协议欺骗是网络欺骗的行为之一,它使得攻击者可以重定向一个以太网上的IP 数据报以取得目标主机的信任。文章在分析ARP 协议工作原理、安全缺陷、攻击原理和攻击方式的基
    发表于 09-01 16:11 10次下载

    高可用性群集系统ARP协议问题研究

    群集系统常用作高可靠性服务器,应用于关键网络计算领域。但是,由某些型号的计算机构成的群集系统在网络通信方面存在ARP 协议缺陷,当服务进程从主用节点切换到冗余备份结
    发表于 01-27 13:35 5次下载

    ARP协议动态交互仿真系统的设计

    该系统实现了ARP 协议的动态交互仿真,完成了ARP协议整个工作过程的模拟实现,通过动态交互操作,能够让学习者更轻松地学习和掌握ARP
    发表于 03-31 11:07 1974次阅读
    <b class='flag-5'>ARP</b><b class='flag-5'>协议</b>动态交互仿真系统的设计

    ARP协议分析

    ARP,全称Address Resolution Protocol,中文名为地址解析协议,它工作在数据链路层,在本层和硬件接口联系,同时对上层提供服务。IP数据包常通过以太网发送,以太网设备并不识别32位IP地
    发表于 05-14 15:37 0次下载

    51单片机网络通信及ARP协议

    51单片机网络通信及ARP协议
    发表于 08-31 09:07 18次下载
    51单片机网络通信及<b class='flag-5'>ARP</b><b class='flag-5'>协议</b>

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

    地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。那么ARP协议
    发表于 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地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到
    发表于 11-02 16:28 6076次阅读

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

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

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

    arp协议在TCP/IP模型中属于IP层(网络层),在OSI模型中属于链路层。arp协议即地址解析协议,是根据IP地址获取物理地址的一个TC
    发表于 01-11 15:51 3.8w次阅读

    ARP协议在TCP协议栈中的地位

    在上面,我们介绍netdev_receive()函数的时候,已经发现了以太网帧类型主要分两大类型,一种是IP数据帧,另一种是ARP数据帧。
    的头像 发表于 08-17 09:13 615次阅读

    FPGA以太网-ARP协议介绍

    ARP协议是地址解析协议,在网络中有MAC地址和IP地址之分,IP地址可以随着网络拓扑的改变而改变,而MAC地址是不会改变的。
    发表于 07-06 09:23 777次阅读
    FPGA以太网-<b class='flag-5'>ARP</b><b class='flag-5'>协议</b>介绍

    ARP协议的工作流程

    通过ARP协议知道对方的mac地址,已经知道对方ip地址的情况下,不知道mac地址。定义了一个ARP协议来解决这个问题。
    的头像 发表于 07-10 17:29 1592次阅读
    <b class='flag-5'>ARP</b><b class='flag-5'>协议</b>的工作流程