以太网常用协议——ARP协议

文章目录

    • 一、 ARP协议与MAC层
      • 1.TCP/IP协议
      • 2. MAC地址
      • 3. ARP映射
      • 4. ARP请求和ARP应答
    • 二、以太网帧格式
    • 三、ARP协议
      • 1. 以太网ARP通信测试:

以太网使用的协议很多,常用的有ARP、UDP等。
再介绍具体协议之前需要先知道一些基本的概念:

一、 ARP协议与MAC层

Q:ARP协议是是什么?它和MAC层的关系是什么。
A:
1.ARP (Address Resolution Protocol)即地址解析协议,是根据 IP 地址(逻辑地址)获取 MAC 地址的一种 TCP/IP 协议
2.在以太网中,一个主机和另一个主机进行通信,必须要知道目的主机的 MAC 地址(物理地址),而目的 MAC 地址的获取由 ARP 协议完成。
3.在以太网通信中,数据是以“帧”的格式进行传输的,帧格式里面包含目的主机的MAC 地址。因此在通信前需要先获得目的 MAC 地址,而 ARP 协议正是实现了此功能
4.在获取到目的 MAC地址之后,将目的MAC地址更新至ARP缓存表中,称为ARP映射。下次通信时,可以直接从 ARP 缓存表中获取,而不用重新通过 ARP 获取 MAC 地址。但一般 ARP缓存表会有过期时间,过期后需要重新通过 ARP 协议进行获取。

接下来介绍一下上面这段话中的一些专有名词

1.TCP/IP协议

TCP/IP 是网络使用中最基本的通信协议,虽然从名字看上去 TCP/IP 包括两个协议,TCP 和 IP,但 TCP/IP实际上是一组协议,它包括上百个各种功能的协议,如:TCP、IP、ARP、UDP 等。
而 TCP 协议和 IP协议是保证数据完整传输的两个重要的协议,因此 TCP/IP 协议用来表示 Internet 协议簇。
TCP/IP协议不仅可以运行在以太网上,也可以运行在FDDI(光纤分布式数据接口)和WLAN(无线局域网)上。反过来,以太网的高层协议不仅可以是TCP/IP协议,也可以是IPX协议(互联网分组交换协议)等,只不过以太网+TCP/IP 成为 IT 行业中应用最普遍的技术。

2. MAC地址

MAC地址在网络中表示网卡的 ID,每个网卡有且仅有一个 MAC 地址。
格式:MAC地址通常由12个十六进制字符组成,分为6对,用冒号或连字符分隔,例如00:1A:2B:3C:4D:5E。

3. ARP映射

将 IP 地址和 MAC 地址映射起来,分为静态映射动态映射
如下图ARP映射表,左边是IP地址,右边是MAC地址,实现映射。
在这里插入图片描述

静态映射: 指手动创建一张 ARP 表,把 IP 地址和 MAC 地址关联起来。手动绑定之后,源主机在通信 之前,就可以直接从 ARP 表中直接找到 IP 地址对应的 MAC 地址,但这样做有一定的局限性,因为 MAC地址可能会变化,比如:
1) 机器可能更换 NIC(网络适配器),结果变成一个新的物理地址;
2)在某些局域网中,每当计算机加电时,他的物理地址都要改变一次。
3) 移动电脑可以从一个物理网络转移到另一个物理网络,这样会改变物理地址。
要避免这些问题出现,必须定期维护更新ARP表,此类比较麻烦而且会影响网络性能。

动态映射:指使用协议来获取相对应的物理地址,之所以用动态这个词是因为这个过程是自动完成的,一般应用程序的用户或系统管理员不必关心。已经设计出用于实现动态映射协议的有ARPRARP(逆地址解析协议)两种,如下图所示
ARP :把 IP 地址映射为物理地址
RARP :把物理地址映射为 IP 地址。(这里不重点讲述)在这里插入图片描述

4. ARP请求和ARP应答

ARP请求:源主机发起查询目的 MAC 地址的报文称为 ARP 请求
ARP应答:目的主机响应源主机并发送包含本地 MAC 地址的报文称为 ARP 应答
在这里插入图片描述
由于发送的目的 MAC 地址为广播地址,所以此时局域网中的所有主机都会进行接收并处理这个 ARP 请求报文,然后进行验证,查看接收方的 IP 地址是不是自己的地址。是则返回 ARP 应答报文,不是则不响应。

在这里插入图片描述
主机 A 将收到的 ARP 应答报文中的目的 MAC 地址解析出来,将目的 MAC 地址和目的 IP 地址更新至 ARP 缓存表中。当再次和主机 B 通信时,可以直接从 ARP 缓存表中获取,而不用重新发起 ARP 请求报文。
ARP 缓存表中的表项有过期时间(一般为 20 分钟),过期之后,需要重新发起 ARP 请求以获取目的 MAC 地址。

