第六章:应用层
6.1 域名系统 DNS
6.1.1 域名系统概述
- 域名系统 DNS (Domain Name System) :
- 互联网使用的命名系统。
- 用来把人们使用的机器名字(域名)转换为 IP 地址。
- 为互联网的各种网络应用提供了核心服务。
DNS 是一个联机分布式数据库系统,采用客户服务器方式。
域名到 IP 地址的解析是由若干个域名服务器程序共同完成。
域名服务器程序在专设的结点上运行,运行该程序的机器称为域名服务器。
6.1.2 互联网的域名结构

【图 互联网的域名空间结构】
6.1.3 域名服务器
实现域名系统使用分布在各地的域名服务器(DNS 服务器)。
一个服务器所负责管辖的(或有权限的)范围叫做区 (zone)。
各单位根据具体情况来划分自己管辖范围的区。但在一个区中的所有节点必须是能够连通的。
每一个区设置相应的权限域名服务器,用来保存该区中的所有主机的域名到 IP 地址的映射。
根据所起的作用,分为四种类型:
根域名服务器
最高层次,最为重要。
所有根域名服务器都知道所有的顶级域名服务器的域名和 IP 地址。
不管是哪一个本地域名服务器,若要对互联网上任何一个域名进行解析,只要自己无法解析,就首先求助于根域名服务器。
若所有的根域名服务器都瘫痪了,整个互联网中的 DNS 系统就无法工作了。
根域名服务器共有 13 套装置,构成 13 组根域名服务器。
根域名服务器总共只有 13 个不同 IP 地址的域名,但并非仅由13台机器所组成。
注意:根域名服务器并不直接把域名转换成 IP 地址(根域名服务器也没有存放这种信息),而是告诉本地域名服务器下一步应当找哪一个顶级域名服务器进行查询。
顶级域名服务器
顶级域名服务器(即 TLD 服务器)负责管理在该顶级域名服务器注册的所有二级域名。
当收到 DNS 查询请求时,就给出相应的回答(可能是最后的结果,也可能是下一步应当找的域名服务器的 IP 地址)。
权限域名服务器
负责一个区(zone)的域名服务器。
当一个权限域名服务器还不能给出最后的查询回答时,就会告诉发出查询请求的 DNS 客户,下一步应当找哪一个权限域名服务器。
本地域名服务器
非常重要。
当一个主机发出 DNS 查询请求时,该查询请求报文就发送给本地域名服务器。
每一个互联网服务提供者 ISP 或一个大学,都可以拥有一个本地域名服务器。
当所要查询的主机也属于同一个本地 ISP 时,该本地域名服务器立即就能将所查询的主机名转换为它的 IP 地址,而不需要再去询问其他的域名服务器。
本地域名服务器有时也称为默认域名服务器。
域名的解析过程
递归查询
通常,主机向本地域名服务器查询时使用。
若不知道,就以 DNS 客户的身份,向其他根域名服务器继续发出查询请求报文。
迭代查询
本地域名服务器向根域名服务器查询时使用。
要么给出所要查询的 IP 地址,要么告诉下一个要查询的域名服务器的 IP 地址。
本地域名服务器继续后续查询。
6.2 文件传送协议
6.2.1 FTP 概述
文件传送协议 FTP (File Transfer Protocol) 是互联网上使用得最广泛的文件传送协议。
提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限。
屏蔽了各计算机系统的细节,因而适合于在异构网络中任意计算机之间传送文件。
是文件共享协议的一个大类。
文件共享协议
文件传送协议:FTP, TFTP 等。
复制整个文件。对文件副本进行访问。
若要存取一个文件,就必须先获得一个本地文件副本。
若要修改文件,只能对文件副本进行修改,然后再将修改后的文件副本传回到原节点。
联机访问 (on-line access) 协议:NFS 等。
允许同时对一个文件进行存取。
远地共享文件访问,如同对本地文件的访问一样。
透明存取,不需要对该应用程序作明显的改动。
由操作系统负责。
6.2.2 FTP 的基本工作原理
FTP 特点
只提供文件传送的一些基本服务,它使用 TCP 可靠的运输服务。
主要功能:减少或消除在不同操作系统下处理文件的不兼容性。
使用客户服务器方式。
一个 FTP 服务器进程可同时为多个客户进程提供服务。
FTP 的服务器进程由两大部分组成:
一个主进程,负责接受新的请求;
若干个从属进程,负责处理单个请求。
6.2.3 简单文件传送协议 TFTP
TFTP (Trivial File Transfer Protocol) 是一个很小且易于实现的文件传送协议。
使用客户服务器方式和使用 UDP 数据报,因此 TFTP 需要有自己的差错改正措施。
只支持文件传输,不支持交互。
没有庞大的命令集,没有列目录的功能,也不能对用户进行身份鉴别。
优点:(1)可用于 UDP 环境;(2)代码所占的内存较小。
TFTP 的主要特点
每次传送的数据报文中有 512 字节的数据,但最后一次可不足 512 字节。
数据报文按序编号,从 1 开始。
支持 ASCII 码或二进制传送。
可对文件进行读或写。
使用很简单的首部。
TFTP 的工作很像停止等待协议
发送完一个文件块后就等待对方的确认,确认时应指明所确认的块编号。
发完数据后在规定时间内收不到确认就要重发数据 PDU。
发送确认 PDU 的一方若在规定时间内未收到下一个文件块,需重发确认 PDU,保证文件的传送不致因某一个数据报的丢失而告失败。
TFTP 的工作过程
开始工作时,TFTP 客户进程发送一个读请求或写请求报文给 TFTP 服务器进程,其 UDP 熟知端口号码为 69。
TFTP 服务器进程选择一个新的端口和 TFTP 客户进程进行通信。
若文件长度恰好为 512 字节的整数倍,则在文件传送完毕后,还必须在最后发送一个只含首部而无数据的数据报文。
若文件长度不是 512 字节的整数倍,则最后传送数据报文的数据字段一定不满 512 字节,作为文件结束的标志。
6.3 远程终端协议 TELNET
是一个简单的远程终端协议,是互联网的正式标准。
允许用户在其所在地通过 TCP 连接注册(即登录)到远地的另一个主机上(使用主机名或 IP 地址)。
能将用户的击键传到远地主机,同时也能将远地主机的输出通过 TCP 连接返回到用户屏幕。
服务是透明的。
又称为终端仿真协议。
TELNET 使用客户 - 服务器方式
在本地系统运行 TELNET 客户进程,而在远地主机则运行 TELNET 服务器进程。
服务器中的主进程等待新的请求,产生从属进程来处理每一个连接。
TELNET 使用网络虚拟终端 NVT 格式
TELNET 的选项协商 (Option Negotiation) 使客户和服务器可商定使用更多的终端功能,协商的双方是平等的。
两个字符集:数据,控制
客户端把用户的击键和命令转换成 NVT 格式,并送交服务器。
服务器端把收到的数据和命令,从 NVT 格式转换成远地系统所需的格式。
向客户返回数据时,服务器把远地系统的格式转换为 NVT 格式,本地客户再从 NVT 格式转换到本地系统所需的格式。
6.4 万维网 WWW
6.4.1 万维网概述
万维网 WWW (World Wide Web) 并非某种特殊的计算机网络。
万维网是一个大规模的、联机式的信息储藏所。
万维网用链接的方法能非常方便地从互联网上的一个站点访问另一个站点,从而主动地按需获取丰富的信息。
这种访问方式称为“链接”。
万维网是分布式超媒体 (hypermedia) 系统
是超文本 (hypertext) 系统的扩充。
超文本:由多个信息源链接成。是万维网的基础。
超媒体与超文本的区别:文档内容不同。
超文本文档仅包含文本信息。
超媒体文档还包含其他信息,如图形、图像、声音、动画,甚至活动视频图像等。
分布式系统
信息分布在整个互联网上。每台主机上的文档都独立进行管理。
万维网的工作方式
以客户服务器方式工作。
客户程序:浏览器。
服务器程序:在万维网文档所驻留的主机上运行。这个计算机也称为万维网服务器。
客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的万维网文档。
在一个客户程序主窗口上显示出的万维网文档称为页面 (page)。
万维网必须解决的问题(1/2)
(1) 怎样标志分布在整个互联网上的万维网文档?
使用统一资源定位符 URL (Uniform Resource Locator) 。
使每一个文档在整个互联网的范围内具有唯一的标识符 URL。
(2) 用什么协议来实现万维网上的各种链接?
使用超文本传送协议 HTTP (HyperText Transfer Protocol)。
HTTP 是一个应用层协议,使用 TCP 连接进行可靠的传送。
万维网必须解决的问题(2/2)
(3) 怎样使不同作者创作的不同风格的万维网文档都能在互联网上的各种主机上显示出来,同时使用户清楚地知道在什么地方存在着链接?
使用超文本标记语言 HTML (HyperText Markup Language) 。
(4) 怎样使用户能够很方便地找到所需的信息?
使用各种的搜索工具(即搜索引擎)。
6.4.2 统一资源定位符 URL
是对互联网上资源的位置和访问方法的一种简洁表示。
给资源的位置提供一种抽象的识别方法,并用这种方法给资源定位。
实际上就是在互联网上的资源的地址。
显然,互联网上的所有资源,都有一个唯一确定的URL。
资源:指在互联网上可以被访问的任何对象,包括文件目录、文件、文档、图像、声音等,以及与互联网相连的任何形式的数据。
URL 相当于一个文件名在网络范围的扩展。因此,URL 是与互联网相连的机器上的任何可访问对象的一个指针。
1. URL 的格式
2. 使用 HTTP 的 URL
6.4.3 超文本传送协议 HTTP
HTTP 是面向事务的 (transaction-oriented) 应用层协议。
使用 TCP 连接进行可靠的传送。
定义了浏览器与万维网服务器通信的格式和规则。
是万维网上能够可靠地交换文件(包括文本、声音、图像等各种多媒体文件)的重要基础。
1. HTTP 的操作过程


