grow的过去分词是什么:应用层

来源:百度文库 编辑:偶看新闻 时间:2024/03/28 17:34:17

第9章 应用层

在前八章我们已经详细地讨论了计算机网络是怎样提供了完善的通信服务,但是我们没有讨论这些通信服务是如何提供给应用进程来使用。本章就是讨论各种应用进程通过什么样的应用层协议来使用网络所提供的这些通信服务。

下面首先讨论所有应用协议都要使用的域名系统。在介绍了文件传送协议和远程登录协议后,就讨论用户最常用的因特网电子邮件。然后重点介绍万维网的工作原理及其主要协议。由于万维网的出现使因特网得到了飞速的发展,因此万维网在本章中占有大量的篇幅,同时也是本章的重点。对应用层更深入的学习可参阅[COME00]、[COME97]、[TANF96]、[STAL00]及有关标准。

9.1 域名系统DNS

9.1.1 域名系统概述

许多应用层软件经常直接使用域名系统DNS(Domain Name System),但计算机的用户只是间接而不是直接使用域名系统。

用户与因特网上某个主机通信时,显然不愿意使用很难记忆的长达32位二进制主机地址。即使是点分十进制IP地址也并不太容易记忆。相反,大家愿意使用某种易于记忆的主机名字,早在ARPANET时代,整个网络上只有数百台计算机。那时使用一个叫做hosts的文化,列出所有主机名字和相应的IP地址。只要用户输入一个主机名字,计算机就可很快地将这个主机名字转换成机器能够识别的二进制IP地址。

虽然从理论上讲,可以只使用一个域名服务器,使它装入因特网上所有的主机名,并回答所有对IP地址的查询,然而这种做法并不可取。因为随着因特网规模的扩大,这样的域名服务器肯定会因超负荷而无法正常工作,而且一旦域名服务器出现故障,整个因特网就会瘫痪。1983年因特网开始采用层次结构的命名树作为主机的名字,并使用分布式的域名系统DNS[RFC 1034.1035]。

因特网的域名系统DNS是一个联机分布式数据体系统,并采用客户服务器方式。这样即使单个域名服务器出了故障,DNS系统仍能正常运行。DNS使大多数名字都在本地映射,仅少数映射需要在因特网上通信,使得系统是高效的。

名字到域名的映射是由若干个域名服务器程序组成的。域名服务器程序在专门的结点上运行,而人们也常把运行该程序的机器称为域名服务器。

当某一个应用进程需要将主机名映射为IP地址时,该应用进程就成为域名系统DNS有一个客户,并将待转换的域名放在DNS请求报文中,以UDP数据报方式发给本地域名服务器(使用UDP是为了减少开销)。本地的域名服务器在查找域名后,将对应的IP地址放在回答报文中返回。应用进程获得目的主机的IP地址后即可进行通信。

若域名服务器不能回答该请求,则此域名服务器就暂时成为DNS中的另一个客户,直到找到能回答该请求的域名服务器为止。这种查找过程后面还要进一步讨论。

9.1.2 因特网的域名结构

早期的因特网使用了非等级的名字空间,其优点是名字简短、但当因特网上的用户数急剧增加时,用非等级的名字空间来管理一个很大的而且是经常变化的名字集合是非常困难的。因此因特网后来就采用了层次树状结构的命名方法,就像全球邮政系统和电话系统那样,采用这种命名方法,任何一个连接在因特网上的主机或路由器,都人一个惟一的层次结构的名字,即域名(domain name),这里,“域”(domain)是名字空间中一个可被管理的划分,域还可以继续划分为子域,如二级域、三级域等等。

域名的结构由若干个分量组成,各分量之间用点(请注意,是英文小数点的点,这个点的位置在这个字符的正中央,而不是偏在左边)隔开:

….三级域名.二级域名.顶级域名

各分量分别代表不同级别的域名。每一级的域名都由英文字母和数字组成(不超过63个字符,并且不区分大小写字母),级别最低的域名写在最左边,而级别最高的顶级域名则写在最右边。完整的域名不超过255个字符。域名系统既不规定—个域名需要包含多少个下级域名,也不规定每一级的域名代表什么意思,各级域名由其上一级的域名管理机构管理,而最高的顶级城名则由因特网的有关机构管理。用这种方法可使每一个名字都是唯一的,并且也容易设计出一种查找域名的机制。需要注意的是,域名只是个逻辑概念,并不反映出计算机所在的物理地点。

因特网的域名的管理机构经过了多次变化。最初由因特网网络信息中心INTERNIC负责。后来改成由因特网国际特别委员会IAHC(Internet International Ad Hoc Committee)负责,但是IAHC于1997年5月1日解散。现由新成立的gTLD-MoU负责。gTLD-MoU即generic Top Level Domain Memorandum of Understanding的缩写,可译为通用顶级域名协定备忘录。参加gTLD-MoU活动的,除因特网的有关单位外,如IALA(Internet Assigned Number Authority),ISOC(Internet SOCiety),IAB(Internet Architecture Board)等。

现在顶级域名TLD(Top Level Domain)有三类:

(1)国家项级域名nTDL:采用ISO 3166的规定。如:cn表示中国,us表示美国,uk表示英国,等等。

(2)国际顶级域名iTDL:采用int。国际性的组织可在int下注册。

(3)通用顶级域名gTDL:根据[RFCl59l]规定,最早的顶级域名共六个,即:

com表示公司企业,net表示网络服务机构,org表示非赢利性组织,edu表示教育机构,gov表示政府部门(美国专用),mil表示军事部门(美国专用)。

由于最初的ARPANET是美国人建造的这一历史原因,在通用顶级域名中的政府和军事部门的两个域名都是美国专用。另外,虽然在美国的机构可在注册在其国家顶级域名us下,但他们却常注册在通用顶级域名下。一些人误认为:“凡注册在通用顶级域名下的机构都在美国。”但这种看法显然不正确。

由于因特网上用户的急剧增加,现在又新增加了七个通用顶级域名,即:

Firm表示公司企业,shop表示销售公司和企业(这个域名曾经是store),web表示突出万维网活动的单位,arts表示突出文化、娱乐活动的单位,rec表示突出消遣、娱乐活动的单位,info表示提供信息服务的单位,nom表示个人。

在国家顶级域名下注册的二级域名均由该国家自行确定。我国则将二级域名划分为“类别域名”和“行政区域名”两大类。其中“类别域名”六个,分别为:ac表示科研机构;com表示工、商、金融等企业,edu表示教育机构;gov表示政府部门;net表示互联网络、接入网络的信息中心(NIC)和运行中心(NOC);org表示各种非盈利性的组织。“行政区域名”34个,适用于我国的各省、自治区、直辖市。例如:bj为北京市;sh为上海市;js为江苏省等等。在我国,在二级域名edu下申请注册三级域名则由中国教育和科研计算机网网络中心负责。在一级域edu之外的其他二级域名下申请注册三级域名的,则应向中国互联网网络信息中心CNNIC申请。关于我国的互连网络发展情况以及各种规定,均可在CNNIC的网址上找到。

图9-1是因特网名字空间的结构,它实际上是一个倒过来的树,树根在最上面而没有名字。树根下面—级的结点就是最高—级的顶级域结点。各顶级域结点下面的是二级域结点。最下面的叶结点就是单台计算机。图9-1列举了一些域名作为例子。凡是在顶级域名com下注册的单位都获得了一个二级域名。例如图中的例子有:中央电视台以及IBM、惠普、摩托罗拉等公司。在顶级域名cn(中国)下的二级域名的例子是:四个行政区域名香港、江苏省、上海市、北京市以及我国规定的六个类别域名。这些二级地名由我国自行规定,凡在其中的某一个二级域名下注册的单位就可以获得一个三级域名,图中给出的在edu下面的三级域名有:清华大学、北京大学、复旦大学、上海交通大学、东南大学等等。一旦某个单位拥有了一个域名,它就可以自己决定是否要进一步划分其下属的子域,并且不必将这些子域的划分情况报告上级机构。图中画出了在顶级域名com下的中央电视台自己划分的三级域名mail。在清华大学下的四级域名的例子是:mail,csnetl,ep等。域名树的树叶就是单台计算机的名字,它不能再继续住下划分子域了。

图9-1 因特网的名字空间

应当注意,虽然中央电视台和清华大学都各有一台计算机取名为mail,但它们的域名并不一样。因为前者是mail.cctv.com,可后者是mail.tsinghua.edu.cn。因此,即使世界上还有很多的计算机取名为mail,但是它们在因特网的域名却都必须是惟一的。

这里还要强调指出,因特网的名字空间是按照机构的组织来划分的,与物理的网络无关,与IP地址中的“子网”也没有关系。

9.1.3 用域名服务器进行域名转换

每一个域名服务器不但能够进行一些域名到IP地址的转换(在TCP/IP的文档中,这种地址转换常称为地址解析),而且还必须具有连向其他域名服务器的信息。当自己不能进行域名到IP地址的转换时,就能够知道到什么地方去找别的域名服务器。

因特网上的域名服务器系统也是按照域名的层次来安排的。每—个域名服务器都只对域名体系中的一部分进行管辖。现在共有以下三种不同类型的域名服务器:

(1)本地域名服务器(local name server):每一个因特网服务提供者ISP,或一个大学,甚至一个大学里的系,都可以拥有—个本地域名服务器,它有时也称为默认域名服务器。当—个主机发出DNS查询报文时,这个查询报文就首先被送往该主机的本地域名服务器。当PC机使用windows 9x时,打开“控制面板”,选择“网络”,选样“配置”中的“TCP/IP”,再选择“属性”,就可看见“DNS配置”一项,其中的DNS服务器就是这里所说的本地域名服务器。本地域名服务器离用户较近,一般不超过几个路由器的距离。当所要查询的主机也属于同—个本地ISP时,该本地域名服务器立即就能将所查询的主机名转换为它的IP地址,而不需要再去询问其他的域名服务器。

(2)根域名服务器(root name server):目前在因特网上有十几个根域名服务器,大部分都在北美。当一个本地域名服务器不能立即回答某个主机的查询时(因为它没有保存被查询主机的信息),该本地域名服务器就以DNS客户的身份向某一个根域名服务器查询。若根域名服务器有被查询主机的信息就发送DNS问答报文给本地域名服务器,然后本地域名服务器再回答发起查询的主机。但当根域名服务器没有被查询主机的信息时,它就一定知道某个保存有被查询主机名字映射的授权域名服务器的IP地址(见下一段)。通常根域服务器用来管理顶级域(如.com)。硍域名服务器并不直接对顶级域下面所属的所有的域名进行转换,但它一定能够找到下面的所有—级域名的域名服务器。

图9-2 域名管辖区的划分举例

(3)授权域名服务器(authoritative name server):每一个主机必须在授权域名服务器处注册登记。通常,一个主机的授权域名服务器就是它的本地ISP的一个域名服务器。实际上,为了更加可靠地工作,一个主机最好有至少两个授权域名服务器。许多域名服务器同时充当本地域名服务器和授权域名服务器。授权域名服务器总是能够将其管辖的主机名转换为该主机的IP地址。

因特网允许各个单位根据本单价的其体情况将本单位的域名划分为若干个域名服务器管辖区(zone),而一般就在各管辖区中设置相应的授权域名服务器,例如,图9-2中的abc公司有下属部门x和y,而部门x下面又分三个分部门u,v和w,而y下面还有其下属的部门t。图9-2是管辖区的划分举例。可以看出,管辖区是“域”的子集。

图9-3表示查询IP地址的过程。假定域名为m.xyz.com的主机想知道另一个域名为t.y.abc.com的主机的IP地址。于是向其本地域名服务器dns.xvz.com查询。由于查询不到,就向根域名服务器dns.com查询。根据被查询的域名中的“abc.com”再向授权域名服务器dns.abc.com发送查询报文,最后再向授权域名服务器dns.y.abc.com查询,以上的查询过程见图中的①一②一②一④的顺序。得到结果后,按照图中的⑤一⑥一⑦一⑧的顺序将回答报文传送给本地域名服务器dns.xyz.com。总共要使用8个UDP报文。这种查询方法叫做递归查询。

 

为了减轻根域名服务器的负担,根域名服务器在收到图9-3中的查询②后,可以直接将下属的授权域名服务器dns.abc.com的IP地址返回给本地域名服务器dns.xyx.com,然后让本地域名服务器直接向授权域名服务器dns.abc.com进行查询。以后的过程如图9-4所示。这就是递归与迭代相结合的查询方法。可以看出,对根域名服务器来说,负担减轻了一半。

使用名字的高速缓存可优化查询的开销。每个域名服务器都维护一个高速缓存,存放最近到过的名字映射信息以及从何处获得此的记录,当客户请求域名服务器转换名字时,域名服务器首先按标准过程检查它是否被授权管理该名字,若未被授权,则查看自己的高速缓存,检查该名字是否最近被转换过。域名服务器向客户报告缓存中有关名字与地址的绑定(binding)信息,并标志为非授权绑定,以及给出获得此绑定的服务器S的域名。本地服务器同时也将服务器S与IP地址的绑定告知客户。因此,客户可很快收到回答,但有可能信息已是过时的了。如果强调高效,客户对选择接受非授权的回答信息并继续进行查询。如果强调准确性,客户可与授权服务器联系,并检验名字与地址间的绑定是否仍有效。

