Ethernet 系列(8)-- 基础学习::ARP

news/2024/11/8 12:12:09 标签: 学习, 网络, 智能路由器

目录

1. ARP的目的:

1.1 什么是ARP

1.2 什么时候用ARP

2. ARP如何工作:

2.1 主机-主机的直接通信

2.2 主机-路由-主机的间接通信

3. ARP header:


1. ARP的目的:

1.1 什么是ARP:

ARP-地址解析协议,是第3层地址(IP地址)到第2层地址(MAC地址)的映射。

1.2 什么时候用ARP:

执行ARP时,IP地址是已知的,MAC地址是您试图发现的。

2. ARP如何工作:

假设主机B正试图与其他主机A和D通信。主机B已经知道主机A和路由器IP地址。

2.1 主机-主机的直接通信:

首先,ARP请求被广播发送到局域网(LAN)中的任何设备,内容如下图所示。

ARP请求由主机A和路由器接收。 

  • 路由器意识到此IP地址与路由器的IP地址不匹配。因此,路由器丢弃该数据包。 
  • 主机A意识到该IP地址与主机A的IP地址匹配。因此,主机A处理数据包并生成ARP响应。 
    • 响应包含主机B请求的IP地址到MAC地址的映射。 
    • ARP响应将以单播方式发送回主机B,以便主机B可以知道主机A的MAC地址值。

根据OSI模型,当主机B知道主机A的IP和MAC地址时,就可以与主机A通信。

2.2 主机-路由-主机的间接通信:

在本节中,为了更容易理解,我将以表格的形式说明每个设备的学习机制。学习机制意味着,一旦设备知道其他设备的价值,它就会记住它以备将来使用。 

表格格式如下:

此列提供网络中除主机B之外的任何设备的IP地址和MAC地址之间的映射信息

此列提供网络中除主机D之外的任何设备的IP地址和MAC地址之间的映射信息

此列提供网络中除路由器之外的任何设备的IP地址和MAC地址之间的映射信息

此列将提供我们拥有的网络ID的信息

  • 在这种情况下,要到达主机D,主机B需要使用路由器的IP地址。主机D知道路由器的IP地址,因为它配置了默认网关。

-

-

-

eth01: 10.3.3.0/24

eth02: 10.4.4.0/24

  • 当主机B想和局域网外的主机通话时,它需要通过网关发送请求,在这种情况下是路由器。为了知道路由器的MAC地址,主机B需要发送一个ARP请求,其内容如下图所示。

  • ARP请求由主机A和路由器接收。
    • 主机A意识到此IP地址与主机A的IP地址不匹配。因此,主机A丢弃该数据包。
    • 路由器意识到该IP地址与路由器的IP地址相匹配。现在,路由器知道主机B的IP和MAC地址。
  • -
  • -
  • 10.3.3.22 - 0053.ff33.bbbb
  • eth01: 10.3.3.0/24
  • eth02: 10.4.4.0/24
  • 然后路由器处理数据包并生成ARP响应。
    • 响应包含主机B请求的IP地址到MAC地址的映射。ARP响应将以单播方式发送回主机B。

  • 现在,主机B知道路由器的IP和MAC地址。
  • 10.3.3.99 - 0053.ff33.9999
  • -
  • 10.3.3.22 - 0053.ff33.bbbb
  • eth01: 10.3.3.0/24
  • eth02: 10.4.4.0/24
  • 当主机B知道路由器的IP和MAC地址时,主机B可以向该路由器发送一个数据包,其中包含: 
    • 第2层报头包括源MAC地址是主机B的MAC地址,目的MAC地址是路由器的MAC地址。 
    • 第三层报头包括源IP地址是主机B的IP地址,目的IP地址是服务器D的IP地址。

  • 当数据包到达路由器时: 
    • 路由器将查看第2层标头以做出决定。在这种情况下,它意识到目标MAC地址与其MAC地址匹配,然后从数据包中删除第2层报头。 
    • 之后,它将查看第3层标头以做出下一个决定。在这种情况下,它意识到目标IP地址与其IP地址不匹配。然后,路由器查阅路由表,确定该IP地址属于eth02:10.4.4.0/24。 
    • 由于路由器连接到该网络,它知道数据包必须被传递到其最终目的地。为此,它需要主机D的MAC地址。 
    • 因此,路由器广播ARP请求。主机D接收ARP请求,并意识到该IP地址与其IP地址匹配,然后将单播响应发送回路由器。
  • 10.3.3.99 - 0053.ff33.9999
  • 10.3.3.22 - 0053.ff33.bbbb
  • 10.3.3.22 - 0053.ff33.bbbb
  • eth 1: 10.3.3.0/24
  • eth 2: 10.4.4.0/24
  • 路由器接收响应并学习主机D的MAC地址。
  • 10.3.3.99 - 0053.ff33.9999
  • 10.3.3.22 - 0053.ff33.bbbb
  • 10.4.4.44 - 0053.ff44.dddd
  • 10.3.3.22 - 0053.ff33.bbbb
  • eth 1: 10.3.3.0/24
  • eth 2: 10.4.4.0/24
  • 路由器将第2层报头附加到数据包上,其中包括源MAC地址是路由器的MAC地址,目的MAC地址是主机D的MAC地址。最后,数据包可以发送到主机D。
  • 当主机D收到主机B的请求时,它需要发回响应。主机D知道它需要将此数据包发送到局域网外,因此需要通过路由器。为此,它需要知道路由器的MAC地址。因此,ARP请求被广播发送到网络

  • 路由器从主机D接收ARP请求,并意识到该IP地址与其IP地址匹配。由于它已经知道主机D的IP和MAC地址,因此不需要再记忆了。然后,路由器处理ARP请求并将单播发送回主机D。 
  • 主机D从路由器接收ARP响应。现在,主机D知道路由器的IP和MAC地址。

