以太网帧格式及ARP协议简介

  在以太网中,一个主机和另一个主机进行通信,必须要知道目的主机的MAC地址(物理地址),只要知道目的主机的IP地址,就可以通过ARP协议获取目的主机的MAC地址。

1、ARP协议简介

  ARP(Address Resolution Protocol),即地址解析协议,是根据IP地址(逻辑地址)获取MAC地址的一种TCP/IP协议。在以太网通信中,数据是以“帧”的格式进行传输的,帧格式里面包含目的主机的MAC地址。

  源主机的应用程序知道目的主机的IP地址,却不知道目的主机的MAC地址。而目的主机的MAC地址直接被网卡接收和解析,当解析到目的MAC地址非本地MAC地址时,则直接丢弃该包数据,因此在通信前需要先获得目的MAC地址,而ARP协议正是实现了此功能。

  下图是OSI七层网络模型,ARP处于第二层,ICMP处于第三层,UDP协议处于第四层。

在这里插入图片描述

图1 OSI七层模型

  ARP协议的基本功能是通过目的主机IP地址,获取目的主机的MAC地址,以保证通信的顺利进行。MAC地址在网络中表示网卡的ID,每个网卡都需要并有且仅有一个MAC地址。在获取到目的MAC地址之后,将目的MAC地址更新至ARP缓存表中,称为ARP映射。下次通信时,可以直接从ARP缓存表中获取,而不用重新通过ARP获取MAC地址。但一般ARP缓存表会有过期时间,过期后需要重新通过ARP协议进行获取。

  ARP映射是指将IP地址和MAC地址映射起来,分为静态映射和动态映射。

  静态映射指手动创建一张ARP表,把IP地址和MAC地址关联起来。手动绑定之后,源主机在通信之前,可以从ARP表中找到IP地址对应的MAC地址。但存在局限性,因为MAC地址可能会变化,比如:主机可能更换NIC(网络适配器),改变物理地址;要避免类似问题出现,必须定期维护更新ARP表,会比较麻烦且影响网络性能。

  动态映射指使用ARP协议来获取相对应的物理地址,此过程是自动完成的,故被称为动态映射。已经设计出用于实现动态映射协议的有ARP和RARP(逆地址解析协议)两种,ARP把IP地址映射为物理地址,RARP把物理地址映射为IP地址。RARP应用较少。

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

  当主机需要找出这个网络中的另一个主机的物理地址时,它就可以发送一个ARP请求报文,ARP请求报文包含了发送方的MAC地址和IP地址以及接收方的IP地址。因为不知道接收方的物理地址,用48’hff_ff_ff_ff_ff_ff 表示,称为广播地址。ARP请求如下图所示:
在这里插入图片描述

图2 ARP请求示意图

  上图中ARP发送的是广播地址,所以该局域网内的所有电脑都会接收到该协议并且解析。将解析出的IP地址与自身IP地址对比,如果一致,就会把自身的IP和MAC地址打包,通过ARP应答格式回复主机A。如果不是自身IP地址,则不做任何处理。

  主机B的IP地址是192.168.133.140,因此主机B会通过ARP应答将自身的IP地址和MAC发送给主机B,如下图所示。由于主机B可以从主机A发送的ARP请求中获取主机A的IP地址和MAC地址,所以主机B发出的ARP应答是单播数据包,只有主机A会接收到。
在这里插入图片描述

图3 ARP应答示意图

  主机A解析收到的ARP应答报文中的目的MAC地址,将目的MAC地址和目的IP地址更新至ARP缓存表中。当再次和主机B通信时,直接从ARP缓存表中获取主机B的IP地址和MAC地址,就不用重新发起ARP请求报文。ARP缓存表中的数据有过期时间(一般为20分钟),过期之后需要重新发起ARP请求以获取目的MAC地址。

2、以太网帧格式

  ARP协议通过以太网传输,就必须按照以太网规定的格式进行传输,本节讲解以太网的帧格式。

  下图就是以太网传输一帧数据的格式,即以太网帧格式,主要分为前导码、帧起始符、以太网帧头、以太网数据、CRC校验五个部分。

