您的位置:首页 > 理论基础 > 计算机网络

计算机网络笔记整理(六):应用层

2017-09-16 13:00 513 查看
应用层协议都是为了解决某一类应用问题,而问题的解决又往往是通过位于不同主机的多个应用进程之间的通信和协同工作来完成的。应用层的具体内容就是规定应用进程在通信时所遵循的协议。

一、域名系统DNS

概述

域名系统DNS(Domain Name System)是因特网使用的命名系统,用来把便于人们使用的机器名字转换成IP地址。许多应用层软件经常直接使用域名系统,计算机的用户只是间接地使用域名系统。

域名比起IP地址更加便于人们记忆,但是机器在处理IP数据报的时候使用的还是IP地址,因为其定长特性,IPv4为32位,IPv6为128位便于机器处理。

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

域名到IP地址的解析是由分布在因特网上的许多域名服务器程序,简称域名服务器共同完成的。解析过程的要点如下:

当某一个应用进程需要把主机名解析为IP地址时,该应用进程就调用解析程序(resolver),并成为DNS的一个客户,把待解析的域名放在DNS请求报文中,以UDP用户数据报方式(减少开销)发给本地域名服务器。

本地服务器在查找到域名后,把对应的IP地址放在回答报文中返回。应用进程获得目的主机的IP地址后即可进行通信。

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

因特网的域名结构

因特网采用了层次
4000
树状结构的命名方法,采用这种方法,任何一个连接在因特网上的主机或路由器,都有唯一的层次结构的名字,即域名。这里的“域(domain)”是名字空间中一个可被管理的划分。从语法上讲,每一个域名都是由标号(label) 序列组成,而各标号之间用点(.)隔开。

DNS规定,域名中的标号都有英文字母、数字和字符(-)构成。级别最低的域名写在最左,而级别最高的顶级域名写在最右边。有多个标号组成的完整域名总共不超过255个字符。

域名树可以清楚的表示因特网的域名系统,最上面的根没有名字,域名树的叶节点就是单台计算机的名字,不能再继续往下划分子域了, 如图1所示。



域名服务器

具体实现域名系统是使用分布在各地的域名服务器,一个服务器所管辖的(或有权限的)范围叫做区(zone)。各单位根据具体情况来划分自己管辖范围的区。但在一个区中的所有节点必须是能够连通的。每一个区设置相应的权限域名服务器(authoritative name server),用来保存该区中的所有主机的域名到IP地址的映射。总之,DNS服务器的管辖范围是以“区”为单位,而不是以“域”为单位,区是域的子集。

根据域名服务器所起的作用,可以分为以下四种类型:

根域名服务器(root name server):最高层次的域名服务器,也是最重要的域名服务器。任何一个根域名服务器都知道所有的顶级域名服务器的域名和IP地址。在许多情况下,根域名服务器并不直接把待查询的域名直接转换成IP地址(根域名服务器也没有这种信息),而是告诉本地域名服务器下一步应当找哪一个顶级域名服务器进行查询。

顶级域名服务器(TLD服务器):负责管理在该顶级域名服务器注册的所有二级域名。当收到DNS查询请求时,就给出相应的回答,可能是最后结果,也可能是下一步应当找的域名服务器的IP地址。

权限域名服务器:这就是前面所说的负责一个区的域名服务器,当一个权限域名服务器还不能给出最后的查询回答时,就会告诉发出查询请求的DNS客户,下一步应当查找哪一个权限域名服务器。(如区abc.com和区y.abc.com各设有一个权限域名服务器)

本地域名服务器(local name server):当一个主机发出DNS查询请求时,这个查询请求报文就发给本地域名服务器,有时也称之为默认域名服务器

以下简单的讨论域名解析的过程,需要注意两点:

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

b. 本地域名服务器向根域名服务器的查询通常是采用迭代查询(iterative query)。当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地域名服务器下一步应当向哪一个域名服务器进行查询,然后让本地域名服务器进行后续的查询。逐步按照域树的路径向下走直到叶节点,得到了所要解析的域名的IP地址,然后把这个结果返回给发起查询的主机。当然本地域名服务器也可以采用递归查询,这取决于最初的查询请求报文的设置是要使用哪一种查询方式。