10.3.3.99 - 0053.ff33.9999

10.3.3.22 - 0053.ff33.bbbb

10.4.4.99 - 0053.ff44.9999

10.3.3.22 - 0053.ff33.bbbb

10.4.4.44 - 0053.ff44.dddd

eth 1: 10.3.3.0/24

eth 2: 10.4.4.0/24

  • 现在,主机D可以向路由器发送一个数据包,其中包含: 
    • 第2层报头包括源MAC地址是主机D MAC地址,目的MAC地址是路由器MAC地址。 
    • 第3层报头包括源IP地址是主机D IP地址,目的IP地址是主B IP地址。 
  • 当数据包到达路由器时: 
    • 路由器将查看第2层标头以做出决定。在这种情况下,它意识到目标MAC地址与其MAC地址匹配,然后从数据包中删除第2层报头。 
    • 之后,它将查看第3层标头以做出下一个决定。在这种情况下,它意识到目标IP地址与其IP地址不匹配。然后,路由器查阅路由表,确定该IP地址属于eth01:10.3.3.0/24。 
    • 由于路由器连接到该网络,它知道数据包必须被传递到其最终目的地。 
    • 由于学习机制,路由器已经知道主机B的MAC地址,因此不需要发送任何ARP请求。然后,路由器将第2层报头附加到数据包上,其中包括源MAC地址是路由器的MAC地址,目的MAC地址是主机B的MAC地址。 
    • 最后,可以将数据包发送到主机B。

3. ARP header:

硬件类型:定义运行ARP的物理网络的类型。 

  • 对于以太网,它设置为1。 

协议类型:定义要解析的协议。 

  • 对于IPv4,它被设置为0x0800。 

硬件长度:定义物理地址的长度(以字节为单位)。 

  • 对于以太网,它被设置为6,这意味着物理地址是6个字节。 

协议长度:定义逻辑地址的字节长度。 

  • 对于以太网,它设置为4,这意味着协议地址为4个字节。 

操作:定义ARP数据包为请求或应答。 

  • 对于请求,它被设置为1。对于回复,它被设置为2。 

发送方硬件地址:定义源MAC地址。 

发送方协议地址:定义源IP地址。 

目标硬件地址:定义目标MAC地址。 

  • 如果此字段未知,则将其设置为00:00:00:00:00 

目标协议地址:定义目标IP地址。

  • 请注意,在发送此ARP请求之前,必须将其封装为具有上述格式的以太网帧。 
  • 以太网帧的目标MAC地址设置为FF:FF:FF/FF:FF:FF,因为此ARP请求是广播发送到局域网中的任何设备的。

http://www.niftyadmin.cn/n/5743876.html

相关文章

Vue3+element-plus摘要

1.如果自己电脑vue版本是vue2版本,下面将详细介绍如何在vue2版本基础上继续安装 vue3版本且不会影响vue2版本的使用 1-1 在c盘或者别的盘建一个文件夹vue3 1-2 在这个文件夹里使用WINR 打开终端 输入命令 npm install vue/cli 安装完即可 1-3 然后进入此文件夹中的n…

Python中处理Excel的基本概念(如工作簿、工作表等)

在之前的讨论中,我们已经了解了Python如何与Excel文件进行交互,包括使用Python中的不同库来读取和写入Excel文件。现在我们将进一步探讨Python中处理Excel文件的基本概念,如工作簿(Workbook)、工作表(Works…

在Ubuntu下安装RabbitMQ、添加一个新的登录用户并设置密码

在Ubuntu下安装RabbitMQ、添加一个新的登录用户并设置密码 在Ubuntu下安装RabbitMQ可以按照以下步骤进行:步骤 1: 更新系统步骤 2: 安装Erlang步骤 3: 添加RabbitMQ仓库步骤 4: 更新APT索引并安装RabbitMQ步骤 5: 启动RabbitMQ服务步骤 6: 检查RabbitMQ状态步骤 7: …

【ubuntu18.04】使用U盘制作ubuntu18.04启动盘操作说明

打开show application 打开Startup Disk 选择镜像 双击选择ubuntu的iso镜像 镜像下载地址 Ubuntu 18.04.6 LTS (Bionic Beaver) 制作镜像 注意: 制作镜像会格式化U盘,记得备份资料 点击Make Startup Disk,弹出如下对话框 点击Yes 输入管理员密码&a…

Axure设计之三级联动选择器教程(中继器)

使用Axure设计三级联动选择器(如省市区选择器)时,可以利用中继器的数据存储和动态交互功能来实现。下面介绍中继器三级联动选择器设计的教程: 一、效果展示: 1、在三级联动选择器中,首先选择省份&#xff…

JavaScript基础语法部分-黑马跟课笔记

一、Javascript介绍 1.JavaScript是什么? 1.是什么? 是一种运行在客户端(浏览器)的编程语言,实现人机交互效果 2.作用(做什么?) 网页特效(监听用户的一些行为让网页做…

特定数据库的备份脚本

该脚本 mysql_backup.sh 是一个 MySQL 数据库的备份脚本,以下是它的工作原理和需要注意的细节: 脚本内容分析 1.设置时间变量 TIME : TIMEdate %F_%H-%M-%S该变量 TIME 存储当前日期和时间,格式为 YYYY-MM-DD_HH-MM-SS,用于生…

J2EE平台

J2EE(Java 2 Platform, Enterprise Edition)为构建复杂的企业级应用提供了全面的技术支持和规范标准。自从上世纪末推出以来,J2EE 已经成为企业信息系统(EIS)领域中不可或缺的一部分。它通过组件化、多层次的分布式应用…