计算机网络(六)完结篇:应用层

一、域名系统DNS

1.域名系统概述

  域名系统 DNS(Domain Name System)是互联网使用的命名系统,用来把便于人们使用的机器名字转换为 IP 地址。域名系统其实就是名字系统。

  用户与互联网上某台主机通信时,必须要知道对方的 IP 地址。然而用户很难记住长达 32 位的二进制主机地址。即使是点分十进制 IP 地址也并不太容易记忆。但在应用层为了便于用户记忆各种网络应用,连接在互联网上的主机不仅有 IP 地址,而且还有便于用户记忆的主机名字。域名系统 DNS 能够把互联网上的主机名字转换为 IP 地址。

  为什么机器在处理 IP 数据报时要使用 IP 地址而不使用域名呢?这是因为 IP 地址的长度是固定的 32 位(如果是 IPv6 地址,那就是 128 位,也是定长的),而域名的长度并不是固定的,机器处理起来比较困难。

  域名到IP 地址的解析过程的要点如下∶当某一个应用进程需要把主机名解析为 IP 地址时,该应用进程就调用解析程序,并成为 DNS 的一个客户,把待解析的域名放在 DNS 请求报文中,以 UDP用户数据报方式发给本地域名服务器(使用 UDP是为了减少开销)。本地域名服务器在查找域名后,把对应的IP地址放在回答报文中返回。应用进程获得目的主机的 IP 地址后即可进行通信。若本地域名服务器不能回答该请求,则此域名服务器就暂时成为 DNS 中的另一个客户,并向其他域名服务器发出查询请求。这种过程直至找到能够回答该请求的域名服务器为止。

2.互联网的域名结构

  从语法上讲,每一个域名都由标号序列组成,而各标号之间用点隔开。如下:
在这里插入图片描述

  DNS 规定,域名中的标号都由英文字母和数字组成,每一个标号不超过 63个字符(但为了记忆方便,最好不要超过 12 个字符),也不区分大小写字母(例如,CCTV 或 cctv 在域名中是等效的)。标号中除连字符(-)外不能使用其他的标点符号。级别最低的域名写在最左边,而级别最高的顶级域名则写在最右边。由多个标号组成的完整域名总共不超过255个字符。DNS 既不规定一个域名需要包含多少个下级域名,也不规定每一级的域名代表什么意思。各级域名由其上一级的域名管理机构管理,而最高的顶级域名则由 ICANN 进行管理。用这种方法可使每一个域名在整个互联网范围内是唯一的,并且也容易设计出一种查找域名的机制。

  一个顶级域名下有许多个二级域名,一个二级域名下有许多的三级域名……

3.域名服务器

  一个服务器所负责管辖的(或有权限的)范围叫做区。各单位根据具体情况来划分自己管辖范围的区。

  下图是区的不同划分方法的举例。假定 abc 公司有下属部门x和y,部门x下面又分三个分部门 u,v和 w,而 y 下面还有其下属部门 t。图(a)表示 abc 公司只设一个区 abc.com。这时,区 abc.com和域 abc.com指的是同一件事。图(b)表示abc公司划分了两个区(大的公司可能要划分多个区)∶ abc.com 和 y.abc.com。这两个区都隶属于域 abc.com,都各设置了相应的权限域名服务器。不难看出,区是"域"的子集。

在这里插入图片描述

  下图把以上图(b)中公司 abc 划分的两个区为例,给出了DNS 域名服务器树状结构图。这种 DNS 域名服务器树状结构图可以更准确地反映出 DNS 的分布式结构。在下图中的每一个域名服务器都能够进行部分域名到IP 地址的解析。当某个 DNS 服务器不能进行域名到 IP 地址的转换时,它就设法找互联网上别的域名服务器进行解析。

在这里插入图片描述