图2给出这两种查询的示例图:



为了提高DNS查询的效率,并减轻根域名服务器的负荷和减少因特网上的DNS查询报文数量,在域名服务器中广泛使用了高速缓存,高速缓存用来存放最近查询过的域名以及从何处获得域名映射信息的记录。假定在高速缓存中可以找到域名对应的IP地址,则本地域名服务器可以直接从高速缓存中取出上次查询的结果告诉用户。如果在缓存中没有找到域名对应的IP地址而是存放顶级域名服务器的IP地址,那么本地域名服务器也可以不向根域名服务器查询,而是直接向顶级域名服务器发送查询请求报文。

由于名字到地址的绑定并不经常改变,为保持高速缓存中的内容正确,域名服务器应该为每项内容设置计时器并处理超过合理时间的项。

不但在本地域名服务器中需要高速缓存,在主机中也很需要。许多主机在启动时从本地域名服务器下载名字和地址的全部数据库,维护存放自己最近使用的域名的高速缓存。

二、文件传送协议

FTP概述

文件传输协议FTP(File Transfer Protocol)是因特网上使用最广泛的文件传送协议。FTP提供交互式的访问,允许客户指明文件的类型与格式(如指明是否使用ASCII码),并允许文件具有存取权限(如访问文件的用户必须经过授权,并输入有效的口令)。

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

文件共享协议中的另一大类是联机访问(on-line access),多个程序可能同时对一个文件进行存取。例如网络文件系统NFS(Network File System)。

FTP的基本工作原理

在两个主机之间传送文件看似简单,实际上有很多问题:

计算机存储数据的格式不同。

文件的目录结构和文件命名的规定不同。

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

访问控制方法不同。

FTP使用TCP可靠的运输服务,FTP的主要功能是减少或消除在不同操作系统下处理文件的不兼容性。

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

主进程的工作步骤如下:

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

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

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

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

在进行文件传输时,FTP的客户和服务器之间要建立两个并行的TCP连接:控制连接数据连接。控制连接在整个会话期间一直保持,用于传送FTP客户的传送请求等等控制信息。实际用于传输文件的是数据连接。由于FTP使用了分离的控制连接,因此FTP的控制信息是带外(out of band) 传送的。

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

FTP并非对所有的数据传输都是最佳的。比如主机A要在主机B的某个文件F的后面添加一行文字。FTP需要将文件F传输到主机A中,添加一行文字,然后再将该文件传送回主机B。实际上这种传送是不必要的,因为主机A并没有使用该文件的内容。

然而网络文件系统NFS则用另一种思路,NFS允许应用进程打开一个远地文件,并能在该文件的某一个特定位置上开始读写数据,这样用户只复制一个大文件中一个很小的片段而不需要复制整个大文件,在网络上传送的只是少量的修改数据。

简单文件传送协议TFTP

简单文件传送协议TFTP(Trivial File Transfer Protocol)是一个很小且易于实现的文件传送协议。TFTP的主要优点有两个:a. TFTP可用于UDP环境,如当需要将程序或文件同时向许多机器下载时就往往需要使用TFTP。b. TFTP代码所占的内存较小。这对较小的计算机或某些特殊用途的设备是很重要的。

TFTP的工作很像停止等待协议。发送完一个文件块后就等待对方的确认,确认时应指明所确认的块编号。发完数据后在规定时间内收不到确认就要重发数据PDU。发送确认PDU的一方若在规定时间内收不到下一个文件快,也要重发确认PDU。

在一开始工作时,TFTP客户进程发送一个读请求报文或写请求报文给TFTP服务器进程,其熟知端口号是69。TFTP每次传送数据报文中有512字节的数据,文件结束标志是一个数据字段不满512字节的报文。

三、远程终端协议TELNET

