第六章 应用层

  • 6.1 网络应用模型

    • 6.1.1 客户/服务器模型

      • 服务器

        • 总是打开的主机

        • 服务于 许多来自其他称为客户机的主机请求

        • 服务器上运行的软件则是专门用来提供某种服务的程序,可同时处理多个远程或本地客户的要 求。

          • 系统启动后即自动调用并一直不断地运行着,被动地等待并接收来自各地客户的请求。

        • 服务器程序不需要知道客户程序的地址。

        • 工作流程

          • 1) 服务器处于接收请求的状态。

          • 2) 客户机发出服务请求,并等待接收结果。

          • 3) 服务器收到请求后,分析请求,进行必要的处理,得到结果并发送给客户机。

      • 客户程序

        • 必须知道服务器程序的地址

        • 一般不需要特殊的硬件和复杂的操作系统。

      • 客户/服务器模型最主要的特征

        • 客户是服务请求方,服务器是服务提供方。

        • 如Web应用程 序,其中总是打开的Web服务器服务于运行在客户机上的浏览器的请求。当Web服务器接收到来 自客户机对某对象的请求时,它向该客户机发送所请求的对象以做出响应。

      • 常见的使用客户/服务 器模型

        • Web、文件传输协议( FTP、远程登录和电子邮件等。

      • 主要特点

        • 1) 网络中各计算机的地位不平等,

          • 服务器可以通过对用户权限的限制来达到管理客户机的 目的,使它们不能随意存储/删除数据,或进行其他受限的网络活动。

          • 整个网络的管理工 作由少数服务器担当,因此网络的管理非常集中和方便。

        • 2) 客户机相互之间不直接通信。

          • 例如,在Web应用中两个浏览器并不直接通信。

        • 3) 可扩展性不佳。

          • 受服务器硬件和网络带宽的限制,服务器支持的客户机数有限。

        • 服务器性能的好坏决定了整个系统的性能,当大量用户请 求服务时,月艮务器就必然成为系统的瓶颈。

    • 6.1.2 P2P 模型

      • 思想是整个网络中的传输内容不 再被保存在中心服务器上,每个结点都同时具有下载、上传的功能,其权利和义务都是大体对等的。

      • 各计算机没有固定的客户和服务器划分。

        • 任意一对计算机— —称为对 等方( Peer),直接相互通信。

      • 从本质上来看仍然使用客户/服务器方式,每个结 点既作为客户访问其他结点的资源,也作为服务器提供资源给其他结点访问。

      • 比较流行的P2P 应用

        • PPlive、Bittorrent和电驴等。

      • 优点

        • 1) 减轻了服务器的计算压力,消除了对某个服务器的完全依赖,可以将任务分配到各个结 点上,因此大大提高了系统效率和资源利用率

        • 2) 多个客户机之间可以直接共享文档。

        • 3) 可扩展性好,传统服务器有响应和带宽的限制,因此只能接受一定数量的请求。

        • 4) 网络健壮性强,单个结点的失效不会影响其他部分的结点。

      • 缺点

        • 在获取服务的同时,还要给其他结点提供服务,因此会占用较多的内存, 影响整机速度。

        • 据某互联网调研机构统计, 当前P2P程序已占互联网50%〜90%的流量,使网络变得非常拥塞,因此各大ISP (互联网服务 提供商,如电信、网通等)通常都对P2P应用持反对态度。

  • 6.2 域名系统(DNS)

    • 是因特网使用的命名系统,用来把便于人们记忆的 具有特定含义的主机名(如www.cskaoyan.com) 转换为便于机器处理的IP地址。

    • DNS系统采用 客户/服务器模型,其协议运行在UDP之上,使用53号端口。

    • DNS分为3部分

      • 6.2.1 层次域名空间

        • 图6.4域名空间的树状结构

        • 因特网采用层次树状结构的命名方法。

        • 采用这种命名方法,任何一个连接到因特网的主机或 路由器,都有一个唯一的层次结构名称,即域名( Domain Name)

        • 域( Domain) 是名字空间中 一个可被管理的划分。

          • 域还可以划分为子域,而子域还可以继续划分为子域的子域,这样就形成 了顶级域、二级域、三级域等。

        • 个域名都由标号序列组 成,而各标号之间用点(“.”)隔开。

        • 注意

          • 1) 标号中的英文不区分大小写。

          • 2) 标号中除连字符(-) 外不能使用其他的标点符号。

          • 3) 每个标号不超过63个字符,多标号组成的完整域名最长不超过255个字符。

          • 4) 级别最低的域名写在最左边,级别最高的顶级域名写在最右边。

        • 顶级域名(Top Level Domain, TLD) 分为如下三大类

          • 1) 国家顶级域启( nTLD)

            • 如“.cn”表示中国,“.us”表示美国, “.uk”表示英国。

          • 2) 通用顶级域名( gTLD)

            • 常见的有“.com”( 公司)、".net"( 网络服务机构)、“.org”(非营利性组织)和".gov"( 国家或政府部门)等。

          • 3) 基础结构域名

            • 只有一个,即 arpa,用于反向域名解析,因此又称反向 域名。

      • 6.2.2 域名服务器

        • 概述

          • 因特网的域名系统被设计成一个联机分布式的数据库系统,并采用客户/服务器模型。

          • 域名到 IP地址的解析是由运行在域名服务器上的程序完成的,一个服务器所负责管辖的范围称为区(“域〃的一部分),各单位根据具体情况来划分自己管辖范围的区,但在一个区中的所有结点必须是能够连通的,每个区设置相应的权限域名服务器,用来保存该区中的所有主 机的域名到IP地址的映射。

          • 每个域名服务器不但能够进行一些域名到IP地址的解析,而且还必 须具有连向其他域名服务器的信息。当自己不能进行域名到IP地址的转换时,能够知道到什么地 方去找其他域名服务器。

          • 没有一台域名服务器具有因特网上所 有主机的映射,相反,该映射分布在所有的DNS ±o采用分布式设计的DNS,是一个在因特网 上实现分布式数据库的精彩范例。

          1. 根域名服务器

            • 是最高层次的域名服务器,所有的根域名服务器都知道所有的顶级域名服务器 的IP地址。

            • 根域名服务器也是最重要的域名服务器,不管是哪个本地域名服务器,若要对因特网 上任何一个域名进行解析,只要自己无法解析,就首先要求助于根域名服务器。

            • 根域名服务器用来管 辖顶级域(如-com),通常它并不直接把待查询的域名直接转换成IP地址,而是告诉本地域名服 务器下一步应当找哪个顶级域名服务器进行查询。

          1. 顶级域名服务器

            • 这些域名服务器负责管理在该顶级域名服务器注册的所有二级域名。

            • 收到DNS查询请求时, 就给出相应的回答

          1. 授权域名服务器

            • 二级及以下的域名服务器。

            • 每台主机(网站服务器的主机)都必须在授权域名服务器处登记。

            • 实际上,许多域名服务器都同时充当本地域名服务器和授权域名服务器。

            • 授权域名服务器总能将其管辖的主机名转换为该主机的IP地址。

          1. 本地域名服务器

            • 每个因特网服务提供者(ISP),或一所大学,甚至一所大学中的各个系,甚至计算机内都可以拥有一个本地域名服务器。

            • 当一台主机发出DNS查询请求时,这个 查询请求报文就发送给该主机的本地域名服务器。

      • 6.2.3 域名解析过程

        • 域名解析是指把域名映射成为IP地址或把IP地址映射成域名的过程。前者称为正向解析, 后者称为反向解析。

        • 当客户端需要域名解析时,通过本机的DNS客户端构造一个DNS请求报文, 以UDP数据报方式发往本地域名服务器。

        • 两种方式

          • 递归查询

            • 本地域名服务器只需向根域名服 务器查询一次

          • 递归与迭代相结合的查询。

        • 为了提高DNS的查询效率,并减少因特网上的DNS查询报文数量,在域名服务器中广泛地 使用了高速缓存。

  • 6.3 文件传输协议(FTP)

    • 6.3.1 FTP的工作原理

      • 概述

        • 是因特网上使用得最广泛的文件传输协议。

        • FTP 提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限。

        • 它屏蔽了各计 算机系统的细节,因而适合于在异构网络中的任意计算机之间传送文件。

        • FTP采用客户/服务器的工作方式,它使用TCP可靠的传输服务。

        • 一个FTP服务器进程可同 时为多个客户进程提供服务。

      • 功能

        • 1 提供不同种类主机系统(硬、软件体系等都可以不同)之间的文件传输能力。

        • 2 以用户权限管理的方式提供用户对远程FTP服务器上的文件管理能力。

        • 3 以匿名FTP的方式提供公用文件共享的能力。

      • 服务器进程的两大部分组成

        • 一个主进程,负责接收新的请 求;

        • 另外有若干从属进程,负责处理单个请求。

      • 服务端的工作步骤

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

        • 2 等待客户进程发连接请求

        • 3 启动从属进程来处理客户进程发来的请求。

          • 主进程与从属进程并发执行,从属进程对客 户进程的请求处理完毕后即终止。

        • 4 回到等待状态,继续接收其他客户进程的请求。

      • 特点

        • FTP服务器必须在整个会话期间保留用户的状态信息。

        • 特别是服务器必须把指定的用户账户 与控制连接联系起来,服务器必须追踪用户在远程目录树上的当前位置。

        • 使用FTP时,若要修改服务器上的文件,则需要先将此文件传送到本地主机,然后再将修 改后的文件副本传送到原服务器。

          • 网络文件系统(NFS) 允许进程打开一个远程文件,并在该文 件的某个特定位置开始读写数据。这样,NFS可使用户复制一个大文件中的一个很小的片段,而 不需要复制整个大文件。

    • 6.3.2 控制连接与数据连接

      • FTP在工作时使用两个并行的TCP连接

      • 控制连接(端口号21)

        • 服务器监听21号端口,等待客户连接,建立在这个端口上的连接称为控制连接,

        • 控制连接 用来传输控制信息(如连接请求、传送请求等),并且控制信息都以7位ASCII格式传送。

        • 在传输文件时还可以使用控制连接

        • 控制连接 在整个会话期间一直保持打开状态。

        • 因为FTP使用了一个分离的控制连接,所以也称FTP的控制信息是带外( Out-of-band) 传 送的。

      • 数据连接(端口号20)

        • 服务器端的控制进程在接收到FTP客户发来的文件传输请求后,就创建“数据传送进程"和 “数据连接〃。

        • 据连接用来连接客户端和服务器端的数据传送进程,数据传送进程实际完成文件 的传送,在传送完毕后关闭“数据传送连接〃并结束运行。

  • 6.4 电子邮件

    • 6.4.1 电子邮件系统的组成结构

      • 三个最主要的组成构件

        • 用户代理(User Agent)

          • 用户与电子邮件系统的接口。

          • 通常情况下,用户代理 就是一个运行在PC上的程序,常见的有Outlook、Foxmail和Thunderbird等

        • 邮件服务器

          • 组成电子邮件系统的核心。

          • 功能是发送和接收邮件,同时还要向发信人报告邮件传送情况(已交付、被拒绝、丢失等)。

          • 采用 C/S 工作

        • 电子邮件使用的协议

          • 如SMTP、POP3 (或IMAP)

          • 邮件发送协议用于用户代理向邮件服务器发送邮件或在邮件服务 器之间发送邮件,通常使用的是SMTP;

            • SMTP采用的是“推” ( Push) 的通信方式,即在用户代理向邮件服务器发送邮件 及在邮件服务器之间发送邮件时,SMTP客户端主动将邮件“推”送到SMTP服务器端。

          • 邮件读取协议用于用户代理从邮件服务器读取邮件,如 POP3。

            • POP3 采用的是“拉〃(Pull) 的通信方式,即用户读取邮件时,用户代理向邮件服务器发出请求,“拉“ 取用户邮箱中的邮件。

        • 电子邮件的收发过程。

          • 1 发信人调用用户代理来撰写和编辑要发送的邮件。用户代理用SMTP把邮件传送给发送 方邮件服务器。

          • 2 发送方邮件服务器将邮件放入邮件缓存队列中,等待发送。

          • 3 运行在发送方邮件服务器的SMTP客户进程,发现邮件缓存中有待发送的邮件,就向运 行在接收方邮件服务器的SMTP服务器进程发起建立TCP连接。

          • 4 TCP连接建立后,SMTP客户进程开始向远程SMTP服务器进程发送邮件。当所有待发送 邮件发完后,SMTP就关闭所建立的TCP连接。

          • 5 运行在接收方邮件服务器中的SMTP服务器进程收到邮件后,将邮件放入收信人的用户 邮箱,等待收信人在方便时进行读取。

          • 6 收信人打算收信时,调用用户代理,使用POP3 (或IMAP) 协议将自己的邮件从接收方 邮件服务器的用户邮箱中取回(如果邮箱中有来信的话)。

        • 注意

          • 用户可以通过浏览器,使用 http 协议与邮件服务器交流发送邮件。

    • 6.4.2 电子邮件格式与MIME

      • 1.电子邮件格式

        • 信封

          • 用户写好首部后,邮件系统自动地将 信封所需的信息提取出来并写在信封上,用户不需要亲自填写信封上的信息。

        • 内容

          • 首部

            • 用户填写

            • 包含一些首部行,每个首部行由一个关键字后跟冒号再后跟值组成。

            • 最重要的关键字是 To:和Subject:

              • To是必需的关键字,后面填入一个或多个收件人的电子邮件地址。

              • Subject是可选关键字,是邮件的主题,反映了邮件的主要内容。

            • From,但它通常由邮件系统自动填入。

          • 主体

            • 用户自由撰写

        1. 多用途网际邮件扩充(MIME)

          • SMTP只能传送一定长度的ASCII码

            • 无法传送其他语言与字符,以及可执行文件与二进制对象

          • MIME并未改动SMTP或取代它

            • 继续使用目前的格式,但增加了邮件主体的结 构,并定义了传送非ASCII码的编码规则。也就是 说,MIME邮件可在现有的电子邮件程序和协议下 传送。

          • 包括三部分内容

              1. 5个新的邮件首部字段、内容描述、内容标识、内容传送编码和内容类型

              1. 定义了许多邮件内容的格式,对多媒体电子邮件的表示方法进行了标准化。

              1. 定义了传送编码,可对任何内容格式进行转换,而不会被邮件系统改变。

    • 6.4.3 SMTP 和 POP3

        1. SMTP

          • 提供可靠且有效的电子邮 件传输的协议,它控制两个相互通信的SMTP进程交换信息。

          • 用的是TCP连接,端口号为25。

          • 三个阶段

            • ( 1) 连接建立

              • 客户端请求发起(发件人发送邮件到发送方邮件缓存)

              • 使用SMTP的熟知端口号(25) 与接收方邮件服务器的SMTP 服务器建立TCP连接。

              • 接收方SMTP服务器发出220 Service ready (服务就绪)。

              • SMTP客户向SMTP服务器发送HELO命令,附上发送方的主机名。

              • STMP服务器向STMP客户发送 “250 OK ”返回

            • ( 2) 邮件传送

              • Client: From 用户@域名

              • server: 250 ok

              • Client: RCPT 命令。TO 收件人地址

              • server: 250 ok 或者 550 No such user here

              • Client:DATA 命令。

              • Server: “354 Start mail input;end with .”

              • Client: 内容,以 . 结束

            • ( 3) 连接释放

              • SMTP客户应发送QUIT命令

              • SMTP服务器返回的信息是221 ( 服务关闭),表示SMTP同意释放TCP连接。

        1. POP3

          • 在传输层使用TCP,端口号为110。

          • 两种工作方式

            • 用户决定

            • 下载并保留

            • 下载并删除

          • 因特网报文存取协议(IMAP)

            • IMAP为用户提 供了创建文件夹、在不同文件夹之间移动邮件及在远程文件夹中查询邮件的命令

            • IMAP服 务器维护了会话用户的状态信息。

            • 允许用户代理只获取报文的某些部分,例 如可以只读取一个报文的首部,或一个多部分MIME报文的一部分。

  • 6.5 万维网(WWW)

    • 6.5.1 WWW的概念与组成结构

      • 概述

        • 是一个资料空间

        • 一样有用的事物称为 一样“资源”,并由一个全域“统一资源定位符”( URL) 标识。

        • 资源通过超文本传输协议( HTTP) 传送给使用者

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

      • 三个标准构成

        • 1) 统一资源定位符(URL) 。

          • 负责标识万维网上的各种文档,并使每个文档在整个万维网的 范围内具有唯一的标识符URLo

          • URL的一般形式是:<协议>://<主机>:<端口>/<路径>。

            • 常见的〈协议>有 http、ftp等;

            • <主机<是存放资源的主机在因特网中的域名,也可以是IP地 址;

            • <端口>和<路径>有时可以省略。

            • 在URL中不区分大小写

        • 2) 超文本传输协议( HTTP)

          • 一个应用层协议,它使用TCP连接进行可靠的传输,HTTP 是万维网客户程序和服务器程序之间交互所必须严格遵守的协议。

        • 3) 超文本标记语言(HTML) 。

          • 一种文档结构的标记语言,它使用一些约定的标记对页面上 的各种信息(包括文字、声音、图像、视频等)、格式进行描述。

      • 以客户/服务器方式工作。

        • 浏览器是在用户计算机上的万维网客户程序

        • 万维网文档 所驻留的计算机则运行服务器程序,这台计算机称万维网服务器。

          • 工作流程

            • 1) Web用户使用浏览器(指定URL) 与Web服务器建立连接,并发送浏览请求。

            • 2) Web服务器把URL转换为文件路径,并返回信息给Web浏览器。

            • 3) 通信完成,关闭连接。

    • 6.5.2 超文本传输协议(HTTP)

      • 从层次的角度看,HTTP是面向事务的(TfansEion-oriented) 应用层 协议,它规定了在浏览器和服务器之间的请求和响应的格式与规则,是万维网上能够可靠地交换 文件(包括文本、声音、图像等各种多媒体文件)的重要基础。

        1. HTTP的操作过程

          • 它不断地 监听TCP的端口 80( 默认)

          • 在浏览器和服务器之闾的请求与响应的 交互,必须遵循规定的格式和规则,这些格式 和规则就是HTTP

          • 两类报文:

            • 请求报文(从Web客户端向Web服务器发送服务请求)

            • 响应报文(从Web服务器对Web客户 端请求的回答)。

          • 用户单击鼠标后所发生的事件按顺序

            • 1) 浏览器分析链接指向页面的 URL ( http://www.tsinghua.edu.cn/chn/index.htm)

            • 2) 浏览器向DNS请求解析wwv/Isinghuaxdu.cn的IP地址。

            • 3) 域每条缆DNS解忻出清华大学服务器的IP地址。

            • 4) 浏览器与该服务器建立TCP连接(默认端口号为80) 。

            • 5) 浏览器发出 HTTP 请求:GET /chn/index.htm。

            • 6) 服务器通过HTTP响应把文件index.htm发送给浏览器。

            • 7) TCP连接释放。

            • 8) 浏览器解释文件index.htm,并将Web页显示给用户。

        1. HTTP的特点

          • HTTP是无状态的。

            • 通常使用Cookie加数据库的方式来跟踪用户的活动

              • Cookie是一个存储在用户主机中的文本文件

          • HTTP本身是无连接的

            • 通信的双方在交换HTTP报文之前不需要先建立HTTP连接。

          • HTTP既可以使用非持久连接,也可以使用持久连接(HTTP/1.1支持)。

            • 对于非持久连接,每个网页元素对象(如JPEG图形、Flash等)的传输都需要单独建立一个 TCP连接,

            • 持久连接,是指万维网服务器在发送响应后仍然保持这条连接,使同一个客户和服务器 可以继续在这条连接上传送后续的HTTP请求与响应报文

              • 持久连接又分为非流水线和流水线两种方式。

                • 对于非流水线方式,客户在收到前一个响应后 才能发出下一个请求。

                • 流水线方式

                  • HTTP/1.1的默认方式是使用流水线的持久连接。

                  • 如果 所有的请求和响应都是连续发送的,那么所有引用的对象共计经历1个RTT延迟,而不是像非流 水线方式那样,每个引用都必须有1个RTT延迟。

                  • 一个对象引用就立即发出一个请求;因而客户可以逐个地连续发出对各个引用对象的请求。

        1. HTTP的报文结构

          • 面向文本的

          • 报文中的每个字段都是一些ASCII码串,并且每 个字段的长度都是不确定的。

          • 两类HTTP报文

            • 请求报文:从客户向服务器发送的请求报文

            • 响应报文:从服务器到客户的回答

            • 开始行:

              • 用于区分是请求报文还是响应报文。

              • 在请求报文中的开始行称为请求行,而在响应报文中的开始行称为状态行。

              • 开始行的三个字段之 间都以空格分隔,最后的“CR”和“LF”分别代 表“回车〃和“换行七

              • 请求报文的“请求行”有 三个内容:方法、请求资源的URL及HTTP的版 本。

            • 首部行:

              • 用来说明浏览器、服务器或报文主体的一些信息。

              • 在 每个首部行都有首部字段名和它的值,每行在结束的地方都要有“回车”和“换行”。

              • 整个首部 结束时,还有一空行将首部行和后面的实体主体分开。

            • 实体主体:

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

最后更新于