热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

路由表(RIB表、FIB表)、ARP表、MAC表整理

在一些常见的网络设备中(如交换机、路由器),为了实现网络转发功能,各自通过维护一些表项来完成路由寻址及快速转发功能,其中比较重要的表项有&



在一些常见的网络设备中(如交换机、路由器),为了实现网络转发功能,各自通过维护一些表项来完成路由寻址及快速转发功能,其中比较重要的表项有:


  • 路由表
  • 转发表
  • Mac表
  • ARP表

本文对这网络中的最关键的四个表项做一个详细介绍。

目录

1. 路由表(Routing Table)、转发表(Forwarding Table)

 2. Mac表(Media Access Control Table)

2.1 地址学习线程:

2.2 报文转发线程:

3. ARP表(Address Resolution Table)

4. 小结





1. 路由表(Routing Table)、转发表(Forwarding Table



在计算机网络中,路由器的主要工作就是为经过路由器的每个数据包寻找一条最佳的传输路径,并将该数据有效地传送到目的站点。为了能够实现从众多路径中选择最佳的传输路径,路由器中保存了周边网络的拓扑信息和各种路径参数,我们将这张表称作路由表。路由表(routing table)或称路由择域信息库(RIB, Routing Information Base),是一个存储在路由器或者联网计算机中的电子表格(文件)或类数据库。路由表存储着指向特定网络地址的路径(在有些情况下,还记录有路径的路由度量值)。路由表建立的主要目标是为了实现路由协议和静态路由选择

在每一个路由器设备中,通常都维护了两张比较相似的表,分别为:


  • 路由信息表(Routing Information Base),简称为RIB表、路由表
  • 转发信息表(Forwarding Information Base), 简称为FIB表、转发表

其中,路由表(RIB表)用来决策路由;转发表用来转发分组。

由于路由器的核心工作便是为经过路由器的每一个数据包找到最佳路径。何为最佳?  当然是在众多路径中选择最快、质量最好、路径最短、…等指标选择最优的路径,并将到达不同网络的最优路径对应的路由组成一张新的表格,即FIB表(转发表)。

在我的Ubantu系统中可以分别通过route 、 route -F 来查询RIB表和FIB表。

由于是主机设备,路由表比较简单,且不存在多个出接口,因此FIB表和RIB是相同的。

需要说明的是:这两种表存在多种叫法,但是只要知道了这两个表的作用,那么见到其他的叫法时便也不再陌生。通常情况下,我们在网络转发中提到的路由表,是这两个表的统称,或者根本没有区分使用的哪张表。不同的网络设备也有可能采用不同的表作为路由、寻址、转发的依据。

路由表项内容:

在路由表中,每一项都包括如下内容:


  • 目的网络地址(Destination) + 子网掩码(Genmask)

网络地址网络掩码共同确定本机可以达到的目的网络范围,通常情况下,目的网络范围包含以下几种情况: (1) 主机地址:某个特定主机的网络地址; (2) 子网地址:某个特定子网的网络地址; (3)默认路由:所有未在路由表中指定的网络地址,用0.0.0.0统一匹配,用于配置默认网关(ubantu虚拟机中默认路由显示为default)


  • 网关(Gateway/下一跳(Next Hop):

一般终端设备如(PC,手机等)接入网络时,无需配置任何路由信息,而是通过路由器的DHCP协议分配IP地址,终端设备接收IP地址的同时会将本设备的网关设置为直连的路由器。而后上网过程中所有的报文在查询路由时,由于没有其他路由,因此被直接发送到了网关设备,有网关设备进行后续转发功能。

而网络设备一般通过配置动态路由协议来更新路由表,除此之外也会设置默认网关。在收到数据包时如果路由表中有对应的路由表项,则通过此表项的出接口发送到下一跳网络设备,如果没有匹配到相应的路由表项,则需要发给默认网关,有网关进行后续转发处理工作。


  • 接口(Iface):

接口定义了针对特定的网络目的地址,路由器用于转发数据包的出接口。即用来确定数据包从哪个网口上发送到下一跳设备。


  • 跳数(Metric):

跳数用于指出路由的成本,通常情况下代表:到达目标地址所需要的总路由器个数一个跳数代表经过一个路由器IP数据报首部中的TTL字段就是该数据报所能存活的总跳数。跳数越少往往代表着该路由成本越低,跳数越多则说明成本越高。当具有多条达到相同目的网络的路由选项时,路由算法会选择具有更少跳数的路由。


  • 标志(Flag):

路由表中常见的flag标记有:

 (1) U:路由是动态的;

 (2) H:目标是一个主机;

 (3) G:路由指向网关;

 (4) R:恢复动态路由产生的表项;

 (5) D:由路由的后台程序动态安装;

 (6) M:由路由的后台程序修改;

 (7) !: 拒绝路由。

以前工作中经常查看思科设备路由表,它的标记位更加详细,明确标出了路由条目所属动态路由类型。


  • 引用次数(Refs):

Linux内核中未使用,一般是0;


  • 查询次数(Use):

此路由项被路由软件查找的次数。

路由表中有三类路由:


  • 直连路由(由链路层协议发现的路由)
  • 静态路由(由管理员手动配置的路由)
  • 动态路由(由动态路由协议发现的路由)

静态路由表特点:

静态路由是由管理员在路由器中手动配置的固定路由,由管理员负责维护工作,静态路由不会超时老化、也不会同网络拓扑结构的变化发生变化。静态路由由于完全需要管理员的维护,不能实时感知网络拓扑并进行调整,通常只用于小规模、拓扑简单的网络中。

动态路由表特点:

动态路由表由动态路由协议创建、更新、维护;常见的动态路由协议有:BGP协议、RIP协议、OSPF协议、ISIS协议、EIGRP协议等。动态路由协议最大的优势是:可以实时感知网络拓扑的变化,并对路由表做出相应的调整;网络扩展性好,适合大中型网络;

 

路由表匹配原则:


  • 精确匹配算法
  • 最长前缀匹配算法(Longest Prefix Matching, 简称LPM)

通常情况下,网络设备会同时实现这两种匹配算法,但是各家在实现上有所不同而已。路由匹配算法对于网络设备而言,非常重要。作为转发设备,如果路由条目达到一定数量(如十万条级别,百万条级别、千万条级别、…),就需要充分考虑匹配算法的性能问题。

除了要考虑算法检索效率问题,还需要考虑是否可以借助硬件实现查找加速。

典型的算法有:


  • 以Linux的路由查找算法为代表的的哈希(桶)算法
  • Linux的LC-Trie树查找算法
  • BSD/Cisco的Radix查找算法
  • BSD/Cisco的256叉树查找算法
  • DPDK中采用的分段查找算法(类似多级页表查询方式)

如果需要详细了解路由表匹配原则,可以仔细阅读下面的文章。

Internet路由之路由表查找算法概述-哈希/LC-Trie树/256-way-mtrie树

 


 2. Mac表(Media Access Control Table




从ISO网络模型上划分来说,路由表位于网络层,它用来进行路由和寻址功能。而Mac表则维护数据链路层,用来记录MAC地址-->端口之间的映射。说道MAC表,虽然每一台网络设备商都存在,但是更多的是在交换机中进行详细介绍。

MAC表项:

MAC表中包括的内容有:


  • MAC地址
  • 物理接口
  • Mac条目类型(可能)
  • 老化时间
  • VLAN-ID(可能)

因为MAC表项也存在动态Mac和静态Mac之分,因此在Mac表中会有老化时间、类型。

静态MAC地址与静态路由一样,有管理员负责管理维护;而动态Mac表项则是通过学习而来。在交换机中一般存在两个重要线程:地址学习线程、报文转发线程。


2.1 地址学习线程:


  • MAC学习法: 交换机从网络上收到报文后,利用数据包的源MAC地址进行学习,并建立MAC表项。
  • 端口移动机制交换机收到报文后,如果发现报文接收端口与MAC表中对应的端口不一致时,进行端口移动,将Mac地址重新学习到新的端口上。
  • 地址老化机制:如果长时间没有收到某Mac表项对应的报文,则删除此表项。等下次报文来时重新进行学习。

2.2 报文转发线程:


  • 交换机收到报文后,根据报文中的目的Mac查询Mac表。如果找到,则从相应的端口发出;如果没有找到,则向除入端口以外的所有端口发送(即传说中的泛洪);
  • 如果交换机收到的报文目的Mac和源Mac所在端口相同,则丢弃此报文;
  • 交换机收到的目的Mac为广播报文时,则向除入端口以外的所有端口转发广播报文。

注意:广播和泛洪是两个不同的概念,虽然有时两个都向所有的端口发送报文。

 


3. ARP表(Address Resolution Table



 在7层OSI模型中,IP地址工作在第三层(网络层),Mac地址工作在第二层(数据链路层),两者之间各行其道,互不干扰。在进行报文转发时,目的IP地址我们是明确的,但是目的Mac地址却不知道;在封装报文时,先封装IP头部,然后填充二层头部。但是由于不知道Mac地址,因此二层头部无法填充,此时便需要用到ARP协议,它通过查询指定IP地址对应的Mac地址,构建出一个Mac表项,我们通过查询此表项便可以知道:目的IP地址对应的Mac地址。因此在Mac表,本质上就是:IP地址和Mac地址间的映射

 


4. 小结


上文中主要介绍了计算机网络中经常遇到的3类表(路由表、ARP表、Mac表)。其中路由表又可以细分为路由信息表(RIB)和转发信息表(FIB),RIB表用来维护网络的拓扑信息,而FIB则是从RIB表中选择最优的路由构成的转发表信息。在进行报文转发(发送)时:


  • 先查询路由表,确定目的地址是否可达,如果可达则确定出接口和下一跳信息
  • 再查询ARP,获取到目的地址对应的Mac地址信息,构建完整的以太网报文。
  • 最后查询Mac,是为了确定报文的发送接口,确定了出接口,内核会将报文发送到对应的网卡驱动上,网卡在合适的时间会将报文发送到下一跳设备上。

忽然又想到一个问题:路由表中存在出接口,而Mac表中也存在出接口,两个表中的出接口在各自的表中的作用是什么?

 






推荐阅读
  • 巧用arguments在Javascript的函数中有个名为arguments的类数组对象。它看起来是那么的诡异而且名不经传,但众多的Javascript库都使用着它强大的功能。所 ... [详细]
  • 开发笔记:计网局域网:NAT 是如何工作的?
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了计网-局域网:NAT是如何工作的?相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 网关(Gateway)又称网间连接器、协议转换器。网关在传输层上以实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连。网关的结构也和 ... [详细]
  • 让你明白kvm是什么
    参考:https:blog.csdn.netbbwangjarticledetails80465320KVM工具集合:libvirt:操作和管理KVM虚机的虚拟化API ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 解决github访问慢的问题的方法集锦
    本文总结了国内用户在访问github网站时可能遇到的加载慢的问题,并提供了解决方法,其中包括修改hosts文件来加速访问。 ... [详细]
  • 本文讨论了编写可保护的代码的重要性,包括提高代码的可读性、可调试性和直观性。同时介绍了优化代码的方法,如代码格式化、解释函数和提炼函数等。还提到了一些常见的坏代码味道,如不规范的命名、重复代码、过长的函数和参数列表等。最后,介绍了如何处理数据泥团和进行函数重构,以提高代码质量和可维护性。 ... [详细]
  • 本文介绍了如何使用双路由器有线搭建一个小型的局域网网络,解决家庭或公司多个网络设备无法同时上网的问题。详细讲解了两种简单快速的组网方式,并提供了具体的设置步骤和注意事项。 ... [详细]
  • HSRP热备份路由器协议的应用及配置
    本文介绍了HSRP热备份路由器协议的应用及配置方法,包括设计目标、工作原理、配置命令等。通过HSRP协议,可以实现在主动路由器故障时自动切换到备份路由器,保证网络连通性。此外,还介绍了R1和R2路由器的配置方法以及Sw1和Sw2交换机的配置方法,最后还介绍了测试连通性和路由追踪的方法。 ... [详细]
  • 如何使用PLEX播放组播、抓取信号源以及设置路由器
    本文介绍了如何使用PLEX播放组播、抓取信号源以及设置路由器。通过使用xTeve软件和M3U源,用户可以在PLEX上实现直播功能,并且可以自动匹配EPG信息和定时录制节目。同时,本文还提供了从华为itv盒子提取组播地址的方法以及如何在ASUS固件路由器上设置IPTV。在使用PLEX之前,建议先使用VLC测试是否可以正常播放UDPXY转发的iptv流。最后,本文还介绍了docker版xTeve的设置方法。 ... [详细]
  • 域名解析系统DNS
    文章目录前言一、域名系统概述二、因特网的域名结构三、域名服务器1.根域名服务器2.顶级域名服务器(TLD,top-leveldomain)3.权威(Authoritative)域名 ... [详细]
  • 路由器当做交换机使用
    2019独角兽企业重金招聘Python工程师标准TP-Link路由器当做交换机使用时要注意一下几点:1.闲置路由器管理地址更改避免与主路由器发生冲突导致无法连接 ... [详细]
  • 使用Packet Tracer对不同网段组网模拟
    @[toc]1.不同网段通信处于同于一个网段的电脑通过集线器或者交换机可以实现互相通信,处于不同网段的电脑就需要通过路由器来实现,这里可以通过Cisco的PacketTracer软 ... [详细]
  • 点击上方[全栈开发者社区]→右上角[]→[设为星标⭐]前言年前准备换工作,总结了一波面试最频繁的面试问题跟大家交流。此文章是关于浏览器的常见问题, ... [详细]
author-avatar
小北甜甜
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有