【笔记】谢希仁—计网五版:chapter six 应用层(一)

先讨论许多应用协议都要使用的域名系统。在介绍了文件传送协议和远程登录协议后,就重点介绍万维网的工作原理及其主要协议。接着讨论用户最常用的 因特网电子邮件。最后,介绍有关网络管理方面的问题以及有关网络编程的概念。

一、域名系统DNS(domain name system)

1.域名系统概述

背景——ARPANET时代,整个网络上只有数百台计算机,那时使用一个叫作hosts的文件,列出所有主机名字和相应的IP地址。只要用户输入一个主机名字,计算机就可很快地把这个主机名字转换成机器能够识别的二进制IP地址。

为什么机器在处理IP数据报时要使用IP地址而不使用域名呢?——IP地址的长度是固定的32位,而域名的长度并不是固定的,机器处理起来比较困难。

整个因特网为什么不只使用一个域名服务器?——会因过负荷而无法正常工作。↓

因特网域名系统DNS被设计成为一个联机分布式数据库系统,并采用客户服务器方式。DNS使大多名字都在本地解析,仅少量解析需要在因特网上通信,因此DNS系统的效率很高。由于DNS是分布式系统,即使单个计算机出了故障,也不会妨碍整个DNS系统的正常运行。

域名到IP地址的解析是由分布在因特网上的许多域名服务器程序(可简称为域名服务器)共同完成的。域名服务器程序在专设的结点上运行,运行域名服务器程序的机器叫作域名服务器

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

若本地域名服务器不能回答该请求,则此域名服务器就暂时成为DNS中的另一个客户,并向其他域名服务器发出查询请求。这种过程直至找到能够回答该请求的域名服务器为止。(查找过程后续还要讨论)

2.因特网的域名结构

层次树状结构的命名方法

命名规则——域名中的标号都由英文字母和数字组成,每一个标号不超过63个字符(为记忆方便,规定12个字符),也不区分大小写字母。标号中的除连字符(-)外不能使用其他的标点符号。级别低的写在左边,高的写在右边。由多个标号组成的完整域名总共不超过255个字符。

域名是一个逻辑概念——并不代表物理地点。域名中的“点”和点分十进制IP地址中的“点”并无一一对应的关系,点分十进制IP地址中一定是包含三个“点”,但每一个域名中“点”的数目则不一定正好是三个。

顶级域名TLD(top level domain)分为三类——①国家顶级域名nTLD,如cn中国、us美国、uk英国。②通用顶级域名gTLD,如com公司企业、net政府机构、org非营利性的组织、int国际组织、edu美国专用教育机构、gov美国的政府机构、mil美国的军事部门。③基础结构域名。

二级域名分为——①类别域名:ac科研机构、com工、商、金融等企业、edu中国的教育机构、gov中国的政府机构、mil中国的国防机构、net提供互连网络服务的机构、org非营利性的组织。②行政区域名:适用于我国的各省、自治区、直辖市,bj北京。

3.域名服务器

区——一个服务器所负责管辖的范围。在一个区中的所有结点必须是能够连通的,每一个区设置相应的权限域名服务器,用来保存该区中的所有主机的域名到IP地址的映射(是部分)。区是域的子集。

Ⅰ、分类

(1)根域名服务器(root name sever)

所有的根域名服务器都知道所有的顶级域名服务器的域名和IP地址。不管是哪一个本地域名服务器,若要对因特网上任何一个域名进行解析(即转换为IP地址),只要自己无法解析,就首先要求助于根域名服务器。

因特网上共有13个不同IP地址的根域名服务器,它们名字是用一个英文字母命名,从a一直到m(前13个字母),分别是a.rootsevers.net,...,m.rootsevers.net。不是指13个机器,而是13套装置,运营组织在美国,但分布在世界各地,使世界上大部分DNS域名服务器都能就近找到一个根域名服务器。由于根域名服务器采用了任播(anycast)技术,因此当DNS客户向某个根域名服务器进行查询时(用这个根域名服务器的IP地址),因特网上的路由器就能找到离这个DNS客户最近的一个根域名服务器,这样加快了DNS的查询过程,也更加合理利用了因特网的资源。

许多情况下,根域名服务器并不直接把待查询的域名直接转换成IP地址(根域名服务器也没有存放这种信息),而是告诉本地域名服务器下一步应当找哪一个顶级域名服务器进行查询。

