以太网及ARP协议简介

news/2024/6/24 9:34:19/文章来源:https://blog.csdn.net/qq_42452450/article/details/137226645

以太网及ARP协议简介

在以太网中,主机间相互通信,必须要知道目的主机的MAC地址(物理地址),可以通过ARP协议以目的主机IP地址获取目的主机的MAC地址。

ARP协议简介

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

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

ARP协议的基本功能是通过目的主机IP地址,获取目的主机的MAC地址。每个网卡都需要并有且仅有一个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地址。因为不知道接收方的物理地址,用

以太网帧格式

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

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

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

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

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

目的MAC地址: 占用6个字节。MAC地址分为单播地址、组播地址和广播地址。
  单播地址:第一个字节的最低位为0,表示唯一的设备;
  组播地址:第一个字节的最低位为1,表示同属一组的多个设备;
  广播地址为FFFF-FFFF-FFFF,表示同一网段中的所有设备。
  在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的时钟周期有关。

ARP协议

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

如果数据端是ARP数据,那么以太网帧头的最后两字节必须是0x0806,表示后续的是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数据包格式。

在这里插入图片描述

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

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

相关文章

如何同时安全高效管理多个谷歌账号?

您的业务活动需要多个 Gmail 帐户吗?出海畅游,Gmail账号是少不了的工具之一,可以关联到Twitter、Facebook、Youtube、Chatgpt等等平台,可以说是海外网络的“万能锁”。但是大家都知道,以上这些平台注册多账号如果产生关…

蓝桥杯刷题第六天(昨天忘记发了)

今天想从不一样的角度来解题:从时间紧张暴力求解到思路阔达直接通过所有案例 暴力方法: 思路第一眼看到这个问题我就想到了第一个思路就是先用两个数组一个存石子数一个存颜色状态,每次遍历一遍看看有没有相邻石子颜色一样且为和最小的。 im…

nslookup查询网站是否支持IPV6

nslookup是一种网络管理命令行工具,可用于查询DNS域名和IP地址输入指令nslookup默认服务器和Address是当前上网所用的DNS服务器域名和地址A记录A(Address)记录指的是用来指定主机名或域名对应的IP记录。

27. UE5 RPG同步面板属性(三)

在前两篇中,我们在C中实现了对GameplayTag的创建,并且创建DataAsset存储数据,按照之前的规划: 首先我们需要通过c去实现创建GameplayTag,这样可以在c和UE里同时获取到Tag创建一个DataAsset类,用于设置tag对…

(补充)Java项目实战笔记--基于SpringBoot3.0开发仿12306高并发售票系统--(二)项目实现-第六篇-(高级篇)实现高性能高并发

本章目录(接上篇) 六、使用MQ对请求做异步削峰处理,解决吞吐量问题1.购票时序图演进2.RocketMQ初体验1.下载2.启动NameServer和Broker3.测试消息收发 3.RocketMQ控制台的使用4.**使用RocketMQ将购票流程一分为二**5.为同转异增加logId&#x…

【Linux】图文详解Xshell远程连接服务器:以Amazon EC2 VPS为例

文章目录 问题描述解决方案Q&A 问题描述 本地cmd或powershell使用ssh -i “your.pem” user_nameip_address是可以登录Amazon EC2云服务器的。 然而,当使用XShell以SSH加载PEM文件方式登录亚马逊EC2云服务器,一直出现输入密码的问题,如…

Fastjson配置消息转换器(时间格式问题)

问题: 我们可以看见,日期的格式有点问题。 由于ArticleListVO类的createTime成员变量是Date类型,默认是由java的Jackson来处理,使用 ISO-8601 规范来处理日期时间格式。ISO-8601 是一种国际标准的日期时间表示法,例如&…

是否应该升级到ChatGPT 4.0?深度对比ChatGPT 3.5与4.0的差异

如果只是想简单地体验AI的魅力,感受大模型的独特之处,或是玩一玩文字游戏,那么升级至ChatGPT 4.0可能并非必需。然而,若你期望将AI作为提升工作学习效率的得力助手,那么我强烈建议你升级到ChatGPT 4.0。 如果你不知道…

【网站项目】面向社区健康服务的医疗平台

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

从原理图到PCB全过程(嘉立创)1

1 将已经画好的原理图更新到PCB中(点击应用修改) 2 一开始PCB是杂乱的,需要回到原理图,框选各个模块,然后按住CtrlShiftX会自动在PCB显示这个部分,然后把各个部分分开 3 PCB画板需要有板框(嘉立创每个月都i…

Go语言学习Day6:数组与切片

名人说:莫愁千里路,自有到来风。 ——钱珝 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 1. 数组① 什么是数组② 数组的声明③ 初始化数组的几种方式④ 遍历数组元素⑤ 数组为值类型⑥ 数…

A New Image Contrast Enhancement Algorithmusing Exposure Fusion Framework

Abstract 弱光图像由于能见度低,不利于人类观察和计算机视觉算法。为了解决这一问题,人们提出了许多图像增强技术,但现有的方法不可避免地会出现对比度增强不足和过度增强的问题。在本文中,我们提出了一种图像对比度增强算法来提…

瑞吉外卖实战学习--8、人员编辑更新

人员编辑更新 前言1、进入编辑窗口需要先获取用户信息2、通过上篇文章的update的方法来改变数据3、测试效果 前言 1、进入编辑窗口需要先获取用户信息 通过注解PathVariable 来获取路径需要携带的id然后赋值到路径上,再通过id查询用户信息 /*** 通过id查询用户信…

VUE3极速上手手册

文章目录 Vue3简介一、整体认识Vue3项目1、创建Vue3工程2、主要工程结构 二、数据双向绑定1、vue2语法的双向绑定2、OptionsAPI和CompositionAPI3、Vue3中的数据双向绑定3.1 ref定义基础类型响应式数据3.2 reactive定义对象型响应式数据3.3 ref对比reactive3.4 标签的ref属性3.…

Android 开发 Spinner setSelection 不起作用

问题 Android 开发 Spinner setSelection 不起作用 详细问题 笔者进行Android项目开发,根据上一个页面用户选择数据,显示当前页面Spinner选项,调用 Spinner setSelection 不起作用。 相关java代码 spinner.setAdapter(adapter); …

uniapp点击按钮连接wifi?

<view><button class"but" bindtap"connectToWifi">点击连接WiFi</button> </view> js: Page({// 页面数据data: {wifiConnected: false},onLoad: function () {this.checkWifiPermission();},// 检查 WiFi 权限checkWif…

不同设备使用同一个Git账号

想要在公司和家里的电脑上用同一个git账号来pull, push代码 1. 查看原设备的用户名和邮箱 第1种方法&#xff0c; 依次输入 git config user.name git config user.email第2种方法&#xff0c; 输入 cat ~/.gitconfig2. 配置新设备的用户名和邮箱 用户名和邮箱与原设备保持…

uniApp——零基础App的快速开发记录

公司需要使用移动端App来接受云平台的数据&#xff0c;记录一下学习过程。因水平有限&#xff0c;在学习的过程中不能完整、准确、全面的发现错误&#xff0c;如有错误&#xff0c;请评论指教&#xff0c;谢谢&#xff01; 需求分析 总体需求目标&#xff1a;开发一款android的…

文件传输升级!如何让你的MacBook与安卓设备快速共享大文件?

在现代工作环境中&#xff0c;跨设备、跨平台的文件传输已成为日常办公不可避免的一部分。尤其是MacBook和安卓手机之间的大文件传输&#xff0c;由于两者系统的差异&#xff0c;可能会遇到一些效率上的挑战。为了优化这一过程&#xff0c;以下是一些提升传输效率的新技巧。 1&…

搜索与图论——Prim算法求最小生成树

在最小生成树问题里&#xff0c;正边和负边都没问题 朴素版prim算法 时间复杂度O(n^2) 生成树&#xff1a;每一次选中的t点&#xff0c;它和集合的距离对应的那条边&#xff0c;就是生成树的一条边 算法流程和dijkstra算法非常相似 #include<iostream> #include<cs…