在这里插入图片描述

图4 以太网帧格式

  前导码(Preamble):7个字节的8’h55,也就是0、1交替出现,标志开始传输数据。

  帧起始符(SFD,Start Frame Delimiter):1个字节8‘hd5表示一帧数据的开始。

  14个字节的以太网帧头包括6个字节的目的MAC地址,6个字节的源MAC地址,2个字节的长度或者协议类型。

  目的MAC地址: 占用6个字节。MAC地址分为单播地址、组播地址和广播地址。单播地址:第一个字节的最低位为0,比如00-00-00-11-11-11,表示唯一的设备;组播地址:第一个字节的最低位为1,比如01-00-00-11-11-11,表示同属一组的多个设备;广播地址为FF-FF-FF-FF-FF-FF,表示同一网段中的所有设备。 在ARP请求时,一般使用广播地址,因为源主机不知道目的主机的MAC地址。而ARP应答时,一般使用单播,因为源主机可以通过目的主机发送的ARP请求解析出目的主机的MAC地址。

  主机对以太网的帧数据解析时,首先就会解析以太网帧头的目的MAC地址,如果该MAC地址为广播地址或者与自身的MAC地址一致,则继续解析该数据包,否则舍弃该数据包,不在往下解析。

  源MAC地址:表示发送端的物理地址,占用6字节。

  长度/类型:当这两个数据小于1536时,表示以太网数据段的长度,也就是以太网数据段有多少个字节的数据。如果这两个字节的值大于1536,表示该以太网中的数据属于哪个上层协议, 例如0x0800代表IP协议、0x0806 代表ARP协议等。

  数据段:以太网中的数据段长度最小46个字节,最大1500个字节。考虑多个计算机的数据帧排队等待时间、网络I/O控制器缓存区资源以及网络最大的承载能力等各种因素决定数据段传输的字节不能太大。

  上层协议全部包含在以太网的数据段之中,包括后文的ARP协议、ICMP协议、UDP协议等等。

  帧检验序列(FCS,Frame Check Sequence):为确保正确传输数据,在数据的尾部加入4 字节的循环冗余校验码(CRC校验)来检测数据是否传输错误。CRC数据校验从以太网帧头开始,不包含前导码和帧起始界定符。 在网络通信系统中应用最广泛的是CRC-32标准。

  网络设备和组件在接收一帧之后,需要短暂的时间来恢复并为接收下一帧做准备的时间,这段时间被称为帧间隙(IFG,Interpacket Gap)。IFG的最小值是96 bit time,也就是传输96字节所需要的时间,具体时间长度根据PHY的时钟周期有关。

3、ARP协议

  前文对以太网帧格式进行了讲解,本小节对ARP协议的格式进行讲解,下图是以太网ARP数据包的格式,由图可知ARP存在于以太网数据包的数据段。ARP数据长度固定为28字节,由于以太网每次最少传输46字节数据,所以需要填充18字节的0,这18字节的0也要进行CRC校验。

在这里插入图片描述

图5 ARP数据包格式

  如果数据端是ARP数据,那么以太网帧头的最后两字节必须是0x0806,表示后续的是ARP协议数据包。

  下图是28字节ARP数据包的构成,包括2字节的硬件类型、2字节的协议类型、1字节的硬件地址(MAC地址)长度、1字节的协议地址(IP协议地址)长度,6字节的源MAC和目的MAC地址,4字节的源IP和目的IP地址。

在这里插入图片描述

图6 ARP数据报构成

  硬件类型(Hardware type):为1表示以太网地址。

  协议类型(Protocol type): ARP协议的上层协议为IP协议,值为0x0800。

  硬件地址长度(Hardware size):MAC地址的长度,以字节为单位,该值为6。

  协议地址长度(Protocol size):IP地址的长度,以字节为单位,该值为4。

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

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

  源IP地址:发送端的协议(IP)地址,如 192.168.1.102。

  目的MAC地址:接收端的硬件地址,在ARP请求时由于不知道接收端MAC地址,理论上该字段为广播地址,即48’hff_ff_ff_ff_ff_ff。但实际上通过ILA抓取ARP请求数据可知,该地址为0,可能是目的主机不会解析该数据吧,具体值是多少也就无所谓了。

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

  对以太网帧格式和ARP数据格式的讲解就到这里了,下图是整合两者得到的ARP数据包格式。