(2)顶级域名服务器(TLD服务器)

收到DNS查询请求时,就给出响应的回答(可能是最后结果,也可能是下一步应当找的域名服务器的IP地址)。

(3)权限域名服务器

负责一个区的域名服务器。当一个权限域名服务器还不能给出最后的查询回答时,就会告诉发出查询请求的DNS客户,下一步应当找哪一个权限域名服务器。

(4)本地域名服务器

主机发出DNS查询请求时,请求报文就发送给本地域名服务器。当所要查询的主机属于同一个本地ISP时,该本地域名服务器立即就能将所查询的主机名转换为它的IP地址,而不需要再去询问其他的域名服务器。

为了提高域名服务器的可靠性,DNS域名服务器就把数据复制到几个域名服务器来保存,其中的一个是主域名服务器(master name sever),其他的是辅助域名服务器(secondary name sever)。当主域名服务器出故障时,辅助域名服务器可以保证DNS的查询工作不会中断。主域名服务器定期把数据复制到辅助域名服务器中,而更改数据只能在主域名服务器中进行。这样就保证了数据的一致性。

Ⅱ、两种查询

域名解析过程注意:

①主机向本地域名服务器的查询一般都是采用递归查询(recursive query)。如果主机所询问的本地域名服务器不知道被查询域名的IP地址,本地域名服务器就以DNS客户的身份,向其他根域名服务器继续发出查询请求报文(即替该主机继续查询),而不是让该主机自己进行下一步的查询。因此,递归查询返回的查询结果或者是所要查询的IP地址,或者是报错,表示无法查询到所需的IP地址。

②本地域名服务器向根域名服务器的查询通常是采用迭代查询(iterative query)。根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地域名服务器下一步应当向哪一个域名服务器进行查询,然后让本地域名服务器进行后续的查询(而不是替本地域名服务器进行后续的查询)。根域名服务器通常是把自己知道的顶级域名服务器的IP地址告诉本地域名服务器的查询请求后,要么给出所要查询的IP地址,要么高速本地域名服务器下一步应当向哪一个权限域名服务器进行查询。本地域名服务器就这样进行迭代查询。最后,知道了所要解析的域名的IP地址,然后把这个结果返回给发起查询的主机。当然,本地域名服务器也可以采用递归查询,这取决于最初的查询请求报文的设置是要求使用哪一种查询方式。

Ⅲ、高速缓存

为了提高DNS查询效率,并减轻根域名服务器的负荷和减少因特网上的DNS查询报文数量,在域名服务器中广泛地使用了高速缓存(有时也成为高速缓存域名服务器)。高速缓存用来存放最近查询过的域名以及从何处获得域名映射信息的记录。

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

主机也有高速缓存。

二、文件传送协议

1.FTP概述

文件传送协议FTP(file transfer protocol),提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限,屏蔽了各计算机系统的细节。

文件共享协议中的一大类——FTP和TFTP,即复制整个文件。特点是:若要存取一个文件,就必须先获得一个本地文件的文件副本。如果要修改文件,只能对文件的副本进行修改,然后再将修改后的文件副本传回到原节点。

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

2.FTP的基本工作原理

两个主机传送应用很难,因为计算机存储数据格式不同、文件的目录结构和文件命名的规定不同、相同文件存取功能的,操作系统使用的命令不同、访问控制方法不同。

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

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

主进程工作步骤如下:①打开熟知端口(端口号为21),使客户进程能够连接上;②等待客户进程发出连接请求;③启动从属进程来处理客户进程发来的请求。从属进程对客户进程的请求处理完毕后即终止,但从属进程在运行期间根据需要还可能创建其他一些子进程;④回到等待状态,继续接受其他客户进程发来的请求,主进程与从属进程的处理是并发地进行。

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

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

3.简单文件传送协议TFTP

(trivial file transfer protocol),是很小且易于实现的文件传送协议。虽然TFTP也使用客户服务器方式,但它使用UDP数据报,因此TFTP需要有自己的差错改正措施。TFTP只支持文件传输而不支持交互,没有一个庞大的命令集,没有列目录的功能,也不能对用户进行身份鉴别。

