当前位置: 首页 > news >正文

ARP表、MAC表、路由表的区别和各自作用

文章目录

  • ARP表、MAC表、路由表的区别和各自作用
    • 同一网络内:
      • ARP表
        • request - 请求
        • reply - 响应
      • MAC地址
        • 在同一网络内,交换机如何工作?
    • 不同网络
      • 路由表
      • 不同网络通信流程
        • PC1到路由器
        • 路由器到PC2
        • 流程图
    • 简短总结

ARP表、MAC表、路由表的区别和各自作用

拓扑图如下:
在这里插入图片描述

同一网络内:

ARP作用: 让发送方知道目标的MAC地址, 不管是发给同一网络内的PC终端还是路由器, 均需要知道对方的MAC地址

ARP表

ARP协议: 2种类型的报文

请求时是广播, 响应时是单播

request - 请求

当PC1作为发送方,PC2作为接收方时:

源MAC地址已知
源IP地址已知(假设是PC1: 192.168.1.1)
目标MACFFFF-FFFF-FFFF(广播MAC地址: 代表网络内的所有节点)
目标IP已知 (假设是PC2: 192.168.1.2)

当第一次发送时, 路由器是不会接受该数据包的, 因为数据包在解封装时, 会先检查第二层MAC地址, 再检查第三层IP地址, MAC地址符合,但是IP地址不符合,因此,最终只有PC2能够接受该数据包

reply - 响应

PC2回复PC1:

源MAC地址已知
源IP地址已知(假设是PC1: 192.168.1.2)
目标MAC已知
目标IP已知 (假设是PC2: 192.168.1.1)

PC1会将收到的PC2的MAC地址会存放在自己的ARP缓存表中, PC1的ARP缓存表如下图:

同时PC2也会记录PC1传来的MAC地址,PC2的ARP缓存表如下图:

ARP缓存表有生存时间, 主要目的是为了确保缓存表中的信息是最新的和有效的。

什么样的设备有ARP表: 只要这个设备需要充当发送方或者是接收方时

PC机, 路由器有ARP表

开始时,路由器R1没有PC1的MAC地址:
PC1在ping 192.168.1.254(R1)之后,R1则记录了PC1的mac地址:

每一条ARP记录的生存时间(EXIPRE)如上图 20 min

交换机也可以有ARP表:

只不过是空的, 尽管发送的请求要经过交换机, 但是当给交换机配置了IP地址, PC1去ping之后, 交换机就有了APR表,这里就不展示了

因此, 在同一网络中,只要某个设备充当发送方或者是接收方时,该设备就会有ARP表

MAC地址

在同一网络内,交换机如何工作?

交换机存储的是MAC地址表:

交换机在收到数据帧(Frame)时, 会检查MAC地址表

  1. 有表, 按表转发
  2. 没表, 泛洪(向除源端口其他所有端口发送)

不同网络

路由表

实现跨网络通信需要路由,路由存在路由表里面

当ping另外一个网络的终端时, 本设备可以根据IP和子网掩码判断出目的ip地址是跨网络通信, 因此本设备(主机)也应该有路由表, 其中第一条为默认路由, 使用route PRINT命令查看本机路由表, 模拟器看不了,只能在本机上查看
注意: 因此并不是只有路由器才会有路由表
在这里插入图片描述
配置网关就相当于配置默认路由

不同网络通信流程

PC1在进行跨网络通信时,需要先将包发送给本网络内的路由器, 那PC1是如何知道要发送给路由器的呢? 路由器又是如何知道要将该数据包发送给PC2的呢?

