错新网讯 自世上出现“电信”或“远程通信”技术那一天起,“连网”(N e t w o r k i n g)的概念恐怕便已产生了。想想生活在石器时代的人,若相距较远,那么可通过鼓声,相互间传递消息。现在,假定穴居人A想邀请穴居人B参加投掷石块的游戏。但是,他们离得实在太远了,以至于B听不到A的鼓声。那么,穴居人A该采取何种对策呢?他面临着三种选择: 1 )步行到B处;2 )做一只更大的鼓; 3 )请求住在A和B之间的穴居人C,帮助转发消息。最后一种选择便叫做“连网”!
当然,人类进化到今天,我们再也不会使用老祖宗那些简陋的工具。今天,我们有了计算机,它们通过电缆、光纤、微波以及其他媒介,相互间可以“交谈”。相距遥远的人,可使用计算机,约定在星期六玩一场足球比赛。后面,我们将探讨达成这一目标的途径及方式。但是,不打算涉及通信线缆的问题。当然,足球比赛也请暂时抛在一边吧!在此,有两种类型的网络是我们感兴趣的:以U U C P为基础的网络,以及以T C P / I P为基础的网络。U U C P和T C P / I P均属于“协议套件”或者“软件包”的类别,它们提供了在两台计算机之间传输数据的途径。我们打算来看看这两种类型的网络,并讨论它们的基本原理。
我们将“网络”(N e t w o r k)定义成一系列“主机”(H o s t)的集合,不同主机相互间能够通信。通常,这种通信要依赖某些“专用主机”或“服务器”(S e r v e r),在参与通信的两部主机之间,对数据进行转发或“中继”(R e l a y)。当然,最常见的主机便是计算机,但也并不全是。例如,X终端或智能打印机也属于主机的一种类型。小范围内的主机集合亦称作“站点”(S i t e)。无论人还是主机,相互间想实现通信,不采用某种形式的语言或代码,那是根本不可能的。在计算机网络中,这些语言统称为“协议”(P r o t o c o l)。但是,不要把它们想象成书写的那种“协议”。相反,它们实际是一些高度规范化的代码,严格约束着通信双方的行为。用最简单的话来说,计算机网络中采用的协议就是一系列非常严格的规则,规定着两个或更多主机相互间如何交换消息。
1.1 UUCP网络
U U C P是“U n i x到U n i x拷贝”(Unix-to-Unix Copy)的简称。开始时,它以一个软件包的形式出现,通过串行线路传输文件,对文件传输进行安排和调度,并发起程序在远程站点的执行。自7 0年代末首次问世以来,尽管它在许多方面发生了重大变化,但就其提供的服务来说,却变化不大。它仍然主要应用于广域网( WA N)环境。在这种环境中,主机的连接要通
过拨号电话线路来进行。
U U C P是由美国贝尔实验室于1 9 7 7年开发出来的,用于在他们的U n i x开发站点之间实现通信。到1 9 7 8年年中,这个网络总共已连接了超过8 0个站点。除了运行非常原始的电子邮件(E - m a i l)服务之外,还支持远程打印功能。然而,该系统的用途还是发布新软件和错误修正文件(补丁文件)。今天, U U C P已经不再局限在那样的环境内。在这个网络内,目前运行着各式各样的平台,比如A m i g a O S,D O S,A t a r i的TO S等等。它们有的提供免费服务,有的则提供商业服务。
U U C P网络最大一个缺点便是带宽较低。一方面,电话设备紧紧限死了最大的传输速度;另一方面,U U C P中极少存在永久性的连接。相反,各主机以固定的周期,通过拨号方式建立与对方的连接。所以大多数时候,邮件消息往往不能一下子送至目的地;而是先躺在某个主机的硬盘里,等待下一次连接建立的时候再发送出去。尽管存在这些限制,目前世界上仍运行着为数众多的U U C P网络。它们主要由一些业余人员负责维护,有时收取低廉的价格,让私人用户接入网络。U U C P之所以仍然受到某些人的青睐,主要原因便是和通过专线永久性接入I n t e r n e t相比,它需要的费用便宜得多。要想使您的计算机成为U U C P的一个节点,需要的全部家当只有一部M o d e m、一个适合U U C P运行的软硬件环境以及另外一个UUCP节点(愿意为你提供邮件和新闻转发服务,亦即你的“上游节点”)。
如何使用UUCP
U U C P的工作方式非常简单。从它的名字( U n i x到U n i x拷贝)便可知道,它主要负责将文件从一个主机拷贝(复制)到另一个主机。但除此以外,它还允许在远程主机上采取一些特定的行动。假定你的机器有权访问一个名为S w i m的主机,现在想让它为自己执行l p r这条打印命令。如何做到呢?可在自己的命令行键入下述命令,让这本书在S w i m机器上打印出来:
$ uux -r swim!lpr !netguide.dvi
这样一来,便可指示u u x(来自U U C P套件的一个命令)为S w i m安排一项作业。在这个作业中,包括一个输入文件,名为n e t g u i d e . d v i;另外,还包括将该文件送给l p r的请求。其中,- r参数告诉u u x不要马上呼叫远程系统,而是将这个作业暂存下来,等稍后建立了一次连接再说。这个过程称作“缓冲”(S p o o l i n g)。
U U C P的另一个特点便是允许经由几个主机,对作业及文件进行转发,只要各主机相互间能够协作。现在,假定上例的主机S w i m建立了与G r o u c h o的一条U U C P链路,后者维护着一个大型的应用程序档案库。那么,为了将文件t r i p w i r e - 1 . 0 . t a r. g z下载到自己的站点,需执行下述命令:
$ uucp -mr swim!groucho!~/security/tripwire-1.0.tar. g z t r i p . t g z
创建的这个作业会请求S w i m帮自己从G r o u c h o处取得文件,并将其发至自己的站点。在自己的站点,U U C P会将文件保存为t r i p . t g z,并发一封电子邮件,通知文件已经到达。整个过程分三步走:第一步,从自己的站点将作业发给S w i m。第二步,在S w i m处,下一步请求建立同G r o u c h o主机的连接,并从它那里下载回指定的文件。最后一步是将文件从S w i m实际传回自己的主机(站点)。
对U U C P网络来说,目前它提供的最重要的一种服务便是电子邮件和新闻。以后,我们还会讲述这方面的问题。在这里,仅对它们进行一番简要的介绍。
电子邮件,简称E - m a i l、e m a i l,使我们能直接与远程主机交换消息或信件,而不用知道如何访问这些主机。将一条消息(信件)从自己的站点引导至目标站点的任务完全是由邮件控制系统执行的。在U U C P环境中,邮件传输通常需要在一个相邻的主机上执行r m a i l命令,将邮件正文和接收方的地址传递给它。随后, r m a i l会将邮件转发至另一个主机……以此类推,
直到最后抵达目标主机。
至于“新闻”(News),可想像成一种分布式的电子公告板系统。通常说到“新闻”的时候,是指通过U s e n e t新闻组发布的新闻,它目前是应用得最广的新闻交换网络,总共有大约1 2万个成员站点。U s e n e t的起源可追溯到1 9 7 9年。当时,与新出的U n i x - V 7一道发布了U U C P之后,三位应届毕业生产生了一个想法,打算在U n i x社区中实现常规的信息交换。他们设计了一些脚本,形成了世界上第一个网络新闻系统的雏形。1 9 8 0年,这个网络在北卡州的两所大学里,成功地联通了D u k e,U N C和P H S等大学,同时连通了北加州的两家大学。以此为基础, U s e n e t逐渐发展壮大。尽管它起源于UUCP网络,但现在已跨越了多种形式的网络,并不单单UUCP一种。
在U s e n e t中,最基本的信息单元便是“文章”或者“帖子”。所有文章都要投递到与主题对应的新闻组内。按主题分类,各个新闻组构成了一个层次分明的结构。由于每天发布的帖子数量众多,大多数站点(亦称“新闻组服务器”)只接收自己选择的一部分新闻组。即便这样,每天平均也会增加近6 0 M B的新帖子。在U U C P世界中,通常先从要求的新闻组中收集好所有文章,然后通过一条U U C P链路发送出去。如果数量较大,一次传不完,便打包后,分成数次传输。打包(压缩)的新闻送至接收站点,由它们执行r n e w s命令,进行解包和其他处理。
最后,U U C P也是许多通过拨号连接的文件下载站点的一种传输媒介。这些站点通常允许公共访问,让人们免费下载需要的文件或软件。通常要通过U U C P拨入这些站点,以一名“访客”(G u e s t)的身份登录,然后从公开的档案区下载需要的文件。这些G u e s t账号通常以g u e s t或a n o n y m o u s(匿名)作为登录用户名,然后用u u c p / n u u c p或类似的信息作为登录密码使用。
1.2 TCP/IP网络
尽管U U C P特别适合希望以低廉费用建立拨号网络连接的用户,但在其他许多情况下,这种“存储转发”技术也显得非常不灵活。比如在局域网中,数量不多的机器位于同一幢建筑物中,甚至位于同一层楼、同一个房间里。这些机器相互连接在一起,营造一个能够协同工作的环境。在这种情况下,我们需要在不同的主机间共享文件,或者在不同的机器上运行分布式的应用程序。
所有这些任务都要求以一种全然不同的方式来建立网络连接。此时,不再是将整个文件都“存储”起来,同时为其赋予一个作业说明,而是将所有数据都分割为较小的数据包(P a c k e t),立即转发至目标主机。抵达目标主机后,再在那里重新“组装”回原来的样子。
这种类型的网络叫作“包交换”网络。它的最基本的一个应用便是通过网络运行分布式的应用(程序)。当然,这样做的代价会比U U C P高出许多—这主要反映在软件和协议的复杂程度上。目前,许多系统(包括非L i n u x站点)选择的协议都是T C P / I P。在这一节里,我们打算就其基本概念作一番论述。
1.2.1 TCP/IP网络入门
T C P / I P的历史可追溯到1 9 6 9年由美国国防部高级研究计划局( D A R PA)投资进行的一个研究项目。项目的宗旨是建立一个实验性网络,名叫A R PA N E T(阿帕网)。1 9 7 5年,项目完成,网络正式投入运行。1 9 8 3年,新协议套件T C P / I P被接纳为正式标准,网络上的所有主机都必须使用它。当这个阿帕网最终进化成I n t e r n e t后(阿帕网于1 9 9 0年正式退出历史舞台),T C P / I P的应用范围已不仅仅在I n t e r n e t之内。它最引人瞩目的应用是在局域网中;但随着快速数字电话设备比如I S D N的问世,T C P / I P也昭示着拨号网络的未来。为便于下文对T C P / I P的讨论,我们在此打算以位于芬兰某地的Groucho Marx大学(G M U)为例。在这所大学中,大多数系都运行有自己的局域网( L A N)。一些系和别的系共享一个网
络,另一些系则同时运行着几个网络。所有网络相互间都是连接起来的(互联)。整个校园网通过一条高速链路,接入I n t e r n e t。
假定我们的机器挂接的是数学系的L A N,名字叫做E r d o s。要想访问物理系中名为Q u a r k的一个主机,需要执行下述命令:
$ rlogin quark.physics
Welcome to the Physics Department at GMU
(ttyq2) login:
在提示行,需要输入自己的登录名: A n d r e s,以及正确的密码。随后,便可获得在Q u a r k机器上的一个外壳,可在其中键入任何命令,就像自己亲身坐在那个系统的控制台前一样。退出这个外壳后,便可返回自己机器(本机)的提示行。刚才,我们已试验了由T C P / I P提供的一种实时的交互式应用:远程登录!登录进Q u a r k的时候,有时也想运行一个以X 11为基础的应用,比如一个函数演算程序,或者一个P o s t S c r i p t格式预览程序。要想告诉应用程序你希望将它的窗口显示在自己主机的屏
幕上,必须设置D I S P L AY环境变量:
$ export DISPLAY = e r d o s . m a t h s : 0 . 0
如果现在启动程序,它便会同你的X服务器联系,而不是同Q u a r k的服务器联系,并将所有窗口都显示在自己的屏幕上。当然,这要求你在E r d o s机器上运行X 11。这里的关键在于,T C P / I P协议允许Q u a r k和E r d o s两部主机来回传送X 11数据包,从而营造在单个系统上运行的“假象”。此时的网络永远是“透明”的。
在T C P / I P网络中,另一个非常重要的应用是N F S,亦即“网络文件系统”(Network File S y s t e m)。它是让网络“透明”的另一种形式。N F S主要用来让我们“复制”其他主机的目录结构,令其看起来就像本机的文件系统。举个例子来说,所有用户的“主目录”(H o m e D i r e c t o r y)都可存放在一台中心服务器中。从这台机器,局域网内的所有主机都复制它的目录。这样一来,用户实际可登录进入网内的任何一台机器,并发现自己处在一模一样的主目录中。类似地,可将那些要求占用大量磁盘空间的应用程序(如Te X)安装到一台机器,然后将它的目录导出至其他机器。
当然,这些仅仅是通过T C P / I P网络能够做到的一些事情的例子。事实上,用它能做到的事情几乎是无限的。接下来,我们打算就T C P / I P的工作原理做一番详细探讨。只有掌握了这方面的知识,才能对自己机器的配置方法做到心中有数。首先从硬件开始,再从它慢慢地延伸开去。
1.2.2 以太网
目前在L A N中广泛采用的硬件形式叫做E t h e r n e t,即“以太网”。其中包含了一条电缆,主机通过接头、分路器或者收发器加以连接。简单以太网的安装费用十分低廉,最常见的传输速度是1 0 M b p s(每秒1 0兆位,而非1 0兆字节),但也有逐步向1 0 0 M b p s(百兆网)过渡的趋势。以太网可划分为三种实施形式。根据采用的电缆规格,可分别称为粗缆、细缆以及双绞线网络。其中,细缆和粗缆以太网使用的都是同轴电缆,只是线缆粗细以及与主机的连接方式有所区别。细缆采用的是B N C接头,俗称T头,需要“拧”入计算机背后的一个圆柱形接头(做在网卡上)。粗缆要求在线缆上打一个小孔,然后用一个“ Vampire Ta p”连接一个收发器。随后,一个或多个主机建立与这个收发器的连接。细缆和粗缆以太网电缆分别最多可以长达2 0 0和5 0 0米,所以也叫做1 0 B a s e - 2和1 0 B a s e - 5网络。双绞线电缆则由两个铜芯线对绕合而成,类似于普通的电话线。但是,它通常要求新增额外的硬件。人们也把它叫做1 0 B a s e - T网络,其中的“T”代表Twisted pair(双绞线)。尽管在粗缆以太网中增加一个主机显得比较麻烦,但在增加主机的同时,不会造成网络的中断。而要想在细缆网络中新增一个主机,则必须让网络服务暂停几分钟,因为必须对线缆进行处理(通常需要割断),插入新的接头。大多数人都愿意选择细缆连接,因其造价相当低廉:一张网卡最多1 0 0元人民币,线缆每米1 ~ 3元,其他便不再需要任何费用。但是,假如网络的规模较大,粗缆以太网就显得更为恰当。例如,G M U大学数学系的以太网采用的便是粗缆连接,所以每次有一个主机加入网络时,不会造成整个网络的中断。
以太网技术的一个缺陷是电缆长度(布线长度)有限,所以只适用于L A N的建设。但是,利用转发器、网桥或路由器,几个独立的以太网网段也可以相互连接到一起。其中,转发器(R e p e a t e r)的作用最简单,只是在两个或更多的网段之间复制信号,使各个网段表面上似乎合并成了一个统一的以太网。
以太网工作起来就像一个总线系统,其中的一个主机可将单位长度多达1 5 0 0字节的数据包(或“帧”)发给同一以太网内的另一个主机。每个主机都分配有一个6字节的地址,这种地址需要固化到网卡内部,但也可以通过专门的软件更改。通常,我们用两位十六进制数字的一个序列来表达这种地址,每对数字之间用冒号分隔,例如a a : b b : c c : d d : e e : ff。
由一个主机发出的数据包可被网内其他所有主机“看到”。但是,只有目标主机才能实际地接收并处理它。假如两个主机同时试图发送数据,便会发生“冲突”。解决这种冲突的办法便是两个主机都取消这一次发送,各自等待随机的一小段时间,再进行发送数据包的尝试。
1.2.3 其他类型的硬件
在规格较大的网络中,比如像前例提到的G M U大学校园网,以太网通常并非唯一的一种网络硬件安装方式。在G M U大学,各个系的L A N都同校园干线连接,后者是一条光纤线缆,运行的是F D D I(光纤分布数据接口)。F D D I采用一种全然不同的形式来实现数据的传送。其基本原理是发送大量“令牌”,令其在整个网络内循环。只有某个主机拿到了一个令牌,才有权将数据送入网络(随那个令牌一道)。F D D I的主要优点在于,它可达到很高的数据传输速度,通常1 0 0 M b p s是没有问题的,而且布线长度可以高达2 0 0公里。对于远距离网络链接,通常还有另一种设备类型可供选择,它建立在一种名为X . 2 5标准的基础上。在美国,有许多所谓的“公共数据网络”(Public Data Network,P D N),比如Ty m n e t,它们提供的便是这种服务;而在德国,D a t e x - P网络提供的也是这种形式的服务。X . 2 5要求安装一种特殊的硬件,名为PA D,亦即“包汇编/反汇编器”(Packet A s s e m b l e r/D i s a s s e m b l e r)。
X . 2 5定义了一系列网络协议,由自己专用,但通常也用于连接运行T C P / I P和其他协议的网络。由于I P包不能直接映射(转换)为X . 2 5格式(反之亦然),所以其他协议的数据包只是简单地封装在X . 2 5包里面,再通过网络传输。通常,无线电爱好者利用自己的专门设备将计算机连成网络;这种技术称为“包无线电”,或称“火腿无线电”。这些爱好者理所当然也叫做“火腿一族”。火腿无线电使用的协议叫做A X . 2 5,自X . 2 5衍生而来。
另一种技术需要使用速度较慢、但价格便宜的串行线路,用于拨号访问。这要求另一种协议来进行数据包的传送,比如S L I P或P P P,后文还会详细讲述。
1.2.4 网际协议
当然,我们的网络连接并不仅仅限于一个以太网。在最理想的情况下,我们希望能任意使用一个网络,无论它运行于什么硬件形式之上,也无论它由多少个子网组成。比如,在像G M U校园网这样规模较大的网络中,通常包含了数量众多的独立以太网,它们需要以某种形式,相互连接到一起。在G M U大学,数学系运行着两个以太网。其中一个网络包含的都是快速机器,由教授和研究生使用;另一个网络的机器速度较慢,由学生平时上机使用。两个网络都同时接入F D D I校园干线。这种连接是由一个专用主机控制的,名为“网关”。网关的作用是在两个以太网和光纤线缆之间,通过复制数据包的方式,对数据包的接收和发送进行处理。举个例子来说,如果你在数学系,想访问物理系的局域网上Q u a r k,然而连网软件不能直接向Q u a r k发送数据包,因
为它们不在同一个以太网上。因此必须依靠网关来“转发”数据包。然后,网关(命名为S o p h u s)再把数据包转发到物理系的、它的同级网关N i e l s,由N i e l s把数据包转发到目标主机。
直接将数据导向远程主机的方法称作“路由”,数据包常常被称作“数据报”。为使一切简单化,数据报交换由一个独立的、与所用硬件无关的协议进行管理。这个协议就是I P,或者说“网际协议”。I P的主要好处是:从物理上把不同的网络变成了同一个网络。这就是“联网”技术,而这种“变形网”也就是i n t e r n e t(网间网)。注意,i n t e r n e t和I n t e r n e t之间,有明显的区别。后者是一个特定的、官方命名的全球化“网间网”。当然, I P同时还需要一个与硬件无关的定址方案。也就是每台主机对应一个独一无二的3 2位数,这个数便是该主机的I P地址。I P地址通常用“点分四段”的格式来表示,每一段以十进制表示其四字节中的一个字节,段间用句点分隔开。比如, Q u a r k可能有“ 0 x 9 5 4 C 0 C 0 4”这样的一个I P地址,它对应的是1 4 9 . 7 6 . 1 2 . 4,前三个字节由I n t e r N I C注册服务中心分配,标识主机接入的网络,剩下的字节用来标识该主机本身。大家还会注意到,我们现在有三种地址类型:其一是主机名,比如说Q u a r k;其二是I P地址;最后是硬件地址,比如那个6字节的以太网地址。所有这些都必须彼此相符,只有这样,在输入rlogin quark时,联网软件才能给出Q u a r k的I P地址;而且,在“网际协议”向物理系以太网投递数据时,必须找出其I P地址对应的那个以太网地址—这个地址是最容易搞
混淆的。我们不打算在此深入下去。目前,大家只需记住的一点是:寻找地址的过程叫做“主机名解析”(即把主机名映射成I P地址)和“地址解析”(把I P地址映射成硬件地址)。
1.2.5 串行线路网际协议
串行线路网际协议( S L I P ),又叫做“串行线路接口协议”。是一种允许通过拨号连接进行I P数据包传输的数据链路协议,使得计算机或局域网可以连接到因特网或其他网络中。在串行线路上,常用的标准一般是S L I P或Serial Line IP。S L I P的修正版称为C S L I P,或者压缩过的S L I P,执行I P头的压缩,以便更好地利用串行链路提供的、相对较低的带宽。另一个不同的串行链路协议是P P P,或者说“点到点传输协议”(P o i n t - t o - P o i n t)。和S L I P相比,P P P的特性更多,其中还包括一个链路协商段。但P P P领先于S L I P主要表现在没有对I P数据报的传输进行限制,而且可以发送任何一种类型的数据报。
1.2.6 传输控制协议
当然,从目前看来,从一个主机向另一个主机发送数据报只是任务之一。如果你登录到Q u a r k,还打算在E r d o s上的登录协议命令( r l o g i n)进程和Q u a r k上的外壳进程之间建立一条可靠的连接,那么,发送端必须把准备收发的信息分成若干个数据包,再由接收端把多个数据包重新组合成一个字符流。这样不仅琐碎,还会额外增加许多工作量。关于I P,不容忽视的另一点是:不可靠。假设你的以太网上有1 0名用户,他们都通过G M U的F T P服务器开始下载X F r e e 8 6的最新版本。那么所产生的通信量对网关而言,是难以应付的,因为速度太慢了,而且内存也非常的紧张。现在,如果你碰巧向Q u a r k发送一个数据包,
S o p h u s可能会出现缓冲区空间暂时短缺,导致不能转发数据包的情况。I P解决此类问题的办法是“丢弃”它。因此,这个包必定会被丢失。所以,通信主机的责任就是在出现错误的情况下,检查数据的完整性、数据是否完全,以及另行转发。然而,这是由另一个协议—T C P协议(也叫做传输控制协议)—来完成的。T C P在I P之上建立了一个可靠的服务。其本质特征是利用I P,向大家勾划了主机和远程机器上的两个进程之间的一条简单连接,这样一来,就大可不必担心你的数据实际上是沿着哪条路由,以及怎样路由的了。从本质上来说, T C P连接的原理其实就像一条“双向”管道,两个进程可以边读取,边写入。也可把它想像成“打电话”。
T C P利用连接涉及的两台主机之I P地址和各主机上的所谓“端口”号,来标识此类连接的端点。端口可被视为网络连接的“附着点”(attatchment point)。如果把T C P连接想像成“打电话”,那么I P地址就是区号(对应一个地区或城市),而端口号就是本地代号(对应各家各户的电话机)。在“r l o g i n”这一例子中,客户机应用程序( r l o g i n)打开E r d o s上的一个端口,并将它连接到Q u a r k上的5 1 3端口, r l o g i n d服务器将被告知对这个端口进行监听。这样便建立了一条T C P连接。利用这条连接, r l o g i n d执行了认证进程,然后衍生出外壳,该外壳的输入和输出被重新导向T C P连接,这样一来,你在自己机器上输入的任何“登录协议命令”都会通过T C P数据流得以传递,并被当作标准输入传给外壳。
1.2.7 用户数据报协议
当然,T C P / I P联网中, T C P并不是唯一的用户协议。虽然它非常适合于r l o g i n之类的应用程序,但万万不能用于N F S这样的应用程序。相反地,应该用它的兄弟协议—U D P(也叫做“用户数据报协议”)。和T C P协议一样,U D P也允许应用程序和远程机器某个特定端口上的服务取得联系,但它不能为此而建立连接。取而代之的是,可通过它向目标服务发送独立的数据包。
假设你已经通过本系的中心N F S服务器G a l o i s装入了Te X目录结构,并且打算查看一个关于如何使用L a Te X的文档。启动编辑器,先在整个文件中读取。但是,要和G a l o i s建立一条T C P连接、发送并再次发布这个文件,会花相当长的时间。相反地,如果向G a l o i s发出请求,编辑器则会把该文件分成两个U D P数据包发送,这种方式要快得多。但美中不足的是, U D P协议不会处理数据包的丢失或中断。若出现这种情况,就由N F S对此进行处理。
1.2.8 端口问题
端口可以看作是网络连接的附着点。如果一个应用程序想提供一项特定的服务,它就会把自己附着在一个端口上,等待客户机(即所谓的“在该端口上监听”)。想利用该项服务的客户机便在其本地主机上分配一个端口,并连接到远程主机的服务器端口。
端口的一个重要属性是:客户机和服务器之间的连接一旦建立,服务器的另一个副本可能就会附着在服务器端口,监听更多的服务器。也就是说,允许若干个并发登录利用同一个端口5 1 3登录到同一个主机。T C P能够把这些连接区分出来,因为它们来自不同的端口或主机。
举个例子来说,如果你两次均从E r d o s主机登录进入Q u a r k,第一个r l o g i n客户机就会采用1 0 2 3这个本地端口,第二个则采用1 0 2 2端口。然而,两者均是连接到Q u a r k上同一个5 1 3端口上的。上面的例子说明了端口可用做集合点,客户机通过它连接到另一个特定的端口,以获得特定的服务。为了让客户机知道正确的端口号,两个系统的主管必须在端口号的分配问题上
达成一致。对那些用得较广的服务来说(比如r l o g i n),其端口号就必须进行集中管理。这是由I E T F(因特网工程任务组)来完成的, I E T F定期发布一个标题为“已分配号”的R F C。该R F C对分配给“众所周知”的服务的端口号进行了说明。L i n u x采用的是一个文件,名为/ e t c / s e r v i c e s,该文件把服务名映射为端口号。值得注意的是,尽管T C P和U D P连接和端口有很大关系,但其端口号之间不会有冲突。在我们前面的例子中,这便意味着T C P端口5 1 3有别于U D P端口5 1 3。事实上,这些端口被用作两类不同服务的访问点,也就是r l o g i n(T C P)和r w h o(U D P)。
1.2.9 套接字库
在操作系统中,执行所有任务的软件和前面所讲的协议通常是内核的一部分。全世界最流行的编程接口是Berkeley Socket Library(伯克利套接字库)。其名字源于一个流行的比方,即把端口视作套接字,与端口之间的连接视作插拨。它提供了( b i n d ( 2 ) )调用,借此指定远程主机、传输协议和一个程序可以连接或监听的服务(利用连接( 2 )、监听( 2 )和接受( 2 ))。但是,
这个套接字库过于普通,不仅提供了一个基于T C P / I P套接字的类(A F I N E T套接字),还提供了一个可处理本地与远程机连接的类( A F _ U N I X类)。有的实施方案中还可以对其他类进行处理,比如X N S(X e r o x连网系统)协议和X . 2 5。
L i n u x操作系统中,套接字库是标准libc C-library 中的一部分。当前,它只提供了对A F I N E T和A F U N I X套接字的支持,但人们正在努力,提供对N o v e l l连网协议的支持,以便最后能增添更多的套接字类。
1.3 连网
由于世界各地程序员的共同协作, L i n u x才成为可能。没有如此广泛的协作, L i n u x不会有如此夺人的魅力。所以早期开发阶段,寥寥数人着手提供连网功能的工程,其艰难程度简直难以想象。U U C P实施的运作几乎从零开始,基于T C P / I P连网的工作大约开始于1 9 9 2年秋,当时Ross Biro和其他人创建的即是后来人们熟知的“ N e t - 1”。1 9 9 3年5月,R o s s中止了这项活动的实施, Fred van Kempen开始着手一项新的实现,重新编写主要的代码,这就是N e t - 2。1 9 9 2年夏,首次公开发行N e t - 2 d(作为0 . 9 9 . 1 0内核的一部分),而且从此以后, N e t - 2 d得到了几个人的维护和延伸,最值得一提的是Alan Cox。在对代码进行繁重而庞杂的调试修改之后, Alan Cox在1 . 0发布之后,把N e t - 2改成N e t - 3。N e t - 3随同S L I P(用于在串行线路上发送网络数据流)和P L I P(针对并行线)一起,为各式各样的以太网插板提供了设备驱动程序。N e t - 3中有一个T C P / I P实现,其性能像在本地网络环境中一样出色,甚至可以和商业P C软件人员开发的软件一比高下。不同的开发倾向
与此同时, F r e d继续开发他的N e t - 2 e,主要对网络层的设计进行了大量的修改。在编写代码的同时,N e t - 2 e仍然只是一个测试版软件。关于N e t - 2 e,最值得一提的是它结合了D D I,即设备驱动程序接口。D D I针对所有的连网设备和协议,提供了一个统一的访问和配置方法。然而,T C P / I P连网的另一种实现却源于Matthias Urlichs,他曾经为L i n u x和F r e e B S D编写
了一个I S D N驱动程序。这次,他在内核中集成了一部分B S D连网代码。但在可以预见的将来, N e t - 3似乎停步不前了。A l a n目前在从事A X . 2 5协议实施的开发,该协议面向“火腿无线电发烧友”。但已准备开发的内核“模块”代码仍然会为连网代码带来
新的活力,却是一个不争的事实。模块允许爱好者在运行时在内核中添加驱动程序。尽管这些不同实施都可利用同一个设备,但在内核和设备级还有明显的差异。因此,你不能通过N e t - 2 d或N e t - 3,利用公用程序对正在运行N e t - 2 e内核的系统进行配置,反之亦然。这条规则只适用于对内核内部进行处理的命令、诸如r l o g i n或t e l n e t之类的应用程序和连网命令。
虽然如此,所有这些不同的网络版本都不会让你无所适从。除非你加入了活动开发行列,否则,就不必担心自己运行的T C P / I P是什么版本。正式发布的内核总附带有一套连网工具,它们适用于内核中介绍的连网代码。
1.4 系统维护
本书从头到尾,都将为大家讲解安装和配置方面的问题。但提得更多的却是管理。设立一项服务之后,还必须使之能够运行。大多数服务的维护并不繁杂,但有的服务,比如邮件和新闻,则要求你执行常规任务,以保持系统的更新。维护系统过程中,最基本的要求是定期检查系统和应用程序前的日志文件,以了解错误情况和异常事件。一般说来,大家可能想通过编写两个管理外壳脚本来执行该任务,并从c r o n周期性地运行这两个脚本。有些主要应用程序(比如s m a i l和C - N e w s)的源代码中包含有这样的脚本。只须按照自己的要求和喜好,适当地增减。任何c r o n作业的输出结果都会寄到一个管理性质的帐号上。默认状态下,多数应用程序都会向根帐号发出错误报告、用法统计和登录文件总结。如果你经常以根的身份登录的话,这是很有用的;另一个较好的方案是把根的邮件转发到你自己的私人帐号,设立一个邮件别名。
不管你配置自己的站点时有多细心,始终会产生问题。因此,系统维护的另一层含义是接受用户的抱怨。通常情况下,人们希望通过电子邮件把自己的意思转达给作为“ B O O T”的系统管理员,但同时还需要其他的地址,以便负责某一特定维护的人员也能够看到这些邮件。举个例子来说,报怨邮件配置故障的电子邮件通常被发送给邮局管理员;而和新闻系统有关的问题则向新闻管理员或新闻组报告。寄给主机管理员的邮件应该重新定向到主机基础网络服务的负责人,如果你运行的是命名服务器,则重定向到D N S命名服务。
系统安全网络环境中,对系统进行维护的另一个不容忽视的重要原因是:避免自己的系统和用户受到攻击。管理疏忽的系统往往是那些心怀不轨的人攻击的目标。攻击手段相当多,从猜测密码到以太网偷窥。导致的恶果轻重程度不一,从恶作剧式的邮件信息到数据丢失,或者侵犯用户的隐私权。在讨论出现这些特殊情况的背景时,我们将进一步深入这一话题,同时探讨常见的防御手段。
本小节将讨论几个实例和处理系统安全的一些基本技巧。当然,我们所涉及的主题也许不够全面;它们只对一些常见问题进行了说明。因此,找本安全方面的好书来读是绝对必要的,尤其是在连网系统中。强烈推荐大家参考Simon Garfinkel 所著的《Practical UNIX S e c u r i t y》,该书由O’R e i l l y出版。还可以在w w w. o r e i l l y. c o m / c a t a l o g / p u i s /找到此书。
提起系统安全,首先得从优良的系统管理开始。这包括了检查所有重要文件和目录的属主和许可,监视特权帐号的使用情况等等。比如, C O P S程序( w w w. c e r t . o rg / f t p / t o o l s / c o p s)将检查你的文件系统和常用配置文件是否有异常许可或其他异常情况。它还聪明地采用了一个密码套件,强制性地对用户密码实施某一特定的规定,这样,密码就很难被人破译。比如
影子密码套件,它要求密码至少要有5个字母,而且还包括大、小写形式的数字和数位。
在编写供网络访问的服务时,务必确定赋予它“最低特权”,意思是除了为它设计的任务外,不允许它执行别的任务。比如,在根用户和其他特权账号的确需要s e t u i d程序时,就应该为他们赋予相应的特权。同时,如果希望服务只限于特定的应用时,不要迟疑,在特定应用允许的范围内,尽可能地对它进行严格配置。例如,如果想允许通过你自己的机器启动无盘主机,你必须为之提供T F T P(日常文件传输服务),以便它们能够从/ b o o t目录下下载基本配置文件。但是,如果在非限制条件下, T F T P允许全世界的用户都可以从你的系统中下载这些文件。如果不希望如此暴露,就必须把T F T P服务限定在/ b o o t目录下。
同样的道理,大家肯定还想过如何在自己的局域网内,限制某些主机的用户使用网络服务。
另一个不容忽视的要点是避免使用“危险”的软件。当然,我们平常所用的软件都可能是危险的,因为软件不可能总是十全十美的,难免存在错误,有些聪明人士肯定能够找出其中的漏洞,进而造访你的系统。这是常有的事儿,而且根本无法杜绝。但是,和其他程序比较起来,要求特殊权限的程序似乎更缺乏安全保障,因为任何一个漏洞都可能导致难以想象的后果。所以,在网络中安装s e t i u d程序时,一定要加倍小心,不能漏掉安装文档中的任何东西,以免无意中为“黑客”造成可乘之机。正如天有不测风云,谁也料不到未来会发生什么事情,因为无论我们多么细心,总不能排除意外的发生。最好的办法是防患于未然。首先从检查自己的系统日志文件着手,但有些“闯入者”可能很聪明,会将自己的造访痕迹清除掉。但是,像Tr i p w i r e(w w w. c e r t . o rg / f t p / t o -o l s / t r i p w i r e /)这类的工具,它们允许我们对重要的系统文件进行检查,看其中的内容或许可权是否已被篡改。Tr i p w i r e对这些文件进行各种校验和计算,并把它们保存在一个数据库内。在之后的运行过程中,将对行些校验和重新进行计算,并和数据库内保存的校验和进行比较,从而有效地防止旁人对系统数据的肆意篡改。
1.2.1 TCP/IP网络入门
T C P / I P的历史可追溯到1 9 6 9年由美国国防部高级研究计划局( D A R PA)投资进行的一个研究项目。项目的宗旨是建立一个实验性网络,名叫A R PA N E T(阿帕网)。1 9 7 5年,项目完成,网络正式投入运行。1 9 8 3年,新协议套件T C P / I P被接纳为正式标准,网络上的所有主机都必须使用它。当这个阿帕网最终进化成I n t e r n e t后(阿帕网于1 9 9 0年正式退出历史舞台),T C P / I P的应用范围已不仅仅在I n t e r n e t之内。它最引人瞩目的应用是在局域网中;但随着快速数字电话设备比如I S D N的问世,T C P / I P也昭示着拨号网络的未来。为便于下文对T C P / I P的讨论,我们在此打算以位于芬兰某地的Groucho Marx大学(G M U)为例。在这所大学中,大多数系都运行有自己的局域网( L A N)。一些系和别的系共享一个网
络,另一些系则同时运行着几个网络。所有网络相互间都是连接起来的(互联)。整个校园网通过一条高速链路,接入I n t e r n e t。
假定我们的机器挂接的是数学系的L A N,名字叫做E r d o s。要想访问物理系中名为Q u a r k的一个主机,需要执行下述命令:
$ rlogin quark.physics
Welcome to the Physics Department at GMU
(ttyq2) login:
在提示行,需要输入自己的登录名: A n d r e s,以及正确的密码。随后,便可获得在Q u a r k机器上的一个外壳,可在其中键入任何命令,就像自己亲身坐在那个系统的控制台前一样。退出这个外壳后,便可返回自己机器(本机)的提示行。刚才,我们已试验了由T C P / I P提供的一种实时的交互式应用:远程登录!登录进Q u a r k的时候,有时也想运行一个以X 11为基础的应用,比如一个函数演算程序,或者一个P o s t S c r i p t格式预览程序。要想告诉应用程序你希望将它的窗口显示在自己主机的屏
幕上,必须设置D I S P L AY环境变量:
$ export DISPLAY = e r d o s . m a t h s : 0 . 0
如果现在启动程序,它便会同你的X服务器联系,而不是同Q u a r k的服务器联系,并将所有窗口都显示在自己的屏幕上。当然,这要求你在E r d o s机器上运行X 11。这里的关键在于,T C P / I P协议允许Q u a r k和E r d o s两部主机来回传送X 11数据包,从而营造在单个系统上运行的“假象”。此时的网络永远是“透明”的。
在T C P / I P网络中,另一个非常重要的应用是N F S,亦即“网络文件系统”(Network File S y s t e m)。它是让网络“透明”的另一种形式。N F S主要用来让我们“复制”其他主机的目录结构,令其看起来就像本机的文件系统。举个例子来说,所有用户的“主目录”(H o m e D i r e c t o r y)都可存放在一台中心服务器中。从这台机器,局域网内的所有主机都复制它的目录。这样一来,用户实际可登录进入网内的任何一台机器,并发现自己处在一模一样的主目录中。类似地,可将那些要求占用大量磁盘空间的应用程序(如Te X)安装到一台机器,然后将它的目录导出至其他机器。
当然,这些仅仅是通过T C P / I P网络能够做到的一些事情的例子。事实上,用它能做到的事情几乎是无限的。接下来,我们打算就T C P / I P的工作原理做一番详细探讨。只有掌握了这方面的知识,才能对自己机器的配置方法做到心中有数。首先从硬件开始,再从它慢慢地延伸开去。
1.2.2 以太网
目前在L A N中广泛采用的硬件形式叫做E t h e r n e t,即“以太网”。其中包含了一条电缆,主机通过接头、分路器或者收发器加以连接。简单以太网的安装费用十分低廉,最常见的传输速度是1 0 M b p s(每秒1 0兆位,而非1 0兆字节),但也有逐步向1 0 0 M b p s(百兆网)过渡的趋势。以太网可划分为三种实施形式。根据采用的电缆规格,可分别称为粗缆、细缆以及双绞线网络。其中,细缆和粗缆以太网使用的都是同轴电缆,只是线缆粗细以及与主机的连接方式有所区别。细缆采用的是B N C接头,俗称T头,需要“拧”入计算机背后的一个圆柱形接头(做在网卡上)。粗缆要求在线缆上打一个小孔,然后用一个“ Vampire Ta p”连接一个收发器。随后,一个或多个主机建立与这个收发器的连接。细缆和粗缆以太网电缆分别最多可以长达2 0 0和5 0 0米,所以也叫做1 0 B a s e - 2和1 0 B a s e - 5网络。双绞线电缆则由两个铜芯线对绕合而成,类似于普通的电话线。但是,它通常要求新增额外的硬件。人们也把它叫做1 0 B a s e - T网络,其中的“T”代表Twisted pair(双绞线)。尽管在粗缆以太网中增加一个主机显得比较麻烦,但在增加主机的同时,不会造成网络的中断。而要想在细缆网络中新增一个主机,则必须让网络服务暂停几分钟,因为必须对线缆进行处理(通常需要割断),插入新的接头。大多数人都愿意选择细缆连接,因其造价相当低廉:一张网卡最多1 0 0元人民币,线缆每米1 ~ 3元,其他便不再需要任何费用。但是,假如网络的规模较大,粗缆以太网就显得更为恰当。例如,G M U大学数学系的以太网采用的便是粗缆连接,所以每次有一个主机加入网络时,不会造成整个网络的中断。
以太网技术的一个缺陷是电缆长度(布线长度)有限,所以只适用于L A N的建设。但是,利用转发器、网桥或路由器,几个独立的以太网网段也可以相互连接到一起。其中,转发器(R e p e a t e r)的作用最简单,只是在两个或更多的网段之间复制信号,使各个网段表面上似乎合并成了一个统一的以太网。
以太网工作起来就像一个总线系统,其中的一个主机可将单位长度多达1 5 0 0字节的数据包(或“帧”)发给同一以太网内的另一个主机。每个主机都分配有一个6字节的地址,这种地址需要固化到网卡内部,但也可以通过专门的软件更改。通常,我们用两位十六进制数字的一个序列来表达这种地址,每对数字之间用冒号分隔,例如a a : b b : c c : d d : e e : ff。
由一个主机发出的数据包可被网内其他所有主机“看到”。但是,只有目标主机才能实际地接收并处理它。假如两个主机同时试图发送数据,便会发生“冲突”。解决这种冲突的办法便是两个主机都取消这一次发送,各自等待随机的一小段时间,再进行发送数据包的尝试。
1.2.3 其他类型的硬件
在规格较大的网络中,比如像前例提到的G M U大学校园网,以太网通常并非唯一的一种网络硬件安装方式。在G M U大学,各个系的L A N都同校园干线连接,后者是一条光纤线缆,运行的是F D D I(光纤分布数据接口)。F D D I采用一种全然不同的形式来实现数据的传送。其基本原理是发送大量“令牌”,令其在整个网络内循环。只有某个主机拿到了一个令牌,才有权将数据送入网络(随那个令牌一道)。F D D I的主要优点在于,它可达到很高的数据传输速度,通常1 0 0 M b p s是没有问题的,而且布线长度可以高达2 0 0公里。对于远距离网络链接,通常还有另一种设备类型可供选择,它建立在一种名为X . 2 5标准的基础上。在美国,有许多所谓的“公共数据网络”(Public Data Network,P D N),比如Ty m n e t,它们提供的便是这种服务;而在德国,D a t e x - P网络提供的也是这种形式的服务。X . 2 5要求安装一种特殊的硬件,名为PA D,亦即“包汇编/反汇编器”(Packet A s s e m b l e r/D i s a s s e m b l e r)。
X . 2 5定义了一系列网络协议,由自己专用,但通常也用于连接运行T C P / I P和其他协议的网络。由于I P包不能直接映射(转换)为X . 2 5格式(反之亦然),所以其他协议的数据包只是简单地封装在X . 2 5包里面,再通过网络传输。通常,无线电爱好者利用自己的专门设备将计算机连成网络;这种技术称为“包无线电”,或称“火腿无线电”。这些爱好者理所当然也叫做“火腿一族”。火腿无线电使用的协议叫做A X . 2 5,自X . 2 5衍生而来。
另一种技术需要使用速度较慢、但价格便宜的串行线路,用于拨号访问。这要求另一种协议来进行数据包的传送,比如S L I P或P P P,后文还会详细讲述。
1.2.4 网际协议
当然,我们的网络连接并不仅仅限于一个以太网。在最理想的情况下,我们希望能任意使用一个网络,无论它运行于什么硬件形式之上,也无论它由多少个子网组成。比如,在像G M U校园网这样规模较大的网络中,通常包含了数量众多的独立以太网,它们需要以某种形式,相互连接到一起。在G M U大学,数学系运行着两个以太网。其中一个网络包含的都是快速机器,由教授和研究生使用;另一个网络的机器速度较慢,由学生平时上机使用。两个网络都同时接入F D D I校园干线。这种连接是由一个专用主机控制的,名为“网关”。网关的作用是在两个以太网和光纤线缆之间,通过复制数据包的方式,对数据包的接收和发送进行处理。举个例子来说,如果你在数学系,想访问物理系的局域网上Q u a r k,然而连网软件不能直接向Q u a r k发送数据包,因
为它们不在同一个以太网上。因此必须依靠网关来“转发”数据包。然后,网关(命名为S o p h u s)再把数据包转发到物理系的、它的同级网关N i e l s,由N i e l s把数据包转发到目标主机。
直接将数据导向远程主机的方法称作“路由”,数据包常常被称作“数据报”。为使一切简单化,数据报交换由一个独立的、与所用硬件无关的协议进行管理。这个协议就是I P,或者说“网际协议”。I P的主要好处是:从物理上把不同的网络变成了同一个网络。这就是“联网”技术,而这种“变形网”也就是i n t e r n e t(网间网)。注意,i n t e r n e t和I n t e r n e t之间,有明显的区别。后者是一个特定的、官方命名的全球化“网间网”。当然, I P同时还需要一个与硬件无关的定址方案。也就是每台主机对应一个独一无二的3 2位数,这个数便是该主机的I P地址。I P地址通常用“点分四段”的格式来表示,每一段以十进制表示其四字节中的一个字节,段间用句点分隔开。比如, Q u a r k可能有“ 0 x 9 5 4 C 0 C 0 4”这样的一个I P地址,它对应的是1 4 9 . 7 6 . 1 2 . 4,前三个字节由I n t e r N I C注册服务中心分配,标识主机接入的网络,剩下的字节用来标识该主机本身。大家还会注意到,我们现在有三种地址类型:其一是主机名,比如说Q u a r k;其二是I P地址;最后是硬件地址,比如那个6字节的以太网地址。所有这些都必须彼此相符,只有这样,在输入rlogin quark时,联网软件才能给出Q u a r k的I P地址;而且,在“网际协议”向物理系以太网投递数据时,必须找出其I P地址对应的那个以太网地址—这个地址是最容易搞
混淆的。我们不打算在此深入下去。目前,大家只需记住的一点是:寻找地址的过程叫做“主机名解析”(即把主机名映射成I P地址)和“地址解析”(把I P地址映射成硬件地址)。
1.2.5 串行线路网际协议
串行线路网际协议( S L I P ),又叫做“串行线路接口协议”。是一种允许通过拨号连接进行I P数据包传输的数据链路协议,使得计算机或局域网可以连接到因特网或其他网络中。在串行线路上,常用的标准一般是S L I P或Serial Line IP。S L I P的修正版称为C S L I P,或者压缩过的S L I P,执行I P头的压缩,以便更好地利用串行链路提供的、相对较低的带宽。另一个不同的串行链路协议是P P P,或者说“点到点传输协议”(P o i n t - t o - P o i n t)。和S L I P相比,P P P的特性更多,其中还包括一个链路协商段。但P P P领先于S L I P主要表现在没有对I P数据报的传输进行限制,而且可以发送任何一种类型的数据报。
1.2.6 传输控制协议
当然,从目前看来,从一个主机向另一个主机发送数据报只是任务之一。如果你登录到Q u a r k,还打算在E r d o s上的登录协议命令( r l o g i n)进程和Q u a r k上的外壳进程之间建立一条可靠的连接,那么,发送端必须把准备收发的信息分成若干个数据包,再由接收端把多个数据包重新组合成一个字符流。这样不仅琐碎,还会额外增加许多工作量。关于I P,不容忽视的另一点是:不可靠。假设你的以太网上有1 0名用户,他们都通过G M U的F T P服务器开始下载X F r e e 8 6的最新版本。那么所产生的通信量对网关而言,是难以应付的,因为速度太慢了,而且内存也非常的紧张。现在,如果你碰巧向Q u a r k发送一个数据包,
S o p h u s可能会出现缓冲区空间暂时短缺,导致不能转发数据包的情况。I P解决此类问题的办法是“丢弃”它。因此,这个包必定会被丢失。所以,通信主机的责任就是在出现错误的情况下,检查数据的完整性、数据是否完全,以及另行转发。然而,这是由另一个协议—T C P协议(也叫做传输控制协议)—来完成的。T C P在I P之上建立了一个可靠的服务。其本质特征是利用I P,向大家勾划了主机和远程机器上的两个进程之间的一条简单连接,这样一来,就大可不必担心你的数据实际上是沿着哪条路由,以及怎样路由的了。从本质上来说, T C P连接的原理其实就像一条“双向”管道,两个进程可以边读取,边写入。也可把它想像成“打电话”。
T C P利用连接涉及的两台主机之I P地址和各主机上的所谓“端口”号,来标识此类连接的端点。端口可被视为网络连接的“附着点”(attatchment point)。如果把T C P连接想像成“打电话”,那么I P地址就是区号(对应一个地区或城市),而端口号就是本地代号(对应各家各户的电话机)。在“r l o g i n”这一例子中,客户机应用程序( r l o g i n)打开E r d o s上的一个端口,并将它连接到Q u a r k上的5 1 3端口, r l o g i n d服务器将被告知对这个端口进行监听。这样便建立了一条T C P连接。利用这条连接, r l o g i n d执行了认证进程,然后衍生出外壳,该外壳的输入和输出被重新导向T C P连接,这样一来,你在自己机器上输入的任何“登录协议命令”都会通过T C P数据流得以传递,并被当作标准输入传给外壳。
1.2.1 TCP/IP网络入门T C P / I P的历史可追溯到1 9 6 9年由美国国防部高级研究计划局( D A R PA)投资进行的一个研究项目。项目的宗旨是建立一个实验性网络,名叫A R PA N E T(阿帕网)。1 9 7 5年,项目完成,网络正式投入运行。1 9 8 3年,新协议套件T C P / I P被接纳为正式标准,网络上的所有主机都必须使用它。当这个阿帕网最终进化成I n t e r n e t后(阿帕网于1 9 9 0年正式退出历史舞台),T C P / I P的应用范围已不仅仅在I n t e r n e t之内。它最引人瞩目的应用是在局域网中;但随着快速数字电话设备比如I S D N的问世,T C P / I P也昭示着拨号网络的未来。为便于下文对T C P / I P的讨论,我们在此打算以位于芬兰某地的Groucho Marx大学(G M U)为例。在这所大学中,大多数系都运行有自己的局域网( L A N)。一些系和别的系共享一个网
络,另一些系则同时运行着几个网络。所有网络相互间都是连接起来的(互联)。整个校园网通过一条高速链路,接入I n t e r n e t。
假定我们的机器挂接的是数学系的L A N,名字叫做E r d o s。要想访问物理系中名为Q u a r k的一个主机,需要执行下述命令:
$ rlogin quark.physics
Welcome to the Physics Department at GMU
(ttyq2) login:
在提示行,需要输入自己的登录名: A n d r e s,以及正确的密码。随后,便可获得在Q u a r k机器上的一个外壳,可在其中键入任何命令,就像自己亲身坐在那个系统的控制台前一样。退出这个外壳后,便可返回自己机器(本机)的提示行。刚才,我们已试验了由T C P / I P提供的一种实时的交互式应用:远程登录!登录进Q u a r k的时候,有时也想运行一个以X 11为基础的应用,比如一个函数演算程序,或者一个P o s t S c r i p t格式预览程序。要想告诉应用程序你希望将它的窗口显示在自己主机的屏
幕上,必须设置D I S P L AY环境变量:
$ export DISPLAY = e r d o s . m a t h s : 0 . 0
如果现在启动程序,它便会同你的X服务器联系,而不是同Q u a r k的服务器联系,并将所有窗口都显示在自己的屏幕上。当然,这要求你在E r d o s机器上运行X 11。这里的关键在于,T C P / I P协议允许Q u a r k和E r d o s两部主机来回传送X 11数据包,从而营造在单个系统上运行的“假象”。此时的网络永远是“透明”的。
在T C P / I P网络中,另一个非常重要的应用是N F S,亦即“网络文件系统”(Network File S y s t e m)。它是让网络“透明”的另一种形式。N F S主要用来让我们“复制”其他主机的目录结构,令其看起来就像本机的文件系统。举个例子来说,所有用户的“主目录”(H o m e D i r e c t o r y)都可存放在一台中心服务器中。从这台机器,局域网内的所有主机都复制它的目录。这样一来,用户实际可登录进入网内的任何一台机器,并发现自己处在一模一样的主目录中。类似地,可将那些要求占用大量磁盘空间的应用程序(如Te X)安装到一台机器,然后将它的目录导出至其他机器。
当然,这些仅仅是通过T C P / I P网络能够做到的一些事情的例子。事实上,用它能做到的事情几乎是无限的。接下来,我们打算就T C P / I P的工作原理做一番详细探讨。只有掌握了这方面的知识,才能对自己机器的配置方法做到心中有数。首先从硬件开始,再从它慢慢地延伸开去。
1.2.2 以太网
目前在L A N中广泛采用的硬件形式叫做E t h e r n e t,即“以太网”。其中包含了一条电缆,主机通过接头、分路器或者收发器加以连接。简单以太网的安装费用十分低廉,最常见的传输速度是1 0 M b p s(每秒1 0兆位,而非1 0兆字节),但也有逐步向1 0 0 M b p s(百兆网)过渡的趋势。以太网可划分为三种实施形式。根据采用的电缆规格,可分别称为粗缆、细缆以及双绞线网络。其中,细缆和粗缆以太网使用的都是同轴电缆,只是线缆粗细以及与主机的连接方式有所区别。细缆采用的是B N C接头,俗称T头,需要“拧”入计算机背后的一个圆柱形接头(做在网卡上)。粗缆要求在线缆上打一个小孔,然后用一个“ Vampire Ta p”连接一个收发器。随后,一个或多个主机建立与这个收发器的连接。细缆和粗缆以太网电缆分别最多可以长达2 0 0和5 0 0米,所以也叫做1 0 B a s e - 2和1 0 B a s e - 5网络。双绞线电缆则由两个铜芯线对绕合而成,类似于普通的电话线。但是,它通常要求新增额外的硬件。人们也把它叫做1 0 B a s e - T网络,其中的“T”代表Twisted pair(双绞线)。尽管在粗缆以太网中增加一个主机显得比较麻烦,但在增加主机的同时,不会造成网络的中断。而要想在细缆网络中新增一个主机,则必须让网络服务暂停几分钟,因为必须对线缆进行处理(通常需要割断),插入新的接头。大多数人都愿意选择细缆连接,因其造价相当低廉:一张网卡最多1 0 0元人民币,线缆每米1 ~ 3元,其他便不再需要任何费用。但是,假如网络的规模较大,粗缆以太网就显得更为恰当。例如,G M U大学数学系的以太网采用的便是粗缆连接,所以每次有一个主机加入网络时,不会造成整个网络的中断。