标签归档:令牌环

网络架构

 更多知识请访问:Study Area 之网络基础
在这裡我们将要讨论一些网路物理和逻辑形态﹐以及它们各自的特徵﹐同时也会开始介绍 IEEE的802.x 标准。

网线的困扰

要架设网路﹐当然先要将个机器连接起来。假如您喜欢的话﹐我们可以将每两个网路节点都直接用网线连接起来﹐如果材料够﹐地方又允许的话﹐这完全是有可能的。那麽按此接法﹐我们需要的网线数量 = 节点数目 x ( 节点数目 – 1 ) / 2 ﹐也可以从下面的列表中直接看出来﹕

节点数目 所需网线数量
5 10
8 28
25 300

天哪﹗如果有一百台电脑起不是整个办公室都佈满网线了﹖﹗而且网线也需要钱买的啊﹐所以实际上﹐是没有人会採用这样的连线方法的。 ^_^ 较常见的佈线设计大都以下面所介绍的 topology 作参考:

物理形态

星型形态(Star Topology)

一个星状的网路形态里面﹐在中央是一个集线器(HUB/SWITCH)﹐或 MAU (Multistation Acces Unit)﹐所有的工作站﹑伺服器和印表机都接到 HUB 上面﹐看上去就像一颗星星向四週放射星光一样﹐因而得名。

Star Topology

HUB 通常有两种﹕惰性(passive) HUB和活性(active) HUB。前者仅仅是将各个网线接口(port)连接起来﹐也就是将上面的那个接线方法从一个办公室缩小为一个盒子罢了﹐再无其它功能了﹔而后者还会起到增益器(Repeater)的作用,以延长网线连接的距离。

星状的形态里面﹐hub 是不可缺少的部件﹐如果一个 hub 的 port 都接满了﹐我们还可以引一条线出去接另外一个 hub﹐这样就有另外一个星星了﹐但最多可以串接 4 个 hub (也就是共5个)。通常,在 hub 上面您会看到一个 uplink 的 port ,若将两个 hub 连接起来的话,您可用两种方法:1) 用普通线将 uplink 接到另一 hub 的普通 port ﹔2) 用跳接线将两个普通 port 连起来。但请留意与 uplink 相连的那个 port ,若是 uplink 有使用的话,那这个 port 就不能使用了﹔反之亦然。

 

星状形态的优点是﹕

  • 容易扩充
  • 容易出错
  • 容易布线

使用星状形态,如果有哪台机器不能连上网路﹐我们只需要查看这台机器和 hub 之间的连线就是了。若是您的机器都四散东西﹐甚至楼上楼下的﹐使用星装形态的话﹐你就不必担心如何将它们整体的连接起来﹐只需关心各台机器怎样集中到 hub 而已。

总线形态(Bus Topology)

        在 bus 形态里面也有两个类型﹕一是Thick Ethernet﹐另一是Thin Ethernet。前者使用一条厚厚的中央网线(10base5)﹐两头带有终端电阻﹐然后各接点再通过一条较细的网线连到这条厚线上面﹔而后者则只使用 10base2 网线将所有的节点连接起来﹐网线和节点之间使用 T 型接口连接﹐而在两端的接点则各连接一个终端电阻。

thick
Thick Ethernet

thin
Thin Ethernet

        Bus 形态的最大问题是出现问题的时候的问题(﹖﹖﹖废话啦~~)﹐网路这时候需要整个停下来检查﹐如果是因为终端电阻没接好那还好办﹐换一个就可以。但要是其中一个节点有问题的话﹐你就得慢慢找出来了。在 star 形态裡面﹐要是该节点有问题﹐受影响的仅是其接点罢了。但在 bus上面则不同﹐如果一个节点是关闭的话﹐框包会略过它而直接通过 T 型接头传给下一个开著的节点。然而﹐要是该有问题的接点开著的话﹐也会接收和发送框包﹐但却会令到网路越来越慢甚至停顿下来。

        顺便一提﹐我们在给 10Base2 网路除错的时候﹐一个较好的方法是二分法﹕先从中间断起。就是将其中一个终端电阻接到中间的节点去﹐然后检查各自分开的部份﹐找有问题那边﹔再继续断开中间﹐如此一直到找到问题的节点为止。

        Bus 形态唯一好处是便宜﹕无需 hub 而且省 cable﹑省钱。如果在家裡玩玩或接点不多﹐Bus 形态也是值得考虑的。不过,现在这个优势已不複存在了,若你不是为了怀古,真要用 bus 形态的机会不高。