TELNET是一个简单的远程终端协议,也是因特网的正式标准。用户用TELNET就可以在其所在地通过TCP连接注册(即登录)到远地的另一个主机上(使用主机名或IP地址),TELNET又称为终端仿真协议

TELNET使用客户服务器方式,在本地系统运行TELNET客户进程,而在远地主机则运行TELNET服务器进程。其运行模式与FTP的情况类似。

TELNET为了适应不同计算机和操作系统的差异,定义了数据和命令应怎样通过因特网,这些定义就是所谓的网络虚拟终端NVT(Network Virtual Terminal)。客户软件把用户的击键和命令转换成NVT格式,并送交服务器。服务器软件把收到的数据和命令,从NVT格式转换成远地系统所需的格式。

四、万维网WWW

万维网概述

万维网(World Wide Web)是一个大规模的、联机式的信息储藏所,因为简称为Web。万维网用链接的方法能非常方便地从因特网上的一个站点访问另一个站点。

万维网是一个分布式的超媒体(hypermedia)系统,是超文本(hypertext)系统的扩充。万维网以客户服务器方式工作,浏览器是在用户主机上的万维网客户程序。万维网文档所驻留的主机则运行服务器程序,因而这个主机也称为万维网服务器。客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的万维网文档。在一个客户程序主窗口上显示出的是万维网文档,称为 页面(page)。

万维网必须解决以下几个问题:

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

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

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

怎么使用户能够很方便的找到所需要的信息? 搜素工具

以下的内容将会围绕着四个概念展开。

统一资源定位符URL

URL的格式

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

URL是与因特网相连的机器上的任何可访问对象的一个指针,由于访问不同对象所使用的协议不同,所以URL还指出读取某个对象时所使用的协议,URL的一般格式由以下四个部分组成:<协议>://<主机>:<端口>/<路径>。

URL最左边第一部分的<协议>指出使用什么协议来获取万维网文档,最常用的是http,其次是ftp。

使用HTTP的URL

HTTP的默认端口号是80,通常可省略。若再省略文件的<路径>项,则URL就指到因特网上的某个主页(home page)。主页可以是以下几种情况之一:

一个WWW服务器的最高级别的页面。

某一个组织或部门的一个定制的页面或目录。从这样的页面可链接到因特网上的与本组织或部门有关的其他站点。

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

虽然URL里的字母不区分大小写1,但有的页面为了使读者看起来方便故意使用了一些大写字母。

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

超文本传送协议HTTP

HTTP的操作过程

HTTP协议定义了浏览器(即万维网客户进程)怎样想万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器,从层次的角度看,HTTP是面向事务的(transaction-oriented)应用层协议,提供可靠的服务。

其大致工作过程如图3所示:



每个万维网网点都有一个服务器进程,它不断地监听TCP的端口80,以便发现是否有浏览器(即万维网客户)向它发出连接建立请求。一旦监听到连接建立请求并建立了TCP连接后,浏览器向万维网服务器发出浏览某个页面的请求,服务器就返回所请求的页面作为响应。最后TCP连接就被释放了。

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

下面用HTTP/1.0更具体地说明在用户点击鼠标后所发生的事情,假设其URL为http://www
11034
.sysu.edu.cn/2012/cn/index.htm:

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

浏览器向DNS请求解析www.sysu.edu.cn的IP地址。

域名系统DNS解析出中山大学服务器的IP地址。

浏览器与服务器建立TCP连接。

浏览器发出取文件命令:GET /2012/cn/index.htm。

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

释放TCP连接。

浏览器显示中山大学主页文件index.htm中的所有文本。

浏览器在下载文件时,可以设置为只下载其中的文本部分。这样可使下载的速度加快。在这种情况下,文件中原来嵌入的图像或声音的地方只用一个小图标来显示。用户若要下载这些图片和声音,可用鼠标再分别点击这些图标。每点击一次鼠标,就执行一次类似上面的8个步骤。也就是先建立TCP连接,再使用TCP连接传送命令和传送文件,最后释放TCP连接。

HTTP使用面向连接的TCP作为运输层协议,保证了数据的可靠传输。但是HTTP协议本身是无连接的,也就是虽然HTTP使用了TCP连接,但通信的双方在交换HTTP报文之前不需要先建立HTTP连接。

