由于网路的迅猛发展﹐出现了许多供网路使用的软体和硬体﹐为了让它们都能够有效的沟通﹐我们需要建立一些规则。
在这一章里面﹐我会向大家介绍目前比较通用的网路通讯协定﹐和模拟数据是如何的从一个节点传送到另一个节点﹐从功能上面看看通讯协定的定义。
何为通讯协定﹖
一个比较好理解的讲法是﹕通讯协定就是一些标准和规则。例如﹐我们看到红灯就要停、绿灯才可以走,者就是一种协定了。若是彼此使用不同的协定,那就会造成混乱:澳洲(或英联邦)开车考左行使、台湾则靠右。只要所在国家不变,那么该协定就可以运作,但是当到达协定不一样的国家,就得进行协定上的转换了。否则,不出车祸才怪!
在网路通讯中,如果主机 A 要将一个 packet 送给主机 B﹐它们就必须使用相同的通讯协定。
LAN 的工作就是让应用程式利用网路获得﹑管理﹑和安排数据。每一个节点都透过一张网路卡(NIC, Network Interface Card)连接到网路﹐再由此和其它的节点沟通。在每一个独立的工作站上面﹐已经安装了一些应用程式﹐如 Word﹑Outlook 等。这些程式如果想使用网路上面的资源﹐比如在伺服器上面的数据﹑网路印表机﹑电子邮箱等等﹐会使用网路软体(network software)去和 NIC 沟通﹐然后 NIC 再和网路上的其它节点沟通。所有这些信息都要经过转换﹐就必须要使用通讯协定来确保所有这些参与者﹐能够彼此理解对方和进行有效的沟通。
正如您所见到的﹐在节点与节点之间﹐最先的交流是在 NIC 的层次上。当数据从一个节点通过 NIC 传送到另一个节点之后﹐数据再从 NIC 传送到网路软体。而这个网路软体就是我们所说的传输通讯协定(Transport protocol)了﹐在双方的机器上都会有这些 transport protocol。对于这个所谓的网路软体﹐我们可以从好些不同的角度去理解﹐不过我们可以简单的从三个层次去看﹕
第一﹐也是最容易的理解的﹐就是 NIC 的驱动程式。
它负责处理网路卡和传输协定之间的沟通。网路卡的厂家都会提供一支驱动程式让您使用一些特定的协定﹐您可以使用同一张卡来供不同的作业系统使用。只要这张网卡在“物理”上是兼容的﹐那你就可以在作业系统上面使用了。换而言之﹐您大可不必只依赖一个牌子的厂家。当然﹐您不能将 Ethernet 网路卡当 Token Ring 来使用。
我们也知道要让网路卡工作﹐除了要使用正确的驱动程式之外﹐您还得要确定 IRQ 和 IO 要正确。另外﹐在网路卡上面﹐还有一个由 6 组十六进位数字组成的 48bit 的物理位址(Physical Address)﹐也叫 MAC(Media Access Control) Address 或 Node ID﹐等名称﹐相信我们前面也听过数次了。这个位址其实分为两个部份:前面三组数字为 Manufacture ID﹐也就是厂商 ID﹔而后面的三组是 Card ID。如果我们见到一张卡的 MAC 位址是﹕02-60-8C-67-CD-54﹐那么我们可以知道这张卡是 3Com 的﹐因为 02608C 就是 3Com 的ID。透过这两组 ID ,我们可以在实体上区分各自的网路卡。理论上来说,全世界没有两张卡的 MAC Address 是相同的,而且我们也不应去修改它。
然后﹐基于这个物理位址﹐我们就可以把逻辑位址捆绑于其上。物理位址我们是无法更改的﹐而且您也很难找到两张相同物理位址的网路卡﹔但逻辑位址则是由网路管理员来设定。就好比您不能将公司地址门牌给改了﹐但您喜欢给您的公司起什么名字或搬到别的地址去都可以﹐只要不会和其它公司搞混了就行。
如果使用不同的传输协定﹐逻辑位址的格式也不相同(后面我们会就会讲到这问题了)。但无论是物理位址还是逻辑位址﹐要在网路上面沟通的话﹐就必须不同﹐否则就是所谓的位址冲突啦。
下面我们以 IPX 协定为例子认识一下逻辑位址﹕
· 内部网路位址(Internal Network Address)。
简单地说﹐internal address 是用来识别每一台机器是“谁”。很重要一点是﹐这个内部 IPX 号码在同一个网路中﹐对每一台机器来说必须是唯一的。例如 Novell NetWare 使用内部 IPX 号码来识别网路中的伺服器﹐当您安装 NetWare Server 的时候﹐您会被问及接受或更改一个随机产生的内部 IPX 号码﹐然后这个号码就成了该 server 的 ID 了。当您从工作站中输入 slist 命令﹐您就可以看到每一台 server 的 ID 都被列出来。
· 外部网路位址(External Network Address)。
这是用来识别一个网路或一个在网路中的网段(segment)用的。如果在同一个网路上面同时有两台 server 出现﹐那么它们就必须使用相同的 external address 了。这个 external address 好比是用来识别所有的 server 在“哪里”的。在 Novell Netware 里面﹐只有 Server 才需要设定 external address ﹐工作站使用的是它登录所在的 server 的 external address。
一个完整的 IPX 位址会是这个样子的﹕1C9FDB42 : 2E701AID﹐在“﹕” 前面的部份为 external address﹐而后一部份则为 internal。不过这样设定也有一个潜在的危险﹐如果您在安装 Novell server 的时候一不留神﹐接受了程式自选的 External Address﹐那样就很可能不能和其它 server 沟通了﹐而且在接下来的安装中﹐您会被诸如 wrong router address 等错误信息烦死﹗程式通常也可以提示您正确的号码﹐但如果您有两张网路卡在上面﹐您就要自己设定了。如果您的号码输入错误﹐您或许不可能修改系统的 AUTOEXEC.NCF 档案﹐而 external 和 internal 位址都包括在这个档案里面﹐所以务必小心﹗
第二。在网路处理程式的另一端﹐需有一个重导向(Redirector) 的软体。
我们知道在单机作业模式下﹐当程式呼叫档案 IO 的时候﹐会由作业系统接管这个请求﹐然后再传给 BIOS﹐再到硬体那里。如果当程式呼叫的档案 IO 为网路位址的时候﹐那么 redirector 就会接管这个请求﹐而重新导向到网路上面去﹐把请求交给对方机器。
例如﹐当您使用 Word 的时侯﹐要开启一个在网路磁碟上面的档案﹐将会如何呢﹖从 Word 的角度去看﹐它根本不知道有网路这回事﹐它只知道有一个和多个像 A﹕﹑B﹕﹑C﹕这样的磁碟。就像您吃麦当劳的时候﹐您不用知道汉堡包是怎样制作出来的﹐您只需知道鱼柳包﹑鸡柳包和拿到什么样的 Kitty 猫就是了。Word 在设计上并不是应用于非本地磁碟上的﹐当要使用在网路上面的数据的时候﹐就必须有一种软体能够以磁碟代号的形式告诉 Word 才行。所以﹐如果您告诉 Word 去一个在叫 FILESER1 的伺服器之 DOC 目录下面找档案﹐那么 redirector 软体就会接管这个请求了。
然而﹐redirector 在这个网路软体集团里面﹐也只是其中一个角色而已﹐要真正能够拿回资料﹐我们还得需要另一角色的配合﹕ Redirector 只是工作在 client 上面﹐而在 server 那边﹐还必须有一个档案系统(File System)﹐或曰 mounter﹐来接应 redirector 的请求。
在网路世界中﹐有许多种这样的 file system﹐最出名的有 Novell 的 NetWare File System﹑Unix 网路的 Network File System (NFS)﹑以及 Microsoft 的 CIFS (Common Internet File System)。在 client 端的 redirector 必须要和在 server 上面的 file system 兼容(使用相同的协定)﹐否则 client 也只能望 file 兴叹而已。
第三。终于来到这章的戏肉了﹗出场的就是通讯协定﹐也就是节点和节点之间在网路上搬运数据的方法。
我之所以将这三个层次的中间部份留在现在才说﹐是因为它是最抽象的。您或许可以这样想象﹕NIC 驱动程式负责和 NIC 之间的沟通且尽力讨其欢心﹔在 client 上面的 redirector 和在 server 上面的 mounter ﹐则和程式沟通﹐也极尽体贴之能事﹔然后通讯协定﹐则出尽法宝缀合 NIC 驱动程式和 redirector (或 mounter)﹐并建立起网路通讯的交通规则。
正如前述﹐通讯协定只是一些标准和规则而已﹐而这些规则令到交流的融合性得以标准化。就如我们不能离开一些经已认同的规矩去使用道路一样﹐我们的网路也需要一些共同的沟通语言﹐才能让所有机器相互交流而不至于混乱。
LAN 和 LAN 之间的通讯也一样需要一些网路语言﹐所以它们都需要有语言大师的本领才行。事实上﹐网路语言有多种多样﹐由于它们在设计之初只为了应付不同的工作﹐而且它们大部份都从来不考虑要和其它网路兼容的。传输协定虽然可说琳琅满目﹐然而不幸得很﹐各自的厂商都有各自的一套偏好。但又非常幸运的是﹕大部份新的网路作业程式都支持超过一种协定﹐可以和不同的作业系统沟通﹐比起以前独沽一味的情形的确容易多了。
下面我们就浅略的浏览一些您将会在网路上运用到的通讯协定。
NetBEUI
让我们回到 IBM 最初进军个人电脑网路的时代﹐他们当时的确需要一个很基本的网路通讯协定﹐但他们并不打算用此来建构大型网路﹐仅仅供数十台电脑甚至更小的网路而已。基于这个诉求﹐就诞生了Network Basic Input/Output System﹐或称 NetBIOS。
NetBIOS 其实只有 18 个命令(command)来让网路的电脑能够建立﹑维持﹑和使用连接服务。不过 IBM 在不久后又再推出了 NetBIOS 的延伸版本﹕NetBIOS Extened User Interface﹐或称 NetBEUI﹐基本上是 NetBIOS 的改良版本而已。然而﹐NetBIOS 和 NetBEUI 终究是不同的﹕NetBEUI 事实上可以说是一个传输协定﹐而 NetBIOS 充其量只是一组命令来让系统可以使用网路而已﹐在技术角度来看﹐它是一个 Application Program Interface (API)。关于 NetBIOS 与 NetBEUI 的技术分歧,请参考:
Netbios Network Basic Input/Output System Protocols
NetBios, NetBEUI, NBF, SMB, CIFS Networking
NetBEUI 可以算是您在 LAN 中能够用到的最快通讯协定了。这个“最快”是指它可以将格式化资料放进封包里面﹐而接收节点又可以迅速的解读到内容。然而﹐NetBEUI 却有一个最致命的弱点﹕它不是可(routable)协定﹐也就是不能够和其它网路的机
【责编:admin】
--------------------next---------------------