ARP 原理详解 一

news2024/10/7 7:23:01

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

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

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

相关文章

HTMLCSS(入门)

HTML <html> <head><title>第一个页面</title></head><body>键盘敲烂&#xff0c;工资过万</body> </html> <!DOCTYPE>文档类型声明&#xff0c;告诉浏览器使用哪种HTML版本显示网页 <!DOCTYPE html>当前页面采取…

汽车零部件材料耐候性测试氙光太阳辐射系统试验箱

概述 汽车零部件等领域的材料耐候性测试是一项关键的质量控制环节&#xff0c;它关乎汽车部件在各种气候条件下的性能表现和寿命。塑料件光照老化实验箱&#xff0c;即氙灯老化试验箱&#xff0c;在其中扮演着至关重要的角色。通过模拟自然环境中的光照、温度、湿度等条件&…

分享一个在 WinForm 桌面程序中使用进度条展示报表处理进度的例子,提升用户体验

前言 在有些比较消耗时间的业务场景中&#xff0c;比如生成报表等&#xff0c;如果没有在操作的过程中向用户反馈操作进度&#xff0c;会让用户以为程序 “死” 掉了&#xff0c;用户体验非常不好。 WinForm 桌面程序项目与 Console 项目不一样&#xff0c;如果 Console 项目…

农村程序员陈随易2024年中总结

今天是 2024年7月1日&#xff0c;时间如白驹过隙&#xff0c;今年已去其一半。 总结一下今年上半年的情况&#xff0c;给大家提供一些参考和建议。 希望大家关注一下公众号 陈随易&#xff0c;有些内容只在公众号发表。 先看看我的年初计划&#xff0c;这个在今年年初的时候&…

【解锁未来:深入了解机器学习的核心技术与实际应用】

解锁未来&#xff1a;深入了解机器学习的核心技术与实际应用 &#x1f48e;1.引言&#x1f48e;1.1 什么是机器学习&#xff1f; &#x1f48e;2 机器学习的分类&#x1f48e;3 常用的机器学习算法&#x1f48e;3.1 线性回归&#xff08;Linear Regression&#xff09;&#x1…

141个图表,完美展示数据分类别关系!

本文介绍使用Python工具seaborn详细实现分类关系图表&#xff0c;包含8类图141个代码模版。 分类关系图表用于展示数字变量和一个或多个分类变量之间的关系&#xff0c;可以进一步分为&#xff1a;箱形图&#xff08;box plot&#xff09;、增强箱形图&#xff08;enhanced bo…

C++进阶 | [4.3] 红黑树

摘要&#xff1a;什么是红黑树&#xff0c;模拟实现红黑树 红黑树 &#xff0c;是一种 二叉搜索树 &#xff0c;但 在每个结点上增加一个存储位表示结点的颜色&#xff0c;可以是 Red 或 Black 。 通过对 任何一条从根到叶子的路径上各个结点着色方式的限制&#xff0c;红黑树…

创建XCOM窗体和跳转连接

Xcom 窗体&#xff1a; (groupBox组合框&#xff0c;comboBox下拉框) xcom代码&#xff1a; namespace _01_作业 {// 1kb 1024B 1200B// 1MB public partial class Form1 : Form{public List<string> botelv new List<string> { "600","1200&…

基于Tools体验NLP编程的魅力

大模型能理解自然语言&#xff0c;从而能解决问题&#xff0c;但是就像人类大脑一样&#xff0c;大脑只能发送指令&#xff0c;实际行动得靠四肢&#xff0c;所以LangChain4j提供的Tools机制就是大模型的四肢。 大模型的不足 大模型在解决问题时&#xff0c;是基于互联网上很…

图像大模型中的注意力和因果掩码

AIM — 图像领域中 LLM 的对应物。尽管 iGPT 已经存在 2 年多了&#xff0c;但自回归尚未得到充分探索。在本文中&#xff0c;作者表明&#xff0c;当使用 AIM 对网络进行预训练时&#xff0c;一组图像数据集上的下游任务的平均准确率会随着数据和参数的增加而线性增加。 要运…

