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

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

3天内不再提示

为什么在控制器启动阶段会有ARP报文呢?ARP报文扮演什么角色?

jf_EksNQtU6 来源:开心果 Need Car 2023-11-22 09:29 次阅读

开发以太网的小伙伴,对ARP(Address Resolution Protocol,地址解析协议)已经见怪不怪。在控制器刚启动阶段,总线上会看到一些ARP报文。那么,问题来了,为什么在控制器启动阶段,会有ARP报文呢?ARP报文到底扮演着什么样的角色呢?本文,聊一聊ARP。

1、以太网通信基础

我们知道,以太网是点对点(Point-to-Point)的通信方式。如果两个以太网节点建立通信,发送节点首先需要知道和谁通信。发送节点如何知道和谁通信呢?

答:MAC地址(Media Access Control Address)。MAC地址也称为网卡,每一个网卡分配唯一MAC地址(长度为6 Bytes)。所以,知道目标节点MAC地址,才能知道信息要发给谁。而在整车的网络拓扑中,节点之间的数据交互由交换机(Switch)进行二层转发,示意如下:

cdcb68f6-886b-11ee-939d-92fbcf53809c.png

(一)ARP帧格式

不管何种总线,为了确保信息有效交互,会根据软、硬件层级,设计不同的通信协议。本文关注链路层的以太网帧和网络层的ARP协议,ARP报文封装在以太网帧的数据段传输,如下所示:

cde6d2c6-886b-11ee-939d-92fbcf53809c.png

硬件类型(2 Byte):表示硬件地址类型,eg:以太网为1

协议类型(2 Byte):表示上层协议类型,eg:IPv4为0x0800

硬件地址长度(1Byte):表示硬件地址长度,eg:以太网为6

协议地址长度(1Byte):表示协议地址长度,eg:IPv4为4

操作码(Option,2 Byte):表示ARP请求或响应的操作类型,eg:请求(Request)为1,响应(Replay)为2

源MAC地址(6 Byte):发送ARP请求的主机的MAC地址

源IP地址(4Byte):发送ARP请求的主机的IP地址

目标MAC地址(6Byte):目标主机的MAC地址(在ARP请求中通常为空,即:全0x00)

目标IP地址(4Byte):目标主机的IP地址

通过ARP报文格式可以看出,ARP记录着IP与MAC的对应关系,即:通过IP关联的MAC地址,最终找到通信的目标节点。

而在TCP/IP的分层结构中,ARP属于网络层,因此,网络层的源节点实体、目标节点实体之间通过IP地址识别彼此。但是,ARP报文封装在以太网帧中,依赖以太网链路层传输,而以太网链路层的寻址方式为MAC地址,因此,需要把IP地址转换成MAC地址才能将上层待发送的信息发送给目标节点,所以,这就是ARP出现的意义。

首先,同一局域网内的每个以太网节点,网络层会分配一个或者多个IP,数据链路层固化一个唯一MAC地址,由标识发送节点,如下所示:

cdfca826-886b-11ee-939d-92fbcf53809c.png

其次,通过ARP报文获取目标节点的MAC,形成目标节点的对,进而,每个以太网节点形成一个ARP Table。有了ARP Table以后,发送方在发送数据之前,就可以通过目标节点的IP地址,查找目标节点的MAC地址,进而发送数据。每个节点的ARP Table示意如下:

ce10138e-886b-11ee-939d-92fbcf53809c.png

(二)交换机如何转发

ARP Table形成以后,解决了发送节点知道发送给谁的问题,但是,还有一个问题需要解决:交换机(Switch)如何知道信息转发给谁呢?

:路由表(Route Table),示意如下:

ce405e4a-886b-11ee-939d-92fbcf53809c.png

当交换机某个端口(Port #n)收到以太网帧以后,会通过目标节点的MAC地址查找Route Table,如果找到目标节点端口号,则将信息转发出去,实现路由的目的。同时,也会检查发送节点的MAC地址是否已经缓存,如果Route Table中没有缓存发送节点的MAC,则将发送节点的MAC地址和入口Port缓存到Route Table。

2、ARP通信原理

(一)

控制器初始启动阶段,ARP缓存表为空,即:ARP Table没有目标节点的信息。此时,发送节点发送ARP报文,请求目标节点的MAC地址。注意:目标节点的IP地址已知。请求示意如下:

ce449e1a-886b-11ee-939d-92fbcf53809c.png

发送节点(MCU2)发送的ARP报文信息如下所示:

ce5c1cca-886b-11ee-939d-92fbcf53809c.png

解析:

发送节点发送ARP报文时,会包含发送节点的IP(192.168.0.2)、发送节点MAC(020000:02)、目标节点的IP(192.168.0.1);

由于不知道目标节点的MAC,所以,在ARP报文中,目标节点的MAC地址(上图中的Target Protocol Address)用全0x00表示;

由于发送节点不知道目标节点在哪个位置,所以,发送节点发送ARP请求时,使用广播的方式发送,即:Destination为全0xFF。

(二)

当交换机收到MCU2的ARP请求报文以后,发现:路由表中找不到目标节点的Port(初始阶段为空),于是,交换机向所有端口广播ARP报文(不包含接收端口),同时,缓存MCU2的MAC2和Port2,如下所示:

ce6acab8-886b-11ee-939d-92fbcf53809c.png

(三)

当目标节点(MCU1)收到ARP请求报文以后,发现MAC地址与自身匹配,则接收该ARP报文,同时将发送节点的MAC2缓存下来。MCU1之后给出ARP响应,由于知道了发送节点的MAC地址,所以,MCU1响应ARP报文时,单播发送ARP报文。当交换机收到MCU1的ARP响应以后,发现目标节点是MCU2,而且MCU2的MAC2已经关联Port2,则直接将ARP报文发送给MCU2,同时,交换机缓存。当MCU1接收到MCU2的ARP响应以后,也会缓存。之后,MCU1和MCU2即可正常通信,示意如下:

ce823338-886b-11ee-939d-92fbcf53809c.png

提示:非目标节点收到ARP报文以后,直接丢弃。

响应节点(MCU1)发送的ARP报文信息如下所示:

cea3901e-886b-11ee-939d-92fbcf53809c.png

解析: ARP响应报文属于单播。







审核编辑:刘清

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

    关注

    112

    文章

    16064

    浏览量

    176919
  • 以太网
    +关注

    关注

    40

    文章

    5331

    浏览量

    170666
  • 交换机
    +关注

    关注

    20

    文章

    2606

    浏览量

    99001
  • ARP
    ARP
    +关注

    关注

    0

    文章

    50

    浏览量

    14725
收藏 人收藏

    评论

    相关推荐

    以太网通信基础知识

    开发以太网的小伙伴,对ARP(Address Resolution Protocol,地址解析协议)已经见怪不怪。控制器启动阶段,总线上
    的头像 发表于 11-22 09:29 1490次阅读
    以太网通信基础知识

    STM32F429能否通过设置源地址滤过将非业务主机的arp广播报文滤掉?

    控制器挂在了交换机上,交换机上有极高密度的arp报文造成以太网接收中断无法及时处理。 看手册中有广播帧滤过和单播帧滤过,能否通过设置源地址滤过将非业务主机的arp广播
    发表于 03-19 07:58

    浅谈如何防治ARP病毒

    浅谈如何防治ARP病毒近期, 现一种新的“ARP欺骗”木马病毒互联网上迅速扩散.主要表现为用户频繁断网、IE浏览频繁出错以及一些常用软件出现故障等问题。
    发表于 10-10 15:24

    【AC620 FPGA试用体验】以太网ARP帧发包实例(手动CRC)

    名称为arp_send.qareth_send.v为以太网MAC帧组包逻辑,完成以太网MAC帧的建立和发送。Eth_send_test.v为ARP包组包工具,并调用eth_send完成完整的ARP
    发表于 08-26 12:56

    基于BL706 emac实现通过以太网发送一个ARP裸数据包的例程

    模块上,连接方式如下:接下来需要将 PHY8720 模块的 RJ-45 接口通过标准 5/6 类网线连接到与测试 PC 同一局域网中的路由或者交换机上。构造 ARP 数据包通过查阅 AR
    发表于 06-17 17:40

    掌握LwIP中ARP的实现原理与作用

    设备的存在,这些极大扩展了可用的 IP 地址数量,设备的 MAC 地址与 IP 地址的共同作用下使得更多的设备能连接到网络中。ipv6 拥有极大数量的 IP 地址,同时就没有 ARP 报文,但是
    发表于 06-21 11:44

    ARP报文及其Lwip的实现

    报文,但是会有一个其他类似的功能。  实际使用中,ARP (Address Resolution Protocol)地址解析协议 就起到了沟通 IP 地址与 MAC 地址的作用。 
    发表于 10-19 11:55

    STM32F429能否通过设置源地址滤过将非业务主机的arp广播报文滤掉?

    控制器挂在了交换机上,交换机上有极高密度的arp报文造成以太网接收中断无法及时处理。 看手册中有广播帧滤过和单播帧滤过,能否通过设置源地址滤过将非业务主机的arp广播
    发表于 08-07 06:46

    ARP协议攻击及其解决方案

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

    地址解析协议ARP

    地址解析协议ARP 地址解析协议 ARP 是一种广播协议,主机通过它可以动态地
    发表于 06-09 21:53 1112次阅读
    地址解析协议<b class='flag-5'>ARP</b>

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

    地址解析协议(ARP),地址解析协议(ARP)是什么意思 地址解析协议 (ARP) “地址解析协议 (ARP)”是所需的 TCP/IP 标准,
    发表于 04-06 09:07 2089次阅读

    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'>arp</b>协议的工作原理介绍

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

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

    arp攻击原理_arp攻击怎么解决

    相信绝大数的用户对ARP病毒都不会陌生,如果本机遭受到ARP攻击,电脑数据就会向指定地址传送,一般最为明显的现象就是电脑无故出现断网的情况,并且网络时连时断,会成为扰乱局域网中其它电脑上网的罪魁祸首。那么ARP攻击怎么解决?下面
    的头像 发表于 01-11 16:12 3w次阅读
    <b class='flag-5'>arp</b>攻击原理_<b class='flag-5'>arp</b>攻击怎么解决

    静态 ARP 表项的潜在问题

    计算机网络中,地址解析协议(ARP)将 IP 地址转换为物理地址(MAC 地址),以便在局域网中实现数据的传输。静态 ARP 表项的设置为网络管理员提供了一种手动控制地址映射的方式,
    的头像 发表于 07-29 11:51 294次阅读
    静态 <b class='flag-5'>ARP</b> 表项的潜在问题