PC1到路由器
  1. 确定目的网络: 当发送数据时, PC1会先检查目的IP地址是否与自己在同一网络
  2. 使用路由表: 当PC1发现是跨网络通信时, 因为给PC1配置了网关==(192.168.1.254), 也就是相当于配置了默认路由(因此主机也是有路由表的==)因此PC1会使用其路由表来确定下一跳将包发送给路由器, 那么问题来了 => 在通信时,发送方要知道接收方的IP地址和MAC地址
  3. 但是现在PC1知道要发送给路由器, 但是现在不知道路由器的MAC地址(默认开始时PC1的ARP表为空)
  4. 解析路由器MAC地址: 因此PC1会发送一个ARP请求广播到本地网络,以获取路由器的MAC地址
  5. 路由器收到APR请求后, 以单播形式发送ARP响应报文给PC1 此时PC1中的ARP缓存表中记录了路由器的MAC地址
  6. 这样PC1就可以构建包含路由器MAC地址的以太网帧,并将数据包发送给路由器,数据包格式如下图:
    在这里插入图片描述
    其中数据链路层记录了源MAC地址(即主机),目的MAC地址(即路由器), 而网络层记录了源IP地址(即主机),目的IP地址(即PC2),从而将数据包发送给了路由器,接下来就有路由器进行转发即可
路由器到PC2
  1. 路由器接收到数据包后,会查看路由表来确定下一跳地址转发接口, 也就是判断将该数据包发送给哪个网段内的主机。
  2. 确认网段后, 路由器也要先查看ARP表, 看是否有目标ip对应的MAC地址, 如有就进行发送, 没有,则先进行APR广播来获取目标主机的MAC地址, 最后再将数据包发送给目标主机PC2
流程图
PC1->R1
R1->RC2
没有
没有
检查是否同一网络
PC1 ping PC2
ARP缓存中有路由器MAC?
PC1 构建以太网帧
包含路由器MAC地址,目的主机IP地址
PC1 发送ARP请求报文
路由器收到后,发送ARP响应报文
PC1 发送数据包到路由器
路由器构建以太网帧
包含PC2的MAC地址
路由器ARP缓存有PC2 MAC?
路由器发送ARP请求
广播获取PC2的MAC
PC2 收到后,发送ARP响应报文
路由器转发数据包给PC2
PC2 收到数据包
并回复PC1

简短总结

在同一网络内,为了获取目标的MAC地址,使用ARP协议。ARP通过广播请求和单播响应来实现这一过程。数据封装遵循OSI七层模型,从应用层到物理层依次封装;解封装则相反。首次通信时,设备通过ARP请求学习目标MAC地址并缓存至ARP表中,后续通信直接查表。交换机根据MAC地址表转发帧,未找到记录时采用泛洪方式,并定期刷新MAC表以防止攻击。对于不同网络间的通信,则需借助路由器及其路由表完成跨网传输。

相关文章:

ARP表、MAC表、路由表的区别和各自作用

文章目录 ARP表、MAC表、路由表的区别和各自作用同一网络内:ARP表request - 请求reply - 响应 MAC地址在同一网络内,交换机如何工作? 不同网络路由表不同网络通信流程PC1到路由器路由器到PC2流程图 简短总结 ARP表、MAC表、路由表的区别和各自作用 拓扑图如下: 同一网络内:…...

Android 使用OpenGLES + MediaPlayer 获取视频截图

概述 Android 获取视频缩略图的方法通常有: ContentResolver: 使用系统数据库MediaMetadataRetriever: 这个是android提供的类,用来获取本地和网络media相关文件的信息ThumbnailUtils: 是在android2.2(api8)之后新增的一个,该类为…...

浏览器的事件循环机制

浏览器和Node的事件循环机制 引言浏览器的事件循环机制 引言 由于JS是单线程的脚本语言,所以在同一时间只能做一件事情,当遇到多个任务时,我们不可能一直等待任务完成,这会造成巨大的资源浪费。为了协调时间,用户交互…...

Z2400032基于Java+Mysql+SSM的校园在线点餐系统的设计与实现 代码 论文

在线点餐系统 1.项目描述2. 技术栈3. 项目结构后端前端 4. 功能模块5. 项目实现步骤注意事项 6.界面展示7.源码获取 1.项目描述 本项目旨在开发一个校园在线点餐系统,通过前后端分离的方式,为在校学生提供便捷的餐厅点餐服务,同时方便餐厅和…...