TFTP主要优点:①可用于UDP环境,例如当需要将程序或文件同时向许多机器下载时就往往需要使用TFTP。②TFTP代码所占的内存小,这对较小的计算机或某些特殊用途的设备是很重要的。这些设备不需要硬盘,只需要固化了TFTP、UDP、IP的小容量只读存储器即可。

TFTP主要特点:

①每次传送的数据报文中有512字节的数据,但最后一次可不足512字节;

②数据报文按序编号,从1开始;

③支持ASCII码或二进制传送;

④可对文件进行读或写;

⑤使用很简单的首部。

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

在一开始工作时。TFTP客户进程发送一个读请求报文或写请求报文给TFTP服务器进程,其熟知端口号码为69。TFTP服务器进程要选择一个新的端口和TFTP客户进程进行通信。若文件长度恰好为512字节的整数倍,则在文件传送完毕后,还必须在最后发送一个只含首部而无数据的数据报文。若文件长度不是512字节的整数倍,则最后传送数据报文中的数据字段一定不满512字节,这正好可作为文件结束的标志。

三、远程终端协议TELNET

用户用TELNET就可在其所在地通过TCP连接注册(即登录)到远地的另一个主机上(使用主机名或IP地址),这种服务是透明的,所以也叫终端仿真协议。

使用客户服务器方式。能适应许多计算机和操作系统的差异,因为它定义了数据和命令怎样通过因特网,这些定义就是网络虚拟终端NVT(network virtual terminal)。

NVT的格式定义很简单,所有通信都使用8位一个字节。在运转时,NVT使用7位ASCII码传送数据,但当高位置1时用作控制命令。TELNET的选择协商(option negotiation)使TELNET客户和TELNET服务器可商定使用更多的终端功能,协商的双方是平等的。

四、万维网WWW

1.万维网概述

world wide web,它用链接的方法能非常方便地从因特网上的一个站点访问另一个站点,从而主动地按需获取丰富的信息。

万维网是一个分布式的超媒体(hypermedia),它是超文本(hypertext)系统的扩充。所谓超文本是包含指向其他文档的链接的文本,是万维网的基础。超媒体与超文本的区别是文档内容不同,超文本文档仅包含文本信息,而超媒体文档还包含其他表示方式的信息,如图形、图像、声音、动画、活动视频图像。

非分布式的超媒体系统中,各种信息都驻留在单个计算机的磁盘中。由于各种文档都可以从本地获得,因此这些文档之间的链接可进行一致性检查。所以,一个非分布式超媒体系统能够保证所有的链接都是有效的和一致的。

万维网把大量信息分布在整个因特网上。每台主机上的文档都独立进行管理。对这些文档的增加、修改、删除或重新命名都不需要(实际上也不可能)通知到因特网上成千上万的节点。这样,万维网文档之间的链接就经常会不一致。

万维网以客户服务器方法工作。万维网文档所驻留的主机则运行服务器程序,因此这个主机也称为万维网服务器。客户程序向服务器程序发出请求,服务器程序向客户程序送回所要的万维网文档。在一个客户程序主窗口上显示出的万维网文档称为页面

于是,万维网需解决以下问题:

①怎样标志分布在整个因特网上的万维网上的文档?

——使用统一的定位符URL(uniform resource locator)来标志万维网上的各种文档,并使每一个文档在整个因特网的范围内具有唯一的标识符URL。

②用什么样的协议来实现万维网上各种连接?

——万维网客户程序与万维网服务器程序之间的交互遵守严格的协议,这就是超文本协议HTTP(hypertext transfer protocol)。HTTP是应用层协议,使用TCP连接进行可靠的传送。

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

——万维网使用超文本标记语言HTML(hypertext market language),使得万维网页面的设计者可以很方便地用连接从本页面的某处链接到因特网上的任何一个万维网页面,并且能够在自己的主机屏幕上将这些页面显示出来。

④怎样使用户能够很方便地找到所需的信息?

——用户可以使用搜索工具在万维网上方便地查找所需的信息。

2.统一资源定位符URL

Ⅰ、URL的格式

资源是指因特网上可以被访问的任何对象,包括文件目录、文件、文档、图像、声音等,以及与因特网相连的任何形式的数据。

URL相当于一个文件名在网络范围的扩展。它是与因特网相连的机器上的任何可访问对象的一个指针。由于访问不同对象所使用的协议不同,所以URL还指出读取某个对象时所使用的协议。URL的一般形式:

<协议>://<主机>:<端口>/<路径>

<协议>指出使用什么协议来获取该万维网文档,如HTTP、ftp。<主机>指出万维网文档是在哪一个主机上,就是指该主机在因特网上的域名。<端口>和<路径>可省略。

Ⅱ、使用HTTP的URL

HTTP的URL的一般形式:http://<主机>:<端口>/<路径>

HTTP的默认端口号是80,通常可省略。若再省略<路径>,则URL就指到因特网上的某个主页(home page)。如http://www.tsinghua.edu.cn。虽然URL里面的字母不分大小写,但有的页面为了读者看起来方便,故意用了一些大写字母,实际上这对使用windows的PC机用户是没有关系的。

用户使用URL并非仅仅能够访问万维网的页面,还能通过URL使用其他的因特网应用程序,如FTP或USENET新闻组等。更重要的是,用户在使用这些应用程序时,只使用一个程序,即浏览器。这显然方便。

3.超文本传送协议HTTP

Ⅰ、HTTP的操作过程

HTTP协议定义了浏览器(即万维网客户进程)怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给服务器。从层次角度看,HTTP是面向事务(事务指一系列的信息交换,而这一系列的信息交换是一个不可分割的整体,即要么所有的信息交换完成,要么一次交换都不进行)的应用层协议,它是万维网上能够可靠地交换文件(包括文本、声音、图像等各种多媒体文件)的重要基础。

每个万维网网点都有一个服务器进程,它不断地监听TCP的端口80,以便发现是否有浏览器(即万维网客户)向它发出连接建立请求。在浏览器和服务器之间的请求和响应的交互,必须按照规定的格式和遵循一定的规则,这些格式和规则就是超文本传送协议HTTP

HTTP规定在HTTP客户与HTTP服务器之间的每次交互,都由一个ASCII码串构成的请求和一个“类MIME(MIME-like)”的响应组成。HTTP报文通常都使用TCP连接传送。

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

假定,用户用鼠标点击了屏幕上的一个可选部分,他使用的链接指向了“清华大学院系设置”的页面,其URL是http://www.tsinghua.edu.cn/chn/yxsz/index.htm。用户点击鼠标后,发生的事件(以HTTP1.0为例):

①浏览器分析链接指向页面的URL;

②浏览器向DNS请求解析www.tsinghua.edu.cn的IP地址;

③域名系统DNS解析出清华大学服务器的IP地址为166.111.4.100;

④浏览器与服务器建立TCP连接(在服务器端IP地址是166.111.4.100,端口是80);

⑤浏览器发出取文件命令:GET/chn/yxsz/index.htm;

⑥服务器www.tsinghua.edu.cn给出响应,把文件index.htm发送给浏览器;

⑦释放TCP连接;

⑧浏览器显示“清华大学院系设置”文件index.htm中的所有文本。

HTTP使用了面向连接的TCP作为运输层协议,保证了数据的可靠传输。HTTP不必考虑数据在传输过程中被丢弃后又怎样被重传。但是,HTTP协议本身是无连接的。这就是说,虽然HTTP使用了TCP连接,但通信的双方在交换HTTP报文之前不需要先建立HTTP连接。

HTTP协议是无状态的。也就是说,同一个用户第二次访问同一个服务器上的页面时,服务器的响应与第一次被访问时的相同(假定现在服务器还没有把该页面更新),因为服务器不记得曾经访问过的这个客户,也不记得为该客户曾经服务过多少次。HTTP的无状态特性简化了服务器的设计,使服务器更容易支持大量并发的HTTP请求。

从上图看出,请求一个万维网文档所需的时间是该文档的传输时间(与文档大小成正比)加上两倍往返时间RTT。HTTP/1.0的缺点是每请求一个文档就要有两倍RTT的开销,另外万维网客户和服务器为每一次建立新的TCP连接都要分配缓存和变量。特别是万维网服务器往往要同时服务于大量客户的请求,这样会使万维网服务器的负担很重,好在浏览器提供了能够打开5-10个并行的TCP连接,而每一个TCP连接处理客户的一个请求,因此使用并行TCP连接能够缩短响应时间。

