应用层(二)

四、万维网 WWW

万维网是一个大规模的、联机式的信息储藏所。用链接的方法能非常方便地从因特网上的一个站点访问另一个站点,从而主动地按需获取丰富的信息。

万维网是分布式 超媒体(hypermedia)系统,它是超文本(hypertext)系统的扩充。
一个超文本由多个信息源链接成。利用一个链接可使用户找到另一个文档。这些文档可以位于世界上任何一个接在因特网上的超文本系统中。超文本是万维网的基础。
超媒体与超文本的区别是文档内容不同。超文本文档仅包含文本信息,而超媒体文档还包含其他表示方式的信息,如图形、图像、声音、动画,甚至活动视频图像。

统一资源定位符 URL

统一资源定位符 URL 是对可以从因特网上得到的资源的位置和访问方法的一种简洁的表示。

应用层(二)

超文本传送协议 HTTP

从层次的角度看,HTTP 是面向事务的(transaction-oriented)应用层协议,它是万维网上能够可靠地交换文件(包括文本、声音、图像等各种多媒体文件)的重要基础。

特点:
HTTP 是面向事务的客户服务器协议。
HTTP 1.0 协议是无状态的(stateless)。
HTTP 协议本身也是无连接的,虽然它使用了面向连接的 TCP 向上提供的服务。

应用层(二)

用户点击鼠标后所发生的事件
(1) 浏览器分析超链指向页面的 URL。
(2) 浏览器向 DNS 请求解析 www.tsinghua.edu.cn 的 IP 地址。
(3) 域名系统 DNS 解析出清华大学服务器的 IP 地址。
(4) 浏览器与服务器建立 TCP 连接
(5) 浏览器发出取文件命令:GET /chn/index.htm HTTP/1.1。
(6) 服务器给出响应,把文件 index.htm 发给浏览器。
(7) TCP 持续连接或释放连接。
(8) 浏览器显示“清华大学院系设置”文件 index.htm 中的所有文本。

应用层(二)
  • 持续连接
    HTTP/1.1 协议使用持续连接。
    万维网服务器在发送响应后仍然在一段时间内保持这条连接,使同一个客户(浏览器)和该服务器可以继续在这条连接上传送后续的 HTTP 请求报文和响应报文。
    这并不局限于传送同一个页面上链接的文档,而是只要这些文档都在同一个服务器上就行。
    • 非流水线方式:
      客户在收到前一个响应后才能发出下一个请求。这比非持续连接的两倍 RTT 的开销节省了建立 TCP 连接所需的一个 RTT 时间。但服务器在发送完一个对象后,其 TCP 连接就处于空闲状态,浪费了服务器资源。
    • 流水线方式:
      客户在收到 HTTP 的响应报文之前就能够接着发送新的请求报文。一个接一个的请求报文到达服务器后,服务器就可连续发回响应报文。使用流水线方式时,客户访问所有的对象只需花费一个 RTT时间,使 TCP 连接中的空闲时间减少,提高了下载文档效率。

代理服务器(proxy server)

代理服务器(proxy server)又称为万维网高速缓存(Web cache),它代表浏览器发出 HTTP 请求。
万维网高速缓存把最近的一些请求和响应暂存在本地设备(磁盘)中。
当与暂时存放的请求相同的新请求到达时,万维网高速缓存就把暂存的响应发送出去,而不需要按 URL 的地址再去因特网访问该资源。

应用层(二)
  1. 浏览器访问因特网的服务器时,要先与校园网的高速缓存建立 TCP 连接,并向高速缓存发出 HTTP 请求报文
  2. 若高速缓存已经存放了所请求的对象,则将此对象放入 HTTP 响应报文中返回给浏览器。
  3. 否则,高速缓存就代表发出请求的用户浏览器,与因特网上的源点服务器建立 TCP 连接,并发送 HTTP 请求报文。
  4. 源点服务器将所请求的对象放在 HTTP 响应报文中返回给校园网的高速缓存。
  5. 高速缓存收到此对象后,先复制在其本地存储器中(为今后使用),然后再将该对象放在 HTTP 响应报文中,通过已建立的 TCP 连接,返回给请求该对象的浏览器。

