unix网络编程_部分11.pdf
含标题列表的表格中,它的标题列表项用来访问在整个网页中显示的标题。只要在表格里点击一个标题列表项,就会移到相应标题的文本中。被指向的文本称为命名元素。可以使用 N A M E标记符为指定文本创建一个标签,它的作用就相当于该文本的名字。这样,在创建 H R E F锚标记符时,就可以使用该名字代表相应的文本。除了可以是文本外,命名的元素还可以是图像,允许你跳到文本中的图像。要创建一个命名元素,就使用 N A M E锚标记符,后面输入命名元素的名字;然后,接着输入命名元素代表的文本或图像,采用 标记符结束。在下面的示例中,元素的名字为 m y n e w s t a g,它显示的文本是“Recipe Site News”:Recipe Site News用一个带有“#”号的H R E F标记符,可以访问一个命名元素代表的文本或图片。其中,“#”号要放在命名元素的前面。在下面的示例中,网页中显示“Recent News”文本,当用户点击该文本时,就会显示在网页中采用 m y n e w s t a g标记的元素。这个元素可以是一个标题、一幅图片或任何文本段。Recent news如前所述,命名元素用来使用户转到网页不同的标题中。例如,在一个标题列表中,包含了文本中每个命名标题的H R E F项,点击各个列表项,就能跳到相应的标题处。Heading text这种情况下,网页中相应的标题必须采用 N A M E标记符命名,并确保名字的匹配。下面的示例创建了一个标题,当点击它时,就能跳到一个名为 We l c o m e t a g的元素处。About My Recipe Site下面的例子示出了一个名为 w e l c o m e t a g的元素,它所代表的是一个标题。点击前一个示例中的锚时,要跳到的地方就是这个 w e l c o m e t a g元素所代表的标题。About My Recipe Site你可以用I D标记符创建命名元素,这个I D标记符可以放在一个标题标记符内,如下所示:Heading text14.5.3 We b页面示例使用上面已讨论过的几个代码,就可以创建 We b页面。通过一个简单的文本编辑器,就可以输入H T M L代码和文本。H T M L文本文件可以用任何名字命名,但其扩展名必须是.h t m l。通常,一个We b网站是由许多分布在几个子目录下的文件构成的。在下面的示例中,有两个分别名为r e c i p e.h t m l和i n d e x.h t m l的We b页面,其中 r e c i p e.h t m l是网站主目录下的文件,而i n d e x.h t m l是位于网站主目录下的 d e s s e r t s子目录中的网页文件。在 r e c i p e.h t m l中有一个入口,可以调用d e s s e r t s/i n d e x.h t m l文件。通常每个子目录都有它自己的 i n d e x.h t m l文件,用来列出所有到自己目录及其子目录下的网页的链接。R e c i p e.h t m l使用了几个H R E F链接标记符,用来访问本地文件和其他站点上的 We b页面,甚至还可以是用来发送邮件的U R L。下面示例中给出的链接,显示电子邮件地址“c h r i s m y g a m e s.c o m”,并且当用户点击它时,将启动该系统的邮件编辑器,提示用户输入和发送信息。H R E F自动指定要信件发送的电子邮件地址。文字段可以是任何文本,不一定要第14章 World Wide Web 203下载求是一个电子邮件地址。H R E F=m a i lt o:/c h r i s m y g a m e s.c o m c h r i s m y g a m e s.c o m 在该文件中,标记符用来显示一个字体较大的标题;标记符用来将后面的文本格式化成段落;标记符显示字体稍小的子标题;标记符用来在页面上画线。带有U R L的锚标记符,嵌入到段落和标题中。R e c i p e.h t m l文件中所有的标题都是一个锚。锚放在标题标记符之内,可以允许用户点击标题上的任何地方。许多锚都指向本地文件,例如就指向本地d e s s e r t s子目录中的i n d e x.h t m l文件。最后一个标题指向远程站点上的一个We b页面。d e s s e r t s/i n d e x.h t m l文件显示一个编号式列表,而不是标题。在列表中的每一项都包含一个锚,这有点类似于r e c i p e.h t m l文件中的标题,但它的每一项是经过编号了的。recipe htmld e s s e r t s/i n d e x.h t m l204第三部分 网络及Internet工具下载图1 4-7示出了r e c i p e.h t m l文件在We b浏览器的显示内容。请注意其中划线的文本,代表它们是一个锚,可以链接到另外的 We b资源。图1 4-8示出了d e s s e r t s/i n d e x.h t m l文件在We b浏览器的显示内容。它显示的是一个编号式列表,在每一个列表项前都加上了一个编号。它的每一项文本也都划了线,表示也是一个用来访问其他 We b资源的锚。图14-7 recipe.html文件的显示内容图14-8 desserts/index.html文件的显示内容14.5.4 图像和声音通过I M G标记符,可以在We b页面上显示图像。图像可以是各种以 g i f或j p e g等文件格式存储的照片、图形或画面,它们通常与网页放在同一个目录上。在 I M G标记内,使用S R C标记符指定图像文件名。如果图像文件在另一个目录中,还需要指出它的路径名。一个I M G标记的语法格式如下:例如,如果需要显示一个名为c a k e s.g i f的图片,就采用如下代码:第14章 World Wide Web 205下载I M G标记符用来在网页内显示图片,如果你想使用单独的图片显示程序显示图片,那就要用H R E F标记符。实际上,H R E F标记符将图像文件与显示程序链接起来,如下所示:This is a picture of me 还可以使用H R E F标记符,将一个声音或视频文件与一个播放程序链接起来:Satisfaction indicator 图像经常用在锚定语句中,供用户点击以访问其他 We b资源。这种情况下,需要在 H R E F标记项中的显示文本部分输入一个 I M G标记项。这样,在浏览器中将显示 I M G标记项中指定的图像,只要用户点击该图像,就链接到 H R E F标记项中指定的U R L。在下面的示例中,在浏览器中显示f o o d 1.g i f文件代表的图像,当用户点击它时就启动对 w e l c o m e文件的访问:在接下来给出的示例中,在一个锚中使用了图像和文本,在浏览器中用户既可以通过点击这个锚中的图像,也可以通过点击这个锚中的文本,访问所链接的 d e s s e r t s/i n d e x.h t m l文件:Dessert Recipes 下面给出的r e c p i c.h t m l文件,在前面r e c i p e.h t m l文件的基础上增加了图像。文件的内容如下:图1 4-9示出了r e c p i c.h t m l文件在We b浏览器里的显示内容。值得注意的是,标记符的作用是开始一个新的行或输入一个空行。在最后一个标题中,它用来将同一个锚中的图像和文本放在不同的行中。另外,文中的 标记符用来将第一个标题采用斜体字显示。206第三部分 网络及Internet工具下载图14-9 recpic.html文件的显示内容14.5.5 表单和公共网关接口We b页面最初只是用来显示文本和图像,并不打算用来完成交互式任务,例如接收用户发来的数据,然后处理,并显示结果。H T M L标记符只是用来格式化操作,就像一个字处理器一样,没有太多的计算功能。不过。随着 We b应用的发展,We b页面逐渐成为收集用户信息的理想接口,例如,在线购物和用户注册等一些应用的需求。虽然 We b页面本身不能完成数据处理功能,但它可以收集用户发来的数据,然后将它转交给其他的数据处理程序;待数据处理程序完成处理后,就将结果在另一个网页上显示出来。上述用来处理数据并与We b页面进行交互的程序就是公共网关接口(Gommon Gateway Interface,C G I)。在使用浏览器显示某个站点上的网页时,相关的网页可以通过 C G I程序向用户提供实时的信息,或者处理由用户发来的信息。一个C G I程序可以是一个Unix shell脚本或者一个执行程序。表单(f o r m)是一种H T M L元素,可以接收用户填写的数据,并将数据传送给 C G I或另一个网页。H T M L支持各种各样的表单,其中有简单的文本框,可以供用户输入一行文本;单选和复选框可供用户在多个选项中进行选择;下拉菜单也能供用户进行选择,通常用来访问其他网页;文本区域框的操作有点像小型的编辑器,可供用户输入多个文本行,编辑文本,还可以使用滚动条移动文本。最简单的表单是输入表单,它们以 标记符开头,可以使用T Y P E标识符指定表单的类型,其中包括下面一些类型:t e x t(文本)、c h e c k b o x(复选框)、r a d i o(单选)、s u b m i t(提交)、第14章 World Wide Web 207下载r e s e t(重置)。还可以使用N A M E标识符命名表单,用以识别某个特定的表单。下面给出了一个简单的文本输入表单,它的名字为cook,类型是text,文本“Your Name”将显示在输入框的左边。Your Namec h e c k b o x用来显示一个复选框,通常将几个复选框链接在一起作为一个元素。这时就得给每一个复选框起同样的名字。在下面的示例中,给出了一个名为 f a v d e r s的网页元素,它由四个c h e c k b o x组成,每一个c h e c k b o x的定义中都有一个I N P U T标记符,它们的名字都取为f a v d e r s。这四个c h e c k b o x的显示标签分别为“C a k e”、“Ice Cream”、“P i e”“Rice cakes”(如图1 4-1 0所示)。r a d i o按钮也按同样的方式进行操作,但是它们只能被选中一个。如果用户选择另一个,就会关闭原来一个的选择。它们的类型为r a d i o。在下面的示例中,给出了一个包括两个r a d i o按钮的r a d i o元素。该元素叫做a n s w,两个r a d i o按钮的显示标签分别为“Ye s”、“N o”(见图1 4-1 0)。Yes No下拉菜单通过S E L E C T标记符实现,它的结尾标记符是。菜单中的选项采用标记符,在该标记内可以使用 N A M E标识为菜单项指定一个名字。每一个菜单显示的文本放在 O P T I O N标记符后。下面的示例给出了一个下拉菜单,它有三个选项,分别为“D e s s e r t s”、“P a s t a s”和“French Pastries”(见图1 4-1 0)。图1 4-1 0中示出了r e c f o r m.h t m l文件在We b浏览器中的显示内容。请注意其中的表格和缺省文本,S u b m i t和R e s e t按钮放在屏幕底端,B R和H R用来分隔表单。图14-10 recform.html文件的显示内容208第三部分 网络及Internet工具下载S E L E C TOPTION NAME=rec1D e s s e r t sOPTION NAME=rec2P a s t a sOPTOIN NAME=rec3French Pastries/S E L E C T文本区域表单通过 T E X TA R E A标记符实现,它的结尾标记符是,并通过R O W选项指定它在网页上显示的行数,通过 C O L S选项指定列数。在T E X TA R E A标记后,可以输入缺省的文本。缺省文本在最初打开网页时显示在文本区域框里,如果用户不作任何改变,就作为用户输入的内容。缺省文本被修改后,可以使用 R e s e t按钮复原。文本区域框具有滚动条,所以输入文本时不受显示区域的限制。在输入文本时,可以使用删除、插入、剪切、粘贴等编辑功能。在下面给出的文本区域框示例中,它的名字为 c o m 1,显示的区域大小为 7行3 0列,缺省文本为“These are great recipes,really”:These are great recipes,really下面给出一个包括了上面讨论的表单的代码文件,名为 r e c f o r m.h t m l:r e c f o r m.h t m l:第14章 World Wide Web 209下载210第三部分 网络及Internet工具下载下载第1 5章T C P/I P远程访问操作远程访问命令通过网络进行操作,使用这些命令可以完成远程拷贝文件或执行 U n i x命令、远程登录等功能。这些远程访问命令就在你自己的 s h e l l中运行,然后在远程系统上完成所需要的操作,而不需要通过另外的界面(如 F T P、G o p h e r等)执行。U n i x系统可以使用两种类型的网络连接,每种都有自己的协议,分别为 T C P/I P和U U C P。用于I n t e r n e t上的T C P/I P协议也可以用在本地网上,采用 T C P/I P的网络通常具有专用的连接,例如以太网连接和通过 S L I P或P P P进行的远程拨号连接。U U C P是一种可选的协议,仅适用于U n i x系统之间的网络通信。它是一种比较老的协议,是针对还没有连上网络的各个系统之间的互操作而设计出来的。T C P/I P和U U C P分别都有自已的一套远程访问命令,各自都有优缺点。T C P/I P的远程访问命令就叫做远程命令,或者简单地称为 r命令。通用命令名称前加上字母“r”就表示远程操作命令,例如 r c p就是用于从一个系统到另一个系统远程拷贝文件的一个命令。r命令具有实时性的优点,通过它们可以立即完成在远程系统上拷贝文件和执行命令的操作;同时,它们使用起来也很方便,可以容易地将一个系统上的整个目录拷贝到另一个系统上。不过,它们只能用在T C P/I P网络中的系统。T C P/I P网络通信软件包中采用的远程访问命令,最先是由美国加州大学伯克利分校为A R PA N E T开发出来的。所有这些命令都以字母 r开头,表示为远程操作命令。使用这些命令,除了可以进行远程拷贝文件等操作外,还可以获得远程系统上的一些信息,例如当前登录远程系统的用户信息。如果要求输入系统地址时,这些远程命令可以使用域名地址。表1 5-1中列出了各种T C P/I P远程访问命令。表15-1 TCP/IP远程访问命令命令作用r w h o显示网络中系统上当前的所有用户r u p t i m e显示网络中每一个系统的信息p i n g检测一个系统是否与网络连接上了r l o g i n用于远程登录到另一个系统上。它带有一个-l选项,用来指定登录名r c p用于两个系统之间拷贝文件。如果在文件名前没有给出系统名,就默认为本地系统。如果在r c p命令中带上-r选项,就可以用来拷贝目录r s h用来在远程系统上执行一个U n i x命令许多T C P/I P命令都有对应的 I n t e r n e t应用程序,例如用于远程登录系统的 T C P/I P命令r l o g i n,就类似于Te l n e t程序;用于远程拷贝文件的 r c p命令的功能,就类似于 F T P程序。实际上,T C P/I P命令就是这些I n t e r n e t应用程序的先驱。各种 T C P/I P命令的使用难易程度不同。你可以很容易地访问自己在另一个 U n i x系统上拥有的帐号,还能控制其他用户对你的帐号的访第四部分远 程 访 问问,对不同的用户授予不同的访问权限。15.1 网络信息检测命令:rwho、ruptime和ping有几个T C P/I P命令专门用来获取网络中系统的信息,你可以使用它们来了解另一个系统上的用户信息,以及某一个系统的当前运行情况。例如,r w h o命令的功能有点类似于 w h o命令,它显示当前网络中每一个系统上的用户,如下所示:r u p t i m e命令用来显示网络中每一个系统的一些信息,包括系统是处于关闭状态还是开启状态、开启或关闭状态的持续时间、系统上当前的用户数,以及系统在最后 5、1 0和1 5分钟时的平均负载。如下所示:p i n g命令用来检测一个系统是否连接上了网络,该命令中的参数就是你要检测的系统名称。在下面的示例中,检测m y g a m e系统是否开启并与网络连接上了:如果你正在检测的系统已经关闭了,那就得到下面示例中那样的响应,在这个例子中m y t r a i n系统已经关闭,与网络断开了:15.2 远程访问权限文件:.rhosts.r h o s t s文件用来设置一个帐号的访问权限,以控制那些使用 T C P/I P命令的用户的访问。它是用户在自己帐号中创建的一个文件,可以使用像 Vi那样的标准文本编辑器进行编辑。它必须放在用户的h o m e目录中。在下面的示例中,显示一个.r h o s t s文件的内容:$cat.rhostsmytrain chris mygame justin采用.r h o s t s文件是一种简便的方法,可以使其他用户在不知道你的密码情况下访问你的帐号。如果需要禁止某个用户的访问,只要在你的.r h o s t s文件中删除该用户的系统名和登录名就行了。只要一个用户的登录名及系统名在你的.r h o s t s文件中,那他就可以无需知道密码的情况下访问该帐号。当然,对于远程登录操作就不需要进行这种访问。但是,对于远程拷贝文件或远程执行U n i x命令等一类的远程命令,就需要设置.r h o s t s文件。这种.r h o s t s文件向你提供了一种简便的方法,即可以使用 T C P/I P命令直接访问你在其他系统上拥有的帐号,而无需首先进行登录。这样,远程系统上的帐号就相当于你当前在本地系统上登录帐号的延伸。这种情况下,就可以使用 r c p命令在两个目录之间拷贝任何文件,而无需管它是放在哪一个帐号上;也可以在其中的任何一个帐号上执行 U n i x命令。212第四部分 远 程 访 问下载15.3 远程登录命令:rlogin如果你在一个网络中的不同系统上都有帐号,或者有权访问另一个系统上别人的帐号,那么就可以首先登录到其中一个系统上的帐号,然后再远程登录到另一个系统上的帐号。使用r l o g i n命令,可以完成上述远程登录操作。r l o g i n命令中的参数就是需要登录的系统名称。r l o g i n登录程序与通常的登录程序有点不同,它不要求用户输入登录名,因为它假定远程系统上的登录名与本地系统上的登录名是一样的。执行 r l o g i n命令后,屏幕上立即出现要求用户输入密码的提示,输入密码正确后就可以登录进入远程系统上的帐号里。r l o g i n之所以假定远程系统上的登录名与本地系统上的登录名一样,是因为大多数用户对不同系统上属于自己的账号都设置同一个登录名。不过,有时候远程系统上的登录名与本地系统上的登录名并不一样;因此,r l o g i n命令设有一个-l选项,允许用户登录具有不同登录名的远程系统上的帐号。如下所示:$rlogin system-name-l login-name在下面的示例中,用户使用j u s t i n登录名登录m y g a m e系统:$rlogin mygame-l justinp a s s w o r d$一旦进入了远程系统,就可以执行任何 U n i x命令。如果要退出,可以使用 e x i t、C t r l-d、.、或 l o g o u t(C-s h e l l)命令。如前所述,当你远程登录到另一个系统上的帐号时,系统会读取远程帐号上的.r h o s t s文件。如果在.r h o s t s文件中已经设置了你的登录名及其系统名,那么在你使用 r l o g i n命令进行远程登录时,就不需要输入密码了。如下所示:$rlogin mygame-l justin$15.4 远程文件拷贝命令:rcp使用r c p命令,可以在本地系统和远程系统之间拷贝文件。r c p命令类似于c p命令,但它用于远程文件传送。它要求远程系统上的.r h o s t s文件中设有本地系统名及用户的登录名。r c p命令中的参数包括源文件名和目标文件名,另外还需要在远程系统上的文件名前加上系统名称,中间用“:”分隔:$rcp 系统名:源文件名系统名:目标文件名用户可以从远程系统上拷贝一个文件到本地系统上,或者从本地系统上拷贝一个文件到远程系统上。如果从本地系统上拷贝一个文件到远程系统,则目标文件就是远程文件,在它前面就必须指明系统名;而源文件是本地文件,就不用指明它的系统名。其命令格式如下:$rcp 源文件名远程系统名:目标文件名在下面的示例中,用户从本地系统上拷贝一个叫 w e a t h e r t的文件到远程系统 m y g a m e上,目标文件改名为m o n d a y:$rcp weather mygame:monday如果从远程系统上拷贝一个文件到本地系统上,源文件就是远程文件,在它前面要指明第15章 TCP/IP远程访问操作213下载系统名;而目标文件是本地文件,就不用指明它的系统名。其命令格式如下:$rcp 远程系统名:源文件名目标文件名在下面的例子中,用户从 m y g a m e远程系统上拷贝w e d n e s d a y文件到本地系统上,并将目标文件名改为t o d a y:$rcp mygame:wednesday today使用r c p命令还可以拷贝整个目录,只要在 r c p命令中带上-r选项就能在两个系统之间拷贝一个目录及其子目录下的所有文件。与 c p命令类似,r c p命令中也要指出源目录和目标目录。另外,还要在远程目录的名称前加上系统名,中间用“:”分隔。如果从本地系统上拷贝一个目录到远程系统上,那目标目录就是远程目录,必须在它的前面加上远程系统名,其命令格式如下:$rcp-r 源目录远程系统名:目标目录在下面给出的例子中,用户将本地目录 s e a s o n w i n s拷贝到m y g a m e远程系统上的o l d w i n s目录:$rcp-r s e a s o n w i n sm y g a m e:o l d w i n s如果将远程系统上的一个目录拷贝到本地系统上,源目录是远程目录,需要在它的前面加上远程系统名,命令格式如下:$rcp-r远程系统名:源目录目标目录在下面的例子中,用户将mygame 远程系统上的b i r t h d a y s目录拷贝到本地系统上的p a r t y目录中:$rcp -r mygame:birthdays party有时候,用户需要在 r c p命令中使用一些特殊的字符,例如在文件名中采用“*”通配符或者使用“.”代表当前目录。这些特殊字符一般用于本地系统,如果要用于远程系统就必须在它们前面使用一种符号引注。在下面的例子中,将所有 m y g a m e系统上带.c扩展名的文件拷贝到本地系统上的当前目录中。其中,用于远程系统的“*”前面用反斜杠引注了,而用于本地系统的“.”就无需引注:$rcp mygame:*.c .在下面给出的另一个例子中,将本地系统上的 r e p o r t s目录拷贝到远程系统上的当前目录中。其中用来表示远程系统上当前目录的“.”,前面用了反斜杠引注:$rcp -r reports mygame:.15.5 远程执行命令:rsh使用r s h命令,可以在远程系统上执行一个 U n i x命令,但结果显示在本地系统上。这种情况下,你的系统名和登录名就必须设在远程系统上的.r h o s t s文件中。r s h命令带两个参数,一个是远程系统名,另一个是U n i x命令,其格式如下:$rsh 远程系统名U n i x命令在下面给出的例子中,通过 r s h命令在m y g a m e远程系统上执行l s命令,以列出m y g a m e系统上/h o m e/j u s t i n目录中的文件:$rsh mygame ls /home/justin214第四部分 远 程 访 问下载如前所述,一般情况下特殊字符都用于本地系统,除非用一种符号引注了。这同样适用于命令行中的重定向符或管道命令符。在下面的例子中,列出远程系统上的文件,并将它们送给本地系统的标准输出。其中的重定向符“”用于本地系统,表示将远程文件列表送到本地系统的m y f i l e s文件中:$rsh mygame ls /home/justin myfiles如果对重定向符加上引注,就可以在远程系统上进行重定向操作。在下面的示例中,重定向符“”被一对单引号引注了,所以它是用在远程系统上。在这个例子中,l s命令产生的文件列表结果,被重定向到远程系统上的 m y f i l e s文件中:$rsh mygame ls /home/justin myfiles对于管道命令符,情况也一样。在下面的例子中,第一个命令将文件列表送到本地系统上的打印机,而第二个命令是将文件列表送到远程系统上的打印机。如下所示:$rsh mygame ls /home/justin|lp$rsh mygame ls /home/justin|lp第15章 TCP/IP远程访问操作215下载下载第1 6章U U C P我们在前面一章中已经讲到,U n i x提供了一些命令用于在两个系统之间进行远程访问,使用这些命令可以完成远程拷贝文件或执行 U n i x命令、远程登录等操作。这些远程访问命令就在你自己的s h e l l中运行,然后在远程系统上完成所需要的操作,而不需要通过另外的界面(如F T P、G o p h e r等)执行。U n i x系统可以使用两种类型的网络连接,每种都有自己的协议,分别为T C P/I P和U U C P。用于I n t e r n e t上的T C P/I P协议也可以用在本地网上,这已经在前一章中讨论过了。在本章中,我们将主要讨论 U n i x系统中的另一种可选的协议,即U U C P。U U C P仅用于U n i x系统之间的网络通信。它是一种比较老的协议,针对还没有连上网络的各个系统之间的互操作而设计出来的。采用 U U C P,一个系统可以在预定的时间里通过电话线与另一个系统相连,一次可处理一批通信任务。U U C P特别适用于这样的应用:与某一个特定的系统直接建立连接,然后传递数据,最后断开连接。通过 U U C P,可以在两个U n i x系统之间进行m o d e m-t o-m o d e m方式的通信。在前面关于电子邮件的章节中,我们已经讨论了如何通过网络将信件发送给其他系统上的用户。按照同样的道理,也可以通过网络将命令发送到其他系统上执行。U U C P采用批处理方式进行操作,它将本地系统上用户发出的远程拷贝文件或远程执行命令等一批请求放在一起,在建立连接后一次发送给远程系统。远程系统接受到这批请求后,就执行它们,然后再建立另一个连接,将结果传送回本地系统。显然,这种采用U U C P进行的远程操作是非常慢的,因为用户不但要等待本地系统将请求发送出去,还要更要耐心地等待远程系统的答复。U U C P是“Unix to Unix Communications Package”的缩写,它是由AT&T公司在System VU n i x版本中开发的一种通信软件包。U U C P提供了一套用于远程操作的命令,例如用来在两个系统之间拷贝文件的u u c p命令。U U C P是标准网络软件包B N U(基本网络组件)中的一部分,而B N U已经成为了System V Unix中的标准组件,同时在一些最新的 BSD Unix版本中也包含了B N U。除了U U C P以外,B N U中还包含有另一个用于远程登录的程序 c u,它不仅可以通过网络,而且还能从终端上进行远程登录。U U C P采用点对点通信方式,这就好像是使用各个系统中的邮件功能实现网络通信的。当你要将一个U U C P命令发送给一个指定系统时,该命令就在排队等待,与发送给同一系统的其他命令收集在一起,然后才开始投递给指定系统。指定系统接受到请示并执行完毕后,就将结果邮回到你的系统。整个过程依赖于网络中的每一个系统与其他系统之间收发命令的操作,因此网络的可靠性取决于它最弱的一个节点。另一方面,它不要求特殊的结构,只要具有类似收发邮件的功能就行了。许多U U C P命令都与T C P/I P的远程访问命令相似,例如,u u c p就像r c p,u u x类似于r s h。U U C P和T C P/I P是大多数U n i x系统使用的两种主要的网络通信协议,在 System V Unix的早期版本中只包含有U U C P,而在BSD Unix的早期版本中却仅使用T C P/I P。16.1 UUCP的寻址方式U U C P网络通常采用路径寻址方式,这种寻址方式与 U U C P的点对点通信方式是相适应的。在U U C P网络中,一个系统与其他地方的某个系统相连,而被连接的这个系统又可能与另外的一些系统相连,并不是每个系统之间都直接相连。通过中间系统的转发,你可以向网络中的任何一个远端系统发送信件。例如,如果 m y t r a i n系统与s t a n系统相连,而s t a n系统又同时与b e l l系统相连了,那么 m y t r a i n系统上的用户就可以经过 s t a n系统来访问b e l l系统。不过,这种通信并不是实时进行的,所有的信件按照成批等待方式进行发送。在路径寻址方式中,系统地址放在用户登录名的前面,中间用一个“!”分隔,格式如下:系统名!登录名例如,下面的命令采用m a i l x程序向m y t r a i n系统上的d y l a n用户发送一封信件:$mailx mytrain!dylan mydata对于C-s h e l l,因为在命令行中的字符“!”已用来代表历史命令,所以在上述路径寻址方式中使用“!”时,需要进行转义,即在它前面加上一个“”。如下所示:系统名!登录名mailx mytrain!dylan mydata在U U C P网络中,如果你要访问远端系统,可能需要经过多个中间系统的转发才能实现。在路径寻址方式中,需要在路径中指出中间系统的地址,将各个中间系统的名称依次放在目标系统名称的前面,中间用“!”分隔。如图1 6-1所示的网络中,如果你在 m y t r a i n系统上向b e l l系统上的a l e i n a用户发送信件,则路径地址应写为 s t a n!b e l l!a l e i n a;如果你要将信件发送给在l a r i s a系统上的r o s e用户,那么就必须在路径中指出三个中间系统。在下面给出的命令示例中,第一个命令首先将信件发送给 s t a n系统,然后由s t a n系统转发给b e l l系统上的a l e i n a;在第二个命令中,信件首先发送给 l i l a c,然后转发给s f,再由s f将信件转发给r o s e系统上的l a r i s a。如下所示:$mailx stan!bell!aleina mydata$mailx lilac!sf!rose!larisa mydata图16-1 UUCP网络中的路径寻址示意有时候在U U C P网络中的两个系统之间存在多条路径,每条路径的长度和速度并不一样,有些很慢而有些却很快,因此选择一条合适的路径就比较重要。对于图 1 6-2所示网络,下面给出了两个命令,分别列出了两条不同的路径到同一个目标系统,其中第一个命令中的路径要经过三个中间系统,而第二个命令中的路径只要经过一个中间系统:$mailx lilac!mac!gameplace!rose!larisa mydata第16章 UUCP 217下载aleinabellroselarisamytrainstanstan!bell!aleinalilaclilac!sf!rose!larisasf218第四部分 远 程 访 问下载$mailx sf!rose!larisa syslist$uuname|lpr$uuname|grep mytrainm y t r a i n$如果要显示本地系统的信息,可以使用 u n a m e(前面只有一个u)命令。16.3 UUCP连接管理命令:uucico和uuxqtu u c i c o程序用来处理系统中所有的 U U C P通信,它是一个守护进程,将每一个 U U C P传输保存在/usr/lib/uucp/uucppublic目录中。u u x q t程序则用来解释和执行每一个传输中指定的操作。u u c i c o和u u x q t都属于系统管理操作,只能由r o o t用户执行。如果是r o o t用户,就可以使用 u u c i c o与另一个系统建立连接,连接成功后就能将 U U C P命第16章 UUCP 219下载令请求发送出去,然后接受答复并将另外的 U U C U请求发送给其他系统,其语法格式如下:uucico 选项远程登录名其中有两个有用的选项,一个是-r,用来为重新拨号连接设置一个自动等待时间;另一个是带上数字9的-x选项,用来设置调试状态,以便用户能看到 u u c i c o命令的执行过程。在下面的示例中,r o o t用户想建立一个与r o s e系统的连接:#uucico -r -x 9 rose16.4 UUCP命令U U C P命令只用于U U C P网络,通过U U C P命令用户不但可以访问本地系统上的文件,也可以访问另一个U n i x系统上的文件。不过,正如本地的命令一样,U U C P命令在远程系统上也要受到权限限制,即只能访问那些远程系统用户允许访问的文件和目录。主要有四个U U C P命令,分别是uuto、u u p i c k、u u c p和u u x。其中u u t o命令用来向其他系统发送文件,u u p i c k命令用来接受文件,这两个命令可用于发送和接受大型的文件。u u c p用来从一个系统拷贝文件到另一个系统,u u x命令用来在另一个系统上远程执行 U n i x命令。16.5 文件传输命令:uuto和uupick如上所述,uupick 和u u t o这两个命令分别用来收发文件,它们的操作有点像 m a i l x命令。u u t o命令是按照批处理方式操作的,你的请求必须首先与其他的请求一起排队等待,只有当它位于队列前面时,才开始被发送出去。如果在等待发送的时间里,你又修改了需要发送的文件,那就将已修改的文件发送出去。为了避免这种情况,可以在 u u t o命令中带上-p选项,这样系统就立即将当前要发送的文件拷贝到 s p o o l目录中,发送时就把这份文件拷贝发送出去。这种情况下,你在发送之前对原始文件的修改,就不会影响到真正发送出去的文件。另外,u u t o命令还设有一个-m选项,用来发送文件时通知用户。表 1 6-1中列出了u u t o命令的选项。它的语法格式如下:下面给出的命令,将m y d a t a文件发送到g a m e p l a c e系统上的m a r y l o u:$uuto mydata gameplace!mar