环状形态(Ring Topology)

        一般来说﹐这样的形态我们是比较少见到的﹐因为其佈线是一个非常头痛的问题﹐您大概从下图可见一斑﹕

ring
Ring Topology

       Ring 形态的佈线是整条线是首尾连接而成一个环状,无需使用终端电阻。若它使用双网线连接﹐其佈线数量也是双倍增加了。但在一般的办公室环境裡面甚少会见到物理 Ring 形态的网路﹐常见于用来连接数建筑物之间的高速骨干干网﹐如 FDDI 等。

逻辑形态

        虽然我也知道我很萝嗦﹐但我还是要提醒大家﹐网路形态和逻辑形态是两码子事情﹐在学习逻辑形态的时候我建议您先将物理形态忘记掉。

Bus / Ethernet

        我想 Ethernet 恐怕是最佳的逻辑bus 形态例子了﹐它也是现在最普遍的 LAN 类型。

        这个逻辑bus 形态是如何工作的呢﹖很简单﹐就是每次只能有一个节点在网路上传递数据给其它节点﹐其形式是通过对整个网路进行广播(broadcast)。然后其它接点收听到广播之后﹐就看看数据是否传个自己的﹐如果是﹐则接收下来﹔如果不是﹐则略过。每一节点都有一个自己用的 48bit 的位址(也可以称为Node ID﹐也就是在前面说的网卡硬件位址了)﹐每一个在网路中传输的数据都是以这个地址为传送和接收依据的。

        当任何一个节点进行广播的时候﹐所有的其它节点都收听得到,但真正接收的只有一个节点。其情形就像我们上课一样﹐老师说﹕“第几排第几号同学出来拿作业﹗”虽然全班同学都听得到﹐但却只有一位同学可以拿到。Bus 形态也和这种形式很类似﹐当然具有更严谨的一套法则啦。在bus上面的数据都是以框包(frame)形式传递﹐框包送出来之后﹐会以电子信号同时向 bus 两端广播﹐当目的地接收到给它的框包﹐也不是据为己有的﹐而是复制一份给自己﹐而原来的框包则还是会继续被送给下一个节点﹐直到封包抵达终端电阻才会被销毁(点击查阅封包和框包概念)。

        任何类型的数据要在这一网路上面传递的话﹐都必须严格的遵循既定的框包格式﹕Data Link Layer Frame 格式﹐是给网路用来安排数据的。Ethernet 的 Data Link Layer Frame 看起来如图﹕

序言
(Preamble)
目的地硬件位址
(Destination)
來源硬件位址
(Source)
信息类型
(Message Type)
数据
(Data)
封包检测资料
(Frame check sequence)
8 bytes 6 bytes 6 bytes 2 bytes 46-1500 bytes 4 bytes

        每一个 frame 都不可以超过1518bytes﹐这样就可以确保任何一个工作站都不会占用网路太久。工作站对网路广播之前﹐都会先侦听一下有没其它人在使用网路﹐如果听起来很安静﹐则它会发送广播。但要是网路上仍然嘈嘈的呢﹖(这个情形就是 bus 形态最担心的)﹐这时候工作站就需等待了。

        假如节点 A 和节点 B 相隔得太远的话﹐当他们倾听的时候可能都还没听得到对方有话要说﹐就都同时把封包出去﹐这就是所谓的 碰撞(collision) 了。如果当一个碰撞发生了﹐就会在网线产生一个频率连漪(frequecy ripple)。如果第一个节点监测到有这样的 ripple ﹐它就会发出一个高频信号去清除所有其它信号。这个信号告诉所有节点碰撞已经发生﹐这样全部节点都不会再发送封包了。这时候﹐每一个节点都会随机的等待一段时间再重新进行广播﹐总共可以进行 16 次尝试大家才会最终放弃。不过其情形也不会好到哪里﹐因为在大家等待之后﹐彼此都有封包要发送﹐谁都想先发送自己的封包﹐如果节点越多﹐距离越长﹐发生碰撞的机会也就越高。

        情形就象上课时您要发言﹐得先看看有没有其它同学在发言﹐如果已经有人在说话了﹐那你就先等他/她讲完再举手。要是两个人都同时举手﹐老师就会宣佈重新再举手﹐这时候大家可以在一秒钟之内再举手﹔要是还是一样﹐那麽可以再于两秒之内任何时段举手﹔再来就 4 秒﹑8 秒﹑16 秒….的延续下去﹐要试过 16 次都还一样﹐没办法了﹐大家都不要说好了。

        在网路上﹐我们称这样的方法为 CSMA/CD (Carrier-Sensing Multiple Access with Collision Detection,带冲突检测的载波侦听多路访问)。要注意的是﹐所有这些处理过程都必须在 Ethernet 网卡上面进行﹐也就是说﹐如果您要选用 Ethernet 形态﹐那么你就必须全部使用 Ethernet 网卡。

        Ethernet 可以在 bus, star 等物理形态上面使用。10baseT 就是使用 star 的物理形态﹐但逻辑上却是 bus 形态来的﹐同样也是 Ethernet﹐使用的是 IEEE802.3 标淮。