HTTP 的报文结构

HTTP 有两类报文:
请求报文——从客户向服务器发送请求报文。
响应报文——从服务器到客户的回答。
由于 HTTP 是面向正文的(text-oriented),因此在报文中的每一个字段都是一些 ASCII 码串,因而每个字段的长度都是不确定的。

应用层(二)
应用层(二)

通用网关接口 CGI(Common Gateway Interface)

CGI 是一种标准,它定义了动态文档应如何创建,输入数据应如何提供给应用程序,以及输出结果应如何使用。万维网服务器与 CGI 的通信遵循 CGI 标准。
“通用”:CGI 标准所定义的规则对其他任何语言都是通用的。
“网关”:CGI 程序的作用像网关。
“接口”:有一些已定义好的变量和调用等可供其他 CGI 程序使用。

CGI 程序的正式名字是 CGI 脚本(script)。
“脚本”指的是一个程序,它被另一个程序(解释程序)而不是计算机的处理机来解释或执行。脚本运行起来要比一般的编译程序要慢,因为它的每一条指令先要被另一个程序来处理(这就要一些附加的指令),而不是直接被指令处理器来处理。

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

用 Java 技术创建活动文档
在 Java 技术中使用 “小应用程序”(applet)来描述活动文档程序。用户从万维网服务器下载嵌入了 Java 小应用程序的 HTML 文档后,可在浏览器的屏幕上点击某个图像,就可看到动画效果,或在下拉式菜单中点击某个项目,就可看到计算结果。Java 技术是活动文档技术的一部分。

应用层(二)
  • HTML 解释程序是必不可少的,而其他的解释程序则是可选的。
    解释程序把 HTML 规格转换为适合用户显示硬件的命令来处理版面的细节。
    许多浏览器还包含 FTP 客户程序,用来获取文件传送服务。一些浏览器也包含电子邮件客户程序,使浏览器能够发送和接收电子邮件。
  • 浏览器将它取回的每一个页面副本都放入本地磁盘的缓存中。
    当用户用鼠标点击某个选项时,浏览器首先检查磁盘的缓存。若缓存中保存了该项,浏览器就直接从缓存中得到该项副本而不必从网络获取,这样就明显地改善浏览器的运行特性。
    但缓存要占用磁盘大量的空间,而浏览器性能的改善只有在用户再次查看缓存中的页面时才有帮助。许多浏览器允许用户调整缓存策略。

万维网的信息检索系统

在万维网中用来进行搜索的程序叫做搜索引擎。

  • 全文检索搜索引擎是一种纯技术型的检索工具。它的工作原理是通过搜索软件到因特网上的各网站收集信息,找到一个网站后可以从这个网站再链接到另一个网站。然后按照一定的规则建立一个很大的在线数据库供用户查询。
    用户在查询时只要输入关键词,就从已经建立的索引数据库上进行查询(并不是实时地在因特网上检索到的信息)。
  • 分类目录搜索引擎并不采集网站的任何信息,而是利用各网站向搜索引擎提交的网站信息时填写的关键词和网站描述等信息,经过人工审核编辑后,如果认为符合网站登录的条件,则输入到分类目录的数据库中,供网上用户查询。
    分类目录搜索也叫做分类网站搜索。
  • 垂直搜索引擎(Vertical Search Engine)针对某一特定领域、特定人群或某一特定需求提供搜索服务。垂直搜索也是提供关键字来进行搜索的,但被放到了一个行业知识的上下文中,返回的结果更倾向于信息、消息、条目等。

应用编程接口 API(Application Programming Interface)

应用进程的控制权和操作系统的控制权进行转换的一个接口,即应用编程接口 API。

应用层(二)

