一、网桥和交换机的联系
  • 联系:IEEE 802.1d标准规定了网桥。交换机本质上是高性能的网桥
  • 网桥或交换机用 于连接多个物理的链路层网络(例如一对物理的以太网段)或成组的站

最基本的设置涉及连接两个交换机来形成一个扩展的局域网,如图所示:

  • 图中的交换机A和B互连形成一个扩展的局域网。在这个特定例子中,客户端系统都 连接到A,服务器都连接到B,端日编号供参考
  • 注意,每个网络单元(包括每个交换机) 有自已的MAC地址。每个网桥经过一段时间对域外MAC地址的“学习”后,最终每个交 换机会知道每个站可由哪个端口到达。每个交换机基于每个端日(也可能是每个vLAN)的 列表被存储在一张表(称为过滤数据库)中

TCP/IP卷一:16---链路层之(网桥和交换机)_mac地址

二、交换机/网桥的自学习
  • 当第一次打开一个交换机(网桥)时,它的数据库是空的,因此它不知道除自已之外的任何站的位置
  • 当它每次接收到一个目的地不是自已的帧时,它为除该帧到达的端口之外的所有端口做一个备份,并向所有端口发送这个帧的备份。如果交换机(网桥)未学习到站的 位置,每个帧将会被交付到每个网段,这样会导致不必要的开销。学习能力可以显著降低开 销,它是交换机和网桥的一个基本功能

下图是针对于上图的自学习结果:

TCP/IP卷一:16---链路层之(网桥和交换机)_数据库_02

三、Linux设置网桥
  • 目前,多数操作系统支持网络接口之间的网桥功能,这意味着具有多个接日的计算机 可用作网桥

演示案例:

  • 我们使用下面的拓扑结构。这个简单的网络使用一台基于Linux、带两个端口的PC作为网桥。只有 一个站连接到端口2,网络其他部分都连接到端口1

TCP/IP卷一:16---链路层之(网桥和交换机)_其他_03

第一步:

TCP/IP卷一:16---链路层之(网桥和交换机)_mac地址_04

  • brctl addif命令:可创建一个网桥设备br0,并为网桥增加接口eth0和ethl
  • brctl delif命令:删除接口

第二步:

TCP/IP卷一:16---链路层之(网桥和交换机)_mac地址_05

  • ctl showmacs命令:可用于检查过滤数据库(称为转发数据库,用Linux的术语称为fdbs)

第三步:

  • ctl showmacs命令的输出显示关于网桥的其他细节。由于站可能出现移动、网卡更换、 MAC地 址改变或其他情况,所以就算网桥曾发现一个MAC地址可通过某个端日访问,这个信息也不能假设永远是正确的
  • 为了解决这个问题,在每次学习一个地址后,网桥启动一个计时器 (通常默认为5分钟)。在Linux中,每个学习条目使用一个与网桥相关的固定时间。如果在 指定的“有效期”内,没有再次看到该条目中的地址,则将这个条目删除

TCP/IP卷一:16---链路层之(网桥和交换机)_其他_06

  • 为了方便演示,我们选择了一个比平时数值低的值作为有效期。当一个条目因有效期满而被删除时,后续的帧将被发送到接收端口之外的所有端口(称为洪泛),并更新过滤数据库 中的这个条目。实际上,过滤数据库的使用和学习有利于优化性能,如果表是空的,网络将 花费更多开销,但仍能履行职责。下一步,我们将注意力转移到两个以上的网桥通过冗余链路互联的情况。在这种情况下,帧的洪泛可能导致帧永远循环的洪泛灾难。显然,我们需要 一种方法来解决这个问题(下面介绍生成树协议)