IP 地址和 MAC 地址是如何转换的
在计算机网络的世界里,IP 地址和 MAC 地址就像是网络设备的两个重要 “身份证”,各自承担着不同的职责。IP 地址基于网络层,用于在复杂的网络环境中定位设备;MAC 地址则是固化在网卡上的物理地址,是设备的硬件标识。那么,这两种地址之间是如何实现转换的呢?答案就藏在 ARP 协议(地址解析协议,Address Resolution Protocol)中。
一、IP 地址与 MAC 地址:网络通信的双支柱
IP 地址是逻辑地址,由网络号和主机号组成,就像门牌号,方便网络在庞大的互联网中找到特定的设备。它可以根据网络环境的变化进行动态分配或手动设置,灵活性高,在网络层的数据包传输中起着关键作用。
MAC 地址则是烧录在网卡芯片中的物理地址,全球唯一,就像我们的身份证号码,无论设备如何移动,这个地址始终不变。它由 48 位二进制数组成,通常用十六进制表示,如 00:1A:2B:3C:4D:5E ,在数据链路层负责设备之间的直接通信。
在网络通信过程中,IP 地址负责将数据从源网络发送到目标网络,而 MAC 地址则确保数据在链路层能够准确无误地送达目标设备。两者相互配合,缺一不可。
二、ARP 协议:地址转换的桥梁
ARP 协议的主要功能就是将 IP 地址解析为对应的 MAC 地址,它工作在网络层和数据链路层之间。当一台主机想要向另一台主机发送数据时,虽然它知道目标主机的 IP 地址,但在数据链路层,数据的传输必须依靠 MAC 地址,此时就需要 ARP 协议来进行地址转换。
(一)ARP 请求
假设主机 A(IP 地址为 192.168.1.10 ,MAC 地址为 AA:BB:CC:DD:EE:FF )想要向主机 B(IP 地址为 192.168.1.20 )发送数据。首先,主机 A 会在自己的 ARP 缓存表中查找 192.168.1.20 对应的 MAC 地址。如果缓存表中没有该记录,主机 A 就会发出一个 ARP 请求广播包。这个广播包中包含了主机 A 的 IP 地址、MAC 地址以及目标 IP 地址(即主机 B 的 IP 地址)。网络中的所有设备都会收到这个广播包,但只有 IP 地址与目标 IP 地址匹配的主机 B 会对其进行处理。
(二)ARP 响应
主机 B 收到 ARP 请求广播包后,发现其中的目标 IP 地址正是自己的 IP 地址,于是会生成一个 ARP 响应包。在这个响应包中,包含了主机 B 的 IP 地址和 MAC 地址,并将其发送回主机 A。这个响应包是单播包,直接发送给主机 A。
(三)更新 ARP 缓存表
主机 A 收到主机 B 的 ARP 响应包后,会将主机 B 的 IP 地址和 MAC 地址的对应关系记录到自己的 ARP 缓存表中。这样,下次主机 A 再向主机 B 发送数据时,就可以直接从 ARP 缓存表中获取主机 B 的 MAC 地址,而无需再次发送 ARP 请求。ARP 缓存表中的记录并不是永久保存的,通常会设置一个老化时间,超过这个时间后,对应的记录会被删除,以便在网络环境变化时能够及时更新地址映射关系。
三、反向地址解析:RARP 与 ARP 的逆过程
除了 ARP 协议将 IP 地址解析为 MAC 地址外,还有反向地址解析协议 RARP(Reverse Address Resolution Protocol),它的作用与 ARP 相反,是将 MAC 地址解析为 IP 地址。在一些无盘工作站等特殊场景中,设备知道自己的 MAC 地址,但不知道自己的 IP 地址,此时就需要通过 RARP 协议向 RARP 服务器请求获取 IP 地址。不过,随着 DHCP(动态主机配置协议)的广泛应用,RARP 的使用场景越来越少。
四、ARP 协议的安全性问题与防范
ARP 协议虽然在地址转换中起着重要作用,但它也存在一定的安全隐患。由于 ARP 请求是广播形式,并且没有严格的认证机制,攻击者可以利用 ARP 欺骗手段,发送虚假的 ARP 响应包,篡改网络中设备的 ARP 缓存表。例如,攻击者可以将自己的 MAC 地址伪装成网关的 MAC 地址,使得网络中的其他设备将原本发往网关的数据发送到攻击者的设备上,从而实现中间人攻击,窃取或篡改数据。
为了防范 ARP 欺骗,可以采取一些措施,如使用静态 ARP 表,手动绑定 IP 地址和 MAC 地址的对应关系,这样可以防止 ARP 缓存表被恶意篡改;还可以使用 ARP 防火墙,实时监测网络中的 ARP 数据包,拦截可疑的 ARP 请求和响应。
相关文章:
IP 地址和 MAC 地址是如何转换的
在计算机网络的世界里,IP 地址和 MAC 地址就像是网络设备的两个重要 “身份证”,各自承担着不同的职责。IP 地址基于网络层,用于在复杂的网络环境中定位设备;MAC 地址则是固化在网卡上的物理地址,是设备的硬件标识。那…...
[Unity]设置自动打包脚本
背景 我们经常会使用自动打包功能 文件名称: AutoBuild.csusing System.IO; using System.Linq; using UnityEditor; using UnityEngine;public class AutoBuilder {[MenuItem("Build/GetCurrentBuildTarget")]public static void GetCurrentBuildTarget(){Debug.L…...
使用Docker部署魔豆文库:本地化搭建私有文档管理系统
文章目录 前言1.关于Moredoc2.本地部署Moredoc3.Moredoc简单使用4. 安装内网穿透5.配置Moredoc公网地址6. 配置固定公网地址 前言 电脑中文件超多的小伙伴们,是不是每次打开机都感觉像是打开了潘多拉魔盒?那些杂乱无章的文档和文件夹简直让人头大如斗&a…...
数据结构---【二叉搜索树】
必须满足的条件:左子树中所有节点的值< 根节点的值 < 右子树中所有节点的值 任意节点的左右子树也是搜索二叉树,也要满足上面的条件 二叉搜索树与堆不同,不一定是完全二叉树,采用链式结构 搜索二叉树的中序遍历是升序 1、查…...
智能检索革命全景透视——基于《搜索引擎信息检索困境破解体系》深度拆解
以下为严格遵循您要求的完整解析报告,全文约52000字符,包含7章26个子节156个量化指标: 智能检索革命全景透视——基于《搜索引擎信息检索困境破解体系》深度拆解 第一章 行业格局解码(2987字) 1.1 用户画像三维透视…...
STM32printf重定向到串口含armcc和gcc两种方案
STM32串口重定向:MDK与GCC环境下需重写的函数差异 在嵌入式开发中,尤其是使用 STM32系列微控制器 的项目中,调试信息的输出是不可或缺的一部分。为了方便调试,开发者通常会选择将 printf 等标准输出函数通过 UART 串口发送到 PC …...
蓝桥杯 序列计数
序列计数 原题目链接 题目描述 小明想知道,满足以下条件的正整数序列的数量: 第一项为 n;第二项不超过 n;从第三项开始,每一项小于前两项的差的绝对值。 请计算,对于给定的 n,有多少种满足…...
CSS常用属性_(进阶)
目录 1.尺寸单位与颜色 (1)尺寸 (2)颜色 常用2种 (3)颜色属性值(透明度) 例如: 2.字体属性font 例如: **顺序 3.文本属性 编辑例如: …...
模拟频谱分析仪(Linux c++ Qt)
此Demo由三个小项目组成,分布是模拟的硬件采集频谱数据端,后台处理端以及qt前端,于Linux系统下进行开发,使用的软件为clion和QtCreator,编程语言为c,使用了linux下的boost库(1.72),多线程和TCP,UDP以及c的一些新特性,为本人自己想的练手的小项目. 1.项目架构 整体设计采集端不…...
从实列中学习linux shell5: 利用shell 脚本 检测硬盘空间容量,当使用量达到80%的时候 发送邮件
下面是用于检测硬盘空间并在使用量达到80%时发送邮件的Shell脚本 第一步 编写脚本 #!/bin/bash# 邮件配置 recipient"zhaoqingyou99qhzt.com" subject"磁盘空间警报" mail_cmd"/usr/bin/mail" # 根据实际邮件命令路径修改# 检查是否安装邮件工…...
NLP 分词技术学习
文章目录 分词1. 分词方法2. 分词工具3. 分词难点 分词 分词是将连续的中文字符串序列切分成有意义的词语序列的过程,是 NLP 的基础任务之一。需要掌握以下内容: 1. 分词方法 基于规则/词典的方法(字符串匹配): 正向…...
大模型——使用 StarRocks 作为向量数据库
大模型——使用 StarRocks 作为向量数据库 本章节介绍了 StarRocks,这是一款高性能的分析数据库,并演示了如何将其用作向量数据库。内容涵盖了设置、文档加载、标记化、创建向量数据库实例以及构建一个能够检索的问答系统。 StarRocks StarRocks 是一个次世代的亚秒级 MPP…...
涨薪技术|0到1学会性能测试第44课-apachetop模块监控
前面的推文我们认识了apache目录结构与配置知识,今天我们继续来看下apache监控技术,究竟是怎么做性能监控???后续文章都会系统分享干货,带大家从0到1学会性能测试。 Apache监控技术 关于apache监控通常会有两种方法: 一是&…...
MySQL 基本查询(一)
文章目录 Create(insert)指定列的单行插入和全列插入多行全列插入和指定列的多行插入如果主键存在,要插入替换存在的值replace 基本select全列查询指定列查询where子句where子句案例语文成绩在 [80, 90] 分的同学及语文成绩数学成绩是 58 或者 59 或者 98 或者 99 分…...
Chrome 136 H265 WebRTC 支持 正式版本已包含
时间过的真快,去年8月份写过一篇文章介绍如何加参数方式启动Chrome H265 硬件解码器, 现在的136版本已经包含在内,至此WebRTC已经完整包含了H264和H265解码器,这个事情应该从2015年开始,Google强推VP9 AV1,…...
涨薪技术|0到1学会性能测试第43课-apache status模块监控
前面的推文我们认识了apache目录结构与配置知识,今天我们继续来看下apache监控技术,究竟是怎么做性能监控的。后续文章都会系统分享干货,带大家从0到1学会性能测试。 Apache监控技术 关于apache监控通常会有两种方法: 一是:使用apache自带的status监控模块进行监控; 二是…...
一、Javaweb是什么?
1.1 客户端与服务端 客户端 :用于与用户进行交互,接受用户的输入或操作,且展示服务器端的数据以及向服务器传递数据。 例如:手机app,微信小程序、浏览器… 服务端 :与客户端进行交互,接受客户…...
研发效率破局之道阅读总结(4)个人效率
研发效率破局之道阅读总结(4)个人效率 Author: Once Day Date: 2025年4月30日 一位热衷于Linux学习和开发的菜鸟,试图谱写一场冒险之旅,也许终点只是一场白日梦… 漫漫长路,有人对你微笑过嘛… 全系列文章可参考专栏: 程序的艺术_Once-Day…...
word模板填充导出-(支持word导出、pdf导出)
word模板填充转pdf导出处理 关于word模板填充示例java根据word模板填充数据并导出-五官一体即忢 相关依赖插件【LibreOffice】 安装 LibreOffice:从LibreOffice 官方网站下载并安装适合 Windows 系统或者Linux系统的版本 启动 LibreOffice 服务:打开…...
【Kubernets知识】Secret组件更新大全
文章目录 Kubernetes Secret 更新机制详解及场景指南一、直接替换式更新(全量覆盖)操作命令特点适用场景风险提示 二、JSON Patch 精准更新操作命令特点适用场景示例流程 三、Strategic Merge Patch(策略合并)操作命令特点适用场景…...
《分词算法大揭秘:BPE、BBPE、WordPiece、ULM常见方法介绍》
分词算法是自然语言处理(NLP)中的一个重要预处理步骤,它将文本分割成更小的单元(如单词、子词或字符)。以下是几种常见的分词算法:Byte Pair Encoding (BPE)、Byte-level BPE (BBPE)、WordPiece 和 Unigram…...
MySQL RR (Repeatable Read) 隔离级别规则细节
准备 测试表: CREATE TABLE transaction_test (id int,value int,mtime timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY (id) ) ENGINE InnoDB;mysql设置: transaction_isolation REPEATABLE-READ auto…...
iOS HTTPS 抓包踩坑记:几种方案尝试与替代工具记录
iOS HTTPS 抓包踩坑记:几种方案尝试与替代工具记录 最近负责一个 iOS App 的调试任务,遇到了 HTTPS 接口抓包难题,顺手做个记录,顺带分享一些试过的工具和方案。 背景 这个 App 启用了 HTTPS 双向认证和证书 pinning࿰…...
第十一节:Shell脚本编程
理论知识 Shell 脚本的基本概念:Shell 脚本是一种为 shell 编写的脚本程序,它可以将一系列的命令组合在一起,实现自动化任务。Shell 脚本通常以 .sh 为扩展名。Shell 脚本的执行方式:可以将 Shell 脚本作为可执行程序执行&#x…...
Electron Forge【实战】带图片的 AI 聊天
改用支持图片的 AI 模型 qwen-turbo 仅支持文字,要想体验图片聊天,需改用 qwen-vl-plus src/initData.ts {id: 2,name: "aliyun",title: "阿里 -- 通义千问",desc: "阿里百炼 -- 通义千问",// https://help.aliyun.com/z…...
Learning vtkjs之OutlineFilter
过滤器 外轮廓包围盒生成 介绍 vtkOutlineFilter - 一个为较大单元生成三角形的过滤器 vtkOutlineFilter 是一个将具有三个以上点的单元转换为三角形的过滤器。 感觉就是一个包围盒生成的算法,而且试用下来,只能支持一个InputConnection 效果 核心逻…...
腾讯云CodeBuddy初体验
我正在参加CodeBuddy「首席试玩官」内容创作大赛,本文所使用的 CodeBuddy 免费下载链接:腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴”; 最近AI编程很火,据说我司程序员现在每天可以准点下班,AI起到了很大的作…...
加速LLM大模型推理,KV缓存技术详解与PyTorch实现
随着大型语言模型(LLM)规模和复杂度的指数级增长,推理效率已成为人工智能领域亟待解决的关键挑战。当前,GPT-4、Claude 3和Llama 3等大模型虽然表现出强大的理解与生成能力,但其自回归解码过程中的计算冗余问题依然显著制约着实际应用场景中的…...
江西省电价新政发布!微电网源网荷储充一体化平台重塑企业能源格局!
一. 江西省发改委发布发布 4月25日,江西省发改委发布关于公开征求《关于进一步完善分时电价机制有关事项的通知(征求意见稿)》意见的公告。征求意见提出: 江西省:中午3小时谷段电价,电价下浮60%~70% 除1…...
深夜突发:OpenAI紧急修复GPT-4o“献媚”问题
凌晨三点,OpenAI首席执行官Sam Altman发布官方声明,宣布针对GPT-4o的“献媚”问题展开紧急修复。这场突如其来的技术风波,源于近期大量用户对模型行为模式的不满。许多用户发现,当他们向GPT-4o提出类似“你觉得我怎么样”或“如果…...
Webpack 和 Vite 中静态资源动态加载的实现原理与方法详解
静态资源动态加载 需求背景:现在需要加载指定文件夹下的对应图片,需要根据用户选的参数自动加载对应图片 一、前言:模块化开发的演进需求 在现代前端工程中,随着SPA应用复杂度的提升,静态资源动态加载已成为优化首屏性…...
SMMU相关知识
1. 使用smmu的作用 支持具有DMA能力设备的虚拟化实现解决32位系统访问超过4G空间的地址解决系统动态分配大块连续内存 2. 为什么需要使用2级页表 SMMU(系统内存管理单元)采用二级页表架构的核心原因可归结为地址空间管理效率、内存资源优化以及虚拟化…...
2025年数字创意设计与图像处理国际会议 (DCDIP 2025)
2025 International Conference on Digital Creative Design and Image Processing 【一】、大会信息 会议简称:DCDIP 2025 大会地点:中国济南 收录检索:提交Ei Compendex,CPCI,CNKI,Google Scholar等 【二…...
39.RocketMQ高性能核心原理与源码架构剖析
1. 源码环境搭建 1.1 主要功能模块 RocketMQ的官方Git仓库地址:GitHub - apache/rocketmq: Apache RocketMQ is a cloud native messaging and streaming platform, making it simple to build event-driven applications. RocketMQ的官方网站上下载指定版…...
SVTAV1 编码函数 svt_aom_is_pic_skipped
一 函数解释 1.1 svt_aom_is_pic_skipped函数的作用是判断当前图片是否可以跳过编码处理。 具体分析如下 函数逻辑 参数说明:函数接收一个指向图片父控制集的指针PictureParentControlSet *pcs, 通过这个指针可以获取与图片相关的各种信息,用于判断是否跳…...
C++负载均衡远程调用学习之基础TCP服务
目录 1.LARS课程模块介绍 2.LARS的功能演示机场景作用 3.LARS的reactor框架的组成部分 4.Lars_reactor的项目目录构建 5.Lars_tcp_server的基础服务开发 6.Lars_tcp_server的accept实现 7.LarsV0.1总结 1.LARS课程模块介绍 2.LARS的功能演示机场景作用 # Lars系统开发 …...
WebRtc09:网络基础P2P/STUN/TURN/ICE
网络传输基本知识 NATSTUN(Session Traversal Utilities for NAT)TURNICE NAT 产生的原因 IPV4地址不够出于网络安全的原因 NAT种类 完全锥型NAT(Full Cone NAT)地址限制型NAT(Address Restricted Cone NAT)端口限制型NAT(Port Restricted Cone NAT…...
UDP/TCP协议知识及相关机制
一.UDP协议 UDP是一种无连接、不可靠、面向报文、全双工传输层的协议~ 1.无连接 : 知道对端的端口号和IP可以直接传输,不需要建立连接 2..不可靠:没有确认机制,没有重传机制,不知道数据包能否能正确到达对端࿰…...
windows 下 oracle 数据库的备份与还原
1、备份 创建备份出来的文件存放的位置。 创建目录对象,在数据库中创建一个目录对象,该对象指向文件系统中用于存储导出文件的实际目录( sql 命令,可以在 plsql 中执行)。 -- 创建目录对象,\D:\Oracle19c\…...
LeetCode41☞缺失的第一个正数
关联LeetCode题号41 本题特点 数组,哈希表 本题思路 找缺失的最小正数,看举例说明缺失的正数,一种情况是连续的最小的正数,一种是缺失连续但不是最小的正数验证数组内数组是否连续,可以通过 nums[i]1 是否存nums组…...
毕业论文 | 基于STM32的自动烟雾报警系统设计
基于STM32的烟雾报警系统 一、系统设计原理1. **系统架构**2. **工作原理**二、核心公式与算法1. **MQ-2传感器浓度计算**2. **温度传感器数据处理**3. **校准与滤波**三、关键代码实现1. **ADC初始化与数据读取(以MQ-2为例)**2. **报警逻辑与阈值设置**3. **EEPROM存储阈值*…...
iOS 性能调优实战:三款工具横向对比实测(含 Instruments、KeyMob、Xlog)
iOS 性能调优实战:三款工具横向对比实测(含 Instruments、KeyMob、Xlog) 在日常 iOS 开发中,性能问题往往是最难排查、最影响体验的部分。无论是 CPU 峰值、内存飙升,还是偶发卡顿、异常崩溃,背后都隐藏着…...
flutter 专题 五十八 关于Flutter提示Your Xcode project requires migration的错误
最近,升级了Flutter后,运行之前的项目报了一个如下的错误: Your Xcode project requires migration. See https://flutter.dev/docs/development/ios-project-migration for details. Error launching application on iPhone 11 Pro.想到之前…...
【c++】【STL】list详解
目录 list的作用list的接口构造函数赋值运算符重载迭代器相关sizeemptyfrontbackassignpush_frontpop_frontpush_backpop_backinserteraseswapresizeclearspliceremoveremove_ifuniquemergesortreverse关系运算符重载(非成员函数) list的模拟实现结点类迭…...
redis 数据类型新手练习系列——List类型
redis 数据类型 Redis 主要支持以下几种数据类型: (1)string(字符串): 基本的数据存储单元,可以存储字符串、整数或者浮点数。 (2)hash(哈希):一个键值对集…...
文章记单词 | 第52篇(六级)
一,单词释义 grasp:英 [ɡrɑːsp] 美 [ɡrsp],v. 抓住;紧握;理解;领会;n. 紧握;控制;理解glue:英 [ɡluː] 美 [ɡluː],n. 胶水;胶…...
【今日三题】kotori和气球(排列) / 走迷宫(BFS最短路) / 主持人调度(二)(贪心+优先级队列)
⭐️个人主页:小羊 ⭐️所属专栏:每日两三题 很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~ 目录 kotori和气球(排列)走迷宫(BFS最短路)主持人调度(二)(贪心优先级队列) kotori和气球(排列) kotori和…...
Mysql数据库高可用解决方案-Mysql Router
目录 一.MySQL Router介绍 1. 什么是 MySQL Router? 2. MySQL Router 的主要用途 3. MySQL Router 的工作原理 4. MySQL Router 的核心组件 5. MySQL Router 的部署和配置 6. MySQL Router 的优势 7. 注意事项 8. MySQL Router 与其他工具的对比 9. 总结 …...
windows系统 压力测试技术
一、CPU压测模拟 工具:CpuStres v2.0 官网:https://learn.microsoft.com/en-us/sysinternals/downloads/cpustres 功能:是一个工具类,用来模拟在一个进程中启动最多64个线程,且可以独立控制任何一个线程的启动/暂停、…...
汽车免拆诊断案例 | 2015款奔驰C200L车发动机起动延迟
故障现象 一辆2015款奔驰C200L车,搭载274发动机,累计行驶里程约为15.6万km。该车发动机起动延迟,且发动机故障灯异常点亮。 故障诊断 用故障检测仪检测,发动机控制单元中存储有故障代码“P001685 进气凸轮轴(气缸…...