HTTP 的主要特点
HTTP 使用了面向连接的 TCP 作为运输层协议,保证了数据的可靠传输。
HTTP 协议本身也是无连接的。
HTTP 是无状态的 (stateless),简化了服务器的设计,使服务器更容易支持大量并发的 HTTP 请求。
请求一个万维网文档所需的时间

【图】
协议 HTTP/1.0 的主要缺点
每请求一个文档就要有两倍 RTT 的开销。
客户和服务器每一次建立新的 TCP 连接都要分配缓存和变量。
这种非持续连接使服务器的负担很重。
【图】
协议 HTTP/1.1 使用持续连接
持续连接(persistent connection):服务器在发送响应后仍然在一段时间内保持这条连接(不释放),使同一个客户(浏览器)和该服务器可以继续在这条连接上传送后续的 HTTP 请求报文和响应报文。
只要文档都在同一个服务器上,就可以继续使用该 TCP 连接。
两种工作方式:
持续连接:非流水线方式 (without pipelining)
客户在收到前一个响应之后才能发出下一个请求。
缺点:TCP 连接空闲状态。
持续连接:流水线方式 (with pipelining)。
客户在收到响应报文之前就能够接着发送新的请求报文。
连续的多个请求报文到达服务器后,服务器就可连续发回响应报文。
下载效率提高。
协议 HTTP/2
是协议 HTTP/1.1 的升级版本。
服务器可以并行发回响应(使用同一个 TCP 连接)。
允许客户复用 TCP 连接进行多个请求。
把所有的报文都划分为许多较小的二进制编码的帧,并采用了新的压缩算法,不发送重复的首部字段,大大减小了首部的开销,提高了传输效率。
向后兼容。
2. 代理服务器
代理服务器 (proxy server) 又称为万维网高速缓存 (Web cache),它代表浏览器发出 HTTP 请求。
使用高速缓存可减少访问互联网服务器的时延。
3. HTTP 的报文结构
- 两类报文:
请求报文:从客户向服务器的请求。
响应报文:从服务器到客户的回答。
由于 HTTP 是面向正文的 (text-oriented),因此报文中每一个字段的值都是一些 ASCII 码串,每个字段的长度都是不确定的。 - 三个组成部分:
开始行:用于区分是请求报文还是响应报文。
首部行:说明浏览器、服务器或报文主体的一些信息。可以有多行,也可以不使用。
实体主体:请求报文中一般不用,响应报文中也可能没有该字段。
6.4.4 万维网的文档
1. 超文本标记语言 HTML
超文本标记语言 HTML (HyperText Markup Language) 是一种制作万维网页面的标准语言,它消除了不同计算机之间信息交流的障碍,是万维网的重要基础 [RFC 2854]。
最新 HTML 5.0 增加了
HTML 定义了许多用于排版的命令(即标签)。
HTML 把各种标签嵌入到万维网的页面中,构成了所谓的 HTML 文档。
HTML 文档是一种可以用任何文本编辑器创建的 ASCII 码文件。
HTML 文档的后缀:.html 或 .htm。
XML
可扩展标记语言 XML (Extensible Markup Language) 和 HTML 很相似。
设计宗旨是:传输数据,而不是显示数据。
特点和优点:
可用来标记数据、定义数据类型;
允许用户对自己的标记语言进行自定义,并且是无限制的;
简单,与平台无关;
将用户界面与结构化数据分隔开来;
XHTML
可扩展超文本标记语言 XHTML (Extensible HTML) 与 HTML 4.01 几乎相同,是更严格的 HTML 版本。
作为一种 XML 应用被重新定义的 HTML,将逐渐取代 HTML。
略……
6.4.5 万维网的信息检索系统
6.4.6 博客和微博
6.4.7 社交网站
6.5 电子邮件
6.5.1 电子邮件概述
- 电子邮件 (e-mail):指使用电子设备交换的邮件及其方法。
- 优点:使用方便,传递迅速,费用低廉,可以传送多种类型的信息(包括:文字信息,声音和图像等)。
- 重要标准:
简单邮件发送协议:SMTP
互联网文本报文格式
通用互联网邮件扩充 MIME
邮件读取协议:POP3 和 IMAP
电子邮件系统的组成:三个主要构件