由于名字到地址的绑定并不经常改变,高速缓存可在域名系统中很好地运作。为保持高速缓存中的内容正确,域名服务器应为每项内容计时并处理超过合理时间的项(例如,每个项目只存放两天)。当域名服务器已从缓存中删去某项后又被请求查询该项信息,就必须重新到授权管理该项的服务器获取绑定信息。当授权服务器回答一个请求时,在响应中都 有指明绑定有效存在的时间值。增加此时间值可减少网络开销,而减少此时间值可提高域名转换的准确性。

不但在本地域名服务器中很需要高速缓存,在主机中也很需要。许多主机在启动时从本地域名服务器下载名字和地址的全部数据库,维护存放自己最近使用的域名的高速缓存,并且只是从缓存中找不到名字时才使用域名服务器。维护本地域名服务器数据库的主机自然应该定期地检查域名服务器以获取新的映射信息。由于域名改动并不频繁,大多数网点不需花太多精力就能维护数据库的一致性。

在每个主机中保留一个本地域名服务器数据库的副本,或使本地主机上的域名转换特别快。这也意味着万一本地服务器出故障,本地网点也有—定的保护措施。此外,它减轻了域名服务器的计算负担,使得服务器可为更多机器提供名字。

9.2 文件传送协议FTP

9.2.1 概述

文件传送协议FTP(File Transfer Protocol)是因特网上使用得最广泛的文件传送协议。FTP提供交互式的访问,允许客户指明文件的类则与格式(如指明是否使用ACSII码),并允外文件具有存取权限(如访问文件必须经过授权和输入有效口令)。FTP屏蔽了各计处机系统的细节.因而适合于在异构网络中任意计算机之间传送文件[RFC 959,1635]。

在因特网发展为早期阶段,用FTP传送文件约占整个因特网的通信量的三分之一,而由电子邮件和域名系统所产生的通信量还要小于FTP所产生的通信量。只是到了1995年,WWW的通信量才首次超过了FTP。

本节介绍基于TCP的FTP和基于UDP的TFTP,它们都是文件共享协议中的一大类,即复制整个文件,其特点是:若要存取一个文件,就必须先获得本地的文件副本,若要修改文件,这只能对文件的副本进行修改,然后再将修改后的文件副本传回到原结点。

文件共享协议中的另一大类是联机访问(on-line access)。联机访问意味着允许多个程序同时对一个文件进行存取。和数据库系统不同之处是用户不需要调用一个特殊的客户进程,而是由操作系统提供对远地共享文件进行访问的服务,就如同对本地文件的访问—样。这就使得用户可使用远地文件作为输入和输出来运行任何应用程序,而操作系统中的文件系统则提供对共享文化的透明存取。透明存取的优点是:将原来用于处理本地文件的应用程序用来处理远地文件时,不需要对该应用程序作明显的改动。属于文件共享协议的有网络文件系统NFS(Network File System),将在9.2.3节中进行简单介绍。

9.2.2 FTP的主要工作原理

网络环境中的一项基本应用就是将文件从一台计算机中复制到另一台可能相距很远的计算机中。初看起来,在两个主机之间传送文件是很简单的事情,其实这往往是很困难的。因为众多的计算机厂商研制出的文件系统多达数百种、且差别很大。经常遇到下述一些问题:

(1)计算机存储数据的格式不同;

(2)文件的目录结构和文件命名的规定不同;

(3)对于相同的文件存取功能,操作系统使用的命令不同;

(4)访问控制方法不同。

文件传送协议FTP只提供文件传送的—些基本的服务,它使用TCP可靠的运输服务。FTP的主要功能是减少或消除在不同操作系统下处理文件的不兼容性。

FTP使用客户服务器方式。一个FTP服务器进程可同时为多个客户进程提供服务。FTP的服务器进程由两大部分组成:一个主进程,负责接受新的请求;另外有若干个从属进程,负责处理单个请求。

主进程的工作步骤如下:

(1)打开熟知端口(端口号为21),使客户进程能够连接上。

(2)等待客户进程发出连接请求。

(3)启动从属进程来处理客户进程发来的请求。从属进程对客户进程的请求处理完华后即终止,但从属进程在运行期间根据需要还可能创建其他一些子进程。

(4)回到等待状态,继续接受其他客户进程发来的请求。主进程与从属进程的处理是并发地进行的。

PTP的工作情况如图9-5所示。图中的客户端和服务器端各有两个运行的从属进程:控制进程和数据传送进程。为简单起见,服务器中的主进程没有画上。

图9-5 FTP使用两个连接

 

在进行文件传输时,FTP的客户和服务器之间要建立两个连接:“控制连接”和“数据连接”。图中的控制进程就是上述的“从属进程”。在创建该进程时,控制连接随之创建并连接到控制进程上。控制连接在整个会话期间一直保持打开,FTP客户所发出的传送请求通过控制连接发送给控制进程,但控制连接并不用来传送文件,实际用于传输文件的是“数据连接”。控制进程在接收到FTP客发送来的文件传输请求后就创建一个“数据传送进程”和一个“数据连接”,并将数据连接连接到“数据传送进程”,数据传送进程实际完成文件的传送。在传送完毕后关闭“数据传送连接”并结束运行。

在图9-5中,控制连接的箭头是从客户指向服务器,表示客户发起控制连接。但数据连接则按相反的方向形成,即服务器发起数据连接。这时FTP服务器作为客户,而FTP客户则作为服务器。

 

当客户进程向服务器进程发出建立连接请求时,要寻找连接服务器进程的熟知端口(21),同时还要告诉服务器进程自己的另—个端口号码,用于建立数据传送连接。接着,服务器进程用自己传送数据的熟知端口(20)与客户进程所提供的端口号码建立数据传送连接。由于FTP使用了两个不同的端口号,所以数据连接与控制连接不会发生混乱。

使用两个独立的连接的主要好处是使协议更加简单和更容易实现,同时在传输文件时还可以利用控制连接(例如,客户发送请求终止传输)。

 

9.2.3 简单文件传送协议TFTP和网络文件系统NFS

TCP/IP协议族种还有—个简单文件传送协议TFTP(Trivial File Transfer Protocol),它是个很小且易于实现的文件传送协议[RFCl350,783]。虽然TFTP也使用客户服务器方式,但它使用UDP数据报,因此TFTP要有自己的差错改正措施。TFTP只支持文件传输,而不支持交互,且没有一个庞大的命令集。TFTP没有列目录的功能,也不能对用户进行身份鉴别。

TFTP的主要优点有两个。第一,TFTP可用于UDP环境。例如,当需要将程序或文件同时向许多机器下载时就往往需要使用TFTPC第二,TFTP代码所占的内存较小。这对较小的计算机或某些特殊用途的设备是很重要的。这些设备不需要硬盘,只需要固化了TFTP、UDP和IP的小容量只读存储器即可。当接通电源后,设备执行只读存储器中的代码,在网络广播一个TFTP请求。网络上的TFTP服务器就发送响应,其中包括可执行二进制程序设备收到此文件后将其放入内存,然后开始运行程序。这种方式增加了灵活性,也减少了开销。

TFTP的主要特点是:

(1)每次传送的数据PDU中有512字节的数据,但最后一次可不足512字节;

(2)数据PDU也称为文件块(block),每个块按序编号,从1开始;

(3)支持ASCII码或二进制传送;

(4)可对文件进行读或写;

(5)使用很简单的首部。

TFTP的工作很像停止等待协议,发送完—个文件块后就等待对方的确认,确认时应指明所确认的块编号。发送数据后在规定时间内收不到确认就要重发数据PDU。发送确认PDU的—方若在规定时间内收不到下一个文件块,也要重发确认PDU。这样就可保证文件的传送不致因某—个数据报的丢失而告失败。

TCP/IP协议族中的另一个文件传送协议就是网络文件系统NFS。NFS最初是在UNIX操作系统环境下实现文件和目录的共享。NFS可使本地计算机共享远地的资源,就像这些资源在本地—样。由于NFS原先是SUN公司在TCP/IP网络上创建的,因此目前NFS主要应用在TCP/IP网络上。然而现在NFS也可在OS/2、MS windows、NetWare等操作系统上运行。关于NFS的标准可参考[RFC l094]。

FTP并非对所有的数据传输都是最佳的。例如,计算机A上运行的应用程序要在远地计算机B的—个很大的文件末尾添加—行信息。若使用FTP,则应先将此文件从计算机B传送到计算机A。添加上这一行信息后,再用FTP将此文件传送到计算机B。来回传送这样大的文件很费时间。但这种传送是不必要的,因为计算机A并没有使用该文件的内容。

网络文件系统NFS则采用另一种思路。NFS允许应用进程打开一个远地文件,并能在该文件的某一个特定的位置上开始读写数据。这样,NFS可使用户只复制—个大文件中的一个很小的片段,而不需要复制整个大文件。对于上述例子,计算机A中的NFS客户软件,将要添加的数据和在文件后面写数据的请求一起发送到远地的计算机B中的NFS服务器。NFS服务器更新文件后返回应答信息。在网络上传送的只是少量的修改数据。

实际上,在计算机B上的文件可以被多个客户存取。NFS允许客户对文件进行加锁。当一个客户完成修改后就对文件解锁,从而使其他客户能够进行存取。

NFS的界面与FTP的不同。从用户的观点看,NFS几乎是不可见的,它被集成在操作系统的文件系统中,用普通的系统调用即可访问NFS文件。通过对NFS的配置,可使计算机的文件系统创建一个特殊的目录与远地计算机相关联,所有在该目录中的文件都被认为是远程文件。每当一个应用程序请求—个文件操作时,计算机的文件系统根据被操作文件所在目录就知道应将此请求传递给本地文件系统或NFS客户软件。若属于后一种情况,则NFS客户软件就利用网络对远地计算机文件系统进行操作,因此,只要安装和配置了NFS,计算机的文件系统就包含了相当于远地文件系统的目录。显然,这种方案是相当灵活的,因为应用程序所执行标准的文件操作使得任何—个应用程序都可使用远地文件。

9.3 远程登录TELNET

远程登录TELNET是一个简单的远程终端协议,用户用TELNET就可在其所在地通过TCP连接注册(即登录)到远地的另—个主机上(使用主机名或IP地址)。TELNET能将用户的击键传到远地主机,同时也能将远地主机的输出通过TCP连接返回到用户屏幕,这种服务是透明的,因为用户感觉到好像键盘和显示器是直接连到远地主机上。

虽然TELNET并不复杂,但以前却应用得很广。现在由于PC机的功能越来越强,用户就较少使用TELNET了。TELNET也使用客户服务器方式,在本地系统运行TELNET客户进程,而在远地主机则运行TELNET服务器进程。和FTP的情况相似,服务器中的主进程等待新的请求,并产生从属进程来处理每一个连接。

TELNET能够适应许多计算机和操作系统的差异。例如,对于文本中一行的结束,有的系统使用ASCII码的回车(CR),有的系统使用换行(LF),还有的系统使用两个字符,回车一换行(CR-LF)。又如,许多系统在中断—个程序时使用Control+C(^C),但也有系统使用ESCAPE键。为了适应这种差异,TELNET定义了数据和命令应怎样通过因特网[RFC 854]。这些定义就是所谓的网络虚拟终端NVT(Network Virtual Terminal)。图9-6说明了NVT的意义。客户软件将用户的击键和命令转换成NVT格式并送交服务器。服务器软件将收到的数据和命令,从NVT格式转换成服务器端所需的格式。向用户返回数据时,服务器将自己的格式转换为NVT格式,本地客户再从NVT格式转换到本地系统所需的格式。

图9-6 TELNET 使用网络虚拟终端 NVT 格式

 

NVT的格式定义很简单,所有的通信都使用8 bit的字节。在运转时,NVT使用7位ASCII码传送数据,而当高位置1时用作控制命令。ASCII码共有95个可打印字符(如:字母、数字、标点符号)和33个控制字符。所有可打印字符在NVT中的意义和在ASCIIH码中一样。但NVT只使用了ASCII码的控制字符中的几个,如NUL,BEL,BS,HT,LE,VF,EF和CR等。此外,NVT还定义了两字段的CR-LF为标准的行结束控制符。当用户键入ENTER或RETURN时,TELNET的客户就将其转换为CR-LF再进行传输,而TELNET服务器要将CR-LF转换为远地机器的行结束字符。

虽然TELNET的NVT的功能非常简单,但TELNET定义了自己的一些控制命令。通过TELNET的选项协商(Option Negotiation),TELNLT客户和TELNET服务器还可商定使用更多的终端功能。关于这此内容这里就不再讨论了。

9.4 电子邮件

9.4.1 概述

电子邮件(e-mail)是因特网上使用得最多的和最受用户欢迎的一种应用。电子邮件将邮件发送到ISP的邮件服务器,并放入其中的收信人邮箱(mail-box)中,收信人可随时上网到ISP的邮件服务器进行读取。正因上述的性质相当于利用因特网为用户设立了存放邮件的信箱,因此e-mail有时也称为“电子信箱”。电子邮件不仅使用方便,而是还具有传递迅速和费用低廉的优点。现在电子邮件不仅可传送文字信息,而且还可附上声音和图像。