HTTP协议是无状态的(stateless)。也就是同一个客户第二次访问同一个服务器上的页面时,服务器并不记得曾经访问过的这个客户,也不记得为该客户曾经服务过多少次。HTTP的无状态特性简化了服务器的设计,使服务器更容易支持大量并发的HTTP请求。

由于HTTP使用了TCP作为传输层的协议,在HTTP/1.0中,每请求一次文档就要建立一次TCP连接,三次握手的前两部分需要耗费一个RTT时间,最后一部分捎带客户对万维网文档的请求,也要耗费一个RTT时间(请求和接收万维网文档)。这就是HTTP/1.0的一个主要缺点,就是每请求一个文档就要有两倍RTT的开销。假如一个主页上有很多链接的对象,如图片等,都要依次进行链接,每次链接下载都导致2倍RTT的开销。另一种开销就是万维网客户和服务器在每一次建立新的TCP连接时都要分配缓存和变量。这加重了服务器的负担,对浏览器由于可以同时打开5~10个并行的TCP连接,而每一个TCP连接处理客户的一个请求,并行TCP连接可以缩短响应时间。

HTTP/1.1协议中较好的解决了这个问题。它使用了持续连接(persistent connection)。万维网服务器在发送响应后仍然在一段时间内保持这条连接,使同一个客户(浏览器)和该服务器可以继续在这条连接上传送后续的HTTP请求报文和响应报文,这并不局限于传送同一页面上的链接文档,只要是在同一个服务器上的文档就可以。

HTTP/1.1协议的持续连接有两种工作方式,即非流水线方式(without pipelining)和流水线方式(with pipelining)。

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

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

代理服务器

代理服务器(proxy server)是一种网络实体,又称为万维网高速缓存(Web cache)。代理服务器把最近的一些请求和响应暂存在本地磁盘中。当新请求到达时,若代理服务器发现这个请求和暂时存放的请求相同,就返回暂存的响应,而不需要按URL的地址再去因特网访问该资源。代理服务器可在客户端或服务器端工作,也可在中间系统上工作。

在使用代理服务器的情况下,由于有相当大一部分通信量局限在校园网的内部,因此外部链路上的通信量大大减少,因而减小了访问因特网的时延。

HTTP的报文结构

HTTP有两类报文:

(1) 请求报文:从客户到服务器发送请求报文,如图4(a)。

(2) 响应报文:从服务器到客户的回答,如图4(b)。



由于HTTP是面向文本的(text-oriented),因此报文中的每一个字段都是一些ASCII码串,因而各个字段的长度都是不确定的。

HTTP请求报文和响应报文都是由三个部分组成的。可以看出这两种报文格式的区别就是开始行不同。

开始行:用于区分是请求报文还是响应报文。在请求报文中的开始行叫做请求行(Request-Line)。而在响应报文中的开始行叫做状态行(Status-Line)。在开始行的三个字段之间都以空格分隔开,最后的“CR”和“LF”分别代表“回车”和“换行”。

首部行:用于说明浏览器、服务器或报文主体的一些信息。首部可以有好几行,但也可以不使用。在每一个首部行中都有首部字段名和它的值,每一行在结束的地方都要有“回车”和“换行”。整个首部行结束时,还有一空行将首部行和后面的实体主体分开。

实体主体(entity body):在请求报文中一般都不用这个字段,而在响应报文中也可能没有这个字段。

响应报文中的状态码(Status-Code)都是三位数字的,分为5大类共33种。

1xx 表示通知信息的,如请求收到了或正在处理。

2xx 表示成功,如接受或知道了。

3xx 表示重定向,如要完成请求还必须采取进一步的行动。

4xx 表示客户的差错,如请求中有错误的语法或不能完成。

5xx 表示服务器的差错,如服务器失效无法完成请求。

如202 Accepted(接受)、400 Bad Request(错误的请求)、404 Not Found(找不到)等。