【图、用户代理,邮件服务器,以及邮件发送和读取协议。】
6.5.2 简单邮件传送协议 SMTP
简单邮件发送协议 SMTP:用于在用户代理向邮件服务器 或 邮件服务器之间发送邮件。
邮件服务器必须能够同时充当客户和服务器。
SMTP 和 POP3(或 IMAP)都使用 TCP 连接可靠地传送邮件。
SMTP 规定了在两个相互通信的 SMTP 进程之间交换信息的方法。
SMTP 使用客户服务器方式。
SMTP 基于 TCP 实现客户与服务器的通信。
SMTP 是一个基于文本的 (即 ASCII 码) 的协议。
SMTP 客户与服务器之间采用命令-响应方式进行交互。
SMTP 通信的三个阶段
- 连接建立:连接是在发送主机的 SMTP 客户和接收主机的 SMTP 服务器之间建立的。SMTP 不使用中间的邮件服务器。
- 邮件传送
- 连接释放:邮件发送完毕后,SMTP 应释放 TCP 连接。
6.5.3 电子邮件的信息格式
6.5.4 邮件读取协议 POP3 和 IMAP
两个常用的邮件读取协议:
POP3:邮局协议 (Post Office Protocol) 第3个版本
IMAP:网际报文存取协议 (Internet Message Access Protocol)
POP3 协议
POP3 使用客户服务器方式。
POP3 基于 TCP 实现客户与服务器的通信。
POP3 支持用户鉴别。
POP3 服务器删除被用户读取了的邮件。
IMAP 协议
IMAP 使用客户服务器方式。
IMAP 基于 TCP 实现客户与服务器的通信。
IMAP 是一个联机协议。
连接后只下载邮件首部(部分下载)。
用户直接在 IMAP 服务器上创建和管理文件夹。
用户可以搜索邮件内容。
用户可以在不同的地方使用不同的计算机随时上网阅读和处理自己的邮件。
允许收信人只读取邮件中的某一个部分。
缺点:要想查阅邮件,必须先联网。




