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

ops/2024/11/1 2:08:33/

文章目录

IPv4MAC_2">IPv4地址与MAC地址的封装位置

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

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

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

![[<a class=IPv4地址与MAC地址的封装位置.png]]" />

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

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

![[<a class=IPv4地址与MAC地址的变化.png]]" />

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

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

IPv4MAC_27">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.ppmy.cn/ops/130000.html

相关文章

如何在Linux系统中使用LVM进行磁盘管理

如何在Linux系统中使用LVM进行磁盘管理 LVM简介 安装LVM 在Debian/Ubuntu系统中安装 在CentOS/RHEL系统中安装 初始化物理卷 创建物理卷 创建卷组 创建卷组 创建逻辑卷 创建逻辑卷 格式化逻辑卷 格式化逻辑卷 挂载逻辑卷 挂载逻辑卷 扩展逻辑卷 扩展物理卷 扩展卷组 扩展…

ubuntu交叉编译expat库给arm平台使用

1.下载expat库源码: https://github.com/libexpat/libexpat/release?page=2 wget https://github.com/libexpat/libexpat/release/download/R_2_3_0/expat-2.3.0.tar.bz2 下载成功: 2.解压expat库,并进入解压后的目录: tar xjf expat-2.3.0.tar.bz2 cd expat-2.3.0 <…

在浏览器中运行 Puppeteer:解锁新能力

Puppeteer&#xff0c;这个强大的浏览器自动化工具&#xff0c;通常在Node.js环境中运行。但你有没有想过&#xff0c;在浏览器本身中运行Puppeteer会是什么样子&#xff1f;这不仅能让我们利用Puppeteer的功能完成更多任务&#xff0c;还能避开Node.js特定的限制。 支持的功…

【有啥问啥】视频插帧算法技术原理详解

视频插帧算法技术原理详解 引言 视频插帧&#xff08;Video Interpolation&#xff09;技术&#xff0c;作为计算机视觉领域的一项重要应用&#xff0c;旨在通过算法手段在已有的视频帧之间插入额外的帧&#xff0c;从而提升视频的帧率&#xff0c;使其看起来更加流畅。这一技…

xlnt加载excel报错:‘localSheetId‘ expected

参考&#xff1a;xlnt加载excel报错&#xff1a;xl/workbook.xml:2:2581: error: attribute ‘localSheetId‘ expected_xlnt load文件失败-CSDN博客 下载这个分支&#xff1a; https://github.com/musshorn/xlnt/tree/issue_685 记得再下载一个 libstudxml 替换到third-p…

Hadoop-001-本地虚拟机环境搭建

一、安装VMware 官方下载VMware&#xff1a; https://vmware.mdsoft.top/?bd_vid5754305114651491003 二、下载镜像文件 阿里云镜像仓库&#xff1a; https://mirrors.aliyun.com/centos/ 本文档使用 CentOS-7-x86_64-DVD-1810-7.6.iso 搭建虚拟机 三、搭建虚拟机 1、编辑…

网站安全,WAF网站保护暴力破解

雷池的核心功能 通过过滤和监控 Web 应用与互联网之间的 HTTP 流量&#xff0c;功能包括&#xff1a; SQL 注入保护&#xff1a;防止恶意 SQL 代码的注入&#xff0c;保护网站数据安全。跨站脚本攻击 (XSS)&#xff1a;阻止攻击者在用户浏览器中执行恶意脚本。暴力破解防护&a…

ETF申购赎回指南:详解注意事项与低费率券商推荐!

​ETF 申购&赎回 ETF申购赎回是个啥业务&#xff1f; 01 ETF申购、赎回是一种交易委托方式&#xff0c;指投资者通过申购方式(买入方向)获得ETF份额&#xff0c;通过赎回的方式&#xff08;卖出方向&#xff09;换掉/卖出ETF份额。ETF申购&#xff0c;通常是通过一篮子成…