计算机网络:网络层 —— IPv4 地址与 MAC 地址 | ARP 协议

文章目录

        • IPv4地址与MAC地址的封装位置
        • IPv4地址与MAC地址的关系
        • 地址解析协议ARP
          • 工作原理
          • ARP高速缓存表

IPv4地址与MAC地址的封装位置

在数据传输过程中,每一层都会添加自己的头部信息,最终形成完整的数据包。具体来说:

  • 应用层生成的应用程序数据被称为应用层报文
  • 当数据传递到运输层时,会被加上运输层首部,形成运输层段
  • 接下来,网际层会在前面的基础上再添加IP首部,形成IP数据报
  • 最后,在网络接口层,数据会被封装成带有MAC地址数据帧,并通过物理链路进行传输。

在整个过程中,数据从高层向下层层封装,直至最底层的物理信号流。反向传输时,则是逐层解封,恢复成最初的应用层数据。

![[IPv4地址与MAC地址的封装位置.png]]

  • 在数据包的传送过程中,数据包的源IP地址和目的IP地址保持不变,因为IP地址是用来识别网络中的逻辑位置,而不是物理位置。

  • 在数据包的传送过程中,数据包的源MAC地址和目的MAC地址逐链路(或逐网络)变化

![[IPv4地址与MAC地址的变化.png]]

当数据包从一个局域网(LAN)移动到另一个局域网时,其源 MAC 地址和目的 MAC 地址会发生改变。例如,从 H1 发出的数据包最初的源 MAC 地址是 MAC1,到达 R1 时,源 MAC 变成了 MAC3;然后从 R1 转发到 R2 时,源 MAC 变成 MAC4,以此类推,直到达到目的地 H2,此时源 MAC 是 MAC6。

网络通信的本质IP 地址用于跨网络的寻址和路由,而 MAC 地址用于同一局域网内的直接通信。每次数据包跨越不同的局域网边界时,都需要重新确定 MAC 地址,以适应新环境下的通信需求。

IPv4地址与MAC地址的关系

如果仅使用 MAC 地址进行通信,则会出现以主要问题:

  • 因特网中的每台路由器的路由表中就必须记录因特网上所有主机和路由器各接口的MAC地址

  • 手工给各路由器配置路由表几乎是不可能完成的任务,即使使用路由协议让路由器通过相互交换路由信息来自动构建路由表,也会因为路由信息需要包含海量的MAC地址信息而严重占用通信资源

  • 包含海量 MAC 地址的路由信息需要路由器具备极大的存储空间,并且会给分组的查表转发带来非常大的时延

因特网的网际层使用IP地址进行寻址,就可使因特网中各路由器的路由表中的路由记录的数量大大减少,因为只需记录部分网络的网络地址,而不是记录每个网络中各通信设备的各接口的 MAC 地址。

路由器收到 IP 数据报后,根据其首部中的目的IP地址的网络号部分,基于自己的路由表进行查表转发

查表转发的结果可以指明 IP 数据报的下一跳路由器的 IP 地址,但无法指明该 IP 地址所对应的 MAC 地址。因此,在数据链路层封装该 IP 数据报成为帧时,帧首部中的目的 MAC 地址字段就无法填写,该问题需要使用网际层中的地址解析协议ARP来解决

地址解析协议ARP

地址解析协议(ARP,Address Resolution Protocol)是一种用于将网络层(IP层)的32位IP地址解析为数据链路层(物理层)的48位MAC地址的协议。用于解决同一局域网内,主机之间或路由器的 IP 地址和 MAC 地址的映射问题,不能跨网络使用

![[地址解析协议ARP范围.png]]

  • 由于 ARP 协议的主要用途是从网际层使用的IP地址解析出在数据链路层使用的MAC地址。因此,有的教材将 ARP 协议划归在网际层,而有的教材将 ARP 协议划归在数据链路层。这两种做法都是可以的。

  • ARP 协议还有其他类型的报文,例如用于检查 IP 地址冲突的“无故ARP”(Gratuitous ARP)

  • 由于 ARP 协议很早就制定出来了(1982年11月)当时并没有考虑网络安全问题。因此,ARP 协议没有安全验证机制,存在ARP欺骗和攻击等问题

  • ARP 高速缓存表用来记录 IP 地址与 MAC 地址的对应关系

工作原理
  1. 请求广播

    • 当一个设备(发送方)需要发送数据包给另一个设备(目标方)时,它首先检查本地ARP缓存中是否有目标方的MAC地址。

    • 如果没有,发送方会广播一个ARP请求,ARP请求报文包含发送方的IP地址和MAC地址,以及目标方的IP地址

主机A 发送广播 ARP 请求

