网络传输中的三张表,MAC地址表、ARP缓存表以及路由表详解

在阐述这几张表之前,有必要先说明一下:

1、交换机工作在数据链路层

说明:本文出现的交换机指的都是二层交换机,带路由功能的三层交换机不在讨论范围

2、路由器工作在网络层

3、交换机有MAC地址表,无ARP表,MAC地址表一般存在在交换机中

4、一般情况下,计算机和路由器既有ARP表,也有路由表



MAC地址表详解

      MAC地址表:在交换机中,存有一张记录局域网主机MAC地址与交换机接口的对应关系的表,交换机就是依据这张表将数据帧转发到指定的目标主机上。通过下面的阐述,你会对mac地址表有所了解。


上面是交换机、主机A以及主机B的连接图,主机A向主机B发送数据帧的详细过程如下:

1、主机A将一个数据帧发送给交换机,其中源MAC地址为MAC_A,目标MAC地址为MAC_B。

2、交换机收到此数据帧后,首先将数据帧中的源MAC地址MAC_A和对应的接口(接口1) 记录到MAC地址表中。

3、然后,交换机会检查自己的MAC地址表中是否有MAC_B的信息。如果有,则从MAC地址表记录的接口2发送出去;如果没有,则会将此数据帧从非接收接口(接口1)的所有接口发送出去。

4、这时,局域网中所有主机都会收到此数据帧,但是只有主机B收到此数据帧时会响应这个广播,并回应一个数据帧,此数据帧中包含主机B的MAC地址MAC_B。

5、当交换机收到主机B回应的数据帧后,也会记录数据帧中的源MAC地址(也就是MAC_B)和对应接口到MAC表中,此时,交换机就可以把主机A发过来的数据帧发送给主机B了。数据帧的源MAC地址为交换机的MAC地址,目标MAC地址是MAC_B。

ARP缓存表详解

      上面我们讲解了交换机的工作原理,知道交换机是通过MAC地址通信的,但是我们是如何获得目标主机的MAC地址呢?这时我们就需要使用ARP协议了。ARP协议是工作在网络层的协议,它负责将IP地址解析为MAC地址。在每台主机中都有一张ARP表,它记录着主机的IP地址和MAC地址的对应关系。还是利用上面的图来进行阐述。

1、如果主机A想发送数据给主机B,主机A首先会检查自己的ARP缓存表,查看是否有主机B的IP地址和MAC地址的对应关系。如果有,则会将主机B的MAC地址作为源MAC地址封装到数据帧中。如果没有,主机A则会发送一个ARP请求信息,请求的目标IP地址是IP_B,目标MAC地址是MAC地址的广播帧(即FF-FF-FF-FF-FF-FF),源IP地址为IP_A,源MAC地址是MAC_A。

2、当交换机收到此数据帧之后,发现此数据帧是广播帧,因此,会将此数据帧从非接收接口的所有接口发送出去。

3、当主机B收到此数据帧后,会校对目标IP地址是否是自己,当发现是目标地址是自己,会将主机A的IP地址和MAC地址的对应关系记录到自己的ARP缓存表中,同时会发送一个ARP应答,其中包括自己的MAC地址。

4、主机A在收到这个回应的数据帧之后,在自己的ARP缓存表中记录主机B的IP地址和MAC地址的对应关系。而此时交换机已经学习到了主机A和主机B的MAC地址了。

路由表详解

       路由器负责不同网络之间的通信,它是当今网络中的重要设备,可以说没有路由器就没有当今的互联网。在路由器中有一张路由表,记录着到不同网段的信息。路由表中的信息分为直连路由和非直连路由。

直连路由:是直接连接在路由器接口的网段,由路由器自动生成。

非直连路由:不是直接连接在路由器接口上的网段,此记录需要手动添加或者是使用动态路由生成。

       路由表中记录的条目有的需要手动添加(称为静态路由),有的需要动态获取的(称为动态路由)。直连路由属于静态路由。

       路由器是工作在网络层的,在网络层可以识别逻辑地址。当路由器的某个接口收到一个包时,路由器会读取包中相应的目标的逻辑地址的网络部分,然后在路由表中进行查找。如果在路由表中找到目标地址的路由条目,则把包转发到路由器的相应接口,如果在路由表中没有找到目标地址的路由条目,那么,如果路由配置默认路由,就科举默认路由的配置转发到路由器的相应接口;如果没有配置默认路由,则将该包丢弃,并返回不可到达的信息。这就是数据路由的过程。

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


1、HostA在网络层将来自上层的报文封装成IP数据包,其中源IP地址为自己,目标IP地址是HostB,HostA会用本机配置的24位子网掩码与目标地址进行“与”运算,得出目标地址与本机不是同一网段,因此发送HostB的数据包需要经过网关路由A的转发。

2、HostA通过ARP请求获取网关路由A的E0口的MAC地址,并在链路层将路由器E0接口的MAC地址封装成目标MAC地址,源MAC地址是自己。

3、路由器A从E0可接收到数据帧,把数据链路层的封装去掉,并检查路由表中是否有目标IP地址网段(即192.168.2.2的网段)相匹配的的项,根据路由表中记录到192.168.2.0网段的数据请发送给下一跳地址10.1.1.2,因此数据在路由器A的E1口重新封装,此时,源MAC地址是路由器A的E1接口的MAC地址,封装的目标MAC地址则是路由器2的E1接口的MAC地址。

4、路由B从E1口接收到数据帧,同样会把数据链路层的封装去掉,对目标IP地址进行检测,并与路由表进行匹配,此时发现目标地址的网段正好是自己E0口的直连网段,路由器B通过ARP广播,获知HostB的MAC地址,此时数据包在路由器B的E0接口再次封装,源MAC地址是路由器B的E0接口的MAC地址,目标MAC地址是HostB的MAC地址。封装完成后直接从路由器的E0接口发送给HostB。

5、此时HostB才会收到来自HostA发送的数据。

总结:路由表负责记录一个网络到另一个网络的路径,因此路由器是根据路由表工作的。


至此,三张表介绍完毕。

推荐阅读更多精彩内容