HTTP/1.1协议较好解决了这个问题。它使用了持续连接,即万维网服务器在发送响应后仍然在一段时间内保持这条连接,使同一个客户(浏览器)和该服务器可以继续在这条连接上传送后续的HTTP请求报文和响应报文。

持续连接有两种工作方式,即非流水线方式和流水线方式

非流水线方式,是客户在收到前一个响应后才能发出下一个请求。因此,在TCP连接已建立后,客户每访问一次对象都要用去一个往返时间RTT。这比非持续连接的两倍RTT的开销节省了建立TCP连接所需的一个RTT时间。但非流水线方式还是有缺点的,因为服务器在发送完一个对象后,其TCP连接就处于空闲状态,浪费了服务器资源。

流水线方式,是客户在收到HTTP的响应报文之前就能够接着发送新的请求报文。于是一个接一个的请求报文到达服务器后,服务器就可持续发回响应报文。因此,使用流水线方式时,客户访问所有的对象只需花费一个RTT时间。流水线工作方式使TCP连接中的空闲时间减少,提高了下载文档效率。

Ⅱ、代理服务器(proxy sever)

作用——把最近的一些请求和响应暂存在本地磁盘中

工作地——客户端、服务端、中间系统

过程——PC浏览器→代理服务器→源点服务器

解释:PC机中的浏览器先向因特网的服务器请求服务时,就先和代理服务器建立TCP链接,并向代理服务器发出HTTP请求报文。若代理服务器存放了所请求对象,就把它放入HTTP响应报文中返回给PC机的浏览器。否则,就与因特网上的源点服务器建立TCP连接,并发送HTTP请求报文。代理服务器收到这个对象后,先复制在自己的本地磁盘中(留待以后用),再把这个对象放在HTTP响应报文中,通过已建立的TCP链接,返回给请求该对象的浏览器。

Ⅲ、HTTP的报文结构

两类报文:①请求报文。从客户向服务端发送请求报文。②响应报文。从服务端到客户端。

HTTP是面向文本的,因此在报文中的每一个字段都是ASCII码串,因而各个字段的长度都是不确定的。

各行结构:

开始行——用于区分是请求报文(叫请求行)还是响应报文(叫状态行)。

首部行——用来说明浏览器、服务器或报文主体的一些信息。首部可以有好几行,但也可以不使用。最后还要有空行来和后面的实体主体分开。

实体主体——在请求报文中一般不用这个字段,而在响应报文中也可能没有这个字段。

请求报文的请求行:

请求行有三个内容:方法、请求资源的URL、HTTP的版本

方法:面向对象技术中使用的专有名词。方法是对所请求的对象进行的操作,这些方法实际上也就是一些命令。所以请求报文的类型是由它所采用的方法决定的。

例如:

在请求行使用了相对URL(即省略了主机的域名)是因为下面的首部行(第2行)给出了主机的域名。第3行是告诉服务器不使用持续连接,表示浏览器希望服务器在传送完所请求的对象后即关闭TCP连接。这个请求报文没有实体主体。

HTTP响应报文的主要特点:

每一个请求报文发出后,都能收到一个响应报文,响应报文的第一行就是状态行。状态行包括:HTTP的版本、状态码、解释状态码的简单短语。

Ⅳ、在服务器上存放用户的信息

上面讲过,HTTP是无状态的,这样做虽简化了服务器的设计,但实际工作中,一些万维网站点却常常希望能够识别用户。比如,购物车,推荐商品等。

可在HTTP中使用Coolie。当某用户浏览某个使用Coolie的网站时,该网站的服务器就为用户产生一个唯一的识别码,并以此作为索引在服务器的后端数据库中产生一个项目,接着再给用户的HTTP响应报文中添加一个叫做Set-cookie的首部行,后面的值是识别码。于是网站跟踪用户的活动。

4.万维网的文档

Ⅰ、超文本标记语言HTML

作用——页面制作的标准化,消除不同计算机之间信息交流的障碍

HTML定义了许多用于排版的命令,即“标签”。例如,表示后面开始用斜体字排版,表示斜体字排版到此结束。HTML就把各种标签嵌入到万维网的页面中,这样就构成了所谓的HTML文档。是一种可以用任何文本编辑器(例如windows的记事本Notepad)创建的ASCII码文件。

.html、.htm为后缀时,浏览器解释;.txt为后缀时,不解释,只能看见原来的文本文件。

