当前位置: 首页 > 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; 底部导航栏如何实现新增、修改、删除底部导航栏流程对底部导航栏部分样式如何修改。 比如放不下、顺序排列、坑点如…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中&#xff0c;拉取视频流只要求udp方式&#xff0c;从2016开始要求新增支持tcp被动和tcp主动两种方式&#xff0c;udp理论上会丢包的&#xff0c;所以实际使用过程可能会出现画面花屏的情况&#xff0c;而tcp肯定不丢包&#xff0c;起码…...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes&#xff08;简称K8s&#xff09;中&#xff0c;Ingress是一个API对象&#xff0c;它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress&#xff0c;你可…...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括&#xff1a;采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中&#xff0c;设置任务排序规则尤其重要&#xff0c;因为它让看板视觉上直观地体…...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

k8s业务程序联调工具-KtConnect

概述 原理 工具作用是建立了一个从本地到集群的单向VPN&#xff0c;根据VPN原理&#xff0c;打通两个内网必然需要借助一个公共中继节点&#xff0c;ktconnect工具巧妙的利用k8s原生的portforward能力&#xff0c;简化了建立连接的过程&#xff0c;apiserver间接起到了中继节…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

以光量子为例,详解量子获取方式

光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学&#xff08;silicon photonics&#xff09;的光波导&#xff08;optical waveguide&#xff09;芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中&#xff0c;光既是波又是粒子。光子本…...

佰力博科技与您探讨热释电测量的几种方法

热释电的测量主要涉及热释电系数的测定&#xff0c;这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中&#xff0c;积分电荷法最为常用&#xff0c;其原理是通过测量在电容器上积累的热释电电荷&#xff0c;从而确定热释电系数…...

探索Selenium:自动化测试的神奇钥匙

目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...

SQL Server 触发器调用存储过程实现发送 HTTP 请求

文章目录 需求分析解决第 1 步:前置条件,启用 OLE 自动化方式 1:使用 SQL 实现启用 OLE 自动化方式 2:Sql Server 2005启动OLE自动化方式 3:Sql Server 2008启动OLE自动化第 2 步:创建存储过程第 3 步:创建触发器扩展 - 如何调试?第 1 步:登录 SQL Server 2008第 2 步…...