最初的电子邮件系统的功能很简单,邮件无标准的内部结构格式,计算机很难对邮件进行处理;用户接口也不好;用户将邮件编辑完毕后必须退出邮件编辑程序,再调用文件传送程序方能传送已编辑好的邮件。但经过人们的努力,在1982年就制定出ARPANET上的电子邮件标椎:简单邮件传送协议SMTP(Simple Mail Transfer Protocol)[RFC 82l]和因特网文本报文格式[RFC 822],它们己成为因特网的事实上的标准。两年以后,CCITT制定了报文处理系统MHS的标准,即X.400建议书。以后OSI又在此基础上制定了一个面向报文的电文交换系统MOTIF(Message Oriented Text Interchange System)的标准。在1988年,CCIIT参照MOTIF修改了X.400G.X.400是一个功能很强的电子邮件标准。

由于因特网的SMTP只能传送可打印的ASCII码邮件,因此在1993年又制定了新的电于邮件标准[RFCl521,1522],即“通用因特网邮件扩充”MIME(Multipurpose Internet Mail Extension),MIME在其邮件首部中说明了邮件的数据类型(如文本、声音、图像、视像等)。MIME邮件可同时传送多种类型的数据。这在多媒体通信环境下是非常有用的。

经过10年的竞争,全世界都已广泛地使用了因特网的电子邮件系统,而X.400却基本上销声匿迹了。X.400的失败是由于过于复杂使其难于实现,因此本书不再讨论X.400。

一个电子邮件系统应具有图9-7所示的3个主要组成部件,这就是用户代理、邮件服务器,以及电子邮件使用的协议,如SMTP和P0P3(或IMAP)等。在图9-7中只画出了POP3。

用户代理UA(user Agent)就是用户的电子邮件系统的接口,在大多数情况下它就是在用户PC机中运行的程序。用户代理使用户能够通过一个很友好的接口(目前主要是用窗口界面)来发送和接收邮件。现在可供大家选择的用户代理有很多种。例如,微软公司的Outlook Express和我国张小龙制作的Fox mail,都是很受欢迎的电子邮件用户代理。

图9-7 电子邮件的最主要的组成构件

 

用户代理至少应当具有以下3个功能:

撰写。给用户提供很方便地编辑信件的环境。例如,应让用户能创建便于使用的通讯录(有常用的人名和地址,回信时不仅能很方便地从来信中提取出对方地址,并自动地将此地址写入到邮件中合适的位置,而且还能方便地对来信提出的问题进行答复(系统自动将来信复制一份在用户撰写回信的窗口中,因而用户不需要再输入来信中的问题)。

显示。能方便地在计算机屏幕上显示出来信(包括来信附上的声音和图像)。

处理。处理包括发送邮件和接收邮件。收信人应能根据情况按不同方式对来信进行处理。伊如,阅读后删除、存盘、打印、转发等,以及自建目录对来信进行分类保存。有时还可在读取信件之前先查看一下是邮件的发信人和长度等,对于不愿收的信件可直接在邮箱中删除。

邮件服务器是电子邮件系统的核心构件,因持网上所有的ISP都 有邮件服务器。邮件服务器的功能是发送和接收邮件,同时还要向发信人报告邮件传送的情况(已交付、被拒绝、丢失等)。邮件服务器按照客户服务器方式工作。邮件服务器需要使用两个不同的协议。一个协议用于发送邮件,即SMTP协议,而另一个协议用于接收邮件,即邮局协议POP(Post Office Protocol)。

当邮件服务器向另一个邮件服务器发送邮件时,这个邮件服务器就作为SMTP客户。当邮件服务器从另一个邮件服务器接收邮件时,这个邮件服务器就作为SMTP服务器。

下面就是一封电子邮件的发送和接收过程(结合图9-8来看)。

(1)发信人调用用户代理来编辑要发送的邮件。用户代理用SMTP将邮件传送给发送端邮件服务器。

(2)发送端邮件服务器将邮件放入邮件缓存队列中,等待发送。

(3)运行在发送端邮件服务器的SMTP客户进程,发现在邮件缓存中有待发送的邮件,就向运行在接收端邮件服务器的SMTP服务器进程发起TCP连接的建立。

(4)当TCP连接建立后,SMTP客户进程开始向远程的SMTP服务器进程发送邮件。如果有多个邮件在邮件缓存中,则SMTP客户一一将它们发送到远程的SMTP服务器。当所有的待发送邮件发完了,SMTP就关闭所建立的TCP连接。

(5)运行在接收端邮件服务器中的SMTP服务器进程收到邮件后,将邮件放入收件人的用户邮箱中,等待收信人在他方便时进行读取。

(6)收信人在打算收信时,调用用户代理,使用POP3(或IMAP)协议将自己的邮件从接收端邮件服务器的用户邮件中取回(如果邮箱中有来信的话)。

细心的读者可能会想到这样的问题,即:如果让图9-8中的邮件服务器程序就在发送方和接收方的PC机中运行,那么是否就可以将两个用户端的用户代理程序省略呢?

答案是“不行”。这是因为并非所有的计算机都能运行邮件服务器程序,有些计算机可能没有足够的存储器来运行允许程序在后台运行的操作系统,或是可能没有足够的CPU能力来运行邮件服务器程序。更重要的是,邮件服务器程序必须不间断地运行,每天24小时都必须不间断地连接在因特网上,否则就可能使很多外面发来的邮件丢失。这样看来,让用户的PC机运行邮件服务器程序显然是很不现实的(一般用户在不使用PC机时将机器关闭)。让来信暂时存储在ISP的邮件服务器中,而当用户方便时就从邮件服务器的用户信箱中读取来信,这是一种比较合适的做法。

电子邮件由信封(envelope)和内容(content)两部分组成。电子邮件的传输程序根据邮件信封上的信息来传送邮件。用户在自己的邮箱中读取邮件时才能见到邮件的内容。

在邮件的信封上,最重要的就是收信人的地址。TCP/IP体系的电子邮件系统规定电子邮件地址(e-mail address)的格式如下

收信人邮箱名@邮箱所在主机的域名 (9-1)

在(9-1)式中,符号“@”读作“at”,表示“在”的意思。收信人邮箱名又简称为用户名(user name),是收信人自己定义的字符串标识符。但应注意,标识收信人邮箱名的字符串在邮箱所在计算机中必须是惟—的,电子邮件的用户一般采用容易记忆的字符串,不宜使用难于记忆的字符串作为邮箱名,这只会给自己和别人增加麻烦。例如,本书编者的电子邮件地址为:

Xiexr@publicl.ptt.js.cn

邮箱所在的主机的域名是publicl.ptt.js.cn,这就是中国的电信的ISP(用163拨号)在南京市的主机域名,这个域名在整个因特网的范围内必须是惟一的。当作者到这个ISP申请电子邮件账号时,必须保证xiexr这个用户名在该ISP的范围内是惟一的,若已经有其他的用户选用了这个用户名,那么后来的登记者就只能选用另一个用户名。

由于一个主机的域名在因特网上是惟—的,而每一个邮箱名在该主机中也是惟—的,因此在因特网上的每一个人的电子邮件地址都是惟一的。这一点对保证电子邮件能够在整个因特网范围内的准确交付是十分重要的。

我们还应注意到,在发送电了邮件时,邮件服务器只使用电子邮件地址中的后一部分,即目的主机的域名。只有在邮件到达目的主机后,目的主机的邮件服务器才根据电子邮件地址中的前一部分(即收信人邮箱名),将邮件存放在收件人的邮箱中。

9.4.2 简单邮件传送协议SMTP

下面只介绍SMTP的—些主要特点。

使用SMTP时,收信人可以是和发信人连接在同一个本地网络上的用户,也可以是因特网上其他网络的用户,或者是与因特网相连但不是TCP/IP网络上的用户。

SMTP没有规定发信人应如何将邮件提交给SMTP,以及SMTP应如何将邮件投递给收信人。至于邮件内部的格式,邮件如何存储,以及邮件系统应以多快的速度来发送邮件,SMTP也都未做出规定。SMTP所规定的就是在两个相互通信的SMTP进程之间应如何交换信息、由于SMTP使用客户服务器方式,因此负责发送邮件的SMTP进程就是SMTP客户,而负责接收邮件的SMTP进程就是SMTP服务器。

SMTP规定了14条命令和21种响应信息。每条命令用 4个字母组成,而每一种响应信息一般只有—行信息,由一个3位数字的代码开始,后面附上(也可不附上)很简单的文字说明。下面通过在SMTP通信的3个阶段介绍几个最主要的命令和应答信息。

1. 连接建立

发信人先将要发送的邮件送到邮件缓存。SMTP客户每隔一定时间(例如30分钟)对邮件缓存扫描一次。如发现有邮件,就使用SMTP的熟知端口号码(25)与目的主机的SMTP服务器建立TCP连接。在连接建立后,SMTP服务器要发出“220 Service ready”。然用SMTP客户向SMTP服务器发送HELO命令,附上发送方的主机名。SMTP服务器若有能力接收邮件,则回答:“250 OK”,表示已准备好接收。若SMTP服务器不可用,则回答“421 Service not available”。

如在一定时间内(例如,3天)发送不了邮件,则将邮件退还发信人。

这里要强调指出,上面所说的连接并不是在发信人和收件人之间建立的。连接是在发送主机的SMTP客户和接收主机的SMTP服务器之间建立的。发信人和收信人都可以在其主机上做自己的工作,而SMTP客户和SMTP服务器都在后台工作。

SMTP不使用中间的邮件服务器。不管发送端和接收端的邮件服务器相隔有多远,不管在邮件的传送过程中要经过多少个路由器,TCP连接总是在发送端和接收端这两个邮件服务器之间直接建立。当接收端邮件服务器出故障而不能工作时.发送端邮件服务器只能等待—段时间后再尝试和该邮件服务器建立TCP连接,而不能先找一个中间的邮件服务器建立TCP连接。

邮件的传送从MAIL命令开始。MAIL命令后面有发信人的地址:如:MAIL FROM:。若SMTP服务器已准备好接收邮件,则回答“250 OK”,否则,返回一个代码,指出原因:如:451(处理时出错),452(存储空间不够),500(命令无法识别)等。

下面跟着—个或多个RCPT命令,取决于相同—个邮件发送给—个或多个收信人,其格式为RCPT TO:<收信人地址>。每发送一个命令都应当有相应的信息从SMTP服务器迟回,如:“250 OK”,表示指明的邮箱在接收端的系统中。或“550 No such user here”,即不存此邮箱。

RCPT命令的作用就是:先弄清接收端系统是否已经做好了接收邮件的准备,然后才发送邮件。这样做是为了避免浪费通信资源,不致发送了很长的邮件以后才知道是因地址出错而白白浪费了许多通信资源。

再下面就是DATA命令,表示要开始传送邮件的内容了。SMTP服务器返回的消息是:“354 Start mail input; end with .”。这里是“回车换行”的意思。若不能接收邮件,则返回421(服务器不可用)。500(命令无法识别)等。接着SMTP客户就发送邮件的内容。发送完毕后,再发送.(两个回车换行中间用一个点隔开)表示邮件内容结束。实际上在服务器端看到的可打印字符只是一个英文的句点。若邮件收到了,则

SMTP服务器返回信息“250 0K”,或返回差错代码。

虽然SMTP使用了TCP连接试图使邮件的传送可靠,但它并不能保证不丢失邮件。没有端到端的确认返回到收信人处,差错指示也不保证能传送到收信人处.然而基于SMTP的电子邮件通常都被认为是可靠的。

3.连接释放

邮件发送完毕后,SMTP客户应发送QUIT命令。SMTP服务器返回的信息是“221(服务关闭)”,表示SMTP同意释放TCP连接。邮件传送的全部过程即结束。

这里再强调一下,上述的SMTP客户与服务器交互的过程都被电子邮件系统的用户代理屏蔽了,使用电子邮件的用户是看不见这些过程的。

9.4.3 电子邮件的信息格式

—个电子邮件分为信封和内容两大部分。[RFC 822]只规定了邮件内容中的首部,(head)格式,而对邮件的主体(body)部分则让用户自由撰写,用户写好首部后,邮件系统自动地将信封所需的信息提取出来并写在信封上,而用户不需要填写电子邮件信封上的信息。

邮件内容首部包括—些关键字,后面加上冒号。最重要的关键字是:To和Subject。

“To:”后面填入一个或多个收信人的电子邮件地址。在电子邮件软件中,用户将经常通信的对象姓名和电子邮件地址写到地址簿(address book)中。当撰写邮件时,只需打开地址簿,点击收信人名字,收信人的电子邮件地址就会自动地填入到合适的位置上。

“Subject”是邮件的主题。它反映了邮件的主要内容。主题便于用户查找邮件。

邮件首都还有一项是抄送“Cc:”这两个字符来自“Carbon copy”意思是留下一个“复写副本”。这是借用旧的名词,表示应给某某人发送一个邮件副本。

有些邮件系统允许用户使用关键字Bcc(Blind carbon copy)来实现盲复写副本。这是使发信人能将邮件的副本送给某人,但不希望此事为收信人知道。Bcc又称为暗送。

首部关键字还有“From”和“Date”,表示发送人的电子邮件地址和发信日期。这两项—般都由邮件系统自动填入。

另一个关键字是“Reply-To”即对方回信所用的地址。这个地址可以与发信人发信时所用的地址不同。这一项是事先设置好的,不需要在每次写信时都进行设置。

9.4.4 邮件读取协议POP3和IMAP

现在常用的邮件读取协议有两个,即邮局协议第二个版本POP3和因特网报文存取协议IMAP(Internet Message Access Protocol)。现分别讨论如下。

邮局协议POP是个非常简单、但功能也有限的邮件读取协议。邮局协议POP最初公布于1984年[RFC 918]。经过几次的更新,现在使用的是它的第二个版本POP3[RFC1939]。POP3己成为因特网的标准。大多数的ISP都支持POPC

POP也使用客户服务器的工作方式。在接收邮件的用户的PC机中必须运行POP客户程序,而在其ISP的邮件服务器中则运行POP服务器程序,当然,这个ISP的邮件服务器还必须运行SMTP服务器程序,以便接收发送方邮件服务器的SMTP客户程序发来的邮件。这些请参阅图9-8。POP服务器只有在用户输入鉴别信息(用户名和口令)后才允许对邮箱进行读取。应当注意的是,邮件服务器只能传输电子邮件,但POP服务器还能向用户提供邮箱内容的信息。

对依靠拨号连接的用户来说,POP协议是使用得最普遍的。当用户拨号上网连接成功后,就可以运行POP客户程序,与ISP邮件服务器的POP服务器程序建立TCP连接(POP客户和POP服务器之间要交互—些命令与响应,但对收信人来说都是透明的),然且就可以接收电子邮件了。

下面介绍另一种邮件软件因特网报文存取协议IMAPCIMAP和POP都按客户服务器方式工作,但它们有很大的差别。现在较新的是版本4,即IMAP4[RFC 2060]。

对于POP,从网上收到的邮件是根据收信人的邮件地址交付给目的ISP邮件服务器,而收信人用PC机不定期地连接到这个邮件服务器以便将发送给他的邮件下载到其PC机上。此后,所有对邮件的处理都在用户的PC机上进行,因此POP服务器上一个具有存储转发功能的中间服务器。一旦邮件交付给用户的PC机,POP服务器就不再保存这些邮件(当然用户也可以通过事先的设置,使POP服务器在收信人读取邮件后仍保留此邮件。但一般都不这样做,因为这样会很快地使用户在邮件服务器的邮箱装满,因而无法再接收新的邮件)。用户在取回邮件并中断与POP服务器的连接后,可在自己的PC机上慢慢处理收到的邮件。因此POP实际上是一个脱机协议。

在使用IMAP时,所有收到的邮件同样是先送到ISP的邮件服务器的IMAP服务器。而在用户的PC机上运行IMAP客户程序,然后与ISP的邮件服务器上的IMAP服务器程序建立TCP连接。用户在自己的PC机上就可以操纵ISP的邮件服务器的邮箱,就像在本地操纵一样,因此IMAP是个联机协议。当用户PC机上的IMAP客户程序打开IMAP服务器的邮箱时,用户就可看到邮件的首部。若用户需要打开某个邮件,则该邮件才传到用户的计算机上。用户可以根据需要为自己的邮箱创建便于分类管理的层次式的邮箱文件夹,并且能够将存放的邮件从某一个文件夹中移动到另一个文件夹中。用户也可按某种条件对邮件进行查找。在用户未发出删除邮件的命令之前,IMAP服务器邮箱中的邮件一直保存着。这样就省去了用户PC机硬盘上的大量石存储空间。

IMAP最大的好处就是用户可以在不同的地方使用不同的计算机(例如,使用办公室的计算机、或家中的计算机,或在外地使用笔计本电脑)随时阅读和处理自己的邮件(但每次必须上网才能阅读邮件)。如果使用POP3,那么用户出差时使用笔记本电脑就不可能再次阅读曾经在办公室的台式PC机上已经读取过的信件(除非你经常使用复制技术使几个地方的计算机都存放所有己经读取过的邮件,但这是很麻烦的事)。因为在使用POP3的ISP的服务器上不保存已读取过的信件。

IMAP还允许收信人只记取邮件中的某一个部分。例如,收到一个带有视频附件(此文件可能很大)的邮件,用户使用的是无线上网,信道的传输速率很低。为了节省时间,可以先下载邮件的正文部分,待以后有时间再读取或下载这个很长的附件。IMAP的缺点是如果用户没有将邮件复制到自己的PC机上,则邮件一直存放在IMAP服务器上。因此用户需要经常与IMAP服务器建立连接(因而许多用户要考虑到所花费的上网费问题)。

注意不要将邮件读取协议POP和IMAP与邮件传送协议SMTP弄混。发信人的用户代理向源邮件服务器发送邮件。以及源邮件服务器向目的邮件服务器发送邮件,都是使用SMTP协议。而POP和IMAP则是用户从目的邮件服务器上读取邮件所使用的协议。

9.4.5 通用因特网邮件扩充MIME

1.MIME概述

前面所述的电脑附件协议SMTP具有以下一些缺点。

(1)SMTP不能传送可执行文件或其他的二进制对象。人们曾试图将二进制文件转换为SMTP使用的ASCII文本,例如流行的UNIX Uuencode/Uudecode方案,但这些均未形成正式标准或事实上的标准。

(2)SMTP限于传送7位的ASCII码,许多其他非英语国家的文字(如中文、俄文、甚至带重音符号的法文或德文都无法传送,即使在SMTP网关将EBCDIC码转换为ASCII码时也会遇到一些麻烦。

(3)SMTP服务器会拒绝超过一定长度的邮件。

(4)某些SMTP的实现并没有完全按照[RFC 821]的SMTP标准,常见问题如下:

·回车、换行的删除和增加;

·超过76个字符时的处理,截断或自动动换行;

·后面多余空格的删除;

·将制表符tab转换为若干个空格。

MIME没有改动SMTP或取代它。MIME的意图是继续使用目前的[RFC 822]格式,但增加了邮件主体的结构,并定义了传送非ASCII码的编码规则。MIME邮件可在现有的电子邮件程序和协议中传送。MIME主要包括以下3部分内存(RFCl52l,1522]:

·5个新的邮件首部字段,它们可包含在[RPC 822]首部中,这些字段提供了有关邮件主体的信息。

·定义了许多邮件内容的格式,对多媒体电子邮件的表示方法进行了标准化。

·定义了传送编码,可对任何内容格式进行转换,而不会被邮件系统改变。

为适应于任意数据类型和表示,每个MIME报文包含告知收件人数据类型和使用编码的信息。MIME将增加的信息加入到[RFC 822]邮件首部中,下面是MIME增加的5个新的邮件首部名称及其意义(有的可以是选项)。

(1)MIME-Version:标识MIME的版本。现在的版本号是1.0.若无此行,则为英文文本。

(2)Content-Description:这是可读字符串,说明该邮件是什么,和邮件主题差不多。

(3)Content-Id:邮件的惟一标识符。

(4)Content-Transfer-Encoding:在传送时邮件的主体是如何编码的。

(5)Content-Type:说明邮件的性质。

上述的前3顶的意思很清楚,因此只对上述的后两项进行介绍。

2.内容传送编码

下面介绍几种常用的内容传送编码Content-Transfer-Encoding。

最简单的编码使用7 bit或8 bit(即7位或8位ASCII码),而每行不能超过1000个字符,例如汉字。这种编码方式的要点就是对于可打印的ASCII码,除等号“=”外,都不改变。等号“=”以及编码超过127的ASCII码的编码方法是:先将每个字节的二进制代码用两个十六进制数字表示,然后在前面再加一个“=”,例如,汉字的“系统”的二进制编码是:10111111 101O0101 10111100 10100011,其十六进制数字表示为:CFB5CDB3,用Quoted-printable编码表示为: =CF=B5=CD=B3。而等号“=”的二进制代码为00111101,即十六进制的3D,因此符号“=”的quoted-printable编码为“=3D”。

对于任意的二进制文件,可用base64编码(有人称为ASCII armor)。这种编码方法是先将24 bit的代码划分为4个6 bit组。6 bit组的二进制代码共有64种不同的值,从0到63.用A表示0,用B表示1,等等。26个大写字母排列完毕后,接下去再排26个小写字母,再后面是10个数字,最后用“+”表示62,而用“/”表示63。再用两个连在一起的等号“==”和一个等号“=”分别表示最后一组的代码只有8或16比特,回车和换行都忽略,它们可在任何地方插入,作为basee64编码的例子,假设有二进制代码,共24 bit:0100l00l0011000101111001。先划分为4个6 bit组,即010010010011000101111001。对应的base64编码为:STE5

3.内容类型

MIME标准则定Content-Type说明必须含有两个标识符,即内容类型(type)和子类型(subtype),中间用“/”分开。

标准定义了7个基本内容类型和15种子类型。除了标准类型和子类型外,MIME允许发信人和收信人定义专用的内容类型,但为避免可能出现名字冲突,标准要求为专用的内容类型选择的名字要以字符串“X-”开始。MIME的内容类型中的 Multipart是很有用的,因为它使邮件增加了相当大的灵活性。标准为Multipart定义了四种可能的子类型,每个子类型都提供重要功能。

(1)mixed子类型允许单个报文含有多个相互独立的子报文,每个子报文可有自己的类型和编码。Mixed子类型报文使用户能够在单个报文中附上文本、图形和声音,或者用额外数据段发送一个备忘录,类似商业信笺含有的附件。在mixed后面还要用到—个关键字,即Boundary=,此关键字定义了分隔报文各部分所用的字符串(由邮件系统定义),只要在邮件的内容中不会出现这样的字符串即可。当某一行以两个连字符“——”开始,后面紧跟上述的字符串,就表示下面开始了另一个子报文。

(2)alternative类型允许单个报文含有同一数据的多种表示。当给多个使用不同硬件和软件系统的收信人发送备忘录时,这种类型的Multipart报文很有用。例如,用户可同时用普通的ASCII文本和格式化的形式发送文本,从而允许拥有图形功能计算机的用户在察看图形时选择格式化的形式。

(3)parallel子类型允许单个报文含有可同时显示的各个子部分(如,图像和声音子部分必须—起播放)。

(4)digest子类型允许单个报文含有一组其他报文(如,从讨论中收集电子邮件报文)。

下面显示了一个MIME邮件,它包含有一个简单解释的文本和含有非文本信息的照片。邮件中第—部分的注解说明第二部分含有—张照片。

From:xiexr@publicl.ptt.js.cn

To:xyz@public.bta.net.cn

MIME-Version:1.0

Content-Type:Multipart/mixed; boundary=qwertyuiop

――qwertyuiop

XYZ

你要的图片在此邮件中,收到后请回答。

谢希仁

――qwertyuiop

Content-Type:Image/gif

Content-Transfer-Encoding:base64

…Data for image(图像的数据)…

――qwertyuiop

上面的最后一行表示boundary的字符串后面的两个连字符表示整个Multipart的结束。

9.5 万维网WWW

9.5.1 概述

万维网WWW(world Wide Web)并非某种特殊的计算机网络。万维网是一个大规模的、联机式的信息储藏所,英文简称为Web。万维网用链接的方法能非常方便地从因特网上的一个站点访问另一个站点(也就是所谓的“链接到另一个站点”),从而主动地按需获取丰富的信息。图9-9说明了万维网提供分布式服务的特点。图9-9画出了5个万维网上的站点,它们可以相隔数千公里,但都必须连接在因特网上。每—个万维网站点都 存放了很多文档。在这些文档中可能会有一些地方的文字是用特殊方式显示的(例如用不同的颜色,或添加了下划线,在图9-9中这些地方用黑色矩形表示),而当我们将鼠标移动到这些地方时,鼠标的箭头就变成了一只手的形状,这就表明这些地方有一个链接(这种链接由于能够连接到声音和图像文档,有时也称之为超链),如果我们在这样的地方点击鼠标,就可以从这个文档链接到另—个文档(可能相隔很远)。经过一定的时延(几秒钟、几分钟甚至更长,取决于所链接的文档的大小),在我们的屏幕上就能将远方传送过来的文档显示出来。例如,站点A的某个文档中有两个地方可以链接到其破除迷信的站点。当我们点击该文档中靠下面的一个链接时,就可以链接到站点B的某个文档,站点B的文档也有两个地方有链接。当我们点击靠上面的一个链接时,就链接到站点D的一个文档。当我们点击站点B的文档的靠下面的一个链接时,就链接到站点E,但E的文档没有可链接的地方。这就表示从该文档已无法再继续链接到其他的站点。

图9-9 万维网提供分布式服务

 

正是由于万维网的出现,使因特网从仅由少数计算机专家使用变为普通百姓也能利用的信息资源。万维网的出现使网站数按指数规律增长。据统计,在1998年,万维网的通信量已超过整个因特网的通信量的75%。因此,万维网的出现是因特网发展中的一个非常重要的里程碑。

理解万维网最好的方法就是自己上因特网操作,本章不介绍万维网的具体操作步骤。而是着重讨论万维网的基本概念和原理。

万维网出现于1989年3月。1993年2月,第一个图形界面的浏览器(browser)开发成功,名字叫做Mosaic。1995年著名的Netscape Navigator浏览器上市。目前使用得最多的浏览器是微软公司的Internet Explorer。

万维网是—个分布式的超媒体(hypermedia)系统,它是超文本(hypertext)系统的扩充。一个超文本由多个信息源链接成,而这些信息源的数目实际上是不受限制的。利用一个链接可使用户找到世界上接在因特网上的任何一个超文本系统,而这又可继续链接下去。超文本是万维网的基础。

超媒体与超文本的区别是文档内容不同,超文本文档仅包含文本信息,而超媒体文档则

包含其他表示方式的信息,如图形、图像、声音、动画甚至活动视频图像。

万维网将大量信息分布在整个因特网上。每台计算机上的文档都独立进行管理。对这些文档的增加、修改、删除或重新命名都不需要(实际上也不可能)通知其他结点。这样,万维网文档之间的链接就经常会出现一些麻烦。例如,计算机A上的文档X本来包含了一个指向计算机B的文档Y的链接。若计算机B的管理员在某日删除了Y(B并不需要为此发出通告),那么计算机A的上述链接显然就失效了。

万维网以客户服务器方式工作。上面所说的浏览器就是在用户计算机上的万维网客户程序。万维网文档所驻留的计算机则运行服务器程序,因此这个计算机也称为万维网服务器。客户程序向服务器程序发出请求,服务器程序向客户程序返回客户所要的万维网文档。在一个客户程序主窗口上显示出的万维网文档称为页面(page)。

从以上所述可以看出,万维网必须解决以下几个问题:

(1)怎样标识分布在整个因特网中的万维网文档?

(2)用什么样的协议来实现万维网上各种链接的链接?

(3)怎样使不同作者创作不同风格的万维网文档都能在因特网上的各种计算机上显示出来,同时使用户清楚地知道在什么地方存放着链接?

(4)怎样使用户很方便地找到所需要的信息

为了解次第一个问题,万维网使用统一资源定位符URL(Uniform Resource Locator)来标识万维网上的各种文档,并使每一个文档在整个因特网的范围内具有惟一的标识符URL。为了解决上述的第二个问题。就要使万维网客户程序与万维网服务器程序之间的交互遵守严格的协似,这就是超文本传送协议HTTP(HyperText Transfer Protocol)。HTTP是一个应用层协议,它使用TCP连接进行可靠的传送。为了解决上述的第三个问题,万维网使用超文本标记语言HTML(HyperText Markup Language),使得万维网页面的设计者可以很方便的用一个链接从本页面的某处链接到因特网上的任何一个万维网页面,并且能够在自己的计算机屏幕上将这些页面显示出来。最后,为了在万维网上方便地查找信息,用户可使用各种的搜索工具。

下面我们将进一步讨论万维网的几个重要概念,如URL、HTTP和HTML等。

9.5.2 统一资源定位符URL

在[RFC 1738]和[RFC 1308]中,对URL是这样定义的:

“统一资源定位符URL是对能从因特网上得到的资源的位置和访问方法的一种简洁的表示。URL给资源的位置提供了一种抽象的识别方法,并用这种方法给资源定位。只要能够对资源定位,系统就可对资源进行各种操作,如存取、更新、替换和查找其属性。”

上述的“资源”是指在因特网上可以被访问的任何对象。包括文件目录、文件、文档、图像、声音等,以及与因特网相连的任何形式的数据。“资源”还包括电子邮件的地址和USENET新闻组,或USENET新闻组中的报文。

URL相当于一个文件名在网络范围的扩展。因此URL是与因特网相连的机器上的任何可访问对象的一个指针。由于对不同对象的访问方式不同(如通过WWW,FTP等),所以URL还指出读取某个对象时所使用访问方式。这样,URL的一般形式如下(即由以冒号隔开的两大部分组成,并且在URL中的字符对大写或小写没有要求)。

//<主机><端口>/<路径> (9-2)

在式(9-2)冒号左边的中,最常用的有三种,即ftp(文件传送协议FTP),http(超文本传送协议HTTP)和news(USENET新闻)。

(9-2)式冒号的右边部分,<主机>一项是必须的。而<端口>和<路径>则有时可省略。

下面我们将简单介绍使用得较多的前两种URL。

2 使用FTP的URL

对于使用FTP访问的站点的URL的最简单的形式是下面的例子:

ftp://rtfm.mit.edu

这里rtfm.mit.edu就是在麻省理工学院MIT的匿名服务器rtfm的因特网域名。如果不使用域名而是把该服务器的点分十进制的IP地址写在两个斜线后面出是可以的。假定我们要直接访问上面的服务器中在白录pub下的个文件abc.txt,那么该文件的URL就是:

ftp://refm.mit.edu/pub/abc.txt

而该目录pub的URL是:

ftp://rtfm.mit.edu/pub/

某些FTP服务器要求用户要提供用户名和口令,那么这时就要在项之前填入用户名和口令。FPT的默认端口号是21,一般可省略。但有时也可使用另外的端口号。

FTP已使用了超过20年。世界上已有很多FTP服务器使广大用户能利用它下载所需的各种文件。万维网的出现并没有想取消FTP,而是要使FTP用起来更加方便(FTP的用户界面不太友好,不易使用)。当然,或许以后FTP也可能会消失,这是出为HTTP服务器可以做FTP所能做的一切工作。

3.使用FTP的URL

对于万维网的网点的访问要使用HTTP协议。HTTP的URL的一般形式是:

http://<主机>:<端口>/<路径>

HTTP的默认端口号是80,通常可省略。若再省略文件的<路径>项,则URL就指到因特网上的某个主页(home page)。主页的概念很重要,它可以是以下几种情况之一。—个www或Gopher服务器的最高级别的页面。某—个组织或部门的一个定制的页面或目录。从这样的页面可链接到因特网上的与本组织或部门有关的其他站点。

·由某一个人自己设计的描述他本人情况的WWW页面。

例如,要查清华大学的信息,就可先进入到清华大学的主页,其URL为:

http://www.tsinghua.edu.cn

这里省略了默认的端口号80。我们从清华大学的主页入手,就可以通过许多不同的链接找到所要查找的各种有关清华大学的信息。

更复杂一些的路径是指向层次结构的从属页面。例如:

http://www.tsinghua.edu.cn:100/netsalon

是清华大学的“网上学术沙龙”的页面。注意,上面的URL在主机的后面使用了端口号100。一个HHP URL也可以是直接指向可从该www页面得到的一个文件。例如:

http://www.tsinghua.edu.cn/docs/kjc/gjsys.html

是清华大学的WWW主机中的目录/docs/kjc/下的一个有关“国家实验室”的文件gsys.html。此文件的后缀为.html表示这是一个用超文本标记语言HTML写出的文件。

虽然URL里面的字母不分大小写,但有的页面为了读者看起来方便,故意使用了一些大写字母,实际上这对使用Windows的PC用户是没有关系的(但要注意,对于UNIX操作系统应特别小心大写和小写)。

用户使用URL并非仅仅能够访问万维网的页面,而且从还能够通过URL使用其他的因特网应用程序,如PTP、Gopher、TELNET、电子邮件以及新闻组等。更重要的是,用户在使用这些应用程序时,只使用一个程序,即浏览器。这显然是非常方便的。

为了使超文本的链接能够高效率地完成,需要用FTP协议来传送一切必须的信息。从层次的角度看,HTP是面向事务的(transaction-oriented)应用层协议,它是万维网上能够可靠地交换文件(包括文本、声音、图像等各种多媒体文件)的重要基础。

每个万维网网点都有一服务器进程,它不断地监听TCP的端口80,以便发现是否有浏览器(即客户进程)向它发出连接建立请求。一旦监听到连接建立请求并建立了TCP连接之后,浏览器就向服务器发出浏览某个页面的请求,服务器接着就返回所请求的页面作为响应。最后,TCP连接就被释放了。在浏览器和服务器之间的请求和响应的文互,必须按照规定的格式和遵循—定的规则。这些格式和规则就是超文本传送协议HTTP。

HTTP规定在HTTP客户与HTTP服务器之间的每次交互都由一个ASCII码串构成的请求和一个“类MIME(即[RFC 822]MME-like)”的响应组成。虽然大家都使用TCP连接进行传送,但标准并没有这样明确规定。

用户浏览页面的方法有两种。一种方法是在浏览器的Location中键入所要找的页面的URL。另一种方法是在某一个页面中用鼠标点击一个可选部分,这时浏览器自动在因特网上找到所要链接的页面。

假定图9-11用户用鼠标点击了屏幕上的一个可选部分。他使用的链接指向了另一个页面,其URL是http://www.w3.org/Protocol/HTTP-NG/Activity.html。下面具体地说明在用户点击鼠标后所发生的几个事件。

图9-11万维网的工作过程

 

(1)浏览器分析链接指向页面的URL。

(2)浏览器向DNS请求解析www.w3.org的IP地址。

(3)DNS解析出服务器的IP地址为18.23.0.23。

(4)浏览器与服务器建方TCP连接(在18.23.0.23使用端口80)。

(5)浏览器发出取文件命令:GET/Protocol/HTTP-NG/Activity.html。

(6)www.w3.org服务器给出响应,将文件Activity.html发送给浏览器。

(7)TCP连接释放。

(8)浏览器显示文件Activity.tml中的所有文本。

许多浏览器在下载文件时,往往只下载其中的文本部分。这样可使下载的速度加快。文件中原来嵌入图像或声音的地方只用—个小图标来显示。用户若要下载这些图像或声音,可用鼠标再分别点击这些图标。每点击一次鼠标,就重复执行一次类似于上面的8个步骤。也就是先建水TCP连接,再使用TCP连接传送命令和传送文件,最后释放TCP连接。虽然这许多少步骤看来繁琐,但这样做实现起来却较为容易。

HTTP是一个面向事务的客户服务器协议。虽然HTTP使用了TCP,但HTTP协议是无状态的(stateless)。也就是说,每一个事务都是独立地进行处理。当一个个事务开始时,就在万维网客户与万维服务器之间产生一个TCP连接,而当事务结束时就释放这个TCP连接。HTTP的无状态特性很适合它的典型应用。用户在使用万维网时,往往要读取一系列的网页,而这些网页又可能分布在许多相距很远的服务器上,将HTTP协议做成无状态的,可使读取网页信息完成得较迅速。HTTP协议本身也是无连接的,虽然它使用了面向连接的TCP向上提供的服务。

在许多情况下,用户的PC机并不是一直连接在因特网上,而是通过拨号方式经过因特网服务提供者ISP再连接到因特网上的。在这种情况下,用户先要使用PPP协议与ISP接通,待ISP分配给用户一个临时的IP地址后,用户才能使用WWW浏览器。

从HTTP来看,上述的万维网浏览器就是一个HTTP客户,而万维网服务器等待HTTP请求的进程常称为HTTP daemon,有的文献将它缩写为HTTPD。HTTP daemon在收到HTTP客户的请求后,经过—些必要的处理,将所需的文件返回给HTTP客户。

HTTP仍在不断地发展。现在较新的版本是1999年公布的HTTP/1.1[RFC 2616],它已成为因特网标准,其文本长达176页。而新的下一代HTTP(HTTP-NG)则正在研究之中。

HTTP规范所定义的最简单的操作就是在用户代理(user agent)与起点服务器(origin server)直接连立了一个TCP连接。用户代理就是在一个端用户的计算机上运行的万维网浏览器程序。起点服务器就是用户想获取的资源所驻留的服务器。客户先发起TCP连接。在和服务器建了TCP连接后就发送HTTP请求。这个请求包括一个特定的命令(指出使用什么方法)、一个URL和一个“类MIME”报文,它包括一些请求参数、客户的信息,或一些附加的内容信息。

当服务器收到请求后.就试图完成所请求的动作,接着就返回HTTP响应。响应包括状态信息、成功或出错信息,一个类MIME报文,它包括有关服务器的信息、有关响应自身的信息,或其他的一些信息。接着就释放TCP连接。

用户代理与起点服务器之间也可以有多段TCP连接,这些连接经过一个或多个中间系统。每一个中间系统起着中继的作用:将请求传送到服务器,再将响应传送到客户。

2. 万维网高速缓存

万维网高速缓存(Web cache)是一种网络实体,它能代表浏览器发出HTTP请求,因此万维网高速缓存又称为代理服务器(proxy server)。万维网高速缓存将最近的一些请求和响应暂存在本地磁盘中。当与暂存的请求一样的新请求到达时,万维网高速缓存就将暂存的响应发送出去,而不需要按URL的地址再去访问该资源。万维网高速缓行可在客户或服务器端工作,也可在中间系统上工作。下面我们用例子说明它的作用。

设图9-11中的校园网有许多人用PC机的浏览器访问因特网上很多的服务器。校园网的路由器R1用2 M bit/s专线连接到因特网上的路由器R2。先假定不使用万维网的高速缓存,现在估算一下访问因特网上的服务器的时延。

若校园网使用10 M bit/s以太网,平均每秒产生20个请求,每个请求得到的返回信息平均为100 Kbit,则校园网以太网上的通信强度为0.2,因而以太网上的时延很小,一般仅几十毫秒。在因特网内,从路由器R2转发HTTP请求报文到含有响应信息的数据报传送到R2所需的时间,在正常情况下为2秒左右(这就是所谓的“因特网网时延”)。再观察一下两个路由器之间的链路上的时延。简单的计算可得出在2 M bit/s链路上的通信量强度为1。这表明在这样的链路上的时延已增长到非常大的数值,例如长达几分钟以上,用户显然无法忍受这样大的时延。

将两个路由器之间的专线增大到10 M bit/s就能解决这一瓶颈问题,但这些增加数倍租用线路的费用,因此最好采用其他更加经济的方法,即在校园网增加一个万维网高速缓存(这不算太贵)。这时,校园网内种浏览器访问因特网上的服务器的过程如下所述。

(1)浏览器访问因特网的服务器时,要先与校园网的高速缓存建立TCP连接,并向高速缓存发出HTTP请求报文,如图9-11所示的。

(2)高速缓存若已经存放了所请求的对象,则将此对象放入HTTP响应报文中返回给浏览器。

(3)否则,高速缓存就代表发出请求的浏览器,与因特网上的起点服务器建立TCP连接,如图9-11所示的②.并发送HTTP请求报文。

(4)起点服务器将所请求的对象放任HTTP响应报文中返回给校园网的高速缓存。

(5)高速缓存收到此对象后,先复制在其本地存储器中,然后再将所请求的对象放在HTTP响应报文中,通过已建立的TCP连接,如图9-11所示的①,返回给浏览器。

我们注意到高速缓存有时是作为服务器(当接受浏览器的HTTP请求时),但有时却作为客户(当向因特网上的起点服务器发送HTTP请求时)。

假定高速缓存的命中率①为0.4,那就表明有40%的HTTP请求可以由高速缓存来响应(通过10 M bit/s局域网),而60%的HTTP请求仍需经过2 Mbit/s的链路连接到因特网。这样,2 M bit/s链路的通信量强度就从1下降到0.6(一般通信量强度小于0.8就可接受),因而在此链路上的时延就大大降低,例如,只有几十毫秒。可以看出,在使用高速缓存的情况下,2 M bit/s链路已不再成为访问因特网服务器的瓶颈。这时的平均访问时延是0.4×(几十毫秒)+0. 6×(2秒+几十毫秒),已经小于因特网时延(2秒)了。

3.HTTP的报文结构

HITP有两类报文:从客户到服务器的请求报文和从服务器到客户的响应报文。典型的HTTP请求报文如下:

GET /dirABC/docu1.html HTTP/1.1 {这是请求行}

Connection: close {此行和以下行都是首行}

User-agent: Mozilla/4.0

Accept: text/html, image/gif, image/jpeg

Accept-language: en

{此处有一空行}

在请求行中的第一个字段是“方法”(method)。“方法”是面向对象技术中使用的专门名词,也就是对所请求的对象进行的操作,因此这些方法实际上就是—些命令。此处填入的方法是GET,它是关键字,必须用大写。GET表示请求读取一个万维网的页面,这是最常用的一个方法。其他常用的方法还有HEAD(请求读取的不是整个页面而只是其首部)和POTT(请求接受所附加的实体,如将一个记录附加到一个数据库中)。请求行的第二个字段是所要链接到的对象的URL。由于在建立TCP连接时已经有了主机名,因此这里只写上主机中的文件名(包括路径)。第三个字段说明是HTTP的1.1版本。

以下就是首都行。“Connection: close”表示浏览器希望服务器在传送完所请求的对象后即并闭TCP连接(还有一种可选择的情况是暂不关闭TCP连接,继续读取其他对象)。下一行是说明浏览器的类型。“Mozilla/4.0”是Netscape浏览器4.0版。再下面两行是浏览器告诉服务器它准备接收什么和使用的语言是英文(en)。使用GET时,首部行后面没有最后的实体主体。

当用户在网上填写表单(form)时,要用到POST方法。这时,用户键入的信息就要填写在最后的实体主体中,和前面的请求行、首部行一起发送给HTTP服务器。

典型的HTTP响应报文如下:

HTTP/1.1 200 OK {这中状态行}

Connection: close {此行开始的6行是首部行}

Date: Thu, 06 Aug 1998 12:00:15 GMT

Server: Apache/1.3.0 (UNIX)

Last-Modified: Mon, 22 Jun 1998 09:23:24 GMT

Connect-Length: 8765 {文件长度的字节数}

Connect-Type: text/html

{此处有一空行}

DATA DATA DATA DATA DATA……      {从这里开始是所请求的文件}

状态行中的200是状态码,0K是短语,表示一切正常。

状态码共有41种,常用的有下述几种。

30l(Moved Permanently,网站已转移,新的URL指明在响应报文首部Location的后面)。

400(Bad Request,服务器无法理解请求报文)。

404(Not Found,服务器上没有所请求的对象)。

505(HTTP Version Not Supported。服务器不支持请求的HTTP的协议版本)。

首部中个的“Connection: close”表示服务器在传送完所请求的对象后即关闭TCP连接。“Date:”是服务器返回所请求的对象的日期和格林尼治时间。其余的都很清楚,不需要再进行解释。

9.5.3 超文本标记语言HTML

万维网要使因特网上任何一台计算机都能显示出任何一个万维网服务器上的页面、就必须解决页面制作的标准化问题。超文本标记语言HTML就是一种制作万维网页面的标淮语言,它消除了不同计算机之间信息交流的障碍。

超文本标记语言HTML(HyperText Markup language)中的Markup的意思就是“设置标记”。因此HTML也常译为起文本置标语言。这就像在出版行业,编辑经常要在文档上写上各种标准化的记号,指明在何处应使用何种字体等等。因此也有人将HTML译为超文本排版语言。

IS0早在1986年就已制定了—个标准IS0 8879,即SGML(Standard Generalized Markup Language)。这是一个描述标记语言的标准。但SGML过分复杂使它很不适合于简单快捷的web出版。这就导致HTML问世。HIML是—种特定的SGML文档类型。由于HTML非常易于掌握且实施简单,因此它很快就成为万维网的重要基础[RFC 1866]。官方的HTML标准由W3C(即WWW Consortium)负责制定.现在最新的版本是HTML4.0。更新的版本正在研究之中。

HTML定义了许多用于排版的命令,即“标签”(tag)。例如,表示后面开始用斜体字排版,而则表示斜体字排版到此结束。HTML就将各种标签嵌入到万维网的页面中。这样就构成了所谓的HTML文档。HTML文档是一种可以用任何文本编辑器(例如,Windows的记事本Notepad)创建的ASCIIH码文件,但应注意,仅当HTML文档是以.html或htm为后缀时,浏览器才对这样的HTML文档的各种标签进行解释。如果HTML文档改换以.txt为其后缀,则HTML解释程序就不对标签进行解释,而浏览器只能看见原来的文本文件。

当浏览器从服务器读取某个页面的HTML文档后,就按照HTML文档中的各种标签,根据浏览器所使用的显示器的尺寸和分辨率大小、重新进行排版并恢复出所读取的页面。现有的些字处理软件都不具有像HTML这样的功能。

目前已开发出了很好的制作万维网页面的软件工具,使我们能够像使用Word字处理器那样地很方便地制作各种页面。然而学习一些HTML的基本概念仍是必要的。这是因为在对已有的万维网页面进行修改时,往往要查看其源代码,即需查看其HIML文档。真接在HTML文档上对页面进行修改,有时是很必要的。

建议每一个读者使用一下浏览器上的编辑器来编写—个很简单的页面。然后仔细观察浏览器显示的页面和相应的HTML文档的关系,同时也和编辑器上显示的内容进行对比。这样做可能是学习HTML最好的方法。

2.HTML的格式与标签

元素(element)是HTML文档结构的基本组成部分。一个HTML文档本身就是—个元素。每个HTML文档由两个主要元素组成:首部(head)和主体(body),主体紧接在首都的后面。首都包含文档的标题(title),以及系统用来标识文档的一些其他信息。标题相当于文件名。用户可使用标题来搜索页面和管理文档。文档的主体是HTML文档的最主要的部分。文档所包含的主要信息都在主体中。当浏览器工作时,在浏览器的最上面的标题栏显示出文档的标题,而在浏览器最大的主窗口显示的就是文档的主体。

主体部分常由若干更小的元素组成,如段落(paragraph)、表格(table)利列表(list)等。

HIML用一对标签(即一个开始标签和一个结束标签)或几对标签来标识一个元素。开始标签由一个小于字符“<”、—个标签名和一个大于字符“>”组成。结束标签和开始标签的区别只是在小于字符的后面加上—个斜线字符“/”,虽然标签名并不区分大写和小写(例如,和<title>或<TiTle>是等效的)但习惯上很多人愿意用大写字符表示一个标答名。有一些标签可以将约束标签省略。 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">并非所有的浏览器都支持所有的HTML标签。若某一个浏览器不支持某一个HTML标签,则浏览器将忽略此标签,但在一对不能识别的标签之间的文本仍然会被显示出来。 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">这里需要指出,与浏览器显示HTML文档时,连续的空格、回车和换行都被当成是—个空格。浏览器在显示文本时,会根据显示器的尺寸在适当的地方自动换行,而和HTML文档的—个段落里面的换行(如上面例子中在“虽然很”后面的换行)没有关系。 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">题头(heading)是在主体中的标题,共分为6级,1级最高,6级最低。级别越高的题头所用的字也越大(编辑器自动设置题头子体的大小)。题头标签<Hn>中的n表示题头的级别。在有的标签名后面还可加上属性,如:ALIGN=center(居中),ALIGN=right(右对齐),默认的属性是左对齐ALIGN=left。 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">在HTML中有3个字符具有特殊的意义,即:<(表示一个标签的开始),>(表示一个标签的结束),和&(表示转义序列的开始)。因此,当这3个字符在文件中出现时,在HTML文档中就要将其转换为转义序列(escape sequence)。每个转义序列都以字符“&”开始。以分号“;”结束。这3个字符“<”、“>”和“&”所对应的转义序列分别为下面引号中的字符序列:“&lt:”、“&gt;”和“&amp;”。这样,在浏览器中就可以显示各种非ASCII码了。例如,字符 是一个版权符号,在HTML文档就用“&copy:“来表示。顺便指出,在转义序列中的字符是分大小写的。 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">表9-2给出一些常用的HTML标签以及简要的说明。 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">最前面的7个标签不需要再进行解释。标签<UL>表示无序列表(Unordered List),在列表中的每一个项目都不编号,而是在项目前面出现一个圆点。标签<OL>则表示编号列表(Ordered List),列表中的项目都按顺序编号。无论是无序列表还是编号列表,都可以嵌套使用。标签<MENU>,是使列中的项目前面既没有圆点,也没有编号,因此在屏幕上更加简洁。若浏览器不支持<MENU>标签,则在每个项目前仍然使用园点。再后面的3个标签意思部很清楚,不用解释。 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">当有的文本的版面已经过精心的排版而浏览器在进行显示时可能含有改变版面的格式时,就要进行已排版文本的设置。标签<PRE>表示己排版(PREformatted)。 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">HTML允许在万维网页面中插入图像。一个页面本身带有的图像称为内含图像(inline image)。标签<IMG>即表明在当前位置装入一个内含图像(IMaGe),其来源(SouRCe)是文件…。HTML标准并没有规定该图像的格式。实际上,大多数浏览器都支持GIF和JPEG文件。从理论上讲,用户可以设计一个浏览器,使它能够支持多种格式的图像文件。但按照这种浏览器创作出的万维网页面,很可能使别人的浏览器什么也看不见。这里的原因就是很多种格式的图像占据的存储空间太大,因而这种图像在因特网传送时就很浪费时间。例如,一幅位图文件(.bmp)可能要占用500~700 KB的存储空间。但若将此图像改存为经压缩的.gif格式则可能只有十几个KB,大大减少了存储空间。 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">在插入图像时,在标签<IMG>中还可使用—些参数。例如,参数ALIGN给图像定位,并将与图像一起出现的文字放在合适的地方(与图像的顶部、或中部、或底部对齐)。参数HEIGHT和WIDTH是指明图像装入时在屏幕上显示时的大小,—般用像素(pixel)的数目表示。如<IMG SRC=portrait.gif HEIGHT=100 WIDTH=65>,表示装入一个文件名为portrait.gif的图像,其高度和宽度分别为100个像素和65个像素。 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">HTML还可插入表格(table)。这就要使用标签<TABLE>。与此标签配合使用的还有如:<CAPTION>(表格的标题),<TR>(表格的行),<TH>或<TD>(表格每格中应填入的数据)等等,这里不再详细介绍。 </p><p style="TEXT-ALIGN: left; MARGIN-LEFT: 21pt" class="MsoNormal" align="left">表9-2中最后一项是最重要的一个标签,我们在9.5.5节专门讨论关于链接的问题。 </p><h3>9.5.4 万维网中的链接 </h3><p style="TEXT-ALIGN: left; MARGIN-LEFT: 21pt" class="MsoNormal" align="left">1.链接到其他网点上的页面 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">没有链接就没有万维网。在前面的图9-9中我们已经给出了链接的初步概念。现在我们要比较详细地介绍HTNL关于链接的一些规定。 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">每个链接有一个起点和结点。链接的起点说明在万维网页面中的什么地方可引出—个链接。在一个页面中,链接的起点可以是一个字,几个字或一幅图,甚于是一段文字。在浏览器所显示的页面上,链接的起点是很容易识别的。对于以文字作为链接的起点,这些文字往往用不同的颜色显示(例如,一般的文字用黑色字时,链接起点往往使用蓝色字),甚至还加上下划线(一般由浏览器来设置)。当我们将鼠标移动到一个链接的起点时,表示鼠标位置的箭头就变成了一只手。这时只要点击鼠标,这个链接就被激活。 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">定义一个链接的标签是<A>。字符A表示锚(Anchor)。建立—个链接时好像抛出—个锚,并将这个锚扎到链接的终点。 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">HTML规定,在HTML文档中定义一个链接的语法是: </p><p style="TEXT-ALIGN: center" class="MsoNormal" align="center"><A HREF=”’…”>X</A></p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">这里一定要弄清链接的起点和终点。 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">链接的起点就是(9-3)式中的X,它可以是—个或多个字符。 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">链接的终点则放在(9-3)式中的HREF“…”的引号中,引号中的“…”就是链接终点的统一资源定位符URL。“HREF”与前面的字符“A”之间应有—个空格。H代表超文本,而REF代表REFerence,是“访问”或“引用”的意思。 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">例如,我们有一个页面的文档中的某一行提到清华大学,但没有详细介绍。这时就可以将该行中“清华大学”这4个字作为一个链接的起点。在浏览时只要将鼠标的位置放在这个链接起点,点击一下,就可以进入到清华大学的主页并了解清华大学的详细情况。有关这个链按的HTML文档就是: </p><p style="TEXT-ALIGN: center" class="MsoNormal" align="center"><A HREF=http://www.tsinghua.edu.cn>清华大学</A></p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">2.链接到一个本地文件 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">上面的例子是链接的终点是其他网点上的页面。这种链接方式叫做远程链接。要外多情况下,链接可以指向自己的计算机中的某—个文件。这叫做本地链接。 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">在进行本地链接时,在HREF的后面不需要写很长的、完整的URL(包括具有完整目录路径的文件名)。这是因为在使用URL时可进行许多的简化如下所述。 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 26.25pt" class="MsoNormal" align="left">当协议(http://)被省略时,就认为与当前页面的协议相同。 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 26.25pt" class="MsoNormal" align="left">当主机域名被省略时,就认为是当前的主机域名。 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 26.25pt" class="MsoNormal" align="left">当目录路径被省略时,就认为是目录。(对于远程链接,就认为是主机的默认根目录。)</p><p style="TEXT-ALIGN: left; TEXT-INDENT: 26.25pt" class="MsoNormal" align="left">当文件名被省略时,就认为是当前文件。(对于远程链接,就认为是对方服务器上默认的文件名,通常是一个名为index.html的文件。)</p><p style="TEXT-ALIGN: left; TEXT-INDENT: 26.25pt" class="MsoNormal" align="left">使用这种简化的方法,在HREF=的后面使用了相对路径名。相反,使用完整的URL找—个文件是使用绝对路径名。 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 26.25pt" class="MsoNormal" align="left">使用相对路径名的好处不仅是可以少键入—些字符,而且也便于目录的改动。例如,在某一级目录下创建了许多可互相链接的文档。若需要改动一下目录结构并将此目录移至另一个目录下,那么以前创建的使用绝对路径名的链接全都要改动,否则就链接不了(当下载许多相互链接的文档后,若改变其文档目录,就常常发生这种链接不上的情况)。但若使用相对路行名,则原来的链接关系可以不必去改动。 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 26.25pt" class="MsoNormal" align="left">HTML还支持读取其他结点的声音或视像文件。这时应将(9-3)式中要读取的文件名写为后缀为.wav,.mpeg或.mov的文件名即可。 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 26.25pt" class="MsoNormal" align="left">3.链接到本文件中的某个地方 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">假定有个很长的文件(后缀为.html)在浏览器中显示。当查找某些内容时,往往要利用窗口边上的滚动条在几千行的信息中反复来回查找。这显然很不方便。比较好的办法是在文件的一开始放入一个详细目录。目录中的每—节都一个链接的起点。只要用鼠标点击目录中某—节的链接起点,就能立即将所要找的那一节显示在屏幕的最上方。 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">这种情况和前面所讨论的不同之处就是链接的终点不同,困为现在链接的终点不是—个统一资源定位符URL,而是一个文件中指明的特定地方(例如某个段落的开始行)。为了标识这个链接的终点,HTML将这种链接的终点称为命名锚(named anchor),因为链接的终点像一个锚扎到这里来。但在一个文件中可能会有很多的链接终点。为了区分这些链接终点。就必须给每一个链接终点命名。 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">在设置一个远程链接时,由于远程文档的URL已经知道了,因此按照(9-3)式就可将链接设置好。但要设置一个本文件的链接时,就必须在要链接到本文件中的某个特定地方,先定义一个命名锚。HTML规定一个命名锚的定义语法如下: </p><p style="TEXT-ALIGN: center" class="MsoNormal" align="center"><A NAME=“…”>Y</A> (9-4)</p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">这里的Y就是被指明为出链接终点的一个或多个字符,而NAME=的后面引号中的“…”写入我们给命名锚取的名字。例如,对于图9-12的例子中,链接的终点在字符abc的前面,而命名锚的名字取为Destination,因此(9-4)式就变为: </p><p style="TEXT-ALIGN: center" class="MsoNormal" align="center"><A NAME=“Destination”>abc</A>     (9-5)</p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">HTML规定链接到一个命名锚的HTML文档的语法是: </p><p style="TEXT-ALIGN: center" class="MsoNormal" align="center"><A HREF=“#…”>X</A>      (9-6)</p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">(9-6)式中在字符#后面的省略号“…”就是命名锚的名字,而X是链接的起点。例如,当上述链接的起点选为文档中的X时,在链接起点对应的HTML语句就是: </p><p style="TEXT-ALIGN: center" class="MsoNormal" align="center"><A HREF=“#Destination”>X</A>      (9-7)</p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">不难看山,(9-7)式和(9-5)式的作用是不同的。(9-7)式定义了一个本文件中的链接的起点和终点的命名锚,而(9-5)式是在链接的终点定义命名锚的名字。 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">命名锚也可插入到本地的其他HTML文件中(但在其他网点中的别人的文件中插入自己设置的命名锚是不允许的),这时应在(9-5)中的字符“#”前加上该文件的名字。 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">4.浏览器的结构 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">浏览器的结构要比服务器的结构复杂得多。服务器只是重复地执行—个简单的任务:等待浏览器打开—个链接。按照浏览器发来的请求向浏览器发送页面,关闭连接,并等待浏览器(也可能是另外的浏览器)的下一个请求。但浏览器却包含若干个人型软件组件,它们协同在一起工作。图9-13是一个浏览器的主要组成部分。 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left"><img style='max-width:300px;' id="img7" src="http://image8.360doc.cn/DownloadImg/2010/04/1316/2855203_8.jpg" /></p><p style="TEXT-ALIGN: center; TEXT-INDENT: 21pt" class="MsoNormal" align="center">图9-13 浏览器的结构 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left"> </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">从图9-13可看出,一个浏览器有一组客户、一组解释程序,以及管理这些客户和解释程序的控制程序。控制程序是其中的核心部件,它解释鼠标的点击和键盘的输入,并调用有关的组件来执行用户指定的操作。例如,当用户用鼠标点击下一个链接的起点时,控制程序就调用一个客户从所需文档所在的远地服务器上取回该文档,并调用解释程序向用户显示该文档。 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">HTML解释程序是必不可少的,而其他解释程序则是可选的。HTML解释程序的输入就是符合HTML语法的文档。解释程序将HTML规格转换为适合用户显示硬件的命令来处理版面的细节。例如,当遇到一个强制换行标签<BR>,解释程序就输出一个新的行。 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">HTML解释程序对页面中所有的可选项(即所有链接的起点)都保存有其位置信息、当用户的鼠标点击某个选项时。浏览器就根据当前光标位置和存储的位置信息来决定哪个选项被用户选中。 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">前面已经讲过,浏览器的任务不仅是浏览。许多浏览器还包含一个FTP客户,用来获取文件传送服务。一些浏览器也包含一个电子邮件客户,使浏览器能够发送和接收电子邮件。现在的浏览器都设计得很好。它使用户看不见许多细节。用户也并不知道他执行了一个可选客户,如FTP客户,或SMTP客户。 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">在浏览器中还设有一个缓存。浏览器将它取回的每一个页面幅本都放入本地磁盘的缓存中。当用户用鼠标点击某个选项时,浏览器首先检查磁盘的缓存。若缓存中保存了该项,那么浏览器就直接从缓存中得到该项副本而不必从网络来获取。在这种情况下就可明显地改善浏览器的运行特性。对于网络连接较为缓慢的用户,这种缓存就显得更加重要。因为从网络上取回一个很大的文件所需的时间将大大超过从本地磁盘直接读取的时间。 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">然而使用缓存也带来了一些问题。首先,缓存要占用磁盘大量的空间。其次,浏览器性能的改善只有在用户再次查看缓存中的页面时才有帮助。实际上,用户在进行浏览时,一般会及时将有保存价值的页面存储下来(只需点击几下鼠标即可)。因此缓存中保存的大部分今后不再查看的文件并不会改善浏览器的性能。相反,由于浏览器要耗费时间来将这些文件白白地存储在磁盘上,这反而降低了浏览器的效率。 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">为了改善浏览器的特性,许多浏览器允许用户调整缓存策略。例如,用户可设置缓存的时间限制,并在此时间限制到期后在缓存中删除这些文件。 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">关于浏览器还有一些内容本书不再详细进行讨论了。这些内容简述如下。 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">(1)动态文档(dynamic document):动态文档的内容是在浏览器访问万维网服务器时才由就用程序动态创建。由于对浏览器每次请求的响应都是临时生成的,因此用户通过动态文档所看到的内容可根据需要不断变化。例如,动态文档可用来报告股市行情、天气预报或民航售票情况等内容,动态文档和静态文档(static document)不同。静态文档是指该文档的内容不会改变。由于这种文档的内容不会改变,因此用户对静态文档的每次读取所得到的返回结果都是相同的。 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">(2)活动文档(active document):活动文档将所有的工作都转移给浏览器。每当浏览器请求—个活动文档时,服务器就返回一段程序,使它在浏览器运行。由美国Sun公司开发的Java语言是—项用于创建和运行活动文档的技术。在Java技术中使用了一个新的名词“小应用程序”(applet)来描述活动文档程序。当用户从万维网服务器下载一个嵌入了Java小应用程序的HTML文档后,用户可在浏览器的显示屏幕上点击某个图像,然后就可看到动画的效果,或是在某个下拉式菜单中点击某个项目,然后就可看到根据用户键入的数据所得到的计算结果。 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">(3)搜索引擎(search engine):是万维网上的检索系统。用户使用搜索引擎可在万维网上查找信息(当不知道信息所在网点时)。现在万维网上已有许多著名的搜索引擎。这些搜索引擎中的Yahoo(请注意:发音时重音在第一个音节而不是后面的音节L)最为出名,其网址为: </p><p style="TEXT-ALIGN: center; TEXT-INDENT: 5.25pt" class="MsoNormal" align="center">http://www.yahoo.com。 </p><h2 style="TEXT-ALIGN: center" align="center">9.6 动态主机配置协议DHCP </h2><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">动态主机配置协议DHCP(Dynamic Host Configuration Protocol)提供了—种称为即插即用连网(plug-and-play-networking)的机制[RFC 2131]。这种机制允许一台计算机加入新的网络和获取IP地址而不用手工参与。 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">DHCP对运行客户软件和服务器软件的计算机都适用。当运行客户软件的计算机移至一个新的网络时,就可使用DHCP获取其配置信息而不需要手工干预。DHCP给运行服务器软件而位置固定的计算机指派一个永久地址,当这计算机重新启动时其地址不变。 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">DHCP使用客户服务器方式。当一台计算机启动时就广播一个DHCP请求报文。DHCP服务器收到请求报文后返回一个DHCP回答报文。DHCP服务据先在其数据库中查找该计算机的配置信息。若找到,则返回找到的信息。若找不到,则从服务器的按需分配的地址库中取一个地址分配给该计算机。 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">DHCP很适合于经常移动位置的计算机。当计算机使用Windows 9x操作系统时,点击“控制面板”的“网络”图标就可以添加TCP/IP协议。然后点击“属件”按钮,在“IP地址”这一项下面有两种方法可供选择:一种是“自动获得一个IP地址”,另一种是“指定IP地址”。若选样前一种,就是表示使用DHCP协议自动获得IP地址。 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">有的书将DHCP放在网络层和IP协议—起讨论,这是考虑到DHCP给主机分配的临时IP地址是属于网络层的内容。但是,由于DHCP报文使用UDP用户数据报传送UDP再使用IP传送),因此DHCP在协议栈中的位置应当是在应用层。DHCP服务器使用的熟知端口号是67,而DHCP客户使用的熟知端口号是68。 </p><h2 style="TEXT-ALIGN: center" align="center">习 题 </h2><p style="TEXT-INDENT: 21pt" class="MsoNormal">1.什么是应用进程 应用进程的用户的应用程序有何关系 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">2.因特网的域名结构是怎样的 它与目前的电话网的号码结构有何异同之处 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">3.什么是域名系统中的根域名服务器和授权域名服务器 授权域名服务器与管辖区有何关系? </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">4.举例说明域名转换的过程。域名服务器中的高速缓存的作用是什么 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">5.文件传送协议FTP的主要工作过程是怎样的 主进程和从属进程各起什么作用? </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">6.简单文件传送协议TFTP与FTP的主要区别是什么?用在什么场合? </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">7.试述网络文件系统NFS的主要特点。 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">8.远程登录TELNET的主要特点是什么 什么叫做虚拟终端NVT </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">9.试述电子邮件的最主要的组成部件。能否不使用用户代理 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">10.电子邮件的信封和内容在邮件的传送过程中起什么作用 和用户的关系如何 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">11.电子邮件的地址格式是怎样的?请说明各部分的意思。 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">12.试简述SMTP通信的过程。 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">13.试述邮局协议POP的工作过程。LMAP与POP有何区别? </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">14.MIME与SMTP相比有何优点 什么是quoted-printable编码和base64编码 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">15.一个二进制文件共3072字节长。若使用base64编码,并且每发送完80字节就插入一个回车符CR和一个换行符LF,问一共发送了多少个字节? </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">16.解释以下名词,各英文缩写词的原文是什么? </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 42pt" class="MsoNormal" align="left">WWW、URL、HTTP、HTML、浏览器、超文本、超媒体、链接、命名锚、页面、搜索引擎。 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">17.假定一个链接从一个万维网文档链接到另一个万维网文档时,由于万维网文档上出现了差错而使得链接指向一个无效的计算机名字。这时浏览器将向用户报告什么信息 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">18.当使用鼠标点取—个万维网文档时,若该文档除了有文本外,还有一个本地.gif图像和两个远地.gif图像。试问;需要使用哪个应用程序,以及需要建立几次UDP连接和几次TCP连接 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">19.你所使用的浏览器的高速缓存有多大?请进行一个实验:访问几个万维网文档,然后将你的计算机与网络断开,最后再回到你刚才访问过的文档。你的浏览器的高速缓行能够存放多少个页面 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">20.试创建—个万维网页面,它有一个标题(title)。然后观察浏览器如何使用此标题。 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">21.用你的浏览器读取—个简单的万维网页面.然后利用浏览器菜单上的选项查看该页面的源程序。和本书介绍的HTML的部分格式与标签进行对比,看是否能够看懂。 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">22.定义一个链接可以使用公式(9-3)或公式(9-6)。这两个公式只差一点(相差一个字符“#”)。请指出其区别。 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">23.在浏览器中应当有若干个可选解释程序。试给出一些可选解释程序的名称。 </p><p style="TEXT-ALIGN: left; TEXT-INDENT: 21pt" class="MsoNormal" align="left">24.一个万维网网点有1000万个页面,平均每个页面有10个链接。读取一个页面平均要100 ms。问要检索整个网点平均所需的最少时间是多少 </p><h1 style="TEXT-ALIGN: center; LINE-HEIGHT: 180%" align="center"> </h1></div> <div class="list-group"> <a href="/article/bhthmsg" class="list-group-item">photoshop图层应用</a> <a href="/article/bhzqbve" class="list-group-item">应用层的功能</a> <a href="/article/bhtfgim" class="list-group-item">应用于“会话层、表示层、应用层”的设备有哪些</a> <a href="/article/bibbrjw" class="list-group-item">请说明应用层和网络层的协议是什么?</a> <a href="/article/bhtdcbm" class="list-group-item">OSI模型应用层的问题</a> <a href="/article/bhuihis" class="list-group-item">计算机网络应用层OSI参考模式</a> <a href="/article/bhujuul" class="list-group-item">计算机网络应用层OSI参考模式是</a> <a href="/article/bhujuuu" class="list-group-item">计算机网络应用层OSI参考模式是</a> <a href="/article/bhyzwvb" class="list-group-item">计算机网络应用层OSI参考模式是什么</a> <a href="/article/biavhmu" class="list-group-item">OSI参考模型中的应用层问题</a> <a href="/article/biiohmp" class="list-group-item">为什么RIP协议放在应用层</a> <a href="/article/bhsvxkm" class="list-group-item">网络中//物理层][链路层][网络层][传输层][会话层][表示层][应用层] 是什么啊</a> <a href="/article/bighysg" class="list-group-item">在物理层,数据路层,网络层,运输层,应用层等各层运用的协议有哪些协议的功能是什么?</a> <a href="/article/bhtaath" class="list-group-item">计算机网络中应用层OSI参考模式是</a> <a href="/article/bhudbyu" class="list-group-item">下面的___全部是应用层协议?</a> <a href="/article/bhuikyj" class="list-group-item">计算机网络中应用层OSI参考模式是什么?</a> <a href="/article/bhvnxbr" class="list-group-item">防火墙为什么要做应用层网关ALG??</a> <a href="/article/bihmiow" class="list-group-item">谁知道层跟随页面移动的代码吗?怎么应用</a> <a href="/article/bhvfqyz" class="list-group-item">电路层网关和应用层网关的工作原理和主要区别</a> <a href="/article/biauyio" class="list-group-item">网络的参考模型中的表示层和应用层分别有什么作用?</a> <a href="/article/biauyiu" class="list-group-item">网络的表示层和应用层的作用分别是什么?</a> <a href="/article/biddahp" class="list-group-item">英特网的五层模型中应用层功能由谁来实现</a> <a href="/article/bihabxc" class="list-group-item">photoshop中的图层,通道,路径,形状,动作的概念和应用,以图层或通道为例举例说明其具体应用.</a> <a href="/article/bhviiqn" class="list-group-item">在linux下对 应用层 进行加密。请问高手们怎么做?谢谢~~</a> </div> </div> </div> </div> </div> </div> <footer id="footer" class="footer hidden-print"> <div class="container"> <div class="panel panel-default"> <div class="panel-heading">相关问题</div> <div class="panel-body"> <a class="btn btn-default" href="/article/bhstjlc" title="养生必养肾,看了终生受益">养生必养肾,看了终生受益</a> <a class="btn btn-default" href="/article/bhstjld" title="让小朋友胃口大开的17道营养菜(想让孩子吃好的一定要看)">让小朋友胃口大开的17道营养菜(想让孩子吃好的一定要看)</a> <a class="btn btn-default" href="/article/bhstjle" title="新闻写法">新闻写法</a> <a class="btn btn-default" href="/article/bhstjlf" title="世界作家作品集电子书阅读 第1页">世界作家作品集电子书阅读 第1页</a> <a class="btn btn-default" href="/article/bhstjlg" title="成熟离我们远吗?">成熟离我们远吗?</a> <a class="btn btn-default" href="/article/bhstjlh" title="中医“杏林春暖”的故事">中医“杏林春暖”的故事</a> <a class="btn btn-default" href="/article/bhstjli" title="少女—牛仔装">少女—牛仔装</a> <a class="btn btn-default" href="/article/bhstjlj" title="《菜园里》说课稿buduogood">《菜园里》说课稿buduogood</a> <a class="btn btn-default" href="/article/bhstjlk" title="恋爱是有时差的,怎能要求同步走">恋爱是有时差的,怎能要求同步走</a> <a class="btn btn-default" href="/article/bhstjll" title="孔雀舞">孔雀舞</a> <a class="btn btn-default" href="/article/bhstjlm" title="海啸交易理念30条">海啸交易理念30条</a> <a class="btn btn-default" href="/article/bhstjln" title="性感漂亮的白嫩美女---[ 泽]">性感漂亮的白嫩美女---[ 泽]</a> <a class="btn btn-default" href="/article/bhstjlo" title="中医的理论之美">中医的理论之美</a> <a class="btn btn-default" href="/article/bhstjlp" title="精美圆形靠垫集">精美圆形靠垫集</a> <a class="btn btn-default" href="/article/bhstjlq" title="学校制度汇编(100种)">学校制度汇编(100种)</a> <a class="btn btn-default" href="/article/bhstjlr" title="设备的报废管理制度">设备的报废管理制度</a> <a class="btn btn-default" href="/article/bhstjls" title="屏蔽恶意代码,去除iframe的通知">屏蔽恶意代码,去除iframe的通知</a> <a class="btn btn-default" href="/article/bhstjlt" title="看中国人如何整死中国人[89P]">看中国人如何整死中国人[89P]</a> <a class="btn btn-default" href="/article/bhstjlu" title="人间天堂 中国最美的十大民居建筑(组图)(2)">人间天堂 中国最美的十大民居建筑(组图)(2)</a> <a class="btn btn-default" href="/article/bhstjlv" title="找出好股票,避开坏股票。——刘老汉学炒股——东方财富网博客">找出好股票,避开坏股票。——刘老汉学炒股——东方财富网博客</a> <a class="btn btn-default" href="/article/bhstjlw" title="世界作家作品集电子书阅读 第2页">世界作家作品集电子书阅读 第2页</a> <a class="btn btn-default" href="/article/bhstjlx" title="你必须搞懂">你必须搞懂</a> <a class="btn btn-default" href="/article/bhstjly" title="中国四大名锦">中国四大名锦</a> <a class="btn btn-default" href="/article/bhstjlz" title="泥人张彩塑【滚屏音畫】">泥人张彩塑【滚屏音畫】</a> <a class="btn btn-default" href="/article/bhstjma" title="秋季保养胸部有讲究 少摄入酒咖啡等刺激性饮品——中新网">秋季保养胸部有讲究 少摄入酒咖啡等刺激性饮品——中新网</a> <a class="btn btn-default" href="/article/bhstjmb" title="【智慧背囊】快乐如此简单">【智慧背囊】快乐如此简单</a> <a class="btn btn-default" href="/article/bhstjmc" title="行者老师讲《神农本草经》――(11)大黄">行者老师讲《神农本草经》――(11)大黄</a> <a class="btn btn-default" href="/article/bhstjmd" title="求职信的内容及注意事项">求职信的内容及注意事项</a> <a class="btn btn-default" href="/article/bhstjme" title="朗诵:梦回漓江">朗诵:梦回漓江</a> <a class="btn btn-default" href="/article/bhstjmf" title="新闻写作学笔记">新闻写作学笔记</a> <a class="btn btn-default" href="/article/bhstjmg" title="养生美容">养生美容</a> </div> </div></div> <div class="copy-right"> <p>偶看新闻,客观、专业、权威的知识性互动百科全书。</p></div> </footer> <div class="copy-right"> <div class="container"> <div class="col-md-12"> <a href="https://www.q-5.net/" target="_blank">最新新闻</a> <a href="https://www.wacths.com/" target="_blank">沃茨手表网</a> <a href="https://www.csdndoc.com/" target="_blank">CSDN程序文档</a> <a href="https://www.cmjoy.com/" target="_blank">上海旅游网</a> <a href="https://www.smbaike.com/" target="_blank">神马百科</a> <a href="https://www.familylifemag.com/" target="_blank">程序博客</a> <a href="https://www.xjpta.cn/" target="_blank">香蕉皮作业帮</a> <a href="https://www.cidugushi.com/" target="_blank">景德镇新闻网</a> <a href="https://www.uyuyao.com/" target="_blank">余姚信息网</a> <a href="https://www.zuoyewang.cc/" target="_blank">作业帮作业网</a> <a href="https://www.wenda8.com/" target="_blank">互助问答吧</a> <a href="https://www.16lo.com/" target="_blank">16楼社区</a> <a href="https://www.zyebang.com/">解题作业帮</a><a href="https://www.6210k.com/">艺术百科</a><a href="http://www.ld5.top/">亮点网</a><a href="http://www.smbaike.com/">神马百科</a> <a href="https://www.smwenxue.com/">神马文学网</a> <a href="https://www.zuoye5.com/">拍题作业网</a> <a href="https://www.uczhidao.com/">UC知道</a> <a href="https://www.52sanwen.top/">我爱散文网</a> <a href="https://www.bfwang.top/">北方网</a> <a href="https://www.kexue5.top/">科学网</a> <a href="https://www.wenku1.top/">第一文库网</a> <a href="https://www.wszyw.top/">微思作业网</a> <a href="https://www.wz51.top/">我要文章网</a> <a href="https://www.dsp33.cn/">都市新闻网</a><a href="https://www.xofi.com.cn/">西欧教育</a><a href="https://www.xs2xf.cn/">西山新闻网</a><a href="https://www.holoes.com.cn/">好楼房产信息网</a> <a href="https://www.9x1x.cn/">九乡新闻网</a><a href="https://www.vnql.com.cn/">农企信息网</a><a href="https://www.xnvm.com.cn/">仙女们写真照片</a><a href="https://www.lumta.com.cn/">音乐简谱网</a><a href="https://www.miliya.com.cn/">米粒芽</a><a href="https://www.xuexiaodaquan.net/">学校大全网</a><a href="https://www.wz95.cn/">95后网站</a><a href="https://www.ranatlanta.cn/">汝南网</a><a href="https://www.opuo.com.cn/">欧普网</a><a href="https://www.7c4.com.cn/">宝宝故事网</a> <a href="https://www.pp6a.cn/">神马品牌网</a> <a href="https://www.hzxzt.com.cn/">杭州交通信息网/"></a> <a href="https://www.hzsgz.com.cn/">杭州市高中教育平台</a> <a href="https://www.crrcn.cn/">查人人中国名人网</a> <a href="https://www.amzr.com.cn/">爱美之人</a> <a href="https://www.scmpx.com.cn/">上车买票</a> <a href="https://www.azxt.com.cn/">安卓系统之家</a> <a href="https://www.520sdw.cn/">中科新闻网</a> <a href="https://www.218zy.cn/">科学院研究所</a> <a href="https://www.ekowh.cn/">高考快车</a> <a href="https://www.520gsw.cn/">高考志愿帮</a> <a href="https://www.madbar.cn/">大学志愿大全</a> <a href="https://www.oisogo.cn/">高校问答</a> <a href="https://www.togowu.cn/">高考问答</a> <a href="https://www.mdeusa.cn/">中考百科</a> <a href="https://www.520bzw.cn/">大学知道</a> <a href="https://www.9uwang.cn/">久游网</a> </div></div></div> </body> </html>