1、当应用进程需要使用网络进行通信时就发出系统调用,请求操作系统为其创建“套接字”,以便把网络通信所需要的系统资源分配给该应用进程。
2、操作系统为这些资源的总和用一个叫做套接字描述符的号码来表示,并把此号码返回给应用进程。应用进程所进行的网络操作都必须使用这个号码。
3、通信完毕后,应用进程通过一个关闭套接字的系统调用通知操作系统回收与该“号码”相关的所有资源。

连接建立阶段
1、当套接字被创建后,它的端口号和 IP 地址都是空的,因此应用进程要调用 bind(绑定)来指明套接字的本地地址。在服务器端调用 bind 时就是把熟知端口号和本地IP地址填写到已创建的套接字中。这就叫做把本地地址绑定到套接字。
2、服务器在调用 bind 后,还必须调用 listen(收听)把套接字设置为被动方式,以便随时接受客户的服务请求。UDP服务器由于只提供无连接服务,不使用 listen 系统调用。
3、服务器紧接着就调用 accept(接受),以便把远地客户进程发来的连接请求提取出来。系统调用 accept 的一个变量就是要指明从哪一个套接字发起的连接。

五、电子邮件eMail

电子邮件把邮件发送到收件人使用的邮件服务器,并放在其中的收件人邮箱中,收件人可随时上网到自己使用的邮件服务器进行读取。

  • 发送邮件的协议:
    SMTP(简单邮件传送协议)
    MIME (通用因特网邮件扩充)扩充了SMTP协议,可在邮件中同时传送多种类型的数据(如文本、声音、图像、视像等) 。
  • 读取邮件的协议:
    POP3(邮局协议)
    IMAP(网际报文存取协议)功能强于POP3
应用层(二)

用户代理 UA (User Agent)

  • 用户代理 UA :
    是用户与电子邮件系统的接口,是电子邮件客户端软件。
    用户代理的功能:撰写、显示、处理和通信。
  • 邮件服务器:
    发送和接收邮件,同时还要向发信人报告邮件传送的情况(已交付、被拒绝、丢失等)。邮件服务器按照客户/服务器方式工作。
    发送邮件用SMTP/MIME协议
    读取邮件用POP3/IMAP协议。

简单邮件传送协议 SMTP

SMTP 所规定的就是在两个相互通信的 SMTP 进程之间应如何交换信息。
由于 SMTP 使用客户服务器方式,因此负责发送邮件的 SMTP 进程就是 SMTP 客户,而负责接收邮件的 SMTP 进程就是 SMTP 服务器。

SMTP 规定了 14 条命令和 21 种应答信息。每条命令用 4 个字母组成,而每一种应答信息一般只有一行信息,由一个 3 位数字的代码开始,后面附上(也可不附上)很简单的文字说明。

邮局协议 POP 3

邮局协议 POP 是一个非常简单、但功能有限的邮件读取协议,现在使用的是它的第三个版本 POP3。
POP 也使用客户服务器的工作方式。
POP的监听端口号:110。
在接收邮件的用户 PC 机中必须运行 POP 客户程序,而在用户所连接的 ISP 的邮件服务器中则运行 POP 服务器程序。

IMAP 协议(Internet Message Access Protocol)

IMAP 也是按客户服务器方式工作,现在较新的是版本 4,即 IMAP4。
用户在自己的 PC 机上就可以操纵 ISP 的邮件服务器的邮箱,就像在本地操纵一样。
因此 IMAP 是一个联机协议。当用户 PC 机上的 IMAP 客户程序打开 IMAP 服务器的邮箱时,用户就可看到邮件的首部。若用户需要打开某个邮件,则该邮件才传到用户的计算机上。

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

通用因特网邮件扩充 MIME

  • MIME 并没有改动 SMTP 或取代它,只是补足SMTP功能的不足,例如SMTP不支持许多其他非英语国家的文字(如中文、俄文等)的传输,SMTP 服务器会拒绝超过一定长度的邮件等。
  • MIME 的意图是继续使用目前的[RFC 822]格式,但增加了邮件主体的结构,并定义了传送非 ASCII 码的编码规则。
应用层(二)