介绍ARP协议之前,先了解一下以太网的帧格式

二、以太网帧格式

ARP 协议通过以太网进行传输,那么必须也要按照以太网所规定的格式进行传输,那先来介绍一下太网的帧格式,随后再详细介绍 ARP 协议的具体格式。

我们知道串口通信单次只传输一个字节,而以太网通信是以数据包的形式传输,其单包数据量达到几十,甚至成百上千个字节。下图为以太网通过 ARP 传输单包数据的格式。
在这里插入图片描述
以太网 MAC 帧格式:
在这里插入图片描述
在这里插入图片描述

注意:以太网相邻两帧之间的时间间隔,即帧间隙(IFG,Interpacket Gap)。
帧间隙的时间就是网络设备和组件在接收一帧之后,需要短暂的时间来恢复并为接收下一帧做准备的时间,IFG 的最小值是 96 bit time,即在媒介中发送 96 位原始数据所需要的时间,在不同媒介中 IFG的最小值是不一样的。
不管10M/100M/1000M的以太网,两帧之间最少要有 96bit time,IFG 的最少间隔时间计算方法如下:
10Mbit/s 最小时间为:96100ns = 9600ns;
100Mbit/s 最小时间为:96
10ns = 960ns;
1000Mbit/s 最小时间为:96*1ns = 96ns。

三、ARP协议

ARP 协议属于 TCP/IP 协议簇的一种,ARP 协议位于以太网 MAC帧格式的数据段,ARP 数据包格式如下图所示。
在这里插入图片描述
在这里插入图片描述

1. 以太网ARP通信测试:

主机和fpga参数如下:
在这里插入图片描述
1:上位机发送ARP请求,FPGA产生ARP应答
在这里插入图片描述
在这里插入图片描述
2:FPGA发出ARP请求,上位机产生ARP应答
在这里插入图片描述
在这里插入图片描述
Q:上位机可以通过win的命令:arp-a查看fpga的IP 和 MACY的映射,那如何查看fpga接收到的上位机信息呢?
A:这里使用wireshark软件对以太网通信进行抓包。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

COB显示屏与GOB显示屏封装方式有哪些不同?

很多用户因为使用场景的特殊性,所以会选择防护能力更强的COB显示屏或者是GOB显示屏,两种产品从名称上看只是有一个字母的悬殊,其实使用的工艺截然不同,GOB显示屏通常是在SMD显示屏的基础上进行升级,而COB显示屏则是完全…

独立开发者系列(15)——git的使用

上一篇14文章触发了敏感话题,直接未过审核,看来技术博客也有敏感点。 大部分情况下,独立项目是你一个人开发,但是当你接的项目比较大的时候,你需要其他人的帮忙,这个时候你要把代码分享给别人。因为如果你…

【分布式数据仓库Hive】Hive的安装配置及测试

目录 一、数据库MySQL安装 1. 检查操作系统是否有MySQL安装残留 2. 删除残留的MySQL安装(使用yum) 3. 安装MySQL依赖包、客户端和服务器 4. MySQL登录账户root设置密码,密码值自定义,这里是‘abc1234’ 5. 启动MySQL服务 6…

maven设置阿里云镜像源(加速)

一、settings.xml介绍 settings.xml是maven的全局配置文件,maven的配置文件存在三个地方 项目中的pom.xml,这个是pom.xml所在项目的局部配置文件用户配置:${user.home}/.m2/settings.xml全局配置:${M2_HOME}/conf/settings.xml 优…

YOLOV10训练集制作+Train+Val记录

代码地址:THU-MIG/yolov10: YOLOv10: Real-Time End-to-End Object Detection (github.com) 一、数据制作 在这篇文章有讲过如何制作数据集及代码实现 YOLOV9训练集制作TrainVal记录_yolov9 train yaml-CSDN博客 二、配置文件 (1)代码结构…

“私域流量:解锁电商新机遇,共创数字化未来“

一、私域流量的战略意义再探 步入数字化浪潮的深处,流量已成为企业成长不可或缺的血液。与广泛但难以掌控的公域流量相比,私域流量以其独特的专属性和复用潜力,为企业铺设了通往深度用户关系的桥梁。它不仅赋能企业实现精准营销,…

国产跨平台高性能远程控制软件 RayLink,畅享高清流畅远程办公

不管是手机还是电脑,出色的硬件是好用的基础。而其中的软件工具,也是提高效率、减轻负担的好东西。 免费的软件工具众多,当然付费工具也不少。大家可能会觉得正版软件很贵,但国内软件代理商的价格其实很实惠。 本次为大家介绍一…