Token Ring(令牌环)

        Token Ring 网路在物理上也和 100BaseT Ethernet 一样使用 star 形态。只不过代替 hub 的是 MAU 而已﹐一个 MAU 可以连接八台电脑﹐然后还可以连接到另一个 MUA。一块 Token Ring 网卡上面﹐其中有端会带有一个 D-shell 类型的接头﹐而另一端则有一个 odd-looking IBM 接头。在 Token Ring 上面无需使用终端电阻﹐网线的一头接到网卡﹐另一头接在 MUA 就可以了。我们还记得在 Ethernet 系统上面使用广播形式传送封包﹐然而在 Token Ring 里面﹐每一个节点都只会得到其前面的一个节点送来的信息。Token Ring 的灵魂所在是一个叫做 Token Packet 的封包。这样的设计可以避免碰撞发生﹐Token Ring 可以确保每次只能有一个工作站可以发送资料﹐它们使用 token packet (或曰 token stick)来达到这一目的。只有获得这个 Token packet 的接点才可以发送资料。

        举个例子﹐同学们在班上为了避免同时有两个人发言﹐于是就使用一个令牌﹐由一个同学传给下一个同学﹐然后最后的同学传回给最前面的同学。拿到令牌的同学﹐看看如果令牌是空的﹐就把说话写在令牌上面(写满为止﹐如果不够用﹐等下次再写)﹐然后注明来源地址和目的地址﹐再将令牌传给下一位同学。接到令牌的同学﹐会检查目的地址﹐如果不是给自己的﹐就传给下一位﹐如果地址是给自己的﹐则抄一份保存﹐原来的令牌照样传递下去。因为令牌是绕著圆圈的传递﹐所以始终会到自己手上的。当那位原先发送信息的同学收回令牌﹐看到来源地址是自己的﹐就把令牌擦干净﹐然后把令牌交给下一位同学﹐就算他还有话要说﹐也要这样做。如果下一位同学没有东西要写﹐就简单的把令牌交给下再一位则可﹔如果有东西要写﹐就重复刚才的规则。

        Token Ring 上使用的是类似的方法﹐只是略有不同而已﹕当一个节点获得 Token Packet 并完成了信息准备之后﹐它会传给下一个节点﹐如果没有人接下来﹐就再传一次﹐如果第二次都没有人要﹐则给整个网路发送一个 solicit successor fram 的常规请求﹐询问“有谁想要这一个 Token 啊﹖”﹐如果有节点回应这个请求﹐它就把 Token 直接传到该地址。

        不过同是使用 Ring 形态的 FDDI 则略有不同﹐也拿刚才的例子说明﹕凡是拿到令牌的同学﹐先把要说的东西写在纸条上面﹐也注明是谁写给谁的﹐然后把纸条夹在令牌上传给下一位﹔要是没有话要说就把令牌直接传给下一位即可。等收到令牌的时候﹐就看看信息是否给自己的﹐如果是就抄一份保存下来﹐如果同时还有信息要送呢﹐再按格式填写纸条﹐也夹在令牌上面传给下一位同学。等令牌在绕回来的时候﹐检查上面的那些纸条﹐如果发现发信人是自己的话﹐就把纸条拿下来﹐然后撕掉就行了。