六、动态主机配置协议 DHCP

  1. 为了将软件协议做成通用的和便于移植,协议软件的编写者把协议软件参数化。这就使得在很多台计算机上使用同一个经过编译的二进制代码成为可能。
  2. 一台计算机和另一台计算机的区别,都可通过一些不同的参数来体现。在软件协议运行之前,必须给每一个参数赋值。
  3. 在协议软件中给这些参数赋值的动作叫做协议配置。
    一个软件协议在使用之前必须是已正确配置的;具体的配置信息有哪些则取决于协议栈。
  4. 需要配置的项目
    (1) IP 地址
    (2) 子网掩码
    (3) 默认路由器的 IP 地址
    (4) 域名服务器的 IP 地址
    这些信息通常存储在一个配置文件中,计算机在引导过程中可以对这个文件进行存取。

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

运行过程:

  1. 需要 IP 地址的主机在启动时就向 DHCP 服务器广播发送发现报文(DHCPDISCOVER),这时该主机就成为 DHCP 客户。
    本地网络上所有主机都能收到此广播报文,但只有 DHCP 服务器才回答此广播报文。
  2. DHCP 服务器先在其数据库中查找该计算机的配置信息。若找到,则返回找到的信息。若找不到,则从服务器的 IP 地址池(address pool)中取一个地址分配给该计算机。DHCP 服务器的回答报文叫做提供报文(DHCPOFFER)。
应用层(二)

并不是每个网络上都有 DHCP 服务器,这样会使 DHCP 服务器的数量太多。现在是每一个网络至少有一个DHCP 中继代理,它配置了 DHCP 服务器的 IP 地址信息。
当 DHCP 中继代理收到主机发送的发现报文后,就以单播方式向 DHCP 服务器转发此报文,并等待其回答。收到 DHCP 服务器回答的提供报文后,DHCP 中继代理再将此提供报文发回给主机

应用层(二)

DHCP 服务器分配给 DHCP 客户的 IP 地址的临时的,因此 DHCP 客户只能在一段有限的时间内使用这个分配到的 IP 地址。DHCP 协议称这段时间为租用期
租用期的数值应由 DHCP 服务器自己决定。
DHCP 客户也可在自己发送的报文中(例如,发现报文)提出对租用期的要求。

应用层(二)
  1. DHCP 服务器被动打开 UDP 端口 67,等待客户端发来的报文。
  2. DHCP 客户从 UDP 端口 68发送 DHCP 发现报文。
  3. 凡收到 DHCP 发现报文的 DHCP 服务器都发出 DHCP 提供报文,因此 DHCP 客户可能收到多个 DHCP 提供报文。
  4. DHCP 客户从几个 DHCP 服务器中选择其中的一个,并向所选择的 DHCP 服务器发送 DHCP 请求报文。
  5. 被选择的 DHCP 服务器发送确认报文DHCPACK,进入已绑定状态,并可开始使用得到的临时 IP 地址了。
    DHCP 客户现在要根据服务器提供的租用期 T 设置两个计时器 T1 和 T2,它们的超时时间分别是 0.5T 和 0.875T。当超时时间到就要请求更新租用期
  6. 租用期过了一半(T1 时间到),DHCP 发送请求报文 DHCPREQUEST 要求更新租用期。
  7. DHCP 服务器若同意,则发回确认报文DHCPACK。DHCP 客户得到了新的租用期,重新设置计时器。
  8. DHCP 服务器若不同意,则发回否认报文DHCPNACK。这时 DHCP 客户必须立即
    停止使用原来的 IP 地址,而必须重新申请 IP 地址(回到步骤2)。
    若DHCP服务器不响应步骤6 的请求报文DHCPREQUEST,则在租用期过了 87.5% 时,DHCP 客户必须重新发送请求报文 DHCPREQUEST(重复步骤6 ),然后又继续后面的步骤
  9. DHCP 客户可随时提前终止服务器所提供的租用期,这时只需向 DHCP 服务器发送释放报文 DHCPRELEASE 即可。