k8s使用的nfs作为sc。

k8s使用的nfs作为sc。 当前出现一个问题: 1.有一个pod他是通过流进行文件解压并写入到nfs服务器对应的目录中。 2.一个大压缩包下有20多个压缩包,递归解压。解压完成后应该是20多个文件夹,文件夹下有.json文件。 3.pod中的程序解压后去找以.j…...

linux下Qt程序部署教程

文章目录 [toc]1、概述2、静态编译安装Qt1.1 安装依赖1.2 静态编译1.3 报错1.4 添加环境变量1.5 下载安装QtCreator 3、配置linuxdeployqt环境1.1 在线安装依赖1.2 使用linuxdeployqt提供的程序1.3 编译安装linuxdeployqt 4、使用linuxdeployqt打包依赖1.1 linuxdeployqt使用选…...

tp6 合成两个pdf文件(附加pdf或者替换pdf)

最近在做项目有个需求,项目中需要根据设置的html合同模板自动生成PDF合同供客户下载签署,并根据回传的已签署合同尾页来替换原来未签署合同的尾页,合成新的已签署合同文本。 读取两个PDF文件并合成的 具体代码记录如下: use set…...

工作:三菱PLC防止程序存储器爆满方法

工作:三菱PLC防止程序存储器爆满方法 一、防止程序存储器爆满方法1、编程时,添加行注释时,记得要选“外围”,这样不会占用PLC程序存储器内存;2、选择“外围”的注释,前面会有个*星号,方便检查 二…...

jmeter 获取唯一全局变量及多线程读写的问题

一、jmeter 获取唯一ID号全局变量 在JMeter中获取唯一ID号并设置为全局变量,可以通过以下几种方法实现: 使用JMeter内置的UUID函数: JMeter提供了一个内置的函数__UUID,可以生成一个随机的UUID,这个UUID是全局唯一的。…...

掌握 Spring Boot 中的缓存:技术和最佳实践

缓存是一种用于将经常访问的数据临时存储在更快的存储层(通常在内存中)中的技术,以便可以更快地满足未来对该数据的请求,从而提高应用程序的性能和效率。在 Spring Boot 中,缓存是一种简单而强大的方法,可以…...

动手学深度学习10.5. 多头注意力-笔记练习(PyTorch)

本节课程地址:多头注意力代码_哔哩哔哩_bilibili 本节教材地址:10.5. 多头注意力 — 动手学深度学习 2.0.0 documentation 本节开源代码:...>d2l-zh>pytorch>chapter_multilayer-perceptrons>multihead-attention.ipynb 多头注…...

13 设计模式之外观模式(家庭影院案例)

一、什么是外观模式? 1.定义 在日常生活中,许多人喜欢通过遥控器来控制家中的电视、音响、DVD 播放器等设备。虽然这些设备各自独立工作,但遥控器提供了一个简洁的界面,让用户可以轻松地操作多个设备。而这一设计理念正是 外观模…...

单片机学习笔记 12. 定时/计数器_定时

更多单片机学习笔记:单片机学习笔记 1. 点亮一个LED灯单片机学习笔记 2. LED灯闪烁单片机学习笔记 3. LED灯流水灯单片机学习笔记 4. 蜂鸣器滴~滴~滴~单片机学习笔记 5. 数码管静态显示单片机学习笔记 6. 数码管动态显示单片机学习笔记 7. 独立键盘单片机学习笔记 8…...

Web安全基础实践

实践目标 (1)理解常用网络攻击技术的基本原理。(2)Webgoat实践下相关实验。 WebGoat WebGoat是由著名的OWASP负责维护的一个漏洞百出的J2EE Web应用程序,这些漏洞并非程序中的bug,而是故意设计用来讲授We…...

Zookeeper集群数据是如何同步的?