![[ARP广播请求.png]]

  • 主机A 想要与 主机B 通信,但它只知道 主机B 的 IP 地址(192.168.0.2),不知道其 MAC 地址。

  • 主机A 构造一个 ARP 请求报文,其中包含它自己的 IP 地址(192.168.0.1)和 MAC 地址(00-0C-85-72-AB-72),以及它想知道的目标 IP 地址(192.168.0.2)。

  • 这个 ARP 请求报文是一个广播报文(目的 MAC 地址设置为 FF-FF-FF-FF-FF-FF),它会被发送到同一个局域网(LAN)中的所有设备

  1. ARP响应

    • 网络上的所有设备都会收到广播ARP请求,网卡将广播帧交付上层处理,但只有目标方(即 IP 地址与 广播请求中的目的 IP 地址相同)会响应。

    • 目标方检查请求中的 IP 地址是否与其自身的 IP 地址匹配,如果匹配,则发送一个ARP响应单播,需要封装在以太网帧中发送),ARP响应报文包含目标方的MAC地址

主机 B 单播 ARP 响应

![[单播ARP响应.png]]

  • 主机B 看到 ARP 请求中的目标 IP 地址是自己,于是构建一个 ARP 响应报文,其中包括它自己的 IP 地址(192.168.0.2)和 MAC 地址(00-E0-F9-A3-43-77)。

  • 主机B 将这个 ARP 响应报文单播发送回 主机A,而不像 ARP 请求那样是广播。

  1. 更新ARP缓存

    • 发送方收到ARP响应后,将目标方的IP地址和MAC地址的对应关系存储在本地ARP缓存中。

更新 ARP 缓存:

![[更新ARP缓存.png]]

  • 主机A 接收到 主机B 的 ARP 响应后,就会将 主机B 的 IP 地址和 MAC 地址记录在其 ARP 高速缓存表中,这样以后就可以直接用 MAC 地址与 主机B 通信,而不需要再次广播 ARP 请求。

通过这个过程,主机A 成功获得了 主机B 的 MAC 地址,从而能够在局域网中实现两台设备间的通信。

ARP高速缓存表

ARP高速缓存表(ARP Cache)是一个临时表,用于存储最近IP地址到硬件地址(即MAC地址)之间的映射记录。这个缓存表对于提高网络通信效率非常重要,因为它允许设备在发送数据前快速查找目标设备的MAC地址,而无需每次都进行ARP请求。

ARP 高速缓存表中的记录分为动态记录静态记录

  • 动态记录:由主机通过 ARP 协议自动获取到的,随时间推移自动添加和删除。因为ARP高速缓存表中的IP地址与MAC地址的对应关系并不是永久不变的。例如,主机更换了一块新网卡。

    • 当设备需要解析一个 IP 地址到 MAC 地址的映射时,如果 ARP 缓存表中不存在这个映射,设备会发送 ARP 请求并等待响应。一旦收到响应,这个映射就会被添加到 ARP 缓存表中。

    • 每个动态 ARP 缓存项都有一个生存时间TTL,Time to Live)(默认为两分钟),当 TTL 为 0 时,这个缓存项就会被删除。在 Windows 系统中,TTL通常不超过 10 分钟。

  • 静态记录:静态 ARP 缓存条目是永久性的,不会随时间自动删除。这些条目可以通过 TCP/IP 工具手动添加和删除。静态 ARP 缓存条目通常用于禁止节点发送对常用本地 IPv4 地址(如路由器和服务器的 IPv4 地址)的 ARP 请求。不同操作系统下的生命周期不同,例如系统重启后不存在或系统重启后依然有效。

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

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

相关文章

洛谷 P3130 [USACO15DEC] Counting Haybale P

原题链接 题目本质:线段树 感觉我对线段树稍有敏感,线段树一眼就看出来了,思路出来得也快,这道题也并不是很难。 解题思路: 这道题能看出来是线段树就基本成功一半了,区间修改区间查询,就基…

「二叉树进阶题解:构建、遍历与结构转化全解析」

文章目录 根据二叉树创建字符串思路代码 二叉树的层序遍历思路代码 二叉树的最近公共祖先思路代码 二叉搜索树与双向链表思路代码 从前序与中序遍历序列构造二叉树思路代码 总结 根据二叉树创建字符串 题目: 样例: 可以看见,唯一特殊的就…

深度学习-循环神经网络-LSTM对序列数据进行预测

项目简介: 使用LSTM模型, 对文本数据进行预测, 每次截取字符20, 对第二十一个字符进行预测, LSTM层: units100, activationrelu Dense层: units输入的文本中的字符种类, 比如我使用的文本有644个不同的字符, 那么units64 激活函数: 因为是多分类, 使用softmax 因为这是最…

【AI大模型】ChatGPT模型原理介绍

ChatGPT 是一种基于大规模深度学习语言模型 GPT(Generative Pre-trained Transformer)的 AI 模型。它使用自然语言处理(NLP)技术,基于大量文本数据进行训练,通过生成式模型来理解和生成自然语言对话。以下是…

微信小程序live-pusher和video同时使用,video播放声音时时大时小

一、遇到的问题 微信小程序live-pusher和video同时使用,video播放声音时有时无时大时小 二、排查流程 业务是模拟面试,每道题一个推流live-pusher和一个面试题video,一次面试有多道面试题,页面就一个live-pusher和一个video,切换面试题时给live-pusher和video重新赋值u…

gitlab 配置ssh keys