特点:①允许在万维网页面中插入图像。一个页面本身带有的图像称为内含图像,HTML标准并没有规定该图像的格式。实际上,大多数浏览器支持GIF和JEPG文件,但存储空间大,但改为经压缩的.gif格式则减少了存储空间。

②规定了链接的设置办法。每个链接有一个起点和终点。起点说明在万维网页面中的什么地方可引出一个链接。容易识别(一般文字用黑色字时,链接起点用蓝色字,有时还加上上下划线)。终点可以是其他网络上的页面(远程链接),也可以是本计算机中的某一个文件或本文件中的某处(本地链接)。

Ⅱ、动态万维网文档

背景——静态文档是指在文档创作完毕后就存放在万维网服务器中,在被用户浏览的过程中,内容不会改变,因此用户对静态文档的每次读取所得到的返回结果都是相同的。

优点是简单,可由不懂程序设计的人员来创建,缺点是不够灵活,信息变化时就要由文档的作者手工对文档进行修改。

定义——是指文档的内容是在浏览器访问万维网服务器时才由应用程序动态创建。当浏览器请求到达时,万维网服务器要运行另一个程序,并把控制转移到此应用程序。接着,该应用程序对浏览器发来的数据进行处理,并输出HTTP格式的文档,万维网服务器就把应用程序的输出作为对浏览器的响应。例子:天气预报、股市行情。

与静态文档差别——服务器一端,文档内容的生成方法不同。

要实现动态文档应在以下两方面对万维网服务器的功能进行扩充:

①应增加另一个应用程序,用来处理浏览器发来的数据,并创建动态文档;

②应增加一个机制,用来使万维网服务器将浏览器发来的数据传送给这个应用程序,然后万维网服务器能够解释这个应用程序的输出,并向浏览器返回HTML文档。

举例——

新增机制是通用网关接口CGI(common gateway interface),是一种标准,定义了动态文档应如何创建,输入数据应如何提供给应用程序,以及输出结果应如何使用。

新增应用程序是CGI程序。取这个名字是因为万维网服务器与CGI的通信遵循CGI标准。“通用”是说这个标准定义的规则对其他任何语言是通用的;“网关”是说CGI程序可能要访问其他的服务器资源,如数据库或图形软件包;“接口”是说有一些已定义好的变量和调用等可供其他CGI程序使用。CGI程序的正式名字是CGI脚本(script),“脚本”是指一个程序,它是被另一个程序(解释程序)而不是计算机的处理机来解释或执行,可更容易地更快地进行编码,但运行起来比一般的编译程序要慢,因为它每一条指令要被另一个程序来处理,而不是直接被指令处理器来处理。

Ⅲ、活动万维网文档

背景——动态文档一旦建立,它所包含的信息内容也就固定下来而无法及时刷新屏幕。另外像动画之类的显示效果,动态文档也无法提供。

用于浏览器屏幕显示的连续更新的有两种技术:

①服务器推送

这种技术是将所有的工作都交给服务器,服务器不断地运行与动态文档相关联的应用功能程序,定期更新信息,并发送更新过的文档。

缺点:(1)为满足很多用户请求,服务器要运行很多的服务器推送程序。这造成服务器开销。(2)服务器推送技术要求服务器为每一个浏览器客户维持一个不释放的TCP连接,随着TCP连接的数目增加,每一个连接所能分配到的网络带宽就下降,导致网络传输时延增大。

②活动文档技术

这种技术是把所有的工作都转移给浏览器端。每当浏览器请求一个活动文档时,服务器就返回一段活动文档程序副本,使该程序副本在浏览器端运行。这时,活动文档程序可与用户直接交互,并可连续地改变屏幕的显示。只要用户运行活动文档程序,活动文档的内容就可以连续地改变。由于活动文档技术不需要服务器的连续更新传送,对网络带宽的要求也不会太高。

从传送角度看,浏览器和服务器都把活动文档看成是静态文档。在服务器上的活动文档的内容是不变的,这点和动态文档是不同的。浏览器可在本地缓存一份活动文档的副本。活动文档还可处理成压缩形式,便于存储和传送。另一点要注意的是,活动文档本身并不包括其运行所需的全部软件,大部分的支持软件是事先存放在浏览器中。

Java语言——一项用于创建和运行活动文档的技术。

