网络基础: 交换机 (拾遗补缺)
2017-07-16 计算机网络
交换机的作用
将很多主机、网关连接在一起,形成一个广播域,使得广播报文仅在这个广播域内传播。
交换机和网卡
可以简单地认为,交换机的每个网线接口后面都是一块网卡,网线接口和后面的电路部分加在一起称为一个 “端口”,也就是说交换机的一个端口就相当于计算机上的一块网卡。
交换机的工作方式和网卡的不同之处在于:
网卡本身具有 Mac 地址,收到到包之后,判断接收方 Mac 地址是不是自己,如果不是发给自己的包,直接丢弃。
交换机的端口不判断接收方 Mac 地址,而是将包存入到缓冲区,然后查询包的接收方 Mac 地址是否已经在 Mac 地址表中有记录了。
Mac 地址表主要包含两个信息:
- 设备 (主机) 的 Mac 地址
- 设备 (主机) 连接在交换机的哪个端口上
如图所示,Mac 地址和端口一一对应,通过 Mac 地址表可以快速判断出收到的包应该转发到哪个端口。
Mac 表的维护
写入
收到包时,将发送方 Mac 地址以及其输入端口的号码写入 Mac 地址表中。
由于收到包的端口连接着发送这个包的设备,所以只要将这个包的发送方 Mac 地址写入地址表即可。
后续再次收到发往这个地址的包时,交换机就可以将它转发到正确的端口了。
交换机每次收到包时都会执行这个操作,因此只要某个设备发送过网络包,它的 Mac 地址就会被记录到地址表中。
删除
地址表中的记录不能永久有效,应该一段时间不使用后就自动删除。
删除地址表中某条记录,可以防止设备移动时产生问题。
例如开会时把笔记本电脑从办公桌拿到会议室,这时设备就发生了移动,从交换机的角度来看,就是本来 (无线 Wifi) 连接在某个端口上的笔记本电脑消失了。这时如果交换机收到了发往这台笔记本电脑的包,依然会将包转发到原来的端口,通信就会出错。
为了避免上述通信出错问题,必须定时删除过期的记录。
更新
但是,交换机如何知道这台笔记本电脑已经从原来的端口 (位置) 移走了呢?其实很简单,只要笔记本电脑连接到会议室 (新的) 交换机,交换机就会根据笔记本电脑发出的包来更新它的地址表,这样,后续的通信就不会出错了。
重启
当地址表的内容出现异常时,只要重启一下交换机就可以重置地址表,也不需要手动进行维护 (果然,90% 的问题都可以通过重启解决)。
特殊操作
目标端口和源端口相同
当交换机发现一个包的目标端口和源端口是同一个端口,就会直接丢弃这个包。
找不到指定的 Mac 地址
如果交换机在 Mac 地址表中找不到指定的 Mac 地址,这可能是因为具有该地址的设备还没有向交换机发送过包,或者这个设备 (主机) 已经离线,导致其地址被删除了。
这种情况下,交换机无法判断应该把包转发到哪个端口,只能将包转发到除了源端口之外的所有端口上 (类似广播),这样无论该设备连接在哪个端口上都能收到这个包 (当然,除了该设备外,其他设备收到包之后会直接丢弃)。
广播
如果接收方 Mac 地址是一个广播地址,那么交换机会将包发送到除源端口之外的其他所有端口 (这里的端口指的是交换机上的 “网线接口”)。
Mac 广播地址: FF:FF:FF:FF:FF:FF
IP 广播地址: 255.255.255.255
如图所示,设备 1 发送了一个广播消息,然后被交换机转发到了设备 2 和设备 3。
三层交换机
L3 (三层) 交换机是一种在 L2 (二层) 交换机的基础上增加了路由选择功能的网络硬件,能够基于硬件实现网络功能和转发分组。
L2 交换机可以通过使用 VLAN 分割广播域,但主机之间的包交换必须位于同一 VLAN 范围内,对位于不同 VLAN 上的主机进行通信时,则必须使用路由功能,因此需要在网络上添加额外的路由器。
L3 交换机无需其他路由器,自身就可以直接完成 VLAN 配置、不同 VLAN 之间的通信。
现代化的基础设施架构方案中,越来越多组织的内部网络核心交换机采用 L3 交换机。
交换机 VS 集线器
全双工模式
全双工模式是交换机特有的工作模式,它可以同时进行发送和接收操作,集线器不支持。
使用集线器时,如果多台计算机同时发送信号,信号就会在集线器内部混杂在一起,进而无法使用,这种现象称为碰撞,是以太网的一个重要特征。
转发
交换机只将包转发到具有特定 Mac 地址的主机所连接 (对应) 的端口,其他无关端口都是空闲的,这些空闲的端口可以传输其他的包,因此交换机可以同时转发多个包。
集线器会将输入的信号广播到所有的端口,如果同时输入多个信号就会发生碰撞,无法同时传输多路信号,因此从设备整体的转发能力来看,交换机要高于集线器。
FDB
转发表(Forwarding Information Base,FIB)存储了路由器或交换机用于转发数据包的路由信息,用于指导网络设备对数据包进行转发和路由选择,表中的每个条目包含目标网络地址、下一跳地址(或出接口)以及其他相关信息。
网路邻接表
表示网络设备上的邻居关系列表,存储了网络设备直接相连的其他设备的信息,如 Mac 地址、IP 地址等,主要用于维护设备之间的直接通信关系,以便进行数据包的交换和转发。
# 转发信息库示例
Destination Next Hop Interface
0.0.0.0/0 192.168.1.1 Ethernet0
192.168.1.0/24 0.0.0.0 Ethernet1
10.0.0.0/8 192.168.1.2 Ethernet2
所有目标 IP 为 0.0.0.0/0 的数据包,都会被转发到下一跳路由地址 192.168.1.1 (也可以称为网关)。
# 邻接表示例
Neighbor Device Interface Mac Address IP Address
Router1 Ethernet0 00:1A:2B:3C:4D:5E 192.168.1.1
Switch1 Ethernet1 00:11:22:33:44:55 10.0.0.1
Host1 Ethernet2 00:AA:BB:CC:DD:EE 192.168.1.10
下一跳路由地址 192.168.1.1 的路由设备,对应的 Mac 地址为 00:1A:2B:3C:4D:5E。
L3 交换机将转发表和邻接表整合成一份表,FDB(Forwarding Database,转发数据库),注册于内存中并通过硬件处理完成高速检索。
下面是 L3 交换机的内部处理示例图。