# 网桥

:Bridge ,又称为桥接器。

  • OSI 层级:工作在数据链路层的 MAC 子层。

  • 用途:将多个局域网连通,合并成一个局域网。

  • 原理:

    • 网桥具有至少两个端口,每个端口可以连接到一个网络或主机。
    • 网桥从一个端口收到数据帧时,会暂存在内存中,进行解读。然后生成一个新的数据帧,转发到另一个端口。
      • 由于网桥能解读、生成数据帧,因此能将两个数据链路层协议不同(比如以太网与 WLAN )的网络,在 MAC 子层连通。
    • 转发到哪个端口?取决于数据帧的目标 Mac 地址是什么。
      • 如果目标 Mac 地址,在表中记录了对应端口,则转发到该端口。此时不会转发到所有端口,因此每个端口是一个独立的冲突域。
      • 如果目标 Mac 地址,在表中记录了对于端口,但与源端口相同。则丢弃该数据帧,不转发。该操作称为过滤(filter)。
      • 如果目标 Mac 地址,在表中没有记录,则向除了源端口以外的所有端口,转发数据帧。该操作称为泛洪(flood)。
        • 然后,当前局域网的所有主机都会收到数据帧,只有目标主机会做出回复。当回复的数据帧经过网桥时,网桥就知道目标主机接入了哪个端口。
        • 因此,网桥刚启动时,Mac 地址表为空,会以 flood 方式转发数据帧,相当于集线器。
      • 如果目标 Mac 地址,属于广播地址,则会被转发到所有端口。
        • 因此网桥不能隔离广播风暴。
        • 广播风暴是指,某个主机发送大量广播帧,占用大量带宽,导致网络拥塞,甚至瘫痪。
    • 网桥会自动地建立和维护一个 Mac 地址表,表中记录了各个目标 Mac 地址与端口的对应关系。
      • 假设 Mac 地址为 Axxx 的一个主机,接入网桥的 1 号端口,发送一个数据帧。
        • 网桥会解读该数据帧,发现其源 Mac 地址为 Axxx ,于是增加一条记录:源 Mac 地址为 Axxx 的主机,接入了 1 号端口。
        • 该操作称为自动学习。
      • 当网桥收到一个目标 Mac 地址为 Axxx 的数据帧时,就会根据 Mac 地址表,将数据帧转发到 1 号端口。
      • Mac 地址表中,每条记录包含一个时间戳,表示最后一次使用该记录的时间。如果一条记录长时间未被使用,则会被自动删除。
  • 透明网桥是最常见的一种网桥。

    • 透明是指网桥对局域网没有影响,不可见,相当于透明。
  • 几个网络互联时,可能产生回路,即出现环型拓扑结构。为了避免回路中网桥重复转发同一数据帧,通常采用生成树协议(Spanning Tree Protocol ,STP)。

    • 生成树算法会选择网络中的一个网桥作为根,其它网桥各自选出自己到根网桥最近的一个端口作为转发端口,并暂时阻塞其它端口,从而构成一个树型拓扑结构的网络。
    • 这样既能消除回路,又能保留备用路径,即冗余。
  • 对比集线器与网桥:

    • 中继器、集线器都属于传输线路的配件,只影响信号的传输过程。它们通常是简单的小型硬件电路,没有软件。而网桥运行了软件。
    • 中继器、集线器工作在物理层,负责传输电信号,即使这些电信号不是有意义的数据。而网桥工作在数据链路层,负责传输数据帧。
    • 如果多个主机,通过集线器连接在一起,则属于同一个冲突域。
    • 如果多个主机,通过网桥连接在一起,则属于同一个局域网,但不是同一个冲突域。
    • 共享式局域网
      • :所有主机连接到一个集线器,只能半双工通信。
      • 集线器的多个端口处于同一个冲突域,采用 CSMA/CD 技术来避免冲突。
      • 集线器的多个端口,共享集线器的带宽。如果接入了较多主机,则每个主机分到的带宽较少。此时,建议用网桥或交换机,分割成多个冲突域。
    • 交换式局域网
      • :所有主机连接到一个网桥或交换机,支持全双工通信。
      • 每个端口属于独立的冲突域,独享带宽。