Android 大话binder通信

戳蓝字“牛晓伟”关注我哦&#xff01; 用心坚持输出易读、有趣、有深度、高质量、体系化的技术文章 由于 Android 大话binder通信(上) 和 Android 大话binder通信(下) 分为两篇阅读体验不好&#xff0c;顾合并为一篇。 本文摘要 用故事的方式把binder通信的整个过程都描述…

机械原理介绍

机械原理介绍 1 介绍1.1 概述1.2 资料书籍在线资料 2 [机械原理知识整理](https://tomm.muzing.top/) 【muzing整理编写】1 绪论2 机构的结构分析2-2 机构的组成及分类2-3 机构运动简图2-4 机构具有确定运动的条件及最小阻力定律2-5 2-6 机构自由度的计算2-7 平面机构的组成原理…

【深度学习】图生图img3img论文原理,SD EDIT

https://arxiv.org/abs/2108.01073 摘要 引导图像合成技术使普通用户能够以最小的努力创建和编辑逼真的图像。关键挑战在于平衡对用户输入&#xff08;例如&#xff0c;手绘的彩色笔画&#xff09;的忠实度和合成图像的真实感。现有的基于GAN的方法试图通过使用条件GAN或GAN反…

64.WEB渗透测试-信息收集- WAF、框架组件识别(4)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a;63.WEB渗透测试-信息收集- WAF、框架组件识别&#xff08;3&#xff09;-CSDN博客 我们在…

面经-计算机基础

1.计算机⽹络 1.1 OSI与TCP/IP各层的结构与功能,都有哪些协议? 计算机网络体系结构 应⽤层 应⽤层 (application-layer &#xff09;的任务是通过应⽤进程间的交互来完成特定⽹络应⽤。 应⽤层协议定 义的是应⽤进程&#xff08;进程&#xff1a;主机中正在运⾏的程序&…

便签 Pro(Mac 智能便签工具)专业版怎么样,值得购买吗?

使用 Mac 的小伙伴平时都是怎么记录工作生活中的碎片信息&#xff1f;用聊天软件&#xff0c;还是系统备忘录呢&#xff1f; 实际体验下来&#xff0c;其实都难以称得上好用。 赶紧来了解一下 Mac 多彩思维速记工具便签 Pro&#xff01;拥有智能边框大小、iCloud 同步、历史记…

昇思25天学习打卡营第1天|MindSpore 全流程操作指南

目录 MindSpore 库相关操作的导入指南 处理数据集 网络构建 模型训练 保存模型 加载模型 MindSpore 库相关操作的导入指南 首先&#xff0c;我们导入了 MindSpore 这个库的整个模块。然后&#xff0c;从 MindSpore 库中引入了 nn 模块&#xff0c;一般来说&#xff0c;它是…

JavaEE—什么是服务器?以及Tomcat安装到如何集成到IDEA中?

目录 ▐ 前言 ▐ JavaEE是指什么? ▐ 什么是服务器&#xff1f; ▐ Tomcat安装教程 * 修改服务端口号 ▐ 将Tomcat集成到IDEA中 ▐ 测试 ▐ 结语 ▐ 前言 至此&#xff0c;这半年来我已经完成了JavaSE&#xff0c;Mysql数据库&#xff0c;以及Web前端知识的学习了&am…

ROS2在rviz2中实时显示轨迹和点

本文是将《ROS在rviz中实时显示轨迹和点》博客中rviz轨迹显示转为ROS2环境中的rviz2显示。 ros2的工作空间创建这里就不展示了。 包的创建 ros2 pkg create --build-type ament_cmake showpath --dependencies rclcpp nav_msgs geometry_msgs tf2_geometry_msgsshowpath.cpp…

【微服务网关——Websocket代理】

1.Websocket协议与原理 1.1 连接建立协议 1.1.1 客户端发起连接请求 客户端通过 HTTP 请求发起 WebSocket 连接。以下是一个 WebSocket 握手请求的例子&#xff1a; GET /chat HTTP/1.1 Host: server.example.com Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key…