在逻辑形态上﹐我们称这种方法做﹕Token Passing(令牌环)。

IEEE802.3 vs. IEEE802.5

        我们称 Ethernet 的传递形式为广播(broadcast)形式﹐Token Ring 使用的则是指定(dedicated)形式﹔broadcast 属于 probabilistic 模式的协议﹐也就是不能够保证工作站可以获得接通网线的能力。Token Ring 则属于 deterministic 模式的协议﹐也就是使用一套规则来保证工作站有接通网线的能力。在 IEEE 所制定的标准里﹐Ethernet 属于 802.3 标准﹐而 Token Ring 则属于 802.5 标准:

特性类项 IEEE 802.3 IEEE 802.5
逻辑形态 Bus Single Ring
物理形态 Star, Bus Star
介质 Optic fiber, Twisted Pair,
Coaxial Cable
Twisted Pair
频宽 10 Mbps 4 or 16 Mbps
连接形式 CSMA/CD Token Passing
过载信息 Single 1(4 Mbps)或
Multiple(16 Mbps)
最大封包体积 1518 bytes 4500 (4 Mbps)
18000 (16 Mbps)
节点数目 1024 260
节点间隔 2.8m (minimum) 100m (maximum)
最长网路距离 2.8km 不等

        另外还要一提的是﹐有个 IEEE802.4 标准﹐在物理上使用 bus 形态的﹐但却以 Token Passing 的形式来传递资料。和 Token Ring 一样﹐只有得到 Token 的节点才可以发送资料﹐但一旦其获得了接收节点的确认回应﹐就得把 Token 交给下一节点了。在网路里必须有一套机制来追踪哪一个节点会是下一个得到 Token 的节点。在网路上面会有一个 master 的角色﹐如果 token 丢失或由某些原因不能传送﹐master 会先对全网路发出请求﹐然后宣布取消旧的 token 而重新发放一个﹐它比任何其它节点要有最优先权获得 Token。

        不过比起 Token Ring 的 star 形态来说﹐802.4 毕竟还是有其不足之处的。比如在 802.5 里面使用的 smart hub﹐有能力侦测到工作不良的节点﹐从而可以把 Token 绕过它来传递﹐同时会指示出哪一个节点有问题﹐而 802.4 则做不到这点。

五四三规则

        我们知道网线的传输距离都是有限的﹐如果节点之间的距离太远﹐我们就需要在中间使用增益器(Repeater)来将信号放大后继续传输。如果使用 802.3 协议的时候﹐有一个原则我们是必需遵守的﹕五四三原则。意思就是网路上最多只能有﹕

  • 5 个网段(segment)。所谓 segment 就在物理连接上直接相邻而没有经过 repeater 或 bridge 区隔的一组电脑﹐在一个 BNC 网段裡面最多只能接 30 台电脑﹐且网线总长不能超过 185m。
  • 4 个增益器(repeater)。也就是将信号放大的装置。
  • 3 个电脑群体(population)。这个不好理解﹐也就是说前面所说的 5 个 segment 之中﹐只能有 3 个可以装电脑﹐其它两个不行。

这个规则看上去就好像这样﹕

543

        然而,之所以要尊循 5-4-3 规则是因为之前的网路形态中(bus),因其信号传递速度及延迟时间的制约。这裡引一段摘自 news group 的文章,或会让您有更透彻的了解:

       “^_^” <merlin.bbs@firebird.cs.ccu.edu.tw> 撰写于邮件 > >

这些限制是由于同一个collision domain 必须限制在某个host送完封包前另一个最远的host 就要听到 >否则会有发生了collision但是source端的host会不知道的情形发生。至于543应该是个易于记忆的通则因为hub或repeater都可看作delay line 会让packet再同一时间所走的距离缩短, 也就是会让你延伸的距离缩短 。超过数个hub的delay time之后, 就如同线长超过计算上所得到的最长距离于是就有collision发生却没detect到的情形

然而,现今多用 swich 来连接高速的 ethernet 网路,则往往能打破这个限制。实际的极限则跟据产品能力而异,最好是参考厂商的说明文件。