在这里我们将要讨论一些网络物理和逻辑形态﹐以及它们各自的特征﹐同时也会开始介绍 IEEE的802.x 标准。   网线的困扰   要架设网络﹐当然先要将个机器连接起来。假如您喜欢的话﹐我们可以将每两个网络节点都直接用网线连接起来﹐如果材料够﹐地方又允许的话﹐这完全是有可能的。那么按此接法﹐我们需要的网线数量 = 节点数目 x ( 节点数目 - 1 ) / 2 ﹐也可以从下面的列表中直接看出来﹕       天哪﹗如果有一百台计算机起不是整个办公室都布满网线了﹖﹗而且网线也需要钱买的啊﹐所以实际上﹐是没有人会采用这样的联机方法的。 ^_^ 较常见的布线设计大都以下面所介绍的 topology 作参考:   物理形态   星状形态(Star Topology)   一个星状的网络形态里面﹐在中央是一个集线器(HUB/SWITCH)﹐或 MAU (Multistation Acces Unit)﹐所有的工作站﹑服务器和打印机都接到 HUB 上面﹐看上去就像一颗星星向四周放射星光一样﹐因而得名。       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 型接口连接﹐而在两端的接点则各连接一个终端电阻。       Bus 形态的最大问题是出现问题的时候的问题(﹖﹖﹖废话啦~~)﹐网络这时候需要整个停下来检查﹐如果是因为终端电阻没接好那还好办﹐换一个就可以。但要是其中一个节点有问题的话﹐你就得慢慢找出来了。在 star 形态里面﹐要是该节点有问题﹐受影响的仅是其接点罢了。但在 bus上面则不同﹐如果一个节点是关闭的话﹐框包会略过它而直接通过 T 型接头传给下一个开着的节点。然而﹐要是该有问题的接点开着的话﹐也会接收和发送框包﹐但却会令到网络越来越慢甚至停顿下来。   顺便一提﹐我们在给 10Base2 网络除错的时候﹐一个较好的方法是二分法﹕先从中间断起。就是将其中一个终端电阻接到中间的节点去﹐然后检查各自分开的部份﹐找有问题那边﹔再继续断开中间﹐如此一直到找到问题的节点为止。   Bus 形态唯一好处是便宜﹕无需 hub 而且省 cable﹑省钱。如果在家里玩玩或接点不多﹐Bus 形态也是值得考虑的。不过,现在这个优势已不复存在了,若你不是为了怀古,真要用 bus 形态的机会不高。   环状形态(Ring Topology)   一般来说﹐这样的形态我们是比较少见到的﹐因为其布线是一个非常头痛的问题﹐您大概从下图可见一斑﹕       Ring 形态的布线是整条线是首尾连接而成一个环状,无需使用终端电阻。若它使用双网线连接﹐其布线数量也是双倍增加了。但在一般的办公室环境里面甚少会见到物理 Ring 形态的网络﹐常见于用来连接数建筑物之间的高速骨干干网﹐如 FDDI 等。   逻辑形态   虽然我也知道我很啰嗦﹐但我还是要提醒大家﹐网络形态和逻辑形态是两码子事情﹐在学习逻辑形态的时候我建议您先将物理形态忘记掉。   Bus / Ethernet   我想 Ethernet 恐怕是最佳的逻辑 bus 形态例子了﹐它也是现在最普遍的 LAN 类型。   这个逻辑 bus 形态是如何工作的呢﹖很简单﹐就是每次只能有一个节点在网络上传递数据给其它节点﹐其形式是通过对整个网络进行广播(broadcast)。然后其它接点收听到广播之后﹐就看看数据是否传个自己的﹐如果是﹐则接收下来﹔如果不是﹐则略过。每一节点都有一个自己用的 48bit 的地址(也可以称为Node ID﹐也就是在前面说的网卡硬件地址了)﹐每一个在网络中传输的数据都是以这个地址为传送和接收依据的。   当任何一个节点进行广播的时候﹐所有的其它节点都收听得到,但真正接收的只有一个节点。其情形就像我们上课一样﹐老师说﹕“第几排第几号同学出来拿作业﹗”虽然全班同学都听得到﹐但却只有一位同学可以拿到。Bus 形态也和这种形式很类似﹐当然具有更严谨的一套法则啦。在bus上面的数据都是以框包(frame)形式传递﹐框包送出来之后﹐会以电子信号同时向 bus 两端广播﹐当目的地接收到给它的框包﹐也不是据为己有的﹐而是复制一份给自己﹐而原来的框包则还是会继续被送给下一个节点﹐直到封包抵达终端电阻才会被销毁。   任何类型的数据要在这一网络上面传递的话﹐都必须严格的遵循既定的框包格式﹕Data Link Layer 作制定的格式﹐是给网络用来安排数据的。Ethernet 的 Data Link Layer Frame 看起来如图﹕       每一个 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 上使用的是类似的方法﹐