若请求的网页转移到了一个新的地址,则响应报文的状态行和下一个首部行就是下面的格式:

301 Moved Permanently (永久性地转移了)

Location: http://www.xyz.edu/ee/index.html (新的URL)

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

HTTP是无状态的,这样虽然简化了服务器的设计,但在实际工作中,一些万维网站点却常常希望能够识别用户。在RFC 2109中对Cookie进行了定义,规定万维网站点可以使用Cookie来跟踪用户,Cookie表示在HTTP服务器和客户之间传递的状态信息。现在很多网站都已广泛使用Cookie。

Cookie的工作过程如下:(a) 当用户A访问某个使用Cookie的网站时,该网站的服务器就为用户A产生了唯一的识别码,并以此为索引在服务器的后端数据库中产生一个项目。接着在给用户A的HTTP响应报文中添加一个叫做Set-cookie的首部行。(b) 当用户A收到这个响应时,其浏览器就在它管理的特定Cookie文件中添加一行,其中包括这个服务器的主机名和Set-cookie后面给出的识别码。(c) 当用户A继续浏览这个网站时,每发送一个HTTP请求报文,其浏览器就会从其Cookie文件中取出这个网站的识别码,并放到HTTP请求报文的Cookie首部行中。

尽管Cookie能够简化用户的操作过程,但Cookie的使用一直备受争议,对于用户隐私的保护一直是一个大问题。

万维网的文档

超文本标记语言HTML

超文本标记语言HTML(HyperText Markup Language)是一种制作万维网页面的标准语言,消除了不同计算机之间信息交流的障碍。

HTML定义了许多用于排版的命令,即“标签”(tag)。若某一个浏览器不支持某一个HTML标签,则浏览器将忽略此标签,但在一对不能识别的标签之间的文本仍然会被显示出来。

HTML允许在万维网页面中插入图像,一个页面本身带有的图像称为内含图像(inline image)。HTML并没有规定该图像的格式,实际上,大多数浏览器都支持GIF和JPEG文件。

HTML还规定了链接的设置方法,我们知道每个链接都有一个起点终点。链接的起点说明在万维网页面的什么地方可引出一个链接。在一个页面中,链接的起点是很容易是别的,对于以文字作为链接的起点时,这些文字往往用不同的颜色显示,甚至还加上下划线。链接的终点可以是其他网站上的页面,这种链接方式叫做远程链接,此时文档中指明链接到的网站的URL。有时链接可以指向本计算机中的某一个文件或本文件中的某处,这叫做本地链接,此时文档中指明链接的路径。

动态万维网文档

上面讨论的万维网文档只是万维网文档中最基本的一种,即所谓的静态文档(static document)。静态文档是指在文档创作完成后就存放在万维网服务器中,在被用户浏览的过程中,内容不会改变。

静态文档的最大优点是简单,但静态文档的缺点是不够灵活,当信息变化时,就要由文档的作者手工对文档进行修改。所以变化频繁的文档不适于作成静态文档。

动态文档(dynamic document)是指文档的内容是在浏览器访问万维网服务器时才由应用程序动态创建。当浏览器请求到达时,万维网服务器要运行另一个应用程序,并把控制转移到此应用程序中。接着,该应用程序对浏览器发来的数据进行处理,并输出HTTP格式的文档。万维网服务器把应用程序的输出作为对浏览器的响应。动态文档的主要优点是具有报告当前最新信息的能力,但是动态文档的创建难度比静态文档的高,因为动态文档的开发不是直接编写文档本身,而是编写用于生成文档的应用程序。

动态文档和静态文档之间的主要差别体现在服务器一端。这主要是文档内容的生成方法不同。从以上可以看出,要实现动态文档就必须在以下两个方面对万维网服务器的功能进行扩充:(1) 应增加另一个应用程序,用来处理浏览器发来的数据,并创建动态文档。(2) 应增加一个机制,用来使万维网服务器将浏览器发来的数据传送给这个应用程序,然后万维网服务器能够解释这个应用程序的输出,并向浏览器返回HTML文档。

