二层交换基础,虽容易,但极其重要!

浪尽此生 提交于 2020-12-17 20:52:21

一个典型的数据网络是由路由器、交换机、防火墙、负载均衡器等网络设备构成的。其中交换机一般来说是距离终端设备(PC、服务器等)最近的网络设备,例如上图中黄色背景所标注的设备。

网络接入层(可以理解为在一个网络中,用于终端设备接入的逻辑层次)的交换机一般为二层交换机,所谓的二层交换机指的是针对数据的二层头部(以太网帧头)中的MAC地址进行寻址并转发数据的交换设备。

二层交换机不具备路由功能,它工作在OSI七层模型的第二层,因此被称为二层交换机。

二层交换是以太网技术的一个非常基础的概念。

那么什么是以太网二层交换(Layer 2 Switching)呢?

说明:除了以太网二层交换之外,网络中还有三层交换等概念。对于三层交换,瑞哥将在后续的内容中介绍。

为了将内网中的多台PC互联起来,使得PC之间能够以最简单的方式进行通信,我们往往会用一台二层交换机来连接PC,如下图:

在上图中,PC1、PC2、PC3与PC4连接在同一台以太网二层交换机(后续简称为二层交换机)上,我们可以笼统地说,连接在这台交换机上的PC都属于同一个LAN。这些PC都拥有同一个网段的IP地址,同时也处于同一个广播域(Broadcast Domain)中,所谓的一个广播域,指的是一个广播数据所能泛洪的范围,举个简单的例子:PC1发送一个广播数据帧,交换机收到这个广播数据帧后,会为除了接收该数据帧的接口之外的其他所有接口都拷贝一份然后发送出去,接在同一交换机上的所有的PC都会收到这个广播数据帧并且都要去分析它(即使它们可能并不需要这个数据并且最终将收到的数据帧丢弃,但check数据的过程仍然会消耗设备资源),因为它们属于同一个广播域。

现在来分析一下,PC1发送一个数据给PC4时,都发生了什么,以此来理解二层交换的工作机制。

  1. PC1构造IP数据包,IP报文头部里的源IP地址为自己的网卡IP地址,目的IP地址为PC4的IP地址。上述IP数据包为了能够在以太网环境中传输,还需要封装一个以太网的头部(帧头)。在以太网头部中源(Source,Src)MAC地址为8c00-BB01-0001,目的(Destination,Dst)MAC地址为8c00-BB01-0004,如下图所示。

注意:这里我们暂且忽略ARP地址解析的过程,并且假设PC1已经知晓了PC4的网卡MAC地址。

下图只描述了数据帧的帧头(源、目的MAC地址字段),对于IP包头以及数据载荷部分不在图中描述。

  1. 这个数据帧被发送到了PC1所连接的交换机上。我们知道路由器都维护了一张路由表,用于指导数据转发,而交换机在做二层交换的时候依据的是 MAC地址表(MAC Address Table)。MAC地址表中包含的表项指示出MAC地址与交换机某个接口的对应关系。在初始情况下,交换机的MAC地址表是空的。

当交换机收到PC1发送出来的这个数据帧时,它首先在自己的MAC地址表中查询该帧的目的MAC地址,由于此时在MAC地址表中,并没有8c00-BB01-0004这个地址的条目,因此交换机将对这个数据帧进行泛洪Flooding,所谓泛洪就是将这个数据帧从除了收到它的接口之外的其他所有接口都发一份拷贝。这样做的目的事实上是:“哥不知道你在哪,哥索性就全都发一份,碰碰运气”。如下图所示:

  1. 接下来,交换机将该数据帧的源MAC地址(也就是PC1的MAC地址)学习到MAC地址表中,与接口GE0/0/1进行关联。这样,交换机就学习到了一个MAC地址条目。通过该条目,交换机知道8c00-BB01-0001这个MAC地址,连接在GE0/0/1接口,如下图所示:
  1. 由于交换机的泛洪行为,导致连接在该台交换机上的其他PC都会收到这个数据帧,除了PC4之外的其他PC在收到这个数据帧之后,将bit流还原成帧并查看帧头部的目的MAC,发现该MAC与本机的MAC并不一致,因此判断这个数据帧并非发送给自己,于是丢弃之。而PC4在收到这个数据帧并查看目的MAC发现,这个数据帧的目的MAC与自己的MAC是相同的,因此判断这个数据帧是发送给自己的,于是进行CRC校验(校验数据帧的完整性),校验成功后将以太网头部解封装,将内层的IP数据将给IP协议栈处理。然后,进一步查看IP头部,发现IP头部中的目的IP地址就是本机的IP,于是将IP头部解封装,将内层的载荷交给上层协议处理。如此一来PC1发送给PC4的数据就完成了传输。

  2. 现在,PC4要回送数据给PC1,数据的构造如下图所示:

  1. 交换机在收到这个数据帧后,首先在自己的MAC地址表中查询目的MAC地址8c00-BB01-0001,发现有一个匹配的表项,而且该表项指示这个MAC地址连接在GE0/0/1接口上,于是交换机将这个数据帧从GE0/0/1接口发送出去。同时交换机还会将数据帧的源MAC地址8c00-BB01-0004学习到自己的MAC地址表中,并与接口GE0/0/4进行关联,如下图所示:
  1. 这个数据帧最终被PC1接收到,这就完成了一个在以太网环境中的数据交互过程。

小结一下:

所谓的以太网环境中的二层交换,就是指的当一台交换机收到一个数据帧时,分析数据帧头部的目的MAC地址,在MAC地址表中查询这个MAC地址,如果有匹配项,则将数据帧从该匹配项所关联的接口转发出去;如果没有匹配项,则将数据帧进行泛洪。

所以:以太网二层交换是基于数据帧的帧头中的目的MAC地址进行查询的,并且是在MAC地址表中进行查询。所以掌握MAC地址表的查询及阅读是非常有必要的,在华为交换机上,可使用display mac-address命令可看到MAC地址表。MAC地址表是交换机能够正常工作的非常基础的数据表。

本文分享自微信公众号 - 网络技术联盟站(wljslmz)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!