基本上我们前面所接触的都是在LAN的范围╋但时至今日的网络╋尤其是 Internet 的蓬勃发展╋我想也很少网络会独立在局域之内吧╋所以了解一下网路和网路之间的通讯是势在必行的了。
在某些定义来看╋一个 LAN 就好象一台放大比例的电脑╋只不过更加复杂而已?那么在 LAN 和 LAN 之间组建网路╋我们称之为 internetworking 。其应用非常广泛,比如?
?图书馆可以通过它安排联网借还
?可以将各医院的病人记录集中管理
?银行可以通过它进行转帐
?报馆之间可以进行新闻交换
?旅行社可以为客人预定全世界的机票和座位
可以说 internetworking 所带来的便利远超过我们能够想象的。
Internetworking设备
增益器(Repeater)
我们已经在前面讲述过 repeater 的功能了?它是用来放大传输信号的。当我们的网路线路过长的时候╋信号会因为损耗而减弱甚至丢失╋这样的话╋repeator 就可以在中间帮我们将信号接收下来╋然后把它放大重新继续传送以达到我们预定的距离。
准确来讲╋repeater 不能算是 internetworking 的设备╋仅可以算是网路的延伸设备╋基本上它做到的只是重复它所收到的信号而已。如下图:
集线器(Hub)
Hub 和 Repeater 都是 OSI 中第一层(Physical) 的设备。在技术上差不多是同一样的动西,只不过在早期的 physical bus topology 上,我们称之为 repeater :通常有两各 port 分别连接两个 segment (一个 segment 就是一个无需借助 Internetworking 设备连接的彼此相邻的电脑群体)。而 Hub 则常见于 physical star topology 上,有多各 port ,分别连接主机/设备或是其它 Hub 。功能上,两者都是一样的:将信号放大,再重送一遍。或许,我们可以简单的将 hub 的每一各 port 都视为 repeater 就是了。
桥接器(Bridge)
它是一个硬体或软体用来连接不同的网路区段(segment)的设备。例如╋您可以用一个 bridge 来连接两个 Ethernet segment?或连接一个 Token Ring segment 到一个 Ethernet segment?或连接一个 Mac segment 到一个 PC segment。
只要网路间使用相同的传输协定(如 IPX 或 TCP/IP )╋bridge 就可以成功的将任何网路连接到其它网路╋它们之间的沟通就无需理会对方使用的是何种网路硬体了。
一个 bridge 的资料传输主要有三个步骤?
1.Discovery╋就是 bridge 的任意一端是否有资料到达
2.Filtering╋接着 bridbe 过滤(filter)资料,并决定是否需要传送到另一端
3.Forwarding╋然后 bridge 将资料传送(forward)给目的端位址,若使用的格式不一致,则同时进行转换。
其实 bridge 是很简单的╋就像一座桥架于不同的网路之间╋您可以将它想象成两个国家之间的边境桥梁╋而两国都使用着自己各自的语言?一边说 Token 语?另一边说 Ether 语。由于两国过从甚密╋然语言又互不相通╋所以他们就聘请了一个传译员坐在桥中间╋再另外聘两个跑腿各站两边。当说 Token 语的跑腿来告诉传译员他们有信息传到另一边╋传译员首先将地址翻译成 Ether 语╋再将信息重新装进 Ether 国的信封╋然后叫说 Ether 语的跑腿将信送到该地址去。传译员一点也不在乎信是从哪边过来的╋他只关心的是地址之准确性就行。
另外╋bridge 除了是一个传译员之外╋它还可以充当交通警察。当我们发现网路过于繁忙的时候╋那么我们就可以将网路分成两个或多个 segment╋而 bridge 就可以帮助网路更好的管理交通和解决瓶颈问题了。事实上,我们也经常用 bridge 将一个相同类型的大 segment 切成多个小 segment ,利用其 filtering 的功能将网路广播降下来,已提高整体网路的传送能力。请大家复习一下 CSMA/CD 就知道 bridge 的好了:
若没有 bridge 的 segment 中(或是用 repeater 连接两个 segment),当任意一台主机在传送资料的时侯,其它主机就要等(CS)?若是两台主机在同时进行传送,就会发生碰撞而导致重送(CD)。如下图:
若在中间部署一台 bridge 的话,因为 bridge 的 filter 能力,让不同 segment 的信号互不干绕(除非两端跨 segment 传送)。因此,对 CS 与 CD 都有很大提升,当节点越多的时侯,bridge 的好处就更明显:
交换器(Switch)
当您了解 Repeater 与 Bridge 的差异之后,您大概也能理解 Hub 与 Switch 的差别:我们知道 hub 就好比一个多 port 的 repeater ,那么 switch 大概就是一个多 port 的 bridge 而已。当然了,现在的 switch 除了拥有自己的 switch table 而做到类似 bridge 的过滤功能外,还有自己的 CPU 与 Memory ,提功不同的 queue 及运算能力,在整体上提高整个网路的传送速度。在 switch 上所采用的传送方式,大致分 store & forward 及 cut through 两种技术(通常通时提供)。再加上 full duplex 的设计,避免了供享单一传送媒体所导致的 collision ,在某一程度上,将 CSMA/CD 的弊端作了最大的化解(甚至有人认为连 CSMA/CD 都不存在了)!
通常来说,Switch 是用来建构高速乙太网( fast ethernet,最低为 100Mbps ) 的设备,不太可能用 hub(repeater) 来连接的。在我们的应用中,switch 也可以工作于 OSI 模型中的不同层级:L2、L3、L4、L7 等。不同的层级,在封包的处理能力上也大大不同,若没有特别指明,一般是指 L2 Switch 。就算是同层级的 Switch,不同 的功能其价格上也差异很大,比方说,是否能切割 VLAN 、是否可作 Truncking、是否支援 SNMP、CPU/RAM/演算法、等等... 总之,一分钱一分货就对了!只是要看钱是否花得其所而已。
路由器(Router)
和 bridge 差不多╋router 是一个用来将资料从一个网路主机传送到其它网路主机的硬体或软体设备。
在使用 bridge 的时候╋它的工作较累,就算是同一国度里面的人民相互分享资料╋传译员也要先检查一下╋确定是否要进行翻译传递。就算真的不需传递,bridge 也要进行判断。这方面╋router 比 bridge 聪明些╋也不像 bridge 那样劳碌。在 router 上面,如果资料是传递到相同的国度里去╋router 就根本无需理会╋而让资料按其正常的方法传递╋就如根本没有 router 存在一样。只有那些需要翻译的资料╋router 才会理会。因为在 routing 的层面来说,每一台主机在将封包丢出去之前,就已自行判断了改封包是否需要传给 router ?但在低层的硬体传输曾面来说,信号是以广播方式在共享媒体上传输,bridge 必需比较完两端的实体位址才能决定是否要 filter/forward 。
从 OSI 层级来分?bridge 属于第二层,只要上层的传输协定是一致的,那 bridge 就能让不同的硬体 segment 沟通。而 router 则是第三层的设备,它所负责的是传输协定本身的沟通。换句话说,bridge 跟本不必操心也读不懂传输协定的罗辑位址长甚么样子,它只读得懂底层的硬体位?反过来,router 只需读懂罗辑位址就行,而跟本不需要知到硬体位址如何,因为, router 在判断完罗辑位址后,真正的传输工作,则往下交给底层的设备完城。这需要您对 OSI 模型非常了解才能理解,若现在不是很清楚,没关系,等我们日后讲完 OSI 再回来温习就好。
还要一种叫做Brouter(我也不知道如何翻译好)的设备╋可以应用于不同的传输协定上面╋它揉合了bidge 和 router 的优点所在?既可以使用不同的上层协定╋也可以直接将数据以最快的路径传递。当然╋它的问题是比较难昂贵╋而且安装也是件非常头疼的事情?它需要对每一个不同的网路进行细致的调校。如果您有一个比较复杂的具有多种平台的大型网路环境╋使用 brouter 通常可以获得最佳的效能╋尽管安装比较困难╋但一旦设好了╋自是受益非浅。
网关(Gateway)
Gateway 可以说是 internerworking 的最终极设备了╋它通常是一些硬卡跑着一些软体╋专门是设计给两个完全不同的网路结构(比如 PC 网路和 SNA Mainframe)之间进行沟通的。因为, gateway 的工作囊括了整个 OSI 的七个层级。
如若 bridge (工作于第二层) 和 router (工作于第三层) 所使用的传译员仅能够翻译语言╋gateway 这个更高级的翻译却能完全的将各自不同的交流模式进行翻译╋并能让对方可以理解╋不管他们使用的是画画还是跳舞。
Bridge 的使用
正如刚才提到 bridge 的时候╋已经知道它的主要功能就是过滤(filter)和传递(forward)╋当 bridge 接到一个封包的时候╋它就得问自己?“这个封包究竟是留在这个区段内╋还是应该传递到下一个区段呢?”
让我们先假设在两个 Ethernet 区段之间架设了一个 bridge ╋您有一个资料想从区段甲的节点 A 送到区段乙的节点 B╋其过程有的像这样?当节点 A 送出的封包抵达 bridge 的时候╋bridge 会先检查封包的来源地和目的地╋如果是寄往同一区段的其它节点的话(在 bridge 的同一边)╋桥就不会向区段乙进行传送了╋我们称这功能为过滤╋这样区段乙就减少了无必要的交通╋参考下图?
但是╋如果封包的来源地与目的地不一个区段的╋或是一个 Layer 2 层级的广播封包,那么 bridge 就将封包向另外一边传送╋这动作我们称之为传递?
Bridge 通常是独立协定之外的╋可以同时支持多个协定╋它只关心封包的来源和目的位址╋不管双方使用的封包是 IPX 还是 TCP/IP╋bridge 都毫不理会。只要它读得懂来源和目的位址╋就能够判定要对封包进行过滤还是传递。
一般的 bridge 都有一种 learning 能力,会保持一个表格记录哪些位址属于哪个区段╋每次有封包在网路中传递的时候