扩充了功能的万维网服务器增加了一个机制,叫做通用网关接口CGI(Common Gateway Interface)。CGI是一个标准,它定义了动态文档应如何创建,输入数据应如何提供给应用程序,以及输出结果应如何使用。

活动万维网文档

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

一种技术称为服务器推送(server push),这种技术是将所有的工作都交给服务器,服务器不断地运行与动态文档相关联的应用程序,定期更新信息,并发送更新过的文档。为了满足很多客户的请求,服务器就要运行很多的服务器推送程序,造成过多的服务器开销。

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

在Java技术中使用了一个新的名词“小应用程序”(applet)来描述活动文档程序。

万维网的信息检索系统

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

全文检索搜索引擎是一种纯技术型的检索工具。它的工作原理是通过搜索软件(如一种叫“蜘蛛”或“网络机器人”的Spider程序)到因特网上的各网站收集信息,找到一个网站后可以从这个网站再链接到另一个网站,像蜘蛛爬行一样。然后按照一定的规则建立一个很大的在线数据库供用户查询(并不是实时地在因特网上检索到的信息)。因此很有可能有些查到的信息已经是过时的,建立这种索引数据库的网站必须定期对已建立的数据库进行更新维护,现在最出名的全文检索搜索引擎就是Google。在中文搜索引擎中,最出名的是Baidu。

分类目录搜索引擎并不采集网站的任何信息,而是利用各网站向搜索引擎提交的网站信息时填写的关键词和网站描述等信息,经过人工审核编辑后,如果认为符合网站登录的条件,则输入到分类目录的数据库中,供网上用户查询。因此分类目录搜索也叫作分类网站搜索。分类目录的好处是用户可以根据网站设计好的目录有针对性地逐级查询所需要的信息,查询时不需要使用关键词,只需要按照分类(先找大类,再找下面的小类),因而查询的准确性较好,但分类目录查询的结果并不是具体的页面,而是被收录在网站主页的URL地址,因而所得到的内容就比较有限。相比之下全文搜索可检索出大量的信息,但缺点是查询结果不够准确。最著名的分类1目录搜索引擎就是yahoo。国内著名的分类搜索有雅虎中国、sina、sohu、网易等。

全文检索搜索引擎往往可以直接检索到相关内容的网页,但分类目录搜索引擎一般只能检索到相关信息的网址。为了使用户能够更加方便地搜索到有用信息,目前许多网站同时具有全文检索搜索和分类目录搜索的功能。

目前出现了垂直搜索引擎(Vertical Search Engine),它针对某一特定领域、特定人群或某一特定需求提供搜索服务。垂直搜索也是提供关键字来进行搜索的,但被放到了一个行业知识的上下文中。还有一种元搜索引擎(Meta Search Engine),把用户提交的检索请求发送到讴歌独立的搜索引擎上去搜索,并把检索结果集中统一处理,以统一的格式提供给客户,也就是搜索引擎之上的搜索引擎。

五、电子邮件

电子邮件概述

电子邮件避免了实时通信的缺点,即电话通信的主叫和被叫双方必须同时在场,另外一些不是十分紧迫的电话也常常不必要地打断人们的工作或休息。

简单邮件传送协议SMTP(Simple Mail Transfer Protocol)是最早的电子邮件标准。由于SMTP只能传送可打印的7位ASCII码邮件,因此后来又提出了通用因特网邮件扩充MIME(Multiple Internet Mail Extensions),在其邮件首部说明了邮件的数据类型(如文本、声音、图像、视像等)。在MIME邮件中可同时传送多种类型的数据。这在多媒体通信的环境下是非常有用的。

一个电子邮件系统应有三个主要组成构件:用户代理、邮件服务器,以及邮件发送协议(如SMTP)和邮件读取协议(如POP3)。POP3是邮局协议(Post Office Protocol)。

用户代理至少应当有撰写、显示、处理和通信功能。

因特网上有许多的邮件服务器可供用户选用,而且邮件服务器需要使用两种不同的协议。同时应当注意,邮件服务器必须能够同时充当客户和服务器。

