转发表(MAC表)、ARP表、路由表总结

转发表(MAC表)、ARP表、路由表总结全文概要计算机网络中一个关键步骤在于通信路径上不同节点对于流经本节点的数据包转发 常见的交换设备主要是交换机 第二层 三层 和路由器 第三层 在实际运行时 它们各自维护一些表结构帮助完成数据包的

大家好,欢迎来到IT知识分享网。

全文概要

计算机网络中一个关键步骤在于通信路径上不同节点对于流经本节点的数据包转发,常见的交换设备主要是交换机(第二层、三层)和路由器(第三层),在实际运行时,它们各自维护一些表结构帮助完成数据包的正确寻址与转发,本文详细介绍了三张至关重要的表:转发表、ARP表与路由表的在网络数据包转发功能中发挥的作用,以及它们协同工作的原理,顺便也会接着之前的文章继续谈谈交换机和路由器的一些事儿。

网络分层协议

计算机网络是将地理上隔离的计算节点从物理上相连(双绞线、光纤、无线信号等),并采用分层方式,将计算机网络自顶向下依次分为五层:应用层->传输层->网络层->数据链路层->物理层,对应设计有一整套网络协议栈,各层次分别运行有多种协议,下层向紧邻上层提供服务并隐藏通信细节,上层调用紧邻下层提供的服务,完成主机不同层次之间的对等通信,高层(应用层、传输层、网络层)之间借此实现逻辑相连通信。之所以称为“逻辑通信”,是因为不同主机相同的较高层次之间好像是沿水平方向传送数据,但事实上这两个对等层次之间并没有一条水平方向的物理连接,举例说明如下:

数据链路层用于实现点到点通信,由于不同节点在物理上通过真实的数据链路相连,不能再算是逻辑通信。

转发表(Forwarding Table)

MAC地址

MAC地址(Media Access Control Address),即媒体访问控制地址,通常也称为以太网地址或物理地址,它是一个用于确认网络设备位置的地址,每个网络设备(如网络适配器(Network Adapter),即网卡(Network Interface Card, NIC))都有世上唯一的MAC地址,一台设备若有多张网卡,则每个网卡都必须具有一个唯一的MAC地址,这个是在网络设备出厂时由厂商烧制确定。

MAC地址共48位,即6个字节,通常每4位构成一个16进制数,从而可以表示成xx:xx:xx:xx:xx:xx的形式,每个x都是一个16进制数。其中ff:ff:ff:ff:ff:ff为广播地址,以此作为目的地址的数据包会被交换机广播至全部端口,发到与其端口相连的全部局域网;01:xx:xx:xx:xx:xx是多播地址。

工作流

转发表,又称MAC表,聊到它就不得不提到交换机里,因为交换机就是根据转发表来转发数据帧的。

交换机本质上也是一个计算机,拥有计算(CPU)、存储(SRAM或TCAM)和网络资源(转发芯片和链路),甚至还会安装专用操作系统,它会维护一张记录着局域网主机端口MAC地址与交换机端口对应的表,交换机就是根据这张表负责将数据帧传输到指定的主机端口上的。

交换机具有“存储转发”功能:

交换机在接收到数据帧以后,首先会记录数据帧中的源MAC地址和对应的到达端口到MAC表中,这一过程通常称为“自学习”,不需要任何的人工干预;

接着,交换机检查自己的MAC表是否有数据帧中目的MAC地址的匹配条目,如果有,则会根据MAC表中记录的对应端口将数据帧转发出去,这一转发方式称为“单播”(Unicast)。而如果没有,则会将该数据帧从非达到端口的其它全部端口发送出去,这一转发方式程序称为“广播”(Broadcast)。

下面会以图示的方式详细讲解交换机传输数据帧的过程,下面先来看看单个交换机转发的情形:

在这里插入图片描述

步骤如下:

在这里插入图片描述

步骤如下:

注:交换机动态学习的MAC地址默认只有300s的有效期,如果300s内记录的MAC地址没有对应的通信过程来更新对应条目,则会自动删除此记录,这是由交换机中的一个计时器所维护的。

ARP表(Address Resolution Table)