settings -- 终端配置: git config --global user.email "yxthotmail.cm" 配置gitlab 账号邮箱 git config --global user.name "xt.yao" 配置gitlab账号用户名 生成SSH key,输入命令ssh-keygen -t rsa,一直按回车…

管家婆财贸ERP BB033.查看历史销售选存货

最低适用版本: 财贸系列 21.5 插件简要功能说明: 销售单支持选择历史销售明细数据,快捷开单采购单保存后,明细存货的存货备用8更新为当前采购单制单日期更多细节描述见下方详细文档插件操作视频: 进销存类定制插件--查看历史销售选存货 插件详细功能文档: 1. 销售单增…

JavaScript 的 class 和箭头函数

在JavaScript中,class 和箭头函数(Arrow functions)是ES6(ECMAScript 2015)引入的两个重要特性,它们分别提供了更简洁和更强大的方式来定义对象和函数。下面是对这两个特性的详细解释: Class&a…

使用Vue.js构建响应式Web应用

💖 博客主页:瑕疵的CSDN主页 💻 Gitee主页:瑕疵的gitee主页 🚀 文章专栏:《热点资讯》 使用Vue.js构建响应式Web应用 1 引言 2 Vue.js简介 3 安装Vue CLI 4 创建Vue项目 5 设计应用结构 6 创建组件 7 使用…

【nnUNet v2—修改网络】——马上更新

目录 一、二级目录三级目录 参考 一、 二级目录 三级目录 参考 [1] UUNet训练自己写的网络 [2] 【nnUNet v2版本 如何训练自己设计的网络】 [3] nnUnetV2:自定义网络 [4] link [5] link

音频重采样(libresample)

https://github.com/minorninth/libresample USB audio同步问题及Jitter分析_usb mic i2s 时钟不同步-CSDN博客 是的,电脑和 USB 摄像头之间的 UAC(USB Audio Class)传输,**可能会因为两边时钟不同步而引起破音问题**。时钟不同…

windows中的tracert命令

在 Windows 操作系统中,tracert(全称 Trace Route)是一个用于确定 IP 数据包到达目标主机所经过的路径的命令行工具。它通过发送具有不同生存时间(TTL)的 ICMP(Internet Control Message Protocol&#xff…

2024“源鲁杯“高校网络安全技能大赛-Misc-WP

Round 1 hide_png 题目给了一张图片,flag就在图片上,不过不太明显,写个python脚本处理一下 from PIL import Image ​ # 打开图像并转换为RGB模式 img Image.open("./attachments.png").convert("RGB") ​ # 获取图像…

隨筆 Kafka中普通 Broker 如何收到最新的 epoch number

在 Kafka 集群中,当一个新的 Controller 当选之后,epoch number 会通过以下机制传递给其他 Broker。这个过程主要涉及 ZooKeeper 和新的 Controller 之间的交互。 1. 新的 Controller 更新 ZooKeeper 中的 epoch number: 当新的 Controller…

计算机网络中网络层发送报文时IP地址的变化,交换器的广播功能及相关设备功能

计算机网络中网络层发送报文时IP地址的变化 在计算机网络中,网络层负责数据的路由和转发,其中IP地址起着至关重要的作用。当报文在网络层发送时,目的IP地址和源IP地址的变化情况主要取决于报文所经过的网络设备和所应用的网络技术。 目的IP…

GCN+BiLSTM多特征输入时间序列预测(Pytorch)

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 GCNBiLSTM多特征输入时间序列预测(Pytorch) 可以做风电预测,光伏预测,寿命预测,浓度预测等。 Python代码,基于Pytorch编写 1.多特征输入单步预测…

【大数据学习 | kafka】kafuka的基础架构

1. kafka是什么 Kafka是由LinkedIn开发的一个分布式的消息队列。它是一款开源的、轻量级的、分布式、可分区和具有复制备份的(Replicated)、基于ZooKeeper的协调管理的分布式流平台的功能强大的消息系统。与传统的消息系统相比,KafKa能够很好…

MySQL-DQL练习题

文章目录 简介初始化表练习题 简介 本节简介: 主要是一些给出一些习题, 关于DQL查询相关的, DQL查询语句是最重要的SQL语句, 功能性最复杂, 功能也最强, 所以本节建议适合以及有了DQL查询基础的食用, 另外注意我们使用的是Navicat, SQL编辑的格式规范也是Navicat指定的默认格式…

Android 15: 探索未来的可能性

Android 15: 探索未来的可能性 随着技术的不断进步,我们的智能手机系统也在不断地进化。Android 15,作为谷歌最新推出的操作系统版本,带来了一系列令人兴奋的新特性和改进,让我们的数字生活更加丰富多彩。本文将带你一探Android 15的新特性,感受科技的魅力。 低光增强:…

鸿蒙实现相机拍照及相册选择照片

前言: 1.如果你的应用不是存储类型或者相机拍照类型,你就需要用 kit.CameraKit Api 实现相机拍照和相册选择照片功能,如果你不用这个的话,你使用 picker.PhotoViewPicker ,你就需要申请权限,那你提交应用审…