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

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

文章目录

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

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

同一网络内:

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

ARP表

ARP协议: 2种类型的报文

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

request - 请求

发送方:

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

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

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

收到的MAC地址会存放在ARP缓存表中
PC1的ARP缓存表:

PC2的ARP缓存表:

ARP缓存表有生存时间

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

PC机, 路由器有ARP表

路由器R1的ARP表:

PC1在ping 192.168.1.254之后

生存时间 20 min

交换机也有ARP表:


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

MAC地址

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

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


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

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

不同网络

路由表

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

当ping另外一个网络的终端设备时, 本设备知道该ip地址是跨网络的, 本设备也有路由表, 其中第一条为默认路由, 可以使用route PRINT命令查看本机路由表
在这里插入图片描述
配置网关就相当于配置默认路由

不同网络通信流程

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

PC1到路由器
  1. 因为给PC1配置了网关(192.168.1.254), 也就是相当于配置了默认路由(因此主机也是有路由表的), 当PC1发现是跨网络通信时,就会将包发送给路由器, 那么问题来了 => 在通信时,发送方要知道接收方的IP地址和MAC地址
  2. 但是现在PC1知道要发送给路由器, 也就是说知道路由器的ip地址,但是不知道路由器的MAC地址(默认开始时PC1的ARP表为空)
  3. 因此PC1会发送一个ARP请求广播到本地网络,以获取路由器的MAC地址
  4. 路由器收到APR请求后, 回复其MAC地址这样PC1就可以构建包含路由器MAC地址的以太网帧,并将数据包发送给路由器
路由器到PC2
  1. 路由器接收到数据包后,会查看路由表来确定下一跳地址和转发接口, 也就是判断将该数据包发送给哪个网段内的主机。
  2. 确认网段后, 路由器也要先查看ARP表, 看是否有目标ip对应的MAC地址, 如有就进行发送, 没有,则先进行APR广播来获取目标主机的MAC地址, 最后再将数据包发送给目标主机PC2

简短总结

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


http://www.kler.cn/a/417904.html

相关文章:

  • IDEA全局设置-解决maven加载过慢的问题
  • 简单搭建qiankun的主应用和子应用并且用Docker进行服务器部署
  • 云备份实战项目
  • Win11电脑亮度无法调节以及夜间模式点击没有用失效解决方法
  • 视觉语言动作模型VLA的持续升级:从π0之参考基线Octo到OpenVLA、TinyVLA、DeeR-VLA、3D-VLA
  • 网络安全运行与维护 加固练习题
  • 为什么在PyTorch中需要添加批次维度
  • ElasticSearch通过es-head插件安装可视化及相关问题
  • 告别 Kafka,拥抱 Databend:构建高效低成本的用户行为分析体系
  • 基于VMware 的 deepin 系统 学习 安装 1Panel mysql redis
  • Elasticsearch数据冷热分离
  • IDEA全局设置-解决maven加载过慢的问题
  • 【经典】星空主题的注册界面HTML,CSS,JS
  • Java全栈开发:旅游网站设计与实现
  • C++类中多线程的编码方式
  • Java代码操作Zookeeper(使用 Apache Curator 库)
  • HarmonyOS4+NEXT星河版入门与项目实战(24)------Stage模型
  • Flink CDC 使用实践以及遇到的问题
  • 基于VUE3集成天地图
  • 【Golang TCP应用】
  • 指针与引用错题汇总
  • upload-labs 靶场(11~21)
  • 网络安全之访问控制
  • 你的网站真的安全吗?如何防止网站被攻击?
  • 【AI】JetsonNano启动时报错:soctherm OC ALARM
  • 【ETCD】etcd中配置参数详解