计算机网络三张表(ARP表、MAC表、路由表)总结
参考:
网络三张表:ARP表, MAC表, 路由表,实现你的网络自由!!_mac表、arp表、路由表-CSDN博客
网络中的三张表:ARP表、MAC表、路由表
首先要明确一件事,如果一个主机要发送数据,那么必然要先在该主机所在的局域网内流动起来:如果源ip和目标ip处于同一网段,那么就直接在局域网内发送即可,不必先去找到路由器;只有需要将数据发往外网时,才需要通过路由器,也就是说,如果源ip和目标ip不在同一网段,那么第一步就直接去找路由器即可。其实,不管是找另一台主机还是路由器,首先都是处于一个局域网内,不管需不需要发往外网,都需要先经过当前局域网。
从一个局域网到另一个局域网
接下来分别看看这几张表是干嘛的。
ARP 表
ARP表示例
ARP 表即 ARP 缓存表,是用于存储 IP 地址和对应的 MAC 地址之间映射关系的表格。
ARP 表中的每个表项包含两部分信息:IP 地址和对应的 MAC 地址。通常是一个关联数组,以 IP 地址作为键,对应的 MAC 地址作为值,常见的实现方式包括数组、哈希表等。
我们在应用层进行socket编程时,会指定目标的ip和端口,这样,运输层和网络层就会分别对端口和ip进行封装,但是到了链路层,我们要封装源MAC和目标MAC,源MAC可以本机获取,不过我们并没有指定目标MAC,因为局域网内的转发依靠的是MAC地址,所以,必须要获取目标主机的MAC地址,这种情况下,怎么才能知道目标主机的MAC地址呢?
PS:我们这里说的“主机”,可以直接当做网络适配器,也就是网卡来看待,收发网络数据的实体其实就是网卡,MAC地址的唯一性就是跟网卡对应的。
ARP 表中的作用就是解决 IP 地址和 MAC 地址之间的映射关系:在网络通信过程中,当主机需要与其他设备通信时,会根据目标 IP 地址在 ARP 表中查找对应的 MAC 地址,然后使用该 MAC 地址进行数据包的发送。
当然,如果 ARP 表中没有对应的 MAC 地址,则在局域网内通过发送 ARP 请求广播来获取。当主机 A 需要发送数据给主机 B 时,若主机 A 的 ARP 表中没有主机 B 的 MAC 地址,它会发送一个 ARP 请求广播包,该包内含有主机 A 自己的 IP 地址和 MAC 地址,以及目标主机 B 的 IP 地址。局域网内的其他主机都会接收到这个 ARP 请求包,但只有主机 B 会回复一个 ARP 应答包,其中包含了自己的 IP 地址和 MAC 地址。主机 A 收到 ARP 应答包后,将主机 B 的 IP 地址和 MAC 地址添加到自己的 ARP 表中。
ARP 表项会根据一定的策略进行更新和维护。例如,当主机发送 ARP 请求并收到应答后,会更新或添加相应的表项;如果一段时间内没有使用某个表项,可能会将其删除。
有了 ARP 表,主机可以在本地快速查找到目标设备的 MAC 地址,而不需要每次都发送 ARP 请求广播,减少了网络中的广播流量,提高了数据传输的速度和网络的整体效率。
ARP表、ARP协议以及ARP过程总结
ARP协议详解 ------- 一看就懂-CSDN博客
ARP的工作过程(同网段和跨网段时ARP分别都如何工作的,以及二层和三层设备的MAC地址表,ARP表和路由表)_arp,主机与网关-CSDN博客
什么是ARP?
ARP协议是“Address Resolution Protocol”(地址解析协议)的缩写。ARP的作用
在以太网环境中,数据的传输所依懒的是MAC地址而非IP地址,而将已知IP地址转换为MAC地址的工作是由ARP协议来完成的。在局域网中,网络中实际传输的是“帧”,帧里面是有目标主机的MAC地址的。在以太网中,一个主机和另一个主机进行直接通信,必须要知道目标主机的MAC地址。但这个目标MAC地址是如何获得的呢?它就是通过地址解析协议获得的。
所谓“地址解析”就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。
ARP工作流程
假设主机A和B在同一个网段,主机A要向主机B发送信息,具体的地址解析过程如下:(1)
主机A首先查看自己的ARP表,确定其中是否包含有主机B对应的ARP表项。如果找到了对应的MAC地址,则主机A直接利用ARP表中的MAC地址,对IP数据包进行帧封装,并将数据包发送给主机B。
(2)
如果主机A在ARP表中找不到对应的MAC地址,则将缓存该数据报文,然后以广播方式发送一个ARP请求报文。
ARP请求报文中的发送端IP地址和发送端MAC地址为主机A的IP地址和MAC地址,目标IP地址和目标MAC地址为主机B的IP地址和全0的MAC地址。
由于ARP请求报文以广播方式发送,该网段上的所有主机都可以接收到该请求,但只有被请求的主机(即主机B)会对该请求进行处理。
(3)
主机B比较自己IP地址和ARP请求报文中的 目标IP 地址,当两者相同时进行如下处理:将ARP请求报文中的发送端(即主机A)的IP地址和MAC地址存入自己的ARP表中。
之后以单播方式发送ARP响应报文给主机A,其中包含了自己的MAC地址。
(4)
主机A收到ARP响应报文后,将主机B的MAC地址加入到自己的ARP表中以用于后续报文的转发,同时将IP数据包进行封装后发送出去。
抓包分析
图中一对ARP请求和ARP应答
ARP请求报文
ARP应答报文
ARP表
设备通过ARP解析到目的MAC地址后,将会在自己的ARP表中增加IP地址到MAC地址的映射表项,以用于后续到同一目的地报文的转发。
MAC表
MAC表示例
MAC 表即 MAC 地址表,是网络设备中用于存储 MAC 地址与接口对应关系的数据表。以下是关于 MAC 表的详细介绍:
基本概念
在以太网等局域网环境中,每个网络设备都有一个唯一的 MAC 地址,类似于设备的 “身份证号码”。当设备之间进行通信时,数据包会根据目的 MAC 地址被发送到目标设备。而 MAC 表就是帮助网络设备快速找到目标设备 MAC 地址对应的接口,从而实现数据的高效转发。
建立过程
初始状态:当交换机刚刚启动时,它的 MAC 地址表是空的。
学习过程:当交换机从某个端口收到数据帧时,会读取数据帧中封装的源 MAC 地址信息,并将该 MAC 地址与接收数据帧的端口对应起来,记录在 MAC 地址表中。如果收到的数据帧的目的 MAC 地址在 MAC 表中已经存在,交换机就会根据表中的对应关系,直接将数据帧从相应的端口转发出去;如果目的 MAC 地址不在 MAC 表中,交换机就会将该数据帧向除了接收端口之外的所有端口进行转发,这个过程称为泛洪。随着网络中设备之间的通信不断进行,交换机逐渐学习到更多设备的 MAC 地址和对应的端口,MAC 地址表也就不断地完善。
作用
提高转发效率:通过查找 MAC 地址表,交换机可以快速确定数据帧应该从哪个端口转发出去,避免了对同一局域网中的所有设备都进行广播,大大减少了网络中的冗余流量,提高了数据传输的效率。
实现定向传输:使得交换机能够根据数据帧中的目的 MAC 地址,准确地将数据帧发送到目标设备所在的端口,实现了数据的定向传输,保证了数据能够正确地到达目标设备。
类型
静态 MAC 表项:由网络管理员手工配置,将特定的 MAC 地址与某个接口绑定在一起。这种配置方式可以保证某些重要的设备或用户始终能够通过固定的接口进行通信,增加了网络的安全性和可控性。例如,在企业网络中,为了防止非法用户接入服务器,可以将服务器的 MAC 地址配置为静态 MAC 表项。
动态 MAC 表项:由交换机通过自动学习的方式建立,即交换机在接收到数据帧时,根据源 MAC 地址和接收端口的对应关系自动生成 MAC 表项。动态 MAC 表项会随着网络中设备的连接和通信情况而不断变化。
综上所述,MAC表作为网络设备的核心组件之一,对于提升网络性能、保障网络安全以及实现高效的网络通信至关重要。
MAC 表主要存在于链路层设备上,如交换机、网桥等。以下是具体介绍:
交换机:
交换机是局域网中的核心设备之一,其主要工作在数据链路层。它通过记录端口所连接设备的源 MAC 地址和端口对应关系来建立 MAC 地址表,从而实现数据帧的快速转发。当交换机接收到一个数据包时,会查找数据包中的目标 MAC 地址,并在 MAC 地址表中查找相应的条目。如果找到了匹配,交换机就知道应该将数据包发送到与目标 MAC 地址关联的相应物理端口;如果找不到匹配,交换机会将数据包广播到所有连接的端口,以确保目标设备能够接收到。通过维护 MAC 地址表,交换机可以提高局域网中数据包的传输效率,避免将数据包发送到不必要的端口,从而优化网络性能。
网桥:
网桥也是一种常见的链路层设备,它的工作原理与交换机类似,也是通过学习来自不同物理端口的 MAC 地址,并在其内部维护一个 MAC 地址表来进行数据帧的转发决策。当网桥接收到一个数据帧时,它会查找数据帧中的目标 MAC 地址,并检查 MAC 地址表以确定应该将数据帧转发到哪个物理端口。如果目标 MAC 地址在表中,网桥知道该数据帧只需在特定端口转发;如果目标 MAC 地址不在表中,网桥会将数据帧广播到所有其他端口,以确保目标设备能够接收到。
总之,MAC表作为链路层设备的核心组件,对于提升网络性能、保障网络安全以及实现高效的网络通信至关重要。
路由表
简易路由表示例
可以看到,路由表的目标是网络号,而不会管主机号,只有到了目标网络之后,才会在目标局域网内根据目标ip去找到目标MAC,然后找到对应的主机。
一个局域网如果想要把数据发往另一个局域网,那么就需要经过若干级路由,在路由过程中,到达目标局域网之前,数据会通过存储转发等策略在不同路由器上一直向前发送。
路由表是路由器或其他联网设备中存储路由信息的电子表格或类数据库,以下是关于它的详细介绍:
基本概念
在计算机网络中,路由表用于指导数据包的转发路径选择,它记录了去往不同目的 IP 地址或网络的下一跳信息、出接口等关键内容,类似于人们出行时所依赖的地图或导航系统。
主要作用
路径决策:当路由器接收到一个数据包时,它会解析出数据包的目的 IP 地址,然后根据路由表中的信息,按照一定的规则和算法,如最长掩码匹配原则,找到与目的 IP 地址最匹配的路由条目,从而确定数据包的转发路径。
数据转发:通过查找路由表,路由器能够将数据包准确地发送到下一个路由器或目标主机,确保数据包在网络中的正确传输,实现不同网络之间的通信。
常见类型
静态路由表:由系统管理员手动配置,明确了数据包到达目的地所需经过的固定路径,不会随网络结构的变化而自动改变。适用于网络拓扑结构简单、稳定,且无需频繁调整路由的情况。
动态路由表:由路由器根据网络系统的运行情况和路由协议自动学习和调整。路由器会定期交换路由信息,更新路由表,以适应网络拓扑的变化,如链路故障、新设备的加入等。常见的动态路由协议有 RIP、OSPF、BGP 等。
主要内容
目的网络/掩码:也称为路由前缀,用于标识 IP 包的目的地址或目的网络。一个路由条目通常包含网络地址和子网掩码,两者共同确定了目的主机或路由器所在的网段。
下一跳:指数据包从当前路由器转发到下一个路由器的 IP 地址。当下一跳字段代表路由器时,其值为路由的 IP 地址;如果是直连网络,则下一跳为对应的接口。
出接口:说明 IP 包将从该路由器的哪个接口转发出去。
协议类型:表示该路由条目是通过何种路由协议学习到的,如直连路由、静态路由、RIP、OSPF、BGP 等。
优先级:标识路由加入 IP 路由表的优先级,优先级值越小则路由越优。当存在多条到达同一目的地的路由时,路由器会优先选择优先级高的路由。
开销:路由的度量值,用于衡量到达目的地的路径成本。不同的路由协议计算开销的方法可能不同,一般来说,开销越小的路径越优先被选择。
标志:用于标记路由的一些特殊属性,如是否是迭代路由等。
应用场景
路由器:路由器是使用路由表的核心设备,它根据路由表中的信息将数据包从一个网络转发到另一个网络,实现不同局域网、广域网之间的通信。无论是企业级网络、互联网服务提供商的网络,还是小型家庭或办公室网络中的路由器,都需要依靠路由表来正确地转发数据包。
主机:除了路由器,普通主机也可以有路由表。例如,在 Windows 系统中,可以通过 “route print” 命令查看本地计算机上的路由表。主机的路由表用于决定本地计算机产生的数据包如何通过网络接口发送到目标网络或主机。
总之,路由表是网络通信中不可或缺的一部分,无论是对于专业的网络设备如路由器,还是普通的主机,都起着至关重要的作用。
总结
通常交换机上只有MAC表
交换机上存在 MAC 表,用于记录设备的 MAC 地址与端口的对应关系,以便在转发数据时根据目的 MAC 地址快速找到对应的端口。
通常路由器上有ARP表和路由表
ARP 表:路由器在进行 IP 转发时,可能需要通过 ARP 获取下一跳网关的 MAC 地址,因此在处理 ARP 请求和响应时会短暂地使用 ARP 表来缓存相关信息。
路由表:是路由器的核心数据结构之一,用于存储到达不同网络的路径信息,包括目的网络地址、子网掩码、下一跳地址、出接口等,以指导数据包的转发。
通常计算机上主要有ARP表
MAC 表:网卡等网络接口设备中会维护一个小型的 MAC 地址缓存表,用于记录最近与之通信的设备的 MAC 地址,以提高通信效率,但这个表通常不是用户可直接查看和管理的完整意义上的 MAC 表。
ARP 表:操作系统会维护一个 ARP 缓存表,用于存储本地网络中已知设备的 IP 地址与 MAC 地址的映射关系,当需要向某个 IP 地址发送数据时,首先会在 ARP 缓存表中查找对应的 MAC 地址。
路由表:计算机的操作系统会维护一个路由表,用于确定数据包的转发路径,可以根据网络配置自动生成直连路由和默认路由,也可以由用户手动添加静态路由。
相关文章:

计算机网络三张表(ARP表、MAC表、路由表)总结
参考: 网络三张表:ARP表, MAC表, 路由表,实现你的网络自由!!_mac表、arp表、路由表-CSDN博客 网络中的三张表:ARP表、MAC表、路由表 首先要明确一件事,如果一个主机要发送数据,那么必…...

DRF开发避坑指南01
在当今快速发展的Web开发领域,Django REST Framework(DRF)以其强大的功能和灵活性成为了众多开发者的首选。然而,错误的使用方法不仅会导致项目进度延误,还可能影响性能和安全性。本文将从我个人本身遇到的相关坑来给大…...

批量提取多个 Excel 文件内指定单元格的数据
这篇文章将介绍如何从多个相同格式的Excel文件中,批量提取指定单元格的数据,合并后保存到新的工作薄。 全程0代码,可视化操作。 提取前: 提取后: 准备数据 这里准备了3个测试数据 开始提取 打开的卢易表࿰…...

#HarmonyOS篇:build-profile.json5里面配置productsoh-package.json5里面dependencies依赖引入
oh-package.json5 用于描述包名、版本、入口文件和依赖项等信息。 {"license": "","devDependencies": {},"author": "","name": "entry","description": "Please describe the basic…...

Spring集成Redis|通用Redis工具类
一、基础使用 概述 在SpringBoot中一般使用RedisTemplate提供的方法来操作Redis。那么使用SpringBoot整合Redis需要 那些步骤呢。 1、 JedisPoolConfig (这个是配置连接池) 2、 RedisConnectionFactory 这个是配置连接信息,这里的RedisConnectionFactory是一个接 …...

Vue中设置报错页面和“Uncaught runtime errors”弹窗关闭
文章目录 前言操作步骤大纲1.使用Vue自带的报错捕获机制添加报错信息2.在接口报错部分添加相同机制3.把报错信息添加到Vuex中方便全局使用4.添加报错页面备用5.app页面添加if判断替换报错界面 效果备注:vue项目中Uncaught runtime errors:怎样关闭 前言 在开发Vue项…...

【力扣】219. 存在重复元素 II
题目 给你一个整数数组 nums 和一个整数 k ,判断数组中是否存在两个 不同的索引 i 和 j ,满足 nums[i] nums[j] 且 abs(i - j) < k 。如果存在,返回 true ;否则,返回 false 。 示例 1: 输入:…...

头歌实训作业 算法设计与分析-贪心算法(第5关:求解流水作业调度问题)
问题描述 有 n 个作业(编号为1~n)要在由两台机器 M 1和 M 2 组成的流水线上完成加工。每个作业加工的顺序都是先在 M 1上加工,然后在 M 2 上加工。 M 1 和 M 2 加工作业 i 所需的时间分别为 a i 和 b i(1≤i≤n&am…...

Hadoop•搭建完全分布式集群
听说这里是目录哦 一、安装Hadoop🥕二、配置Hadoop系统环境变量🥮三、验证Hadoop系统环境变量是否配置成功🧁四、修改Hadoop配置文件🍭五、分发Hadoop安装目录🧋六、分发系统环境变量文件🍨七、格式化HDFS文…...

SQL-leetcode—1141. 查询近30天活跃用户数
1141. 查询近30天活跃用户数 表:Activity ---------------------- | Column Name | Type | ---------------------- | user_id | int | | session_id | int | | activity_date | date | | activity_type | enum | ---------------------- 该表没有包含重复数据。 …...

总结与展望,龙蜥社区第 30 次运营委员会会议线上召开
2025 年 1 月 20 日,龙蜥社区召开了第 30 次运营委员会线上会议,来自 24 家理事单位的 22 位委员及委员代表出席,本次会议由运营委员凝思软件李晨斌主持。会上总结和回顾了龙蜥社区 1 月运营发展情况,同步了龙蜥社区 3 大运营目标…...

idea对jar包内容进行反编译
1.先安装一下这个插件java Bytecode Decompiler 2.找到这个插件的路径,在idea的plugins下面的lib文件夹内:java-decompiler.jar。下面是我自己本地的插件路径,以作参考: D:\dev\utils\idea\IntelliJ IDEA 2020.1.3\plugins\java-d…...

c++----------------------多态
1.多态 1.1多态的概念 多态(polymorphism)的概念:通俗来说,就是多种形态。多态分为编译时多态(静态多态)和运⾏时多 态(动态多态),这⾥我们重点讲运⾏时多态,编译时多态(静态多态)和运⾏时多态(动态多态)。编译时 多态(静态多态)…...

C语言 指针_野指针 指针运算
野指针: 概念:野指针就是指针指向的位置是不可知的(随机的、不正确的、没有明确限制的) 指针非法访问: int main() {int* p;//p没有初始化,就意味着没有明确的指向//一个局部变量不初始化,放…...

【JavaEE进阶】Spring留言板实现
目录 🎍预期结果 🍀前端代码 🎄约定前后端交互接口 🚩需求分析 🚩接口定义 🌳实现服务器端代码 🚩lombok介绍 🚩代码实现 🌴运行测试 🎄前端代码实…...

第25篇 基于ARM A9处理器用C语言实现中断<一>
Q:怎样理解基于ARM A9处理器用C语言实现中断的过程呢? A:同样以一段使用C语言实现中断的主程序为例介绍,和汇编语言实现中断一样这段代码也使用了定时器中断和按键中断。执行该主程序会在DE1-SoC的红色LED上显示流水灯…...

面向通感一体化的非均匀感知信号设计
文章目录 1 非均匀信号设计的背景分析1.1 基于OFDM波形的感知信号1.2 非均匀信号设计的必要性和可行性1.2 非均匀信号设计的必要性和可行性 3 通感一体化系统中的非均匀信号设计方法3.1 非均匀信号的设计流程(1)均匀感知信号设计(2࿰…...

修改docker共享内存shm-size
法1:在创建容器时增加共享内存大小 nvidia-docker run -it -p 10000:22 --name"zm" -v /home/zm:/data ufoym/deepo:all-cu101 /bin/bash --shm-size20G法2:修改正在运行的容器的共享内存设置 查看容器、共享内存 docker ps -a df -lh | gr…...

WIN11 UEFI漏洞被发现, 可以绕过安全启动机制
近日,一个新的UEFI漏洞被发现,可通过多个系统恢复工具传播,微软已经正式将该漏洞标记为追踪编号“CVE-2024-7344”。根据报告的说明,该漏洞能让攻击者绕过安全启动机制,并部署对操作系统隐形的引导工具包。 据TomsH…...

网安加·百家讲坛 | 樊山:数据安全之威胁建模
作者简介:樊山,锦联世纪教育能源工业互联网数字安全CSM(新能源运维师)课程特聘培训讲师,哈尔滨工业大学(深圳)信飞合创数据合规联合实验室特聘专家,武汉赛博网络安全人才研究中心资深专家;近24年…...

jQuery阶段总结(二维表+思维导图)
引言 经过23天的学习,期间有期末考试,有放假等插曲。本来应该在学校里学习,但是特殊原因,让回家了。但是在家学习的过程,虽然在学,很让我感觉到不一样。但是效果始终还是差点的,本来17、18号左右…...

【LLM】RedisSearch 向量相似性搜索在 SpringBoot 中的实现
整理不易,请不要吝啬你的赞和收藏。 1. 前言 写这篇文章挺不容易的,网络上对于 SpringBoot 实现 Redis 向量相似性搜索的文章总体来说篇幅较少,并且这些文章很多都写得很粗糙,或者不是我想要的实现方式,所以我不得不阅…...

如何为64位LabVIEW配置正确的驱动程序
在安装 64位 LabVIEW 后,确保驱动程序正确配置是关键。如果您首先安装了 32位 LabVIEW 和相关驱动,然后安装了 64位 LabVIEW,需要确保为 64位 LabVIEW 安装和配置适当的驱动程序,才能正常访问硬件设备。以下是详细步骤:…...

Redis(5,jedis和spring)
在前面的学习中,只是学习了各种redis的操作,都是在redis命令行客户端操作的,手动执行的,更多的时候就是使用redis的api(),进一步操作redis程序。 在java中实现的redis客户端有很多,…...

Git 小白入门教程
🎯 这篇文章详细介绍了版本控制的重要性,特别是通过Git实现的分布式版本控制相对于SVN集中式控制的优势。文章首先解释了版本控制的基本概念,强调了在文档或项目多版本迭代中备份与恢复任意版本的能力。接着,重点阐述了Git的历史背…...

Python从0到100(八十五):神经网络与迁移学习在猫狗分类中的应用
在人工智能的浩瀚宇宙中,深度学习犹如一颗璀璨的星辰,引领着机器学习和计算机视觉领域的前沿探索。而神经网络,作为深度学习的核心架构,更是以其强大的数据建模能力,成为解决复杂问题的重要工具。今天,我们…...

代码随想录刷题day14(2)|(链表篇)02.07. 链表相交(疑点)
目录 一、链表理论基础 二、链表相交求解思路 三、相关算法题目 四、疑点 一、链表理论基础 代码随想录 二、链表相交求解思路 链表相交时,是结点的位置,也就是指针相同,不是结点的数值相同; 思路:定义两个指针…...

C++ 复习总结记录九
C 复习总结记录九 主要内容 1、list 介绍及使用 2、list 剖析及模拟实现 3、list 与 vector 对比 一 list 介绍及使用 List 相关文档 1、List 在任意位置进行插入和删除的序列式容器 O(1) ,且该容器可前后双向迭代 2、List 底层是带头双向循环链表ÿ…...

数据库性能优化(sql优化)_SQL执行计划02_yxy
数据库性能优化_SQL执行计划详解02 常用操作符解读1.1 表扫描类型操作符1.1.1 CSCN 聚集索引扫描1.1.2 CSEK 聚集索引数据定位1.1.3 SSEK 二级索引数据定位1.1.4 SSCN 直接使用二级索引进行扫描1.2 其他常见操作符1.2.1 BLKUP 二次扫描1.2.2 SLCT 选择1.2.3 PRJT 投影1.2.4 NSE…...

Vivado生成X1或X4位宽mcs文件并固化到flash
1.生成mcs文件 01.在vivado里的菜单栏选择"tools"工具栏 02.在"tools"里选择"生成内存配置文件" 03.配置参数 按照FPGA板上的flash型号进行选型,相关配置步骤可参考下图。 注意:Flash数据传输位宽如果需要选择X4位宽&am…...