(1)域名服务器的分类

  从上图可看出,互联网上的 DNS 域名服务器也是按照层次安排的。每一个域名服务器都只对域名体系中的一部分进行管辖。根据域名服务器所起的作用,可以把域名服务器划分为以下四种不同的类型∶

  • 根域名服务器: 根域名服务器是最高层次的域名服务器,也是最重要的域名服务器。所有的根域名服务器都知道所有的顶级域名服务器的域名和 IP 地址。不管是哪一个本地域名服务器,若要对互联网上任何一个域名进行解析(即转换为 IP 地址),只要自己无法解析,就首先要求助于根域名服务器。假定所有的根域名服务器都瘫痪了,那么整个互联网中的 DNS 系统就无法工作。

  由于根域名服务器采用了任播技术,因此当 DNS 客户向某个根域名服务器的 IP地址发出查询报文时,互联网上的路由器就能找到离这个 DNS客户最近的一个根域名服务器。这样做不仅加快了 DNS 的查询过程,也更加合理地利用了互联网的资源。

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

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

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

  • 本地域名服务器: 本地域名服务器离用户较近,一般不超过几个路由器的距离。当所要查询的主机也属于同一个本地 ISP时,该本地域名服务器立即就能将所查询的主机名转换为它的 IP地址,而不需要再去询问其他的域名服务器。

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

(2)域名的解析过程

  • 递归查询:主机向本地域名服务器的查询一般都是采用递归查询。所谓递归查询就是∶ 如果主机所询问的本地域名服务器不知道被查询域名的 IP 地址,那么本地域名服务器就以 DNS 客户的身份,向其他根域名服务器继续发出查询请求报文(即替该主机继续查询),而不是让该主机自己进行下一步的查询。

  • 迭代查询:本地域名服务器向根域名服务器的查询通常是采用迭代查询。迭代查询的特点是这样的∶当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的 IP 地址,要么告诉本地域名服务器∶"你下一步应当向哪一个域名服务器进行查询"。然后让本地域名服务器进行后续的查询(而不是替本地域名服务器进行后续的查询)。

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

二、文件传送协议FTP

1.FTP概述

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

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

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

2.FTP的基本工作原理

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

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

  主进程的工作步骤如下∶

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

  这里了解一下就好,更多具体内容请看书。

3.简单文件传送协议TFTP

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

  TFTP 的主要优点有两个。第一,TFTP 可用于 UDP 环境。第二,TFTP 代码所占的内存较小。这对较小的计算机或某些特殊用途的设备是很重要的。

  TFTP 的主要特点是∶

  • 每次传送的数据报文中有 512字节的数据,但最后一次可不足512字节。
  • 数据报文按序编号,从1开始。
  • 支持 ASCII 码或二进制传送。
  • 可对文件进行读或写。
  • 使用很简单的首部。

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

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

三、远程终端协议TELNET

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

  TELNET 也使用客户服务器方式。在本地系统运行 TELNET 客户进程,而在远地主机则运行 TELNET 服务器进程。和 FTP 的情况相似,服务器中的主进程等待新的请求,并产生从属进程来处理每一个连接。

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

四、万维网WWW

1.万维网概述

  万维网 WWW(World Wide Web)并非某种特殊的计算机网络。万维网用链接的方法能非常方便地从互联网上的一个站点访问另一个站点(也就是所谓的"链接到另一个站点"),从而主动地按需获取丰富的信息。

在这里插入图片描述

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

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

  • 怎样标志分布在整个互联网上的万维网文档?

  万维网使用统一资源定位符 URL(Uniform Resource Locator)来标志万维网上的各种文档,并使每一个文档在整个互联网的范围内具有唯一的标识符 URL。也就是我们常说的链接、网址。

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

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

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

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

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

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

2.统一资源定位符URL

(1)URL的格式

  URL 实际上就是在互联网上的资源的地址。只有知道了这个资源在互联网上的什么地方,才能对它进行操作。显然,互联网上的所有资源,都有一个唯一确定的 URL。这里所说的"资源"是指在互联网上可以被访问的任何对象,包括文件目录、文件、文档、图像、声音等,以及与互联网相连的任何形式的数据。

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

在这里插入图片描述

  现在最常用的协议就是 htp(超文本传送协议 HTTP),其次是 ftp(文件传送协议 FTP)。

(2)使用HTTP的URL

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

在这里插入图片描述

  HTTP 的默认端口号是 80,通常可省略。若再省略文件的<路径>项,则 URL 就指到互联网上的某个主页。更复杂一些的路径是指向层次结构的从属页面。例如∶