在这里插入图片描述

图7 ARP数据包格式

4、总结

  本文对以太网帧格式、ARP数据格式做了简要讲解,为后文FPGA实现ARP协议的解析和发送做基础,其实ICMP、UDP协议原理也都大体类似,稍微复杂一点。

  解析ARP数据包,首先需要根据目的MAC地址,确认该数据包是不是发送给开发板的,如果是则继续解析,不是则丢弃。然后根据长度/类型,判断该数据包是否为ARP数据包,如果是则继续解析。

  ARP数据段主要注意OP编码,确定接收到的是ARP请求还是ARP应答。然后解析出源主机的MAC地址和源主机的IP地址,作为后续ARP应答的目的MAC地址和目的IP地址。最后对接收到的数据进行CRC校验,确认接收数据无误。

  如果接收到ARP请求,则应该向源主机发送ARP应答数据包,将开发板的MAC地址和IP地址发送给源主机,便于后续通信。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/369276.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024年【熔化焊接与热切割】考试题及熔化焊接与热切割操作证考试

题库来源:安全生产模拟考试一点通公众号小程序 熔化焊接与热切割考试题根据新熔化焊接与热切割考试大纲要求,安全生产模拟考试一点通将熔化焊接与热切割模拟考试试题进行汇编,组成一套熔化焊接与热切割全真模拟考试试题,学员可通…

京东广告算法架构体系建设--高性能计算方案最佳实践 | 京东零售广告技术团队

1、前言 推荐领域算法模型的在线推理是一个对高并发、高实时有较强要求的场景。算法最初是基于Wide & Deep相对简单的网络结构进行建模,容易满足高实时、高并发的推理性能要求。但随着广告模型效果优化进入深水区,基于Transformer用户行为序列和Att…

网络原理TCP/IP(3)

文章目录 滑动窗口流量控制拥塞控制延迟应答捎带应答 滑动窗口 确认应答策略,对每⼀个发送的数据段,都要给⼀个ACK确认应答.收到ACK后再发送下⼀个数据段.这样做有⼀个比较大的缺点,就是性能较差.尤其是数据往返的时间较长的时候. 为了解决低效率传输,引入了滑动窗…

镜舟科技客户成功团队负责人孟庆欢:湖仓一体将成为数据架构的新范式

大数据产业创新服务媒体 ——聚焦数据 改变商业 随着数字化的概念逐步深入不同领域企业的运营中,业务形态和数字化路径也越来越丰富。这也为企业数据处理、储存的方式提出了更多要求。对于企业,尤其是数据驱动型企业来说,需要强大的解决方案…

STM32F407 CAN 静默回环模式 配置

CAN 静默回环模式 【 Silent_LoopBack】 自发自收,这种方式作“热自检”使用,即自我检查,不干扰总线,也不受总线干扰. 发送:发出的数据,只会传输到自己的输入端,不会影响总线.接收&#x…

隐写术:隐藏信息的秘密艺术

一、引言 隐写术,这个充满神秘色彩的词汇,似乎让我们回到了间谍和秘密特工的时代。但实际上,隐写术在现代社会仍然有着广泛的应用,例如在军事、情报、商业等领域。本文将带你走进隐写术的世界,探索它的原理、应用和防…

Vue3+TS+Vite+Pinia学习总结

VUE3介绍 vue2和vue3之间的区别 因为需要遍历data对象上所有属性,所以如果data对象属性结构嵌套很深,就会存在性能问题。因为需要遍历属性,所有需要提前知道对象上有哪些属性,才能将其转化为getter和setter,所以vue2中无法将data新…

物流平台架构设计与实践

随着电商行业的迅猛发展,物流行业也得到了极大的发展。从最初的传统物流到现在的智慧物流,物流技术和模式也在不断的更新与升级。物流平台作为连接电商和物流的重要媒介,其架构设计和实践显得尤为重要。 一、物流平台架构设计 1. 前端架构设…

