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表以防止攻击。对于不同网络间的通信,则需借助路由器及其路由表完成跨网传输。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/483551.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第七课 Unity编辑器创建的资源优化_UI篇(UGUI)

上期我们学习了简单的Scene优化,接下来我们继续编辑器创建资源的UGUI优化 UI篇(UGUI) 优化UGUI应从哪些方面入手? 可以从CPU和GPU两方面考虑,CPU方面,避免触发或减少Canvas的Rebuild和Rebatch&#xff0c…

微服务搭建----springboot接入Nacos2.x

springboot接入Nacos2.x nacos之前用的版本是1.0的,现在重新搭建一个2.0版本的,学如逆水行舟,不进则退,废话不多说,开搞 1、 nacos2.x搭建 1,首先第一步查询下项目之间的版本对照,不然后期会…

Node.js 实战: 爬取百度新闻并序列化 - 完整教程

很多时候我们需要爬取一些公开的网页内容来做一些数据分析和统计。而多数时候,大家会用到python ,因为实现起来很方便。但是其实Node.js 用来爬取网络内容,也是非常强大的。 今天我向大家介绍一下我自己写的一个百度新闻的爬虫,可…

Flink四大基石之State(状态) 的使用详解

目录 一、有状态计算与无状态计算 (一)概念差异 (二)应用场景 二、有状态计算中的状态分类 (一)托管状态(Managed State)与原生状态(Raw State) 两者的…

底部导航栏新增功能按键

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

如何在 Firefox 中清除特定网站的浏览历史记录

以下,我将介绍如何清除特定网站的浏览历史记录。清除历史记录可以保护隐私,特别是在公共或共享设备上使用时,还能节省设备存储空间,避免浏览历史占用过多内存。 如何清除特定网站的浏览历史记录 在 Firefox 中,清除特…

SpringMVC(二)

Model 以Map方式进行存储,用于向作用域中存值。 注意:在Model中增加模型数据,若不指定key,则默认使用对象的类型作为key Controller //控制器类 public class IndexController {RequestMapping("/index3")public Strin…

ABE 中的隐藏属性:DIPPE(去中心化内积谓词加密)

1. 引言 相关论文有: Yan Michalevsky 和 Marc Joye 2018年论文 Decentralized policy-hiding ABE with receiver privacy,发表于23rd European Symposium on Research in Computer Security, ESORICS 2018。Amit Sahai 和 Brent Waters 2005年论文 Fu…

计算机网络——不同版本的 HTTP 协议

介绍 HTTP,即超文本传输协议(HyperText Transfer Protocol),是应用层的一个简单的请求-响应协议,它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。本文将介绍 HTTP 协议各个版本。 HTTP/1.0 HTTP/1…

Linux——基础命令(2) 文件内容操作

目录 ​编辑 文件内容操作 1.Vim (1)移动光标 (2)复制 (3)剪切 (4)删除 (5)粘贴 (6)替换,撤销,查找 (7&#xff…

嵌入式硬件实战提升篇(三)商用量产电源设计方案 三路电源输入设计 电源管理 多输入供电自动管理 DCDC降压

引言:本文你能实际的了解到实战量产产品中电源架构设计的要求和过程,并且从实际实践出发搞懂电源架构系统,你也可以模仿此架构抄板到你自己的项目,并结合硬件篇之前的项目以及理论形成正真的三路电源输入设计与开发板电源架构块供…

30分钟学会正则表达式

正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。 作用 匹配 查看一个字符串是否符合正则表达式的语法 搜索 正…

如何手搓一个智能激光逗猫棒

背景 最近家里的猫胖了,所以我就想做个逗猫棒。找了一圈市场上的智能逗猫棒,运行轨迹比较单一,互动性不足。 轨迹单一,活动范围有限 而我希望后续可以结合人工智能物联网,通过摄像头来捕捉猫的位置,让小…

【C语言】递归的内存占用过程

递归 递归是函数调用自身的一种编程技术。在C语言中,递归的实现会占用内存栈(Call Stack),每次递归调用都会在栈上分配一个新的 “栈帧(Stack Frame)”,用于存储本次调用的函数局部变量、返回地…

Bert+CRF的NER实战

CRF(条件随机场-Conditional Random Field) 原始本文:我在北京吃炸酱面 标注示例(采用BIO标注方式): 我O在O北B-PLA京I-PLA吃O炸B-FOOD酱I-FOOD面I-FOOD CRF: 目的:提出一些不可能…

pycharm链接neo4j数据库(简单)

1.安装pycharm 2.安装库 pip install py2neo -i https://pypi.tuna.tsinghua.edu.cn/simple 3.代码试运行 from py2neo import Graph, Node, Relationship# 连接到Neo4j数据库,使用Bolt协议 graph Graph("bolt://localhost:7687", auth("neo…

故障诊断 | Transformer-LSTM组合模型的故障诊断(Matlab)

效果一览 文章概述 故障诊断 | Transformer-LSTM组合模型的故障诊断(Matlab) 源码设计 %% 初始化 clear close all clc disp(此程序务必用2023b及其以上版本的MATLAB!否则会报错!) warning off %

flask的第一个应用

本文编写一个简单的实例来记录下flask的使用 文章目录 简单实例flask中的路由无参形式有参形式 参数类型不同的http方法本文小结 简单实例 flask的依赖包都安装好之后,我们就可以写一个最简单的web应用程序了,我们把这个应用程序命名为first.py: from fl…

jmeter 压测常用静默参数解释应用

简介: JMeter静默压测(即无界面压测)是一种常用的性能测试方法,用于模拟多个用户同时访问系统并测量系统的响应时间和吞吐量等关键性能指标。在JMeter静默压测中,常用的压测参数及其解释如下: 一、基本…

《Python基础》之Pandas库

目录 一、简介 二、Pandas的核心数据结构 1、Series 2、DataFrame 三、数据读取与写入 1、数据读取 2、数据写入 四、数据清洗与处理 1、处理缺失值 2、处理重复值 3、数据转换 五、数据分析与可视化 1、统计描述 2、分组聚合 3、数据可视化 六、高级技巧 1、时…