在这里插入图片描述

  URL 里面的字母不分大小写,但为了便于阅读,有时故意使用一些大写字母。用户使用 URL 并非仅仅能够访问万维网的页面,而且还能够通过 URL 使用其他的互联网应用程序,如 FTP或 USENET新闻组等。更重要的是,用户在使用这些应用程序时,只使用一个程序,即浏览器。这显然是非常方便的。

3.超文本传送协议HTTP

(1)HTTP的操作过程

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

在这里插入图片描述

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

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

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

(2)代理服务器

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

在这里插入图片描述

(3)HTTP的报文结构

  • 概述:

  HTTP有两种报文,请求报文(从客户向服务器发送请求)、响应报文(从服务器到客户的回答):

在这里插入图片描述

  HTTP各个字段的长度是不确定的。

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

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

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

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

  • 请求报文:

  请求报文的第一行"请求行"只有三个内容,即方法,请求资源的 URL,以及 HTTP的版本。

  所谓"方法"就是对所请求的对象进行的操作,这些方法实际上也就是一些命令。下面给出了请求报文中常用的几种方法:

在这里插入图片描述

  下面是 HTTP 的请求报文的开始行(即请求行)的格式:

在这里插入图片描述

  下面是一个完整的HTTP 请求报文的例子∶

在这里插入图片描述

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

  • 响应报文:

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

  状态码都是三位数字的,分为5大类,这5 大类的状态码都是以不同的数字开头的:

  1xx 表示通知信息,如请求收到了或正在进行处理。
  2xx 表示成功,如接受或知道了。
  3xx 表示重定向,如要完成请求还必须采取进一步的行动。
  4xx 表示客户的差错,如请求中有错误的语法或不能完成。
  5xx 表示服务器的差错,如服务器失效无法完成请求。

  下面三种状态行在响应报文中是经常见到的:

在这里插入图片描述

  举个例子,若请求的网页从 http∶//wwwee.xyz.edu/index.html 转移到了一个新的地址,则响应报文的状态行和一个首部行就是下面的形式∶

在这里插入图片描述

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

  前面已经讲过,HTTP是无状态的。这样做虽然简化了服务器的设计,但在实际工作中,一些万维网站点却常常希望能够识别用户。要做到这点,可以在 HTTP 中使用 Cookie, Cookie 表示在 HTTP 服务器和客户之间传递的状态信息。现在很多网站都已广泛使用 Cookie。

  Cookie 是这样工作的。当用户 A浏览某个使用 Cookie 的网站时,该网站的服务器就为 A 产生一个唯一的识别码,并以此作为索引在服务器的后端数据库中产生一个项目。接着在给 A 的 HTTP 响应报文中添加一个叫做 Set-cookie 的首部行。这里的"首部字段名"就是"Set-cookie",而后面的"值"就是赋予该用户的"识别码"。例如这个首部行是这样的∶

在这里插入图片描述

  当 A 收到这个响应时,其浏览器就在它管理的特定 Cookie 文件中添加一行,其中包括这个服务器的主机名和Set-cookie 后面给出的识别码。当A继续浏览这个网站时,每发送一个 HTTP 请求报文,其浏览器就会从其 Cookie 文件中取出这个网站的识别码,并放到 HTTP 请求报文的 Cookie 首部行中∶

在这里插入图片描述

  于是,这个网站就能够跟踪用户 31d4d96e407aad42(用户 A)在该网站的活动。需要注意的是,服务器并不需要知道这个用户的真实姓名以及其他的信息。但服务器能够知道用户 31d4d96e407aad42在什么时间访问了哪些页面,以及访问这些页面的顺序。如果 A是在网上购物,那么这个服务器可以为 A 维护一个所购物品的列表,使 A 在结束这次购物时可以一起付费。

  如果 A 在几天后再次访问这个网站,那么他的浏览器会在其 HTTP 请求报文中继续使用首部行 Cookie∶31d4d96e407aad42,而这个网站服务器根据 A过去的访问记录可以向他推荐商品。如果 A 已经在该网站登记过和使用过信用卡付费,那么这个网站就已经保存了 A 的姓名、电子邮件地址、信用卡号码等信息。这样,当 A 继续在该网站购物时,只要还使用同一个电脑上网,由于浏览器产生的 HTTP请求报文中都携带了同样的 Cookie 首部行,服务器就可利用 Cookie 来验证出这是用户 A,因此以后 A 在这个网站购物时就不必重新在键盘上输入姓名、信用卡号码等信息。这对顾客显然是很方便的。

  由于Cookie可能会带来病毒、隐私泄露的隐患,用户可以在浏览器中设置拒接使用Cookie。