上一节介绍了交换机的工作原理,了解到交换机是根据MAC寻址,查表确认输出端口以完成本节点转发任务的。看到这里其实应该可以抛出从一开始就被我们忽视了的问题:在初始构造数据包准备发送时,源主机究竟要如何获得目的主机网络设备MAC地址的呢?这时,就需要使用到ARP协议。在网络拓扑中的每个节点或说主机上,实际都维护有一张ARP表,它记录着主机的IP地址(网络地址)到MAC地址(物理地址)的映射关系。

ARP协议,即地址解析协议,它是一个网络层协议,运行在各网络节点上,负责完成主机IP地址到MAC地址的映射。

工作流
接下来根据下图,详细讲解一下ARP协议的工作原理:
在这里插入图片描述

步骤如下:

这里有一点值得注意的是传输过程中IP地址与MAC的地址的变化问题:

路由表(Routing Table)

IP地址
IP地址(Internet Protocol Address),即互联网协议地址,也称为网络层地址或主机地址,是分配给网络上的各个网络设备的地址。

现在流行的IP协议有两个版本:IPv4(Internet Protocol Version 4)和IPv6(Internet Protocol Version 6)。其中,IPv4地址为32位,即4个字节,为便于使用,常以xxx.xxx.xxx.xxx每个字节8位从二进制表示为十进制数,这种表示方法称为点分十进制,地址可分为A、B、C、D、E五大类,32位全为1的IP地址:255.255.255.255称为“受限广播地址”(Limited Broadcasr Destination Address),用于将一个分组以广播方式发送给本网络中的所有主机,路由器则阻挡该分组通过,将其广播功能限制在本网内部,因此可以说路由器隔离了广播域(交换机隔离了冲突域)。

随着网络规模和节点数量的不断扩展,出于32位的IPv4将很快被分配使用殆尽的担忧,又推出了IPv6地址,128位,16个字节,通常每4位表示为一个16进制数,16个字节分为8组,每组包含2个字节即4个16进制数,组与组之间以冒号分割:ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff为IPv6协议下的广播地址。

IP VS MAC
MAC地址和IP地址本质都是网络设备物理端口的性质,都可用于寻址网络设备,但如果它们功能类似,仅是工作的层次不同的话,两者之间应该可以通过某种机制实现相互替换,但为什么它们能共存至今呢?

对于MAC地址和IP地址的比较,有人曾这么比喻:一个人已经有了手机号(IP地址),为什么还要有身份证号呢(MAC地址)?身份证号是一个人的唯一标识号,只要有这个号码就能找到该人,但是为啥他的朋友们不用身份证号来寻找该人而用手机号呢?对,因为方便。但是如果该人犯罪,警察用手机号呼叫寻找该人,傻子才会接吧…而且换了号码怎么办?那不就得用你的身份证号在全国发布通缉令,利用身份证号在全国各种系统范围(消费、社交、医疗)内搜索该人的记录,才能最终定位该人实施有效逮捕嘛。

上述例子实际就契合了两种地址存在的意义:IP地址是逻辑地址,根据网络协议,在不同的地理位置加入互联网就会分配到完全不同的IP地址(DHCP动态分配IP地址),但由于属于网络层,相对较高的抽象层次设计的初衷就是为了简化通信,方便使用,尤其对于用户进程而言;MAC地址是物理地址,工作在数据链路层,一旦出厂时由厂商确定并烧制入网络设备的EPROM中就具有了固定的全球唯一的地址,任何时候任何条件都不会改变,虽说使用起来不太方便,且描述的是较低层的数据链路通信细节,但在任何时候都可用于数据通信寻址。

更严谨完善的解释如下:

下面再通过一个例子看看IP地址和MAC地址是怎样结合起来传送数据包的:

假设网络上要将一个数据包(名为PAC)由北京的一台主机(名称为A,IP地址为IP_A,MAC地址为MAC_A)发送到纽约的一台主机(名称为B,IP地址为IP_B,MAC地址为MAC_B)。这两台主机之间不太可能是直连起来的,因而数据包在传递时必然要经过许多中间节点(如路由器,网关服务器等),假定在传输过程中要经过C1、C2、C3(其输入、输出端口的MAC地址分别为M1_In/M1_Out,M2_In/M2_Out,M3_In/M3_Out)三个节点。A在将PAC发出之前,先发送一个ARP请求,找到其要到达IP_B所必须经历的第一个中间节点C1的到达端口MAC地址M1_In,然后在其数据包中封装地址:IP_A、IP_B,MAC_A和M1_In。当PAC传到C1后,再由ARP根据其目的IP地址IP_B,找到其要经历的第二个中间节点C2的到达端口MAC地址M2_In,然后再封装目的MAC地址为M2_Out的数据包传送到C2。如此类推,直到最后找到IP地址为IP_B的B主机的MAC地址MAC_B,最终传送给主机B。在传输过程中,数据包源IP地址IP_A、目的IP地址IP_B不变,而源MAC地址和目的MAC地址,由于中间节点重新封装数据帧而不断改变,直至目的地址MAC地址为MAC_B,数据包最终到达目的主机B。