Selenium处理Alert弹窗

页面弹窗有 3 种类型: alert(警告信息) confirm(确认信息) prompt(提示输入) 对于页面出现的 alert 弹窗,Selenium 提供如下方法: 序号 方法/属性 描述 1 ac…

leetcode正则表达式匹配问题(困难)

1.题目描述 2.解题思路,这道题自己没做出来,看了官方的题解,感觉对自己来说确实是比较难想的。使用了动态规划的解决方案,这种方案看题解都不一定能看明白,不过有个评论画图讲解的非常明白。其实仔细看题解的话&#…

关于网络面试题汇总

什么是TCP/IP五层模型?它们的作用是啥?基于TCP/IP实现的应用(层协议)有哪些? TCP/IP五层模型,从上向下分别是: 应用层:应用程序本身,应用层的作用是负责应用程序之间的…

Python实现PDF到HTML的转换

PDF文件是共享和分发文档的常用选择,但提取和再利用PDF文件中的内容可能会非常麻烦。而利用Python将PDF文件转换为HTML是解决此问题的理想方案之一,这样做可以增强文档可访问性,使文档可搜索,同时增强文档在不同场景中的实用性。此…

HTML+CSS:WIFI开关按钮

效果演示 实现了一个按钮的切换效果,当用户点击按钮时,按钮会从一个颜色渐变到另一个颜色,同时按钮的边框和阴影效果也会发生变化。同时,按钮的图标也会从一个颜色渐变到另一个颜色。这个效果可以用来提醒用户进行操作&#xff0c…

一步步成为React全栈大师:从环境搭建到应用部署

文章目录 第一步:环境搭建第二步:了解React基础第三步:组件与路由第四步:状态管理第五步:接口与数据交互第六步:样式与布局第七步:测试第八步:构建与部署《深入浅出React开发指南》内…

MagicVideo-V2:多阶段高保真视频生成框架

本项工作介绍了MagicVideo-V2,将文本到图像模型、视频运动生成器、参考图像embedding模块和帧内插模块集成到端到端的视频生成流程中。由于这些架构设计的好处,MagicVideo-V2能够生成具有极高保真度和流畅度的美观高分辨率视频。通过大规模用户评估&…

未来电话呼叫技术的社会影响与发展趋势----云微呼

未来电话呼叫技术将以更为智能化、便捷化和个性化为主要发展趋势,其所带来的社会影响也将是多层面的。以下将探讨未来电话呼叫技术可能的发展趋势以及对社会的影响: 智能化助力生活便捷: 未来电话呼叫技术将更加智能化,通过人工智…

Spring事件之注解@EventListener讲解

文章目录 1 注解EventListener1.1 示例Demo1.1.1 简单例子1.1.2 解耦1.1.3 Spring事件 1.2 深入EventListener1.2.1 debug调试1.2.2 问题一: Spring是怎么知道要去触发这个方法1.2.3 问题二:ApplicationListenerMethodAdapter1.2.4 问题三:Si…

【Python】【完整代码】解析Excel 文件中的内容并检查是否包含某字符串,并返回判断结果

示例: 开发需求:解析Excel 文件中的内容并检查是否包含 "Fail" 字符,若没有则返回True,若有则返回False 实现代码: #!/usr/bin/env python3 # -*- encoding: utf-8 -*-File : check_excel_for_fail.py Ti…

华为机考入门python3--(7)牛客7-取近似值

分类:数字 知识点: str转float float(str) 向上取整 math.ceil(float_num) 向下取整 math.floor(float_num) 题目来自【牛客】 import math def round_to_int(float_num): # 如果小数点后的数值大于等于0.5,则向上取整&#xf…

【HarmonyOS】鸿蒙开发之ArkTs初步认识——第2.1章

ArkTs简介 ArkTS是HarmonyOS优选的主力应用开发语言。ArkTS围绕应用开发在TypeScript(简称TS)生态基础上做了进一步扩展,继承了TS的所有特性,是TS的超集。 以下图可以展示Js,TS,ArkTs的关系 ArkTs基础语…