CF1375D Replace by MEX 题解

题目大意 令 m e x mex mex 为序列中最小的没有出现的数。 给你一个长度为 n n n 的序列 a a a,你可以进行不超过 2 n 2\times n 2n 次操作,使得序列 a a a 单调不降。每次操作你可以选定一个位置 p p p,并将 a p a_p ap​ 赋值为 …

一文看尽AI绘画工具 Stable Diffusion发展史,AI绘画究竟发展到什么地步了?!

01、引言 Stable Diffusion 在短短两年内发布了多个版本。最著名的版本是 1.5 和 SDXL。不过,还有许多其他版本值得一提。让我们一起来探索稳定扩散模型的起源和发展。 闲话少说,我们直接开始吧! 02、缺失的SD V1.0版本 Stable Diffusion…

材质相关内容整理 -ThreeJs

在Three.js中,材质是用来定义3D对象外观的关键部分。Three.js支持多种材质文件和类型,每种材质都有其特定的用途和优势。下面简单整理了一下目前Three.js支持的材质文件和类型。 一、Three.js支持的材质文件类型 JPEG (.jpg) 和 PNG (.png) 用途&#x…

iphone新机官网验机流程

若您想购买新款iPhone并在官方网站上验证机器的真实性,可以按照以下流程进行: 打开苹果官方网站(https://www.apple.com)。在导航栏中选择“iPhone”选项,进入iPhone的产品页面。在页面中找到您想要购买的新款iPhone&…

C语言快速学习笔记

学习网站:C 语言教程 | 菜鸟教程 (runoob.com)C 语言教程 | 菜鸟教程 (runoob.com)C 语言教程 | 菜鸟教程 (runoob.com) 这个网站知识完整,讲解清晰。 在线C语言编程工具:菜鸟教程在线编辑器 (runoob.com) 国外学习网站:C语言介…

【机器学习】机器学习的重要方法——线性回归算法深度探索与未来展望

欢迎来到 破晓的历程博客 引言 在数据科学日益重要的今天,线性回归算法以其简单、直观和强大的预测能力,成为了众多领域中的基础工具。本文将详细介绍线性回归的基本概念、核心算法,并通过五个具体的使用示例来展示其应用,同时探…

使用conda创建虚拟环境,并将虚拟环境加载到jupyter notebook中【已解决】

使用conda创建虚拟环境,并将虚拟环境加载到jupyter notebook中【已解决】

免费分享:2000-2021年全国分省250mNDVI数据集(附下载方法)

NDVI (Normalized Difference Vegetation Index)归一化植被指数,又称标准化植被指数。是目前应用最广泛的植被指数,与植被的分布呈线性相关,是植被生长状态和空间分布的最佳指示因子,也是遥感估算植被覆盖度(FVC,Fract…

深入学习 Kafka(2)- Partition 和 Topic

1. Partition的作用 Topic是逻辑的概念,Partition是物理的概念: Partition 对一个 Topic 的消息进行物理上的分离,让消息可以分布在不同的实体机器上,可以提升系统吞吐量和并行处理能力。每个Partition可以有多个副本&#xff08…

交换机06_vlantrunk

一、虚拟局域网vlan 目的:划分广播域 思科设备如何去配置vlan 创建vlan设置对应的接口模式将接口加入vlan全局模式配置vlan vlan 2 设置接口模式(目前需要将接口加入对应vlan,一般用于连接PC) en conf t int f0/0 switchport m…

SAP S/4 FICO批量创建银行主数据(银行主数据/账户主数据)开发说明书(包括测试样例、程序代码仅作参考,不保证一定可以运行)

开发通用说明 新增程序——批导工具处理逻辑如下:自定义批导程序():点击“执行”按钮若数据错误或重复,先检查导入的银行账号是否已在系统中存在,若已存在则状态显示为红灯,并在消息反馈列提示“该银行已经存在”。查重后若银行账户为新增账户,但导入模板提供的数据有缺…

Spring Boot中获取请求参数的几种方式详解

Spring Boot中获取请求参数的几种方式详解 在Web开发中,处理HTTP请求是一项基本且核心的任务。Spring Boot作为目前最流行的Java Web开发框架之一,提供了多种简便的方式来获取和处理请求参数。本文将深入探讨在Spring Boot中获取请求参数的几种方式&…

学会python——用python编写一个计算机程序(python实例十六)

目录 1.认识Python 2.环境与工具 2.1 python环境 2.2 Visual Studio Code编译 3.编写计算器程序 3.1 代码构思 3.2 代码实例 3.3 运行结果 4.总结 1.认识Python Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 的设计具有很强的可读…