4.万维网的文档

(1)超文本标记语言HTML

  关于HTML语言,这里不展开描述,如有兴趣,请自行查阅教材资料。我这里比较推荐菜鸟教程

  此外,还可以了解一下XML,这在项目开发中也会用到。

  另一种语言 XHTML (Extensible HTML)是可扩展超文本标记语言,它与HTML 4.01几乎是相同的。但 XHTML 是更严格的 HTML 版本,是作为一种 XML 应用被重新定义的 HTML,并将逐渐取代 HTML。所有新的浏览器都支持 XHTML。

  还有一种语言 CSS(Cascading Style Sheets)是层叠样式表,它是一种样式表语言,用于为 HTML 文档定义布局。CSS 与 HTML 的区别就是∶ HTML 用于结构化内容,而 CSS 则用于格式化结构化的内容。例如,在浏览器上显示的字体、颜色、边距、高度、宽度、背景图像等方面,都能够给出精确的规定。现在所有的浏览器都支持 CSS。

(2)动态万维网文档

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

  动态文档是指文档的内容是在浏览器访问万维网服务器时才由应用程序动态创建的。当浏览器请求到达时,万维网服务器要运行另一个应用程序,并把控制转移到此应用程序。接着,该应用程序对浏览器发来的数据进行处理,并输出HTTP格式的文档,万维网服务器把应用程序的输出作为对浏览器的响应。由于对浏览器每次请求的响应都是临时生成的,因此用户通过动态文档所看到的内容是不断变化的。

  从以上所述可以看出,要实现动态文档就必须在以下两个方面对万维网服务器的功能进行扩充∶

  • 应增加另一个应用程序(也就是CGI程序,又称脚本程序),用来处理浏览器发来的数据,并创建动态文档。
  • 应增加一个机制,用来使万维网服务器将浏览器发来的数据传送给这个应用程序,然后万维网服务器能够解释这个应用程序的输出,并向浏览器返回 HTML 文档。

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

  在万维网服务器中新增加的应用程序叫做 CGI 程序。取这个名字的原因是∶ 万维网服务器与 CGI的通信遵循 CGI标准。"通用"是因为这个标准所定义的规则对其他任何语言都是通用的。"网关"二字的出现是因为 CGI 程序还可能访问其他的服务器资源,如数据库或图形软件包,因而 CGI 程序的作用有点像一个网关。也有人将 CGI 程序简称为网关程序。"接口"是因为有一些已定义好的变量和调用等可供其他 CGI 程序使用。

在这里插入图片描述

  CGI 程序的正式名字是 CGI 脚本(script)。按照计算机科学的一般概念,"脚本"指的是一个程序,它被另一个程序(解释程序)而不是计算机的处理机来解释或执行。有一些语言专门作为脚本语言,如 Perl,REXX,JavaScript 以及 Tcl/Tk 等。脚本也可用一些常用的编程语言写出,如 C,C++等。使用脚本语言可更容易和更快地进行编码,这对一些有限功能的小程序是很合适的。但一个脚本运行起来比一般的编译程序要慢,因为它的每一条指令先要被另一个程序来处理(这就要一些附加的指令),而不是直接被指令处理器来处理。脚本不一定是一个独立的程序,它可以是一个动态装入的库,甚至是服务器的一个子程序。

(3)活动万维网文档

  略,有机会再补充。

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

(1)全文检索搜索与分类目录搜索

  搜索引擎大体上可分为全文检索搜索引擎与分类目录搜索引擎。

  全文检索搜索引擎是一种纯技术型的检索工具。它的工作原理是通过搜索软件(例如一种叫做"蜘蛛"或"网络机器人"的 Spider 程序)到互联网上的各网站收集信息,找到一个网站后可以从这个网站再链接到另一个网站,像蜘蛛爬行一样。然后按照一定的规则建立一个很大的在线索引数据库供用户查询。用户在查询时只要输入关键词,就从已经建立的索引数据库里进行查询(并不是实时地在互联网上检索到的信息)。因此很可能有些查到的信息已经是过时的(例如很多年前的)。建立这种索引数据库的网站必须定期对已建立的数据库进行更新维护(但不少网站的维护很不及时,因此对查找到的信息一定要注意其发布的时间)。全文检索搜索引擎有谷歌、必应、百度等。

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

  为了使用户能够更加方便地搜索到有用信息,目前许多网站往往同时具有全文检索搜索和分类目录搜索的功能。这里再强调一下,不管哪种搜索引擎,就是告诉你只要链接到什么地方就可以检索到所需的信息。搜索引擎网站本身并没有直接存储这些信息。

(2)Google搜索技术的特点

  Google 的搜索引擎性能优良,因为它使用了先进的硬件和软件,它的核心技术就是 PageRank-M,译为网页排名。

  PageRank 对搜索出来的结果按重要性进行排序。由于用户在有限的时间内,不可能阅读全部的搜索结果(因为数量往往非常大),而通常仅仅是查阅一下前几个(或前几十个)项目。因此用户希望检索结果能够按重要性来排序。PageRank 技术把整个互联网当作了一个整体对待,检查整个网络链接的结构,并确定哪些网页重要性最高。更具体些,就是如果有很多网站上的链接都指向页面 A,那么页面 A 就比较重要。PageRank 对链接的数目进行加权统计。对来自重要网站的链接,其权重也较大。这种算法是完全没有任何人工干预的,厂商不可能用金钱购买网页的排名。Google 还要进行超文本匹配分析,以确定哪些网页与正在执行的特定搜索相关。在综合考虑整体重要性以及与特定查询的相关性之后, Google 就把最相关、最可靠的搜索结果放在首位。

  然而有一些著名网站通过"竞价排名"把虚假广告信息放在检索结果的首位,结果误导了消费者,使受骗者蒙受很大的损失。因此对网络搜索的结果,我们应认真分析其真伪,提高辨别能力,不要随意轻信网络检索的广告信息(哪怕是知名度很高的网站)。【比如百度,这是众所周知的】

五、电子邮件

1.概述

在这里插入图片描述

  • 用户代理:

  用户代理 UA (User Agent)就是用户与电子邮件系统的接口,在大多数情况下它就是运行在用户电脑中的一个程序。因此用户代理又称为电子邮件客户端软件。用户代理向用户提供一个很友好的接口(目前主要是窗口界面)来发送和接收邮件。

  用户代理应具有的功能是:撰写、显示、处理、通信。

  • 邮件服务器:

  互联网上有许多邮件服务器可供用户选用(有些要收取少量的邮箱费用)。邮件服务器 24 小时不间断地工作,并且具有很大容量的邮件信箱。邮件服务器的功能是发送和接收邮件,同时还要向发件人报告邮件传送的结果(已交付、被拒绝、丢失等)。邮件服务器按照客户服务器方式工作。邮件服务器需要使用两种不同的协议。一种协议用于用户代理向邮件服务器发送邮件或在邮件服务器之间发送邮件,如 SMTP 协议,而另一种协议用于用户代理从邮件服务器读取邮件,如邮局协议POP3。

  邮件服务器必须能够同时充当客户和服务器。

  • 电子邮件格式:

  电子邮件由信封和内容两部分组成。电子邮件的传输程序根据邮件信封上的信息来传送邮件。这与邮局按照信封上的信息投递信件是相似的。在邮件的信封上,最重要的就是收件人的地址。TCP/IP 体系的电子邮件系统规定电子邮件地址的格式如下∶

在这里插入图片描述

2.简单邮件传送协议SMTP

