计算机网络:网络层 —— 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 因为这是最…

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

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

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

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

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的新特性,感受科技的魅力。 低光增强:…

《云原生安全攻防》-- K8s攻击案例:权限维持的攻击手法

在本节课程中,我们将一起深入了解K8s权限维持的攻击手法,通过研究这些攻击手法的技术细节,来更好地认识K8s权限维持所带来的安全风险。 在这个课程中,我们将学习以下内容: K8s权限维持:简单介绍K8s权限维持…

安装OpenResty

OpenResty OpenResty 是一个基于 Nginx的高性能 Web 平台,用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。具备下列特点: 具备Nginx的完整功能 基于Lua语言进行扩展,集成了大量精良的 Lua 库、第三方模块…

python多线程处理xlsx,多进程访问接口

import pandas as pd from concurrent.futures import ThreadPoolExecutor# 读取Excel文件 file_path scence.xlsx df pd.read_excel(file_path)# 定义每10行处理逻辑 def process_rows(start_idx):end_idx min(start_idx 10, len(df)) # 处理每10行for i in range(start_…

【Linux系统】进程终止

一、进程退出方式 1、正常终止 主要两种类型:从 main 返回、调用 exit 和 _exit 具体讲解如下: (1)从 main 返回 这个的使用就不用多说了吧,相信你们已经烂熟于心了 作用:return 语句用于从函数中返回…

一篇文章了解RocketMQ基础知识。

目录 一. 为什么选择了 RocketMQ ? 二. RocketMQ 介绍 名词说明 1. Topic (主题) 1.1 Topic 核心作用 1.2 Topic 常见问题 2. Tag (标签) 3. Queue (队列) 3.1 Queue 读写队列 4. Message (消息) 4.1 Message 类型 5. Produ…

NVR录像机汇聚管理EasyNVR多品牌NVR管理工具/设备视频报警功能详解

在科技日新月异的今天,视频监控系统作为现代社会的“第三只眼”,正以前所未有的方式深刻影响着我们的生活与社会结构。从公共场所的安全监控到个人生活的记录分享,视频监控系统以其独特的视角和功能,为社会带来了诸多好处&#xf…

day10:ssh服务-跳板机

一,ssh服务概述 ssh服务概述 ssh(Secure Shell)是一种用于在不安全网络中进行安全登录、远程执行命令及传输文件的网络协议。它通过加密技术来保证通信的保密性和完整性,主要用于替代不安全的telnet、rlogin、rsh等协议。ssh通常…

python爬虫实战案例——抓取B站视频,不同清晰度抓取,实现音视频合并,超详细!(内含完整代码)

文章目录 1、任务目标2、网页分析3、代码编写 1、任务目标 目标网站:B站视频(https://www.bilibili.com/video/BV1se41117WP/?vd_sourcee8e376ccbc5aa4cfd88e6a7917adfd1a),用于本文测验 要求:抓取该网址下的视频&…

【制造业&电子产品】电脑电子元件检测系统源码&数据集全套:改进yolo11-TADDH

改进yolo11-SCConv等200全套创新点大全:电脑电子元件检测系统源码&数据集全套 1.图片效果展示 项目来源 人工智能促进会 2024.10.24 注意:由于项目一直在更新迭代,上面“1.图片效果展示”和“2.视频效果展示”展示的系统图片或者…

Linux: network: wireshark IO图的一个问题

今天遇到一个问题,发现wireshark画的IO图,前几秒没有数据,但是根据Raw的pcap看,是有包的,这就迷惑了。 经同事提醒,这个IO在设置了多个画图filter的时候,可能导致开始前几秒没有输出。如下图 这…

jenkins ssh 免密报错Host key verification failed.

jenkins 发布项目,ssh连接远程服务器时报错:Host key verification failed. 解决: 原因是生成的sshkey不是用的jenkins用户,所以切换用户到:jenkins重新生成sshkey su jenkins ssh-keygen -t rsa ssh-copy-id -i ~/…