如图5所示,PC机之间发送和接收电子邮件的几个重要步骤如下,注意SMTP和POP3(或IMAP)都是在TCP连接的上面传送邮件。



发件人调用PC机中的用户代理撰写和编辑要发送的邮件。

发件人点击屏幕上的“发送邮件”按钮,把发送邮件的工作全都交给用户代理来完成,用户代理把邮件用SMTP协议发送给发送方邮件服务器,用户代理充当SMTP的客户,而发送方邮件服务器充当SMTP服务器。

SMTP服务器收到用户代理发来的邮件后,就把邮件临时存放在邮件缓存队列中,等待发送到接收方的邮件服务器。

发送方邮件服务器的SMTP客户与接收方邮件服务器的SMTP服务器建立TCP连接,然后就把邮件缓存队列中的邮件依次发送出去,注意邮件不会在因特网中的某个中间邮件服务器落地。

运行在接收方邮件服务器中的SMTP服务器进程收到邮件后,把邮件放入售价嫩的用户邮箱中,等待收件人读取。

收件人在打算收信时,就运行PC机中的用户代理,使用POP3(或IMAP)协议读取发送给自己的邮件。注意POP3服务器和POP3客户之间的通信是由POP3客户发起的。

注意此处有两种不同的通信方式,一种是“推”(push):SMTP客户把邮件“推”给SMTP服务器。另一种是“拉”(pull):POP3客户把邮件从POP3服务器“拉”过来。

电子邮件由信封(envelope)和内容(content)两部分组成。电子邮件的传输程序根据邮件信封上的信息来传送邮件。在信封上最重要的就是收件人的地址。TCP/IP体系的电子邮件系统规定电子邮件地址(e-mail address)的格式:收件人的邮箱名@邮箱所在的主机域名。

简单邮件传送协议SMTP

SMTP规定了两个相互通信的SMTP进程之间应如何交换信息,由于SMTP使用客户服务器方式,因此负责发送邮件的SMTP进程就是SMTP客户,而负责接收邮件的SMTP进程就是SMTP服务器。SMTP并未规定邮件内部的格式、邮件的存储方式、邮件应以多快的速度发送邮件等等。

SMTP规定了14条命令(4个字母)和21种应答信息(一行,3位数字的代码,附上简单的文字说明)。下面通过发送方和接收方的邮件服务器之间的SMTP通信的三个阶段介绍几个主要的命令和响应信息。

连接建立

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

SMTP不使用中间的邮件服务器,当接收方邮件服务器出故障而不能工作时,发送方邮件服务器只能等待一段时间后再尝试和该邮件服务器建立TCP连接。

邮件传送

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

下面跟着一个或多个RCPT命令,取决于把同一个邮件发送给一个或多个收件人,其格式为RCPT TO: <收件人地址>。RCPT是recipient(收件人)的缩写。每发送一个RCPT命令,都应当有相应的信息从SMTP服务器返回,如:“250 OK”表示指明的邮箱在接收方的系统之中,或“550 No such user here”(无此用户),即不存在此邮箱。RCPT命令的作用是避免浪费通信资源,不致于发送了很长的邮件以后才知道是因为地址错误。

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

注意使用SMTP传送邮件只能说是可靠地传送到接收方的邮件服务器,但之后如何无法保证,仍然有可能由于服务器出现故障等原因丢失邮件。但是我们仍然认为SMTP的电子邮件通常被认为是可靠的。

连接释放

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

电子邮件的信息格式

在RFC 2822文档中只规定了邮件内容中的首部(header)格式,而对邮件的主体(body)部分让用户自由撰写。用户写好首部后,邮件系统自动地将信封所需的信息提取出来并写在信封上,所以用户不需要填写信封上的信息。

邮件内容首部包括一些关键字,后面加上冒号,如:

“To:”:一个或多个收件人的电子邮件地址。

“Subject:”:邮件的主题。

“Cc:”:抄送,意思是留下一个“复写副本”。

“From”和“Date”:发件人的电子邮件地址和发信日期,一般由邮件系统自动填入。

