网桥


网桥

文章插图
网桥网桥(Bridge)是早期的两连线埠二层网路设备 , 用来连线不同网段 。网桥的两个连线埠分别有一条独立的交换信道 , 不是共享一条背板汇流排 , 可隔离冲突域 。网桥比集线器(Hub)性能更好 , 集线器上各连线埠都是共享同一条背板汇流排的 。后来 , 网桥被具有更多连线埠、同时也可隔离冲突域的交换机(Switch)所取代 。
网桥(Bridge)像一个聪明的中继器 。中继器从一个网路电缆里接收信号 ,  放大它们 , 将其送入下一个电缆 。相比较而言 , 网桥对从关卡上传下来的信息更敏锐一些 。网桥是一种对帧进行转发的技术 , 根据MAC分区块 , 可隔离碰撞 。网桥将网路的多个网段在数据链路层连线起来 。
网桥也叫桥接器 , 是连线两个区域网路的一种存储/转发设备 , 它能将一个大的LAN分割为多个网段 , 或将两个以上的LAN互联为一个逻辑LAN , 使LAN上的所有用户都可访问伺服器 。
【网桥】扩展区域网路最常见的方法是使用网桥 。最简单的网桥有两个连线埠 , 複杂些的网桥可以有更多的连线埠 。网桥的每个连线埠与一个网段相连 。
基本介绍中文名:网桥
外文名:Bridge
分类:通信
套用:连线网段
OSI参考对应:数据链路层
实质:中继器
实际:分支器
原理网桥将两个相似的网路连线起来 , 并对网路数据的流通进行管理 。它工作于数据链路层 , 不但能扩展网路的距离或範围 , 而且可提高网路的性能、可靠性和安全性 。网路1 和网路2 通过网桥连线后 , 网桥接收网路1 传送的数据包 , 检查数据包中的地址 , 如果地址属于网路1  , 它就将其放弃 , 相反 , 如果是网路2 的地址 , 它就继续传送给网路2.这样可利用网桥隔离信息 , 将同一个网路号划分成多个网段(属于同一个网路号) , 隔离出安全网段 , 防止其他网段内的用户非法访问 。由于网路的分段 , 各网段相对独立(属于同一个网路号) , 一个网段的故障不会影响到另一个网段的运行 。
网桥

文章插图
网桥可以是专门硬体设备 , 也可以由计算机加装的网桥软体来实现 , 这时计算机上会安装多个网路适配器(网卡) 。网桥的功能在延长网路跨度上类似于中继器 , 然而它能提供智慧型化连线服务 , 即根据帧的终点地址处于哪一网段来进行转发和滤除 。网桥对站点所处网段的了解是靠“自学习”实现的 , 有透明网桥、转换网桥、封装网桥、源路由选择网桥 。网桥示意如图1所示 。
网桥

文章插图
网桥示意图1 网桥示意当使用网桥连线两段LAN 时 , 网桥对来自网段1 的MAC 帧 , 首先要检查其终点地址 。如果该帧是发往网段1 上某一站的 , 网桥则不将帧转发到网段2  , 而将其滤除;如果该帧是发往网段2 上某一站的 , 网桥则将它转发到网段2 , 这表明 , 如果LAN1和LAN2上各有一对用户在本网段上同时进行通信 , 显然是可以实现的 。因为网桥起到了隔离作用 。可以看出 , 网桥在一定条件下具有增加网路频宽的作用 。网桥的存储和转发功能与中继器相比有优点也有缺点 , 其优点是:使用网桥进行互连克服了物理限制 , 这意味着构成LAN 的数据站总数和网段数很容易扩充 。网桥纳入存储和转发功能可使其适应于连线使用不同MAC 协定的两个LAN , 因而构成一个不同LAN 混连在一起的混合网路环境 。网桥的中继功能仅仅依赖于MAC 帧的地址 , 因而对高层协定完全透明 。网桥将一个较大的LAN 分成段 , 有利于改善可靠性、可用性和安全性 。网桥的主要缺点是:由于网桥在执行转发前先接收帧并进行缓冲 , 与中继器相比会引入更多时延 。由于网桥不提供流控功能 , 因此在流量较大时有可能使其过载 , 从而造成帧的丢失 。网桥的优点多于缺点正是其广泛使用的原因 。网桥工作在数据链路层 , 将两个LAN连起来 , 根据MAC地址来转发帧 , 可以看作一个“低层的路由器”(路由器工作在网路层 , 根据网路地址如IP位址进行转发) 。远程网桥通过一个通常较慢的链路(如电话线)连线两个远程LAN , 对本地网桥而言 , 性能比较重要 , 而对远程网桥而言 , 在长距离上可正常运行是更重要的 。优劣网桥优点1、过滤通信量 。网桥可以使用区域网路的一个网段上各工作站之间的信息量局限在本网段的範围内 , 而不会经过网桥溜到其他网段去 。2、扩大了物理範围 , 也增加了整个区域网路上的工作站的最大数目 。3、可使用不同的物理层 , 可互连不同的区域网路 。4、提高了可靠性 。如果把较大的区域网路分割成若干较小的区域网路 , 并且每个小的区域网路内部的信息量明显地高于网间的信息量 , 那幺整个互连网路的性能就变得更好 。网桥缺点1、由于网桥对接收的帧要先存储和查找站表 , 然后转发 , 这就增加了时延 。2、在MAC子层并没有流量控制功能 。当网路上负荷很重时 , 可能因网桥缓冲区的存储空间不够而发生溢出 , 以致产生帧丢失的现象 。3、具有不同MAC子层的网段桥接在一起时 , 网桥在转发一个帧之前 , 必须修改帧的某些栏位的内容 , 以适合另一个MAC子层的要求 , 增加时延 。4、网桥只适合于用户数不太多(不超过几百个)和信息量不太大的区域网路 , 否则有时会产生较大的广播风暴 。特性数据链路层互联的设备是网桥(bridge) , 在网路互联中它起到数据接收、地址过滤与数据转发的作用 , 用来实现多个网路系统之间的数据交换 。网桥的基本特徵1.网桥在数据链路层上实现区域网路互连;2.网桥能够互连两个採用不同传输介质与不同传输速率的网路3.网桥以接收、存储、地址过滤与转发的方式实现互连的网路之间的通信;4.网桥需要互连的网路在数据链路层以上採用相同的协定5.网桥可以分隔两个网路之间的通信量 , 有利于改善互连网路的性能与安全性 。兼容性有人可能会天真地认为从一个802区域网路到另一个802区域网路的网桥非常简单 , 但实际上并非如此 。在802.x到802.y的九种组合中 , 每一种都有它自己的特殊问题要解决 。在讨论这些特殊问题之前 , 先来看一看这些网桥共同面临的一般性问题 。首先 , 各种区域网路採用了不同的帧格式 。这种不兼容性并不是由技术上的原因造成的 , 而仅仅是由于支持三种标準的公司(Xerox,GM和IBM) , 没有一家愿意改变自己所支持的标準 。其结果是:在不同的区域网路间複製帧要重排格式 , 这需要占用CPU时间 , 重新计算校验和 , 而且还有可能产生因网桥存储错误而造成的无法检测的错误 。第二个问题是互联的区域网路并非必须按相同的数据传输速率运行 。当快速的区域网路向慢速的区域网路传送一长串连续帧时 , 网桥处理帧的速度要比帧进入的速度慢 。网桥必须用缓冲区存储来不及处理的帧 , 同时还得提防耗尽存储器 。即使是10Mb/s的802.4到10Mb/s的802.3的网桥 , 在某种程度上也存在这样的问题 。因为802.3的部分频宽耗费于冲突 。802.3实际上并不是真的10Mb/s , 而802.4(几乎)确实为10Mb/s 。与网桥瓶颈问题相关的一个细微而重要的问题是其上各层的计时器值 。假如802.4区域网路上的网路层想传送一段很长的报文(帧序列) 。在发出最后一帧之后 , 它开启一个计时器 , 等待确认 。如果此报文必须通过网桥转到慢速的802.5网路 , 那幺在最后一帧被转发到低速区域网路之前 , 计时器就有可能时间到 。网路层可能会以为帧丢失而重新传送整个报文 。几次传送失败后 , 网路层就会放弃传输并告诉传输层目的站点已经关机 。第三 , 在所有的问题中 , 可能最为严重的问题是三种802LAN有不同的最大帧长度 。对于802.3 , 最大帧长度取决于配置参数 , 但对标準的10M/bs系统最大有效载荷为1500位元组 。802.4的最大帧长度固定为8191位元组 。802.5没有上限 , 只要站点的传输时间不超过令牌持有时间 。如果令牌时间预设为10ms , 则最大帧长度为5000位元组 。一个显而易见的问题出现了:当必须把一个长帧转发给不能接收长帧的区域网路时 , 将会怎幺样?在本层中不考虑把帧分成小段 。所有的协定都假定帧要幺到达要幺没有到达 , 没有条款规定把更小的单位重组成帧 。这并不是说不能设计这样的协定 , 可以设计并已有这种协定 , 只是802不提供这种功能 。这个问题基本上无法解决 , 必须丢弃因太长而无法转发的帧 。其透明程度也就这样了 。差异性网桥是通过逻辑判断而确定如何传输帧 。这个逻辑是基于乙太网的协定的 , 符合OSI的第二层规範 。所以网桥可以被看做是第二层的设备 。用来决定何时转发帧 。网桥编辑如下:1.检查收到的信号 , 解释0和1的含义 , 并找出帧中的目的MAC地址 。2.如果具有该目的的MAC地址的帧能够通过网桥上不同的接口到达目的地(不是帧到达网桥的那个接口) , 则通过重新生成信号来传输这帧 。(这个过程叫做转发 。)3.如果该帧到达的接口就是目的地址可达到的连线埠 , 则丢弃该帧 。(这个过程叫做过滤 。)分类透明网桥第一种802网桥是透明网桥(transparent bridge)或生成树网桥(spanning tree bridge) 。支持这种设计的人首要关心的是完全透明 。按照他们的观点 , 装有多个LAN的单位在买回IEEE标準网桥之后 , 只需把连线插头插入网桥 , 就万事大吉 。不需要改动硬体和软体 , 无需设定地址开关 , 无需装入路由表或参数 。总之什幺也不乾 , 只须插入电缆就完事 , 现有LAN的运行完全不受网桥的任何影响 。这真是不可思议 , 他们最终成功了 。透明网桥以混杂方式工作 , 它接收与之连线的所有LAN传送的每一帧 。当一帧到达时 , 网桥必须决定将其丢弃还是转发 。如果要转发 , 则必须决定发往哪个LAN 。这需要通过查询网桥中一张大型散列表里的目的地址而作出决定 。该表可列出每个可能的目的地 , 以及它属于哪一条输出线路(LAN) 。在插入网桥之初 , 所有的散列表均为空 。由于网桥不知道任何目的地的位置 , 因而採用扩散算法(floodingalgorithm):把每个到来的、目的地不明的帧输出到连在此网桥的所有LAN中(除了传送该帧的LAN) 。随着时间的推移 , 网桥将了解每个目的地的位置 。一旦知道了目的地位置 , 发往该处的帧就只放到适当的LAN上 , 而不再散发 。透明网桥採用的算法是逆向学习法(backwardlearning) 。网桥按混杂的方式工作 , 故它能看见所连线的任一LAN上传送的帧 。查看源地址即可知道在哪个LAN上可访问哪台机器 , 于是在散列表中添上一项 。当计算机和网桥加电、断电或迁移时 , 网路的拓扑结构会随之改变 。为了处理动态拓扑问题 , 每当增加散列表项时 , 均在该项中注明帧的到达时间 。每当目的地已在表中的帧到达时 , 将以当前时间更新该项 。这样 , 从表中每项的时间即可知道该机器最后帧到来的时间 。网桥中有一个进程定期地扫描散列表 , 清除时间早于当前时间若干分钟的全部表项 。于是 , 如果从LAN上取下一台计算机 , 并在别处重新连到LAN上的话 , 那幺在几分钟内 , 它即可重新开始正常工作而无须人工干预 。这个算法同时也意味着 , 如果机器在几分钟内无动作 , 那幺发给它的帧将不得不散发 , 一直到它自己传送出一帧为止 。到达帧的路由选择过程取决于传送的LAN(源LAN)和目的地所在的LAN(目的LAN) , 如下所示:(1)如果源LAN和目的LAN相同 , 则丢弃该帧 。(2)如果源LAN和目的LAN不同 , 则转发该帧 。(3)如果目的LAN未知 , 则进行扩散 。为了提高可靠性 , 有人在LAN之间设定了并行的两个或多个网桥 , 但是 , 这种配置引起了另外一些问题 , 因为在拓扑结构中产生了迴路 , 可能引发无限循环 。其解决方法就是下面要讲的生成树(spanningtree)算法 。解决上面所说的无限循环问题的方法是让网桥相互通信 , 并用一棵到达每个LAN的生成树覆盖实际的拓扑结构 。使用生成树 , 可以确保任两个LAN之间只有唯一一条路径 。一旦网桥商定好生成树 , LAN间的所有传送都遵从此生成树 。由于从每个源到每个目的地只有唯一的路径 , 故不可能再有循环 。为了建造生成树 , 首先必须选出一个网桥作为生成树的根 。实现的方法是每个网桥广播其序列号(该序列号由厂家设定并保证全球唯一) , 选序列号最小的网桥作为根 。接着 , 按根到每个网桥的最短路径来构造生成树 。如果某个网桥或LAN故障 , 则重新计算 。网桥通过BPDU(BridgeProtocolDataUnit)互相通信 , 在网桥做出配置自己的决定前 , 每个网桥和每个连线埠需要下列配置数据:网桥:网桥ID(唯一的标识)连线埠:连线埠ID(唯一的标识)连线埠相对优先权各连线埠的花费(高频宽=低花费)配置好各个网桥后 , 网桥将根据配置参数自动确定生成树 , 这一过程有三个阶段:(1)选择根网桥具有最小网桥ID的网桥被选作根网桥 。网桥ID应为唯一的 , 但若两个网桥具有相同的最小ID , 则MAC地址小的网桥被选作根 。(2)在其它所有网桥上选择根连线埠除根网桥外的各个网桥需要选一个根连线埠 , 这应该是最适合与根网桥通信的连线埠 。通过计算各个连线埠到根网桥的花费 , 取最小者作为根连线埠 。(3)选择每个LAN的“指定(designated)网桥”和“指定连线埠”如果只有一个网桥连到某LAN , 它必然是该LAN的指定网桥 , 如果多于一个 , 则到根网桥花费最小的被选为该LAN的指定网桥 。指定连线埠连线指定网桥和相应的LAN(如果这样的连线埠多于一个 , 则低优先权的被选) 。一个连线埠必须为下列之一:(1)根连线埠(2)某LAN的指定连线埠(3)阻塞连线埠当一个网桥加电后 , 它假定自己是根网桥 , 传送出一个CBPDU(Configuration Bridge Protocol Data Unit) , 告知它认为的根网桥ID 。一个网桥收到一个根网桥ID小于其所知ID的CBPDU , 它将更新自己的表 , 如果该帧从根连线埠(上传)到达 , 则向所有指定连线埠(下传)分发 。当一个网桥收到一个根网桥ID大于其所知ID的CBPDU , 该信息被丢弃 , 如果该帧从指定连线埠到达 , 则回送一个帧告知真实根网桥的较低ID 。当有意地或由于线路故障引起网路重新配置 , 上述过程将重複 , 产生一个新的生成树 。源路由网桥透明网桥的优点是易于安装 , 只需插进电缆即大功告成 。但是从另一方面来说 , 这种网桥并没有最佳地利用频宽 , 因为它们仅仅用到了拓扑结构的一个子集(生成树) 。这两个(或其他)因素的相对重要性导致了802委员会内部的分裂 。支持CSMA/CD和令牌汇流排的人选择了透明网桥 , 而令牌环的支持者则偏爱一种称为源路由选择(source routing)的网桥(受到IBM的鼓励) 。源路由选择的核心思想是假定每个帧的传送者都知道接收者是否在同一LAN上 。当传送一帧到另外的LAN时 , 源机器将目的地址的高位设定成1作为标记 。另外 , 它还在帧头加进此帧应走的实际路径 。源路由选择网桥只关心那些目的地址高位为1的帧 , 当见到这样的帧时 , 它扫描帧头中的路由 , 寻找发来此帧的那个LAN的编号 。如果发来此帧的那个LAN编号后跟的是本网桥的编号 , 则将此帧转发到路由表中自己后面的那个LAN 。如果该LAN编号后跟的不是本网桥 , 则不转发此帧 。这一算法有3种可能的具体实现:软体、硬体、混合 。这三种具体实现的价格和性能各不相同 。第一种没有接口硬体开销 , 但需要速度很快的CPU处理所有到来的帧 。最后一种实现需要特殊的VLSI晶片 , 该晶片分担了网桥的许多工作 , 因此 , 网桥可以採用速度较慢的CPU , 或者可以连线更多的LAN 。源路由选择的前提是网际网路中的每台机器都知道所有其他机器的最佳路径 。如何得到这些路由是源路由选择算法的重要部分 。获取路由算法的基本思想是:如果不知道目的地地址的位置 , 源机器就发布一广播帧 , 询问它在哪里 。每个网桥都转发该查找帧(discovery frame) , 这样该帧就可到达网际网路中的每一个LAN 。当答覆回来时 , 途经的网桥将它们自己的标识记录在答覆帧中 , 于是 , 广播帧的传送者就可以得到确切的路由 , 并可从中选取最佳路由 。虽然此算法可以找到最佳路由(它找到了所有的路由) , 但同时也面临着帧爆炸的问题 。透明网桥也会发生有点类似的状况 , 但是没有这幺严重 。其扩散是按生成树进行 , 所以传送的总帧数是网路大小的线性函式 , 而不象源路由选择是指数函式 。一旦主机找到至某目的地的一条路由 , 它就将其存入到高速缓冲器之中 , 无需再作查找 。虽然这种方法大大遏制了帧爆炸 , 但它给所有的主机增加了事务性负担 , 而且整个算法肯定是不透明的 。透明网桥一般用于连线乙太网段 , 而源路由选择网桥则一般用于连线令牌环网段 。区别网桥与路由器的比较网桥并不了解其转发帧中高层协定的信息 , 这使它可以同时以同种方式处理IP、IPX等协定 , 它还提供了将无路由协定的网路(如NetBEUI)分段的功能 。由于路由器处理网路层的数据 , 因此它们更容易互连不同的数据链路层 , 如令牌环网段和乙太网段 。网桥通常比路由器难控制 。像IP等协定有複杂的路由协定 , 使网管易于管理路由;IP等协定还提供了较多的网路如何分段的信息(即使其地址也提供了此类信息) 。而网桥则只用MAC地址和物理拓扑进行工作 。因此网桥一般适于小型较简单的网路 。操作方法网桥有时也被用来连线两个或多个相距较远的LAN 。比如 , 某个公司分布在多个城市中 , 该公司在每个城市中均有一个本地的LAN , 最理想的情况就是所有的LAN均连线起来 , 整个系统就像一个大型的LAN一样 。该目标可通过下述方法实现:每个LAN中均设定一个网桥 , 并且用点到点的连线(比如租用电话公司的电话线)将它们两个两个地连线起来 。点到点连线可採用各种不同的协定 。办法之一就是选用某种标準的点到点数据链路协定 , 将完整的MAC帧加到有效载荷中 。如果所有的LAN均相同 , 这种办法的效果最好 , 它的唯一问题就是必须将帧送到正确的LAN中 。另一种办法是在源网桥中去掉MAC的头部和尾部 , 并把剩下的部分加到点到点协定的有效载荷中 , 然后在目的网桥中产生新的头部和尾部 。它的缺点是到达目的主机的校验和并非是源主机所计算的校验和 , 因此网桥存储器中某位损坏所产生的错误可能不会被检测到 。相关案例许多单位都有多个区域网路 , 并且希望能够将它们连线起来 。之所以一个单位有多个区域网路 , 有以下原因:首先 , 许多大学的系或公司的部门都有各自的区域网路 , 主要用于连线他们自己的个人计算机、工作站以及伺服器 。由于各系(或部门)的工作性质不同 , 因此选用了不同的区域网路 , 这些系(或部门)之间早晚需相互交往 , 因而需要网桥 。其次 , 一个单位在地理位置上较分散 , 并且相距较远 , 与其安装一个遍布所有地点的同轴电缆网 , 不如在各个地点建立一个区域网路 , 并用网桥和红外链路连线起来 , 这样费用可能会低一些 。第三 , 可能有必要将一个逻辑上单一的LAN分成多个区域网路 , 以调节载荷 。例如採用由网桥连线的多个区域网路 , 每个区域网路有一组工作站 , 并且有自己的档案伺服器 , 因此大部分通信限于单个区域网路内 , 减轻了主干网的负担 。第四 , 在有些情况下 , 从载荷上看单个区域网路是毫无问题的 , 但是相距最远的机器之间的物理距离太远(比如超过802.3所规定的2.5km) 。即使电缆铺设不成问题 , 但由于来回时延过长 , 网路仍将不能正常工作 。唯一的办法是将区域网路分段 , 在各段之间放置网桥 。通过使用网桥 , 可以增加工作的总物理距离 。第五 , 可靠性问题 。在一个单独的区域网路中 , 一个有缺陷的节点不断地输出无用的信息流会严重地破坏区域网路的运行 。网桥可以设定在区域网路中的关键部位 , 就像建筑物内的防火门一样 , 防止因单个节点失常而破坏整个系统 。第六 , 网桥有助于安全保密 。大多数LAN接口都有一种混杂工作方式(promiscuousmode) , 在这种方式下 , 计算机接收所有的帧 , 包括那些并不是编址传送给它的帧 。如果网中多处设定网桥并谨慎地拦截无须转发的重要信息 , 那幺就可以把网路分隔以防止信息被窃 。