小应用程序(applet):描述活动文档程序。

Java技术共有三个主要组成部分:程序设计语言、运行环境、类库。

程序设计语言——

从C++派生,省去了复杂的、很少用的语言特点。但和C、C++不兼容。Java的编译程序将源程序转换成Java字节码,这是一种与机器无关的二进制代码。计算机程序调用解释程序读取字节码,并解释执行。

设计成与机器无关的原因:可使任何在计算机上运行的浏览器程序能够下载并运行活动文档;可保证活动文档在所有的浏览器上产生同样的正确输出;可大大降低活动文档的创建和测试费用,因此不必为每一种计算机都制作一个副本。

运行环境——可允许小应用程序操纵用户的显示

类库——包含提供高级图形接口的软件

运行环境和类库——抽象窗口工具箱AWT(abstract window toolkit)执行。出现原因:使用小应用程序主要是为了复杂的显示,只要静态显示不能满足要求时就要使用小应用程序;一个控制图形现实的程序还必须指明很多的细节。

运行JAVA的浏览器需要两个解释程序——HTML解释程序和JAVA小应用程序解释程序

解释程序——核心是一个模仿计算机的简单循环。作用:①维持一个指令指针,在初始化时指在小应用程序的开始处,每一次循环操作,就在指令指针指向的地址读取字节码,然后解释程序对字节码进行解码,完成指明的操作。②支持JAVA运行环境。即一个JAVA解释程序必须能够在屏幕上显示图形,接入到因特网,以及执行I/O操作。③必须设计成使得小应用程序能够利用浏览器的设施来读取和显示静态和动态文档。因此,在浏览器中的JAVA解释程序必须能够与浏览器中的HTTP客户以及HTML解释程序进行通信。

Ⅳ、浏览器的结构

缓存缺点:要占用磁盘大量的空间;浏览器性能改善只有在用户再次查看缓存中的页面时才有帮助;要耗费时间吧文件不必要地存储在磁盘上,这反而降低了浏览器的效率。

为了改善,浏览器允许用户调整缓存策略。如设置时间限制,到期后删除这些文件。

5.万维网的信息检索系统

Ⅰ、全文检索搜索与分类目录搜索

全文检索搜索——

工作原理:通过搜索软件到因特网各网站收集信息→像蜘蛛爬行一样,按一定规则建立很大的在线数据库供查询→输入关键词即可查询

缺点:查询到的信息有些过时,必须定期维护

例如百度、谷歌

分类目录搜索——

工作原理:利用各网站向搜索引擎提交的网站信息时填写的关键词和网站描述的信息,经过人工审核编辑后,如果认为符合网站登录的条件,则输入到分类目录的数据库中,供网上用户查询。

优点:用户可根据网站设计好的目录有针对性地逐级查询所需要的信息,查询时不需要使用关键词,只需要按照分类(先找大类,再找下面的小类),因而查询的准确性好。

缺点:查询结果不是具体页面,而是被收录网站主页的URL地址,因而所得到的内容就比较有限。

例如雅虎中国、新浪

垂直搜索引擎——

针对某一特定领域、特定人群或某一特定需求提供搜索服务

元搜索引擎——

把用户提交的检索请求发送到多个独立的搜索引擎上去搜索,并把检索结果集中统一处理,以统一的格式提供给用户,因此是搜索引擎之上的搜索引擎。主要精力放在提高搜索速度、智能化处理搜索结果、个性化搜索功能的设置和用户检索界面的友好性上。查全率和准确率高。

Ⅱ、Google搜索技术的特点

以往大多数搜索引擎是使用少量大型服务器,在访问高峰期,搜索速度减慢。而Google则利用在因特网上相互链接的PC机来快速查找每个搜索的答案,并且成功地缩短了查找的响应时间。Google的搜索软件可同时进行许多运算,它的核心技术是PageRank,译为网页排名。

PageRank对搜索结果按重要性进行排序。它把整个互联网当作了一个整体对待,检查整个网络链接的结构,并确定哪些网页重要性最高。更具体些,就是如果有很多网站上的链接都指向页面A,那么页面A比较重要。

还要进行超文本匹配分析,以确定哪些网页与正在执行的特定搜索相关。Google把最相关、最可靠的搜索结果放在首位。



2.几种常用的系统调用

推荐阅读更多精彩内容