ARP 原理详解 一

ARP 原理

ARP(Address Resolution Protocol)地址解析协议,是根据 IP 地址获取物理地址的一个 TCP/IP 协议。

OSI 网络七层模型中,IP 地址在 OSI 模型第三层,MAC 地址在第二层,彼此不直接通信。
在这里插入图片描述

在通过以太网发送 IP 数据包时,需要封装第三层(32 位 IP 地址)和第二层(48 位 MAC 地址)的报头。由于发送数据包时,只知道目标 IP 地址,不知道其 MAC 地址,而又不能跨越第二、三层,所以需要使用 ARP 地址解析协议。
在这里插入图片描述

TCP/IP 协议栈加人 ARP 过程是给发送端设备提供一种询问机制,“ 谁的 IP 地址是这个地址,与它相关的物理地址(硬件 MAC )是什么?”
在这里插入图片描述

ARP 报文和 IP 报文不同。ARP 报文和 IP 报文一样可以嵌在以太网帧或任何 LAN 帧中。ARP 帧仅在特定的局域网网段中才有效,而且它也不会离开本地局域网(也就是说,ARP 报文不可以被路由)。

代理 ARP

代理 ARP 就是通过使用一个指定的设备(通常是路由器)使用其 MAC 地址来对另一设备的 ARP 请求作出应答。

路由器的重要功能之一就是把局域网的广播包限制在该网内,阻止其扩散,否则会造成网络风暴。

ARP 请求是个广播包,它查寻的对象如果在同一个局域网内,就会收到应答,但如果不在同一个局域网该如何处理?

路由器就提供的代理 ARP 为该问题提供了解决方案。

举例:两台主机 A 和 B 处于同一网段但不同的广播段时,主机 A 发送 ARP 请求主机 B 的 MAC 地址时,因为路由器不转发广播包的原因,ARP 请求只能到达路由器。

如果路由器启用了代理 ARP 功能,并知道主机 B 属于它连接的网络,那么路由器就用自己接口的 MAC 地址代替主机 B 的 MAC 地址来对主机 A 进行 ARP 应答。主机 A 接收 ARP 应答,但并不知道代理 ARP 的存在。

ARP 报文格式

ARP 报文结构如图所示

在这里插入图片描述

上图中展示了 28 字节的 ARP 报文,因为其包括了 1 字节、2 字节、4 字节和 6 字节等不同长度的字段,因此不能直接以普通 32 位的方式显示。前五个字段构成了报文头部。紧接着的 4 个字段表示发送端和目的端 IP 地址与 MAC 地址。一般来说,目的 MAC 地址需要用地址解析得出。ARP 报文还可以由一串个数不定的 0 结尾。

在以太网局域网中,ARP 报文有自己的以太网类型值 (0x0806)。然而有些 ARP 实现使用了 IP 分组中 “常规的” 以太网类型 (0x0800),因为 IP 网络可以很容易地识别出帧内部是 IPv4 报文(报文以 0x04 开头),还是 ARP 报文(报文以 0x0001 开头)。

以下主要的字段在 ARP 请求和应答报文中都会出现。硬件类型 —— 用 2 字节的字段标识硬件地址的类型 (其常见的当然是以太网类型的 MAC 地址,其值 = 1)。

协议类型 —— 用 2 字节的字段标识第三层(网络层)所用到的协议类型(ARP 消息不是 IP 报文,不止用于 IP 地址解析)。这个值和以太网帧中字段的值是一样的,所以 IP 是 0x0800。

硬件地址长度 —— 6 字节,标识硬件以太网 MAC 地址的长度。
协议地址长度 —— 4 字节,标识第三层协议 IP 地址的长度。
操作 —— 2 字节,标识 ARP 报文的目的。

操作 op 共有 4 种类型

值为 1. ARP 请求
值为 2. ARP 应答
值为 3. RARP 请求
值为 4. RARP 应答

在这里插入图片描述

例如,当 ARP 发起一个请求(询问谁有这个 IPv4 地址),该字段的值就为 1,收到的应答报文的该字段值为 2。剩下的字段都没有固定的长度,其长度取决于硬件长度字段和协议长度字段的值。在以太局域网中,硬件地址长度是 6 字节(MAC 地址),协议地址长度是 4 字节(IPv4 地址)。在这种情况下,这些字段的长度和功能如下所示。

发送端的以太网地址 —— 6 字节,标识了发送端的以太网地址。它应该与以太网帧中的源地址相同。

发送端的 IP 地址 —— 4 字节,标识了发送端的以太网 IP 地址 (这是目的端可以在不请求更多 ARP 的情况下将信息填人 ARP 缓存的方式)。

目的端以太网地址 —— 6 字节,标识了目的端主机的以太网地址。该字段在发送请求的时候全置为 0,应答时才填入内容,并把操作字段改为 “应答”。

目的端 IP 地址 —— 4 字节,标识目的端主机的 IPv4 地址。