综上所述,IP地址和MAC地址相同点是它们都可以作为设备地址标识,不同则主要体现以下几个方面:

在这里插入图片描述

解析上述路由表:

路由器中记录的条目有的需要手动添加,称为静态路由;有的则是动态获取的,称为动态路由。表中的每个条目都有以下属性

目的网络地址(Destination):网络地址和网络掩码相与的结果用于定义本机可以达到的目的网络范围,通常情况下,目的网络范围包含以下几种情况:
(1) 主机地址:某个特定主机的网络地址;
(2) 子网地址:某个特定子网的网络地址;
(3) 默认路由:所有未在路由表中指定的网络地址,用0.0.0.0统一匹配,用于配置默认网关;


网络掩码(Genmask):又称为子网掩码(Subnet Mask),是一个32位地址,作用是将一个同样也是32位的IPv4地址划分成网络地址(Network Address)和主机地址(Host Address)。子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码是用来判断任意两台主机是否处于同一网段的根据,简单来说就是两台主机各自的IP地址与本机配置的子网掩码做按位与操作,如果结果相同,则说明这两台主机是处于同一网段,可以进行直接的通讯,而无需路由器的转发;

网关(Gateway,又被称为下一跳服务器(Next Hop Server)):发送IP数据包时,网关定义了针对特定的网络目的地址,数据包将要被发送到的下一跳IP地址。如果是与路由器直接相连的网段,网关通常就是路由器对应的网络端口的IP地址,但是此时接口必须与网关一致。如果是远程网络或默认路由,网关通常是与路由器相连网络上的某个服务器或路由器。如果目标是本主机所属网络,不需要路由,网关显示为”*“;

接口(Iface):接口定义了针对特定的网络目的地址,路由器用于转发数据包的网络接口(路由器的物理端口)。网关必须位于和接口相同的子网(默认网关除外),否则造成在使用此路由项时需调用其他路由项,从而可能会导致路由死锁;

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

标志(Flags):多种路由表项标记含义如下:

 (1) U:路由是动态的; (2) H:目标是一个主机; (3) G:路由指向网关; (4) R:恢复动态路由产生的表项; (5) D:由路由的后台程序动态安装; (6) M:由路由的后台程序修改; (7) !:拒绝路由。 

引用次数(Refs):Linux内核中未使用,一般是0;

查找次数(Use):此路由项被路由软件查找的次数。

路由器是工作在网络层的,在网络层可以识别逻辑地址,即IP地址,也就是说数据包解析时最多可将数据帧拆包成IP数据包,路由器无法操作数据报的载荷字段,但是可以针对IP首部做些事情:当路由器的某个端口收到一个包时,路由器就会读取包中的目地IP地址,然后在路由表中进行查找。如果在路由表中找到目的IP地址对应条目,则把包转发到路由器的对应端口。如果没找到,那么如果路由器配置默认路由(默认网关),就默认将所有无法解析的目的网段主机的数据包都先发往该默认网关做进一步转发,如果没有配置默认路由,则将该包丢弃,并返回源主机以不可达(Unreachable)的信息。这就是数据包路由的过程。

利用下图详细介绍路由器的工作原理:

在这里插入图片描述

步骤如下:

小结
路由表负责记录一个网络到另一个网络的路径,路由器依赖路由协议及其确定的路由表完成三层,即网络层的数据转发工作。路由表项中最重要的信息在于目的网段和网关,即下一跳IP地址的对应关系,网关通常是专门的网关服务器或者路由器,而网关会负责将该数据包最终转发至目的网段。

参考资源

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/116887.html

(0)
上一篇 2025-11-25 15:26
下一篇 2025-11-25 15:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信