(1)建立连接

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

  如在一定时间内(例如三天)发送不了邮件,邮件服务器会把这个情况通知发件人。 SMTP 不使用中间的邮件服务器。不管发送方和接收方的邮件服务器相隔有多远,不管在邮件传送过程中要经过多少个路由器,TCP 连接总是在发送方和接收方这两个邮件服务器之间直接建立。当接收方邮件服务器出故障而不能工作时,发送方邮件服务器只能等待一段时间后再尝试和该邮件服务器建立 TCP 连接,而不能先找一个中间的邮件服务器建立TCP连接。

(2)邮件传送

  邮件的传送从 MAIL 命令开始。MAIL 命令后面有发件人的地址。如∶ MAIL FROM∶[email protected]。若 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",或返回差错代码。

(3)邮件释放

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

  已经广泛使用多年的 SMTP 存在着一些缺点。例如,发送电子邮件不需要经过鉴别。这就是说,在 FROM 命令后面的地址可以任意填写。这就大大方便了垃圾邮件的作者。又如,SMTP 本来就是为传送 ASCII 码而不是传送二进制数据设计的。虽然后来有了 MIME 可以传送二进制数据,但在传送非ASCII 码的长报文时,在网络上的传输效率是不高的。此外,SMTP传送的邮件是明文,不利于保密。

  新出的ESMTP可以在一定程度上解决上述问题。

3.邮件读取协议POP3和IMAP

在这里插入图片描述

  最后再强调一下,不要把邮件读取协议 POP3或 IMAP与邮件传送协议 SMTP弄混。发件人的用户代理向发送方邮件服务器发送邮件,以及发送方邮件服务器向接收方邮件服务器发送邮件,都是使用 SMTP协议。而 POP3 或 IMAP则是用户代理从接收方邮件服务器上读取邮件所使用的协议。

4.通用互联网邮件扩充MIME

  MIME全名是通用互联网邮件扩充 MIME,MIME 并没有改动或取代 SMTP,MIME 的意图是继续使用原来的邮件格式,但增加了邮件主体的结构,并定义了传送非 ASCII 码的编码规则。也就是说,MIME 邮件可在现有的电子邮件程序和协议下传送。下图表示 MIME 和 SMTP 的关系。

在这里插入图片描述

六、简单网络管理协议SNMP

1.网络管理的基本概念

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

  • 网络管理的一般模型:

在这里插入图片描述

  • SNMP的网络管理:

  关于网络管理有一个基本原理,就是∶若要管理某个对象,就必然会给该对象添加一些软件或硬件,但这种"添加"对原有对象的影响必须尽量小些。SNMP 正是按照这样的基本原理来设计的。

  SNMP 的网络管理由三个部分组成,即 SNMP 本身、管理信息结构 SMI(Structure of Management Information)和管理信息库 MIB (Management Information Base)。下面简述这三部分的作用。

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

  SMI 定义了命名对象和定义对象类型(包括范围和长度)的通用规则,以及把对象和对象的值进行编码的规则。这样做是为了确保网络管理数据的语法和语义无二义性。但从 SMI 的名称并不能看出它的功能。请注意,SMI 并不定义一个实体应管理的对象数目,也不定义被管对象名以及对象名及其值之间的关联。

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

  为了更好地理解上述的几个组成部分,可以把它们和程序设计进行一下对比。我们在编程时要使用某种语言,而这种语言就是用来定义编程的规则。例如,一个变量名必须从字母开始而后面接着是字母数字。在网络管理中,这些规则由 SMI来定义。在程序设计中必须对变量进行说明。例如,int counter,表示变量 counter是整数类型。 MIB 在网络管理中就做这样的事情。MIB 给每个对象命名,并定义对象的类型。

  在编程中的说明语句之后,程序需要写出一些语句用来存储变量的值,并在需要时改变这些变量的值。SNMP 在网络管理中完成这件任务。SNMP 按照 SMI 定义的规则,存储、改变和解释这些已由 MIB 说明的对象的值。

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

2.管理信息结构SMI

  从这里开始,后面的内容还没写,日后再回来完善。

3.管理信息库MIB

4.SNMP的协议数据单元和报文

七、应用进程跨越网络的进程

八、P2P的应用

猜你喜欢

转载自blog.csdn.net/Tracycoder/article/details/113380585