ARP 报文是广播帧,会被发送给所有站点。当目的端设备在数据包的 IP 层中看到目的 IP 地址与自己的 IP 地址匹配时,就直接响应发送端。目的端设备发送响应的时候,只是简单地把 ARP 数据包中的源 IP 地址和目的 IP 地址反转。目的端设备在帧和报文中也使用自己的硬件地址作为源地址。
在这里插入图片描述

ARP 报文的封装

ARP报文被封装成一个数据链路帧
在这里插入图片描述
ARP 封装使用类型字段(Type field)标识为 0x0806,表示这是一个地址解析协议(ARP)数据包。不需要带有 Preamble 和 SFD。ARP 消息直接嵌套在以太网帧或其他局域网帧中,这些帧已经包含了前导码和帧起始定界符。

ARP 解析过程 by charsek

via: ARP 报文详解 - charseki - 博客园
https://www.cnblogs.com/chenshengkai/p/13936532.html

(1)当 PC1 想发送数据给 PC2,首先在自己的本地 ARP 缓存表中检查主机 PC2 匹配的 MAC 地址

(2)如果 PC1 缓存中没有找到响应的条目,它将询问主机 PC2 的 MAC 地址,从而将 ARP 请求帧广播到本地网络的所有主机。该帧中包括源主机 PC1 的 IP、MAC 地址,本地网络中的所有主机都接收到 ARP 请求,并且检查是否与自己的 IP 地址相匹配。如果发现请求中 IP 地址与自己 IP 不匹配,则丢弃 ARP 请求。

(3)主机 PC2 确定 ARP 请求中的 IP 地址与自己的 IP 地址匹配,则将主机 PC1 的地址和 MAC 地址添加到本地缓存表中。

(4)主机 PC2 将包含其 MAC 地址的 ARP 回复消息直接发送回主机 PC1(数据帧为单播)。

(5)主机 PC1 收到 PC2 发挥的 ARP 回复消息,将 PC2 的 IP 和 MAC 地址添加至自己 ARP 缓存表中,本机缓存是有生存期的,默认 ARP 缓存表有效期 120s。当超过该有效期后,则将重复上面过程。主机 PC2 的 MAC 地址一旦确定,主机 PC1 就能向主机 PC2 发送 IP 信息。

arp 报文总共 42 bytes。其中以太网首部 14 bytes,arp 字段 28 字节

img
ARP 返回报文

img

下一篇

ARP 原理详解 二 - CSDN博客

https://blog.csdn.net/u013669912/article/details/140080908

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

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

相关文章

51单片机项目-点亮第一个LED灯(涉及:进制转换表、创建项目、生成HEX文件、下载程序到单片机、二极管区分正负极)

目录 新建项目选择型号添加新文件到该项目设置字体和utf-8编码二极管如何区分正负极原理:CPU通过寄存器来控制硬件电路 用P2寄存器的值控制第一个灯亮进制转换编译查看P2寄存器的地址生成HEX文件把代码下载到单片机中下载程序到单片机 新建项目 选择型号 stc是中国…

Open3D (C++) 点云旋转至主成分空间

目录 一、算法原理二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT。 一、算法原理 首先使用主成分分析法计算出点云的特征值与特征向量,然后根据点云的特征向量计算出点云与主成分空间之间的…

开源视频配音技术

FoleyCrafter 是一个基于文本的视频配音技术,能够生成与输入视频在语义上相关且时间上同步的高质量音频, 可以在 HF 上免费使用。

华为智能驾驶方案剖析

华为ADS智驾方案始终坚持激光雷达毫米波雷达摄像头的多传感器融合路线,行业降本压力下硬件配置从超配逐步转向贴合实际需求,带动整体硬件成本下降。 1)单车传感器数量呈现下降趋势,包括激光雷达从3个减配至1个、毫米波雷达从6R减配至3R、摄像…

JsonCpp:更简洁的序列化及反序列化

简介 jsoncpp 提供了一组简单易用的 API&#xff0c;使得在 C 程序中处理 JSON 数据变得更加方便和高效。 安装 linux环境下安装jsoncpp sudo apt-get update sudo apt-get install --reinstall libjsoncpp-dev建立软链接确保编译器找到头文件 #include <json/json.h>…

PC系统安装引导:2、进入维护环境

目录 &#x1f345;点击这里查看所有博文 闲来无事&#xff0c;记录下自己以往多年总结出的一套系统维护的方法。以供有需要的人学习使用。例如&#xff0c;系统崩溃了无法启动怎么办&#xff0c;如何重做系统&#xff0c;如何安装双系统&#xff0c;如何引导多系统&#xff0…

F_SETFL的例子

代码; #include <unistd.h> #include <fcntl.h> #include <stdio.h> #include <string.h>int main(void) {int flags-1;char buf[]"FCNTL";int fdopen("test.txt",O_RDWR);flagsfcntl(fd,F_GETFL,0);flags|O_APPEND;flagsfcntl(f…

如何完成域名解析验证

一&#xff1a;什么是DNS解析&#xff1a; DNS解析是互联网上将人类可读的域名&#xff08;如www.example.com&#xff09;转换为计算机可识别的IP地址&#xff08;如192.0.2.1&#xff09;的过程&#xff0c;大致遵循以下步骤&#xff1a; 查询本地缓存&#xff1a;当用户尝…

Python28-4 KNN近邻算法

KNN&#xff08;K-Nearest Neighbors&#xff09;算法是一种常用的机器学习算法&#xff0c;主要用于分类和回归问题。 1. KNN算法的基本概念 KNN算法是一种基于实例的学习算法&#xff0c;也称为惰性学习&#xff08;Lazy Learning&#xff09;算法&#xff0c;因为它在训练…

快递物流仓库管理系统java项目springboot和vue的前后端分离系统java课程设计java毕业设计

文章目录 快递物流仓库管理系统一、项目演示二、项目介绍三、部分功能截图四、部分代码展示五、底部获取项目源码&#xff08;9.9&#xffe5;带走&#xff09; 快递物流仓库管理系统 一、项目演示 快递物流仓库管理系统 二、项目介绍 语言: Java 数据库&#xff1a;MySQL 前…

苹果手机图片识别文字出现日期?这里教你如何调整

一、问题原因分析 首先&#xff0c;我们需要理解为什么会出现这种情况。通常&#xff0c;苹果手机在识别图片中的文字时&#xff0c;会根据图片的内容和上下文来显示相关信息。如果图片中包含明显的日期信息&#xff0c;或者手机的某些设置将图片识别与日期显示相关联&#xf…

MicroBin好用的粘贴板工具

有时候你可能想从一台电脑上粘贴文本到另一台电脑上&#xff0c;或者是你想要分享一张图片或者是一些文件&#xff0c;某些设备上登陆qq和微信有不太方便&#xff0c;那么就可以使用MicroBin&#xff0c;它不但可以实现跨设备复制粘贴的功能&#xff0c;还支持文件上传等功能 …

Games101学习笔记 Lecture 14: Ray Tracing 2 (Acceleration Radiometry)

Lecture 14: Ray Tracing 2 (Acceleration & Radiometry 一、加速光线追踪 AABB1.均匀网格 Uniform Spatial Partitions (Grids)①前处理-构建加速网格②射线与场景相交③网格分辨率④适用情况 2.空间划分KD-Tree①预处理②数据结构③遍历④问题 3.对象划分 & 包围盒层…

表单外链,支持查看方式设置

06/19 主要更新模块概览 外链设置 跳转缩放 打印调整 数据校验 01 表单管理 1.1 【表单外链】-填写外链新增查看方式设置 说明&#xff1a; 原表单填写外链&#xff0c;填写字段权限和查看权限统一字段设置&#xff0c;用户在填写时看到数据与查看数据一致…

Python | 基于支持向量机(SVM)的图像分类案例

支持向量机&#xff08;SVM&#xff09;是一种监督机器学习算法&#xff0c;可用于分类和回归任务。在本文中&#xff0c;我们将重点关注使用SVM进行图像分类。 当计算机处理图像时&#xff0c;它将其视为二维像素阵列。数组的大小对应于图像的分辨率&#xff0c;例如&#xf…

常用图片处理操作

静态图片文件转base64 import base64 with open(1.png, rb) as f:source f.read() base64_img base64.b64encode(source)base64转静态图片文件 imgdata base64.b64decode(base64_img)# 将图片保存为文件 with open("new.png", wb) as f:f.write(imgdata)PS:这里…

精密空气加热器负载组

小型便携式 &#xff1a;精密空气加热器&#xff08;负载组&#xff09;能够对数据中心热通道/冷通道冷却系统进行全面测试。EAK 是一款 19 英寸机架式设备&#xff08;10U 高&#xff09;&#xff0c;可轻松安装到各种标准服务器机架中。通过集成可调节的热量水平&#xff08;…

【计算机毕业设计】061互助学习微信小程序

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

Redis学习——Redisson 分布式锁集成及其简单使用

文章目录 引言1. Redisson概述1.1 Redisson的基本概念1.2 Redisson的主要功能1.3 Redisson的优点 2. 开发环境3. Redisson的安装与配置3.1 添加依赖3.2 配置Redisson 4. 使用Redisson4.1 可重入锁4.1.1 可重入锁的概念4.1.2 可重入锁的实现原理4.1.3 简单使用锁的获取和释放 4.…

无线麦克风哪个品牌音质最好,一篇看懂无线领夹麦克风怎么挑选

在数字化时代背景下&#xff0c;直播和个人视频日志&#xff08;Vlog&#xff09;已成为新的文化现象&#xff0c;这些趋势不仅重塑了内容创作&#xff0c;也促进了音频设备市场的繁荣。无线领夹麦克风&#xff0c;以其设计上的轻便和录音上的高效率&#xff0c;成为视频创作者…