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

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

3天内不再提示

基于FPGA的以太网ARP通信测试(一)

CHANBAEK 来源: FPGA Zone 作者: FPGA Zone 2023-11-06 18:20 次阅读

主机与目的主机进行以太网通信,需要知道目的主机的MAC地址(物理地址),以太网ARP通信协议就是用来获取目的主机MAC地址的。

ARP协议

ARP(Address Resolution Protocol),即地址解析协议,是根据IP地址(逻辑地址)获取MAC地址的一种TCP/IP协议。

MAC地址在网络中表示网卡的ID,每个网卡都需要并有且仅有一个MAC地址。源主机知道目的主机的IP地址,却不知道目的主机的MAC地址。而目的主机的MAC地址直接被网卡接收和解析,当解析到目的MAC地址非本地MAC地址时,则直接丢弃该包数据,因此在通信前需要先获得目的的MAC地址。

ARP协议的基本功能就是通过目的设备的IP地址,查询目的设备的MAC地址,以保证通信的顺利进行。

在获取到目的MAC地址之后,将目的MAC地址更新至ARP缓存表中,下次通信时,可以直接从ARP缓存表中获取,而不用重新获取。但ARP缓存表会有过期时间,过期后需要重新通过ARP协议进行获取。

协议格式

ARP协议属于TCP/IP协议簇的一种,位于以太网MAC帧格式的数据段,ARP数据包格式如下图所示。

图片

硬件类型 (Hardware type):硬件地址的类型,1表示以太网;

协议类型 (Protocol type):要映射的协议地址类型,ARP协议的上层协议为IP协议,因此该协议类型为IP协议,其值为0x0800;

硬件地址长度 (Hardware size):硬件地址(MAC地址)的长度,以字节为单位。对于以太网上IP地址的ARP请求或者应答来说,该值为6;

协议地址长度 (Protocol size):IP地址的长度,以字节为单位。对于以太网上IP地址的ARP请求或者应答来说,该值为4;

OP (Opcode):操作码,用于表示该数据包为ARP请求或者ARP应答。1表示ARP请求,2表示ARP应答;

源MAC地址 :发送端的硬件地址;

源IP地址 :发送端的协议(IP)地址;

目的MAC地址 :接收端的硬件地址,在ARP请求时由于不知道接收端MAC地址,因此该字段为广播地址,即48’hff_ff_ff_ff_ff_ff;

目的IP地址 :接收端的协议(IP)地址。

ARP协议分为ARP请求和ARP应答,源主机发起查询目的MAC地址的报文称为ARP请求,目的主机响应源主机并发送包含本地MAC地址的报文称为ARP应答。

ARP请求

当源主机A需要获取目的主机B物理地址时,可以发送一个ARP请求报文,这个报文包含了主机A的MAC地址和IP地址以及主机B的IP地址。

因为主机A不知道主机B的物理地址,所以这个查询分组会在网络层中进行广播,即ARP请求时发送的接收方物理地址为广播地址,用48hff_ff_ff_ff_ff_ff表示。

主机A发起ARP请求,由于发送的目的MAC地址为广播地址,所以此时局域网中的所有主机都会进行接收并处理这个ARP请求报文,然后进行验证,查看接收方的IP地址是不是自己的地址。是则返回ARP应答报文,不是则不响应。

只有验证成功的主机B才会返回一个ARP应答报文,这个应答报文包含主机B的IP地址和物理地址。

ARP应答

主机B利用收到的ARP请求报文中的请求方物理地址,以单播的方式直接发送给主机A,主机A将收到的ARP应答报文中的目的MAC地址解析出来,将目的MAC地址和目的IP地址更新至ARP缓存表中。

当再次和主机A通信时,可以直接从ARP缓存表中获取,而不用重新发起ARP请求报文。

但是ARP缓存表中的表项有过期时间(一般为20分钟),过期之后,需要重新发起ARP请求以获取目的MAC地址。

以太网协议

ARP协议通过以太网进行传输,因此需要满足以太网通信协议所规定的格式。如下图所示,以太网的数据包就是通过对协议的封装来实现数据的传输,即ARP数据位于以太网帧格式的数据段。

图片

28字节的ARP数据位于以太网帧格式的数据段。由于以太网数据段最少为46个字节,而ARP数据包总长度为28个字节,因此在ARP数据段后面需要填充18个字节的数据,以满足以太网传输格式的要求。这个填充的过程称为Padding,填充的数据可以为任意值,但一般为0。

图片

以太网协议具体内容如上图所示,其中:

前导码 (Preamble):为了实现底层数据的正确阐述,物理层使用7个字节同步码(0和1交替(55-55-55-55-55-55-55))实现数据的同步;

帧起始界定符 (SFD,Start Frame Delimiter):使用1个字节的SFD(固定值为0xd5)来表示一帧的开始,即后面紧跟着传输的就是以太网的帧头;

目的MAC地址 :即接收端物理MAC地址,占用6个字节;

源MAC地址 :即发送端物理MAC地址,占用6个字节;

长度/类型 :上图中的长度/类型具有两个意义,当这两个字节的值小于1536(十六进制为 0x0600)时,代表该以太网中数据段的长度;如果这两个字节的值大于1536,则表示该以太网中的数据属于哪个上层协议;

数据 :以太网中的数据段长度最小46个字节,最大1500个字节;

帧检验序列 (FCS,Frame Check Sequence):为了确保数据的正确传输,在数据的尾部加入了4个字节的循环冗余校验码(CRC校验)来检测数据是否传输错误。

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

    关注

    1630

    文章

    21796

    浏览量

    605783
  • 以太网
    +关注

    关注

    40

    文章

    5460

    浏览量

    172610
  • 通信协议
    +关注

    关注

    28

    文章

    911

    浏览量

    40428
  • Mac
    Mac
    +关注

    关注

    0

    文章

    1109

    浏览量

    51663
  • ARP
    ARP
    +关注

    关注

    0

    文章

    50

    浏览量

    14795
收藏 人收藏

    评论

    相关推荐

    基于FPGA以太网ARP通信测试(二)

    本文继续简单介绍下基于FPGA以太网ARP通信,该项目主要用于实现FPGA
    的头像 发表于 11-06 18:26 1425次阅读
    基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>以太网</b><b class='flag-5'>ARP</b><b class='flag-5'>通信</b><b class='flag-5'>测试</b>(二)

    【小梅哥2017力作】详细的FPGA以太网设计教程,76页精华PDF

    ... 3第1章 基于RTL8201的以太网UDP通信测试... 4第2章 以太网MAC层基本原理... 12MII 接口介绍:... 12以太网
    发表于 07-29 23:20

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

    基于AC620开发板上的以太网接口,设计个能够发送ARP帧的FPGA系统。其中以太网包和ARP
    发表于 08-26 12:56

    【正点原子FPGA连载】第二十五章以太网ARP测试实验-领航者ZYNQ之FPGA开发指南

    原子公众号,获取最新资料第二十五章以太网ARP测试实验在以太网中,个主机和另个主机进行
    发表于 09-29 18:15

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

    本 demo 基于 BL706 emac 实现通过以太网发送ARP 裸数据包的例程,通过本例程可以确认 emac 以及 PHY 芯片的配置是否正确。以太网 PHY 芯片这里
    发表于 06-17 17:40

    种基于FPGA以太网高速传输平台

    种基于FPGA以太网高速传输平台,采用DM9000和FPGA芯片,实现100M以太网数据传输
    发表于 02-25 14:45 17次下载

    基于FPGA的万兆以太网接口的设计与实现

    基于FPGA的万兆以太网接口的设计与实现。
    发表于 05-11 09:46 39次下载

    以太网测试专题

    以太网测试专题
    发表于 01-21 12:07 15次下载

    基于FPGA的实时以太网(PowerLink)星载通信技术

    在卫星中使用以太网的目的是为了在获得灵活的通信接入的同时得到高速的通信速率,并且能满足安全关键场合通信对实时性和确定性的要求.、针对国内在空间应用上还未大规模使用
    发表于 01-09 14:20 6次下载
    基于<b class='flag-5'>FPGA</b>的实时<b class='flag-5'>以太网</b>(PowerLink)星载<b class='flag-5'>通信</b>技术

    在工业以太网领域采用FPGA的好处

    您的工厂或者工艺自动化系统需要采用多种工业以太网协议吗?请观看这10分钟的视频,了解怎样采用FPGA来轻松开发工业以太网设计。您将能够:   观看在单片
    的头像 发表于 06-20 14:00 4532次阅读

    以太网 Ping的方式对 MAX10 FPGA 开发套件进行测试

    对MAX10 FPGA 开发套件进行以太网 Ping 测试
    的头像 发表于 06-20 01:00 4959次阅读
    用<b class='flag-5'>以太网</b> Ping的方式对  MAX10 <b class='flag-5'>FPGA</b> 开发套件进行<b class='flag-5'>测试</b>

    FPGA如何为以太网和千兆以太网解决低功耗问题

    探索新的中档 FPGA 如何为以太网和千兆以太网 (GbE) 链路执行桥接功能,同时解决低功耗问题。
    的头像 发表于 05-07 16:54 4159次阅读
    <b class='flag-5'>FPGA</b>如何为<b class='flag-5'>以太网</b>和千兆<b class='flag-5'>以太网</b>解决低功耗问题

    基于FPGA的千兆以太网ARP和UDP的实现

    其他协议报头的数据包(例如IP协议、ARP协议)。以太帧由个32位冗余校验码结尾。它用于检验数据传输是否出现损坏。以太网帧格式如下图所示。 1.前导码和帧开始符是固定的,为7个0x5
    的头像 发表于 02-16 16:35 2656次阅读

    基于FPGA的UDP千兆以太网通信

    本文介绍FPGA开源项目:UDP千兆以太网通信。利用SFP接口,可以通过使用SFP转RJ45模块或者直接使用光纤进行以太网通信
    的头像 发表于 08-31 11:26 4666次阅读
    基于<b class='flag-5'>FPGA</b>的UDP千兆<b class='flag-5'>以太网</b>光<b class='flag-5'>通信</b>

    基于FPGA的UDP RGMII千兆以太网通信方案

    本文介绍FPGA开源项目:UDP RGMII千兆以太网通信。该项目在我之前的工作中主要是用于FPGA和电脑端之间进行图像数据传输。本文简要介绍
    的头像 发表于 09-04 16:49 1768次阅读
    基于<b class='flag-5'>FPGA</b>的UDP RGMII千兆<b class='flag-5'>以太网通信</b>方案