大家好,我是锋哥。今天分享关于【Zookeeper集群数据是如何同步的?】面试题。希望对大家有帮助; Zookeeper集群数据是如何同步的? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Zookeeper集群中的数据同步是通过一种称为ZAB(Zo…...

SpringCloud框架学习(第六部分:Sentinel实现熔断与限流)

目录 十四、SpringCloud Alibaba Sentinel实现熔断与限流 1.简介 2.作用 3.下载安装 4.微服务 8401 整合 Sentinel 入门案例 5.流控规则 (1)基本介绍 (2)流控模式 Ⅰ. 直接 Ⅱ. 关联 Ⅲ. 链路 (3&#xff0…...

动态规划-----路径问题

动态规划-----路径问题 下降最小路径和1:状态表示2:状态转移方程3 初始化4 填表顺序5 返回值6 代码实现 总结: 下降最小路径和 1:状态表示 假设:用dp[i][j]表示:到达[i,j]的最小路径 2:状态转…...

Rust循环引用与多线程并发

循环引用与自引用 循环引用的概念 循环引用指的是两个或多个对象之间相互持有对方的引用。在 Rust 中&#xff0c;由于所有权和生命周期的严格约束&#xff0c;直接创建循环引用通常会导致编译失败。例如&#xff1a; // 错误的循环引用示例 struct Node {next: Option<B…...

东方隐侠网安瞭望台第8期

谷歌应用商店贷款应用中的 SpyLoan 恶意软件影响 800 万安卓用户 迈克菲实验室的新研究发现&#xff0c;谷歌应用商店中有十多个恶意安卓应用被下载量总计超过 800 万次&#xff0c;这些应用包含名为 SpyLoan 的恶意软件。安全研究员费尔南多・鲁伊斯上周发布的分析报告称&…...

底部导航栏新增功能按键

场景需求&#xff1a; 在底部导航栏添加power案件&#xff0c;单击息屏&#xff0c;长按 关机 如下实现图 借此需求&#xff0c;需要掌握技能&#xff1a; 底部导航栏如何实现新增、修改、删除底部导航栏流程对底部导航栏部分样式如何修改。 比如放不下、顺序排列、坑点如…...

反向工程与模型迁移:打造未来商品详情API的可持续创新体系

在电商行业蓬勃发展的当下&#xff0c;商品详情API作为连接电商平台与开发者、商家及用户的关键纽带&#xff0c;其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息&#xff08;如名称、价格、库存等&#xff09;的获取与展示&#xff0c;已难以满足市场对个性化、智能…...

【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密

在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

三体问题详解

从物理学角度&#xff0c;三体问题之所以不稳定&#xff0c;是因为三个天体在万有引力作用下相互作用&#xff0c;形成一个非线性耦合系统。我们可以从牛顿经典力学出发&#xff0c;列出具体的运动方程&#xff0c;并说明为何这个系统本质上是混沌的&#xff0c;无法得到一般解…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

vue3+vite项目中使用.env文件环境变量方法

vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量&#xff0c;这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj&#xff0c;再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

AGain DB和倍数增益的关系

我在设置一款索尼CMOS芯片时&#xff0c;Again增益0db变化为6DB&#xff0c;画面的变化只有2倍DN的增益&#xff0c;比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析&#xff1a; 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...

LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》

这段 Python 代码是一个完整的 知识库数据库操作模块&#xff0c;用于对本地知识库系统中的知识库进行增删改查&#xff08;CRUD&#xff09;操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 &#x1f4d8; 一、整体功能概述 该模块…...

(一)单例模式

一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...

作为测试我们应该关注redis哪些方面

1、功能测试 数据结构操作&#xff1a;验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化&#xff1a;测试aof和aof持久化机制&#xff0c;确保数据在开启后正确恢复。 事务&#xff1a;检查事务的原子性和回滚机制。 发布订阅&#xff1a;确保消息正确传递。 2、性…...