“Reply-To”:对方回信所用的地址,可以与发件人发信时所用的地址不同。

邮件读取协议POP3和IMAP

目前常用的邮件读取协议有两个:邮局协议第三个版本POP3,简称POP和网际报文存取协议IMAP(Internet Message Access Protocol)。

邮局协议POP非常简单但是功能有限。POP服务器只有在用户输入鉴别信息(用户名和口令)后·,才允许对邮箱进行读取。

POP3协议的一个特点就是只要用户从POP服务器读取了邮件,POP服务器就把该邮件删除,也就是只要收件人在一台PC上读取了该邮件,那么在另一台PC上就无法看到之前收到的这封邮件。

网际报文存取协议IMAP比POP协议复杂得多。在使用IMAP时,在用户的PC机上运行IMAP客户程序,然后与接收方的邮件服务器上的IMAP服务器建立TCP连接,用户在字节的PC机上就可以操纵邮件服务器的邮箱,就像本地操纵一样。因此IMAP实际上是一个联机协议。在用户未发出删除邮件的命令之前,IMAP服务器邮箱中的邮件一直保存。

IMAP最大的好处是用户可以在不同的地方使用不同的计算机随时上网阅读和处理自己的邮件。而且IMAP还允许收件人只读取邮件中的某一部分(比如邮件带有附件,只读正文,不打开附件)。

IMAP的缺点是若用户没有将邮件复制到自己的PC机上,则邮件一直是存放在IMAP服务器上的。因此用户需要经常与IMAP服务器建立连接。

基于万维网的电子邮件

邮件系统中的用户代理就是普通的万维网浏览器。当用户A向用户B发送邮件时,电子邮件从A的浏览器发送到邮件服务器a时,使用的是HTTP协议;A发送的邮件从邮件服务器a发送到B的邮件服务器b使用的是SMTP协议;B用浏览器从邮件服务器b中读取A发来的邮件使用的是HTTP协议。

通用因特网邮件扩充MIME

MIME是基于SMTP协议的缺点提出,即传送内容受限(如不能传送可执行文件或其他二进制对象,限于传送7位ASCII码、拒绝超过一定长度的邮件等等)。MIME并没有改动或者取代SMTP,但是增加了邮件主体的结构,并定义了传送非ASCII码的编码规则。MIME可在现有的电子邮件程序和协议下传送。

六、动态主机配置协议DHCP

为了把协议软件做成通用且便于移植,协议软件的编写者不会把所有的细节都固定在源代码中,而是把协议软件参数化。在协议软件中给出的这些参数赋值的动作叫做协议配置,具体的配置信息有哪些取决于协议栈。

现在广泛使用的动态主机配置协议DHCP(Dynamic Host Configuration Protocol),提供了一种即插即用连网(plug-and-play networking),允许一台计算机加入新的网络和获取IP地址而不用手工参与。

DHCP使用UDP协议,DHCP服务器使用熟知端口67,DHCP客户使用的UDP端口是68。

DHCP很适合经常移动位置的计算机。

七、简单网络管理协议SNMP

网络管理对硬件、软件和人力的使用、综合与协调,以便对网络资源进行监视、测试、配置、分析、评价和控制,这样就能以合理的价格满足网络的一些需求,如实时运行性能、服务质量等。网络管理常简称为网管。

简单网络管理协议SNMP(Simple Network Management Protocol)的网络管理由3个部分组成即SNMP本身、管理信息结构SMI(Structure of Management Information)和管理信息库MIB(Management Information Base)。

SNMP定义了管理站和代理之间所交换的分组格式,所交换的分组包含各代理中的对象(变量)名及其状态(值)。SNMP负责读取和改变这些数值。

SMI定义了命名对象和定义对象类型(包含范围和长度)的通用规则,以及把对象和对象的值进行编码的规则。

MIB在被管理的实体中创建了命名对象,并规定了其类型。

SMI建立规则,MIB对变量说明,SNMP完成网管的动作。

八、参考

[1] 谢希仁. 计算机网络(第五版)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: