142
第第第第 第第第第第

第五部分 应用层协议

  • Upload
    chavez

  • View
    198

  • Download
    6

Embed Size (px)

DESCRIPTION

第五部分 应用层协议. 应用的体系结构. 客户 / 服务器体系结构 有一个总是打开的服务器,在固定的众所周知的地址上为客户机提供服务,客户机之间不直接通信,如:电子邮件、文件传输、 WWW … P2P 体系结构: 没有一个总是打开的服务器,任意一对主机(对等方)之间直接通信,如 P2P 文件共享; 混合体系结构 同时使用客户 / 服务器结构和 P2P 结构,如具有联系人列表的即时讯息。. 应用层协议. 应用层协议定义了运行在不同端系统上的应用程序如何进行通信,包括: 相互交换的报文类型、各种报文类型的语法、各个字段的语义、各种报文的处理等。 - PowerPoint PPT Presentation

Citation preview

Page 1: 第五部分  应用层协议

第五部分 应用层协议

Page 2: 第五部分  应用层协议

应用的体系结构 客户 / 服务器体系结构

有一个总是打开的服务器,在固定的众所周知的地址上为客户机提供服务,客户机之间不直接通信,如:电子邮件、文件传输、WWW…

P2P 体系结构: 没有一个总是打开的服务器,任意一对主机(对等方)之间直接

通信,如 P2P 文件共享; 混合体系结构

同时使用客户 / 服务器结构和 P2P 结构,如具有联系人列表的即时讯息。

Page 3: 第五部分  应用层协议

应用层协议 应用层协议定义了运行在不同端系统上的应用程

序如何进行通信,包括: 相互交换的报文类型、各种报文类型的语法、各个字

段的语义、各种报文的处理等。 应用层协议只是网络应用的一部分,如 Web 应用

包括: 文档格式标准 Web 浏览、 Web 服务器 应用层协议 HTTP

Page 4: 第五部分  应用层协议

客户 - 服务器模型 建立互联网的目的是向用户提供服务, Internet

主要采用客户 - 服务器模式向用户提供服务: 一台计算机运行一个提供服务的程序(称服务器),

另一台计算机运行一个请求服务的程序(称客户)。客户向服务器请求服务,而服务器完成所请求的服务。因而一个应用程序总是成对出现。

一个服务器可以向任何客户提供服务。

Page 5: 第五部分  应用层协议

客户和服务器 客户:

运行在本地计算机上向服务器请求服务的程序。 客户程序是有限的,它由用户或另一个应用程序启动,服务完成

时终止。 客户使用远程计算机的 IP 地址以及在该远程计算机上提供该服务

的端口号建立通信通道(称主动打开),发送请求和接收响应,服务结束后主动关闭通信通道。

服务器: 运行在远程计算机上向客户提供服务的程序。 服务器程序是无限的,启动后就一直运行,除非出问题或被关闭。 服务器一直在指定的端口上等待服务请求,当服务请求到来时建

立通信通道(被动打开),处理请求并发回响应。

Page 6: 第五部分  应用层协议

第 17 章 BOOTP 和 DHCP 连接到 TCP/IP 网络的每一台计算机需要知道以下配置信

息: 自己的 IP 地址,自己的子网掩码,路由器的 IP 地址,名字服务

器的 IP 地址。 配置信息的获取:

配置信息通常存储在一个配置文件中,计算机在引导过程中读取该文件。

对于无盘工作站或第一次启动的计算机,需要使用配置协议获取配置信息。

两个这样的协议: BOOTP 和 DHCP

Page 7: 第五部分  应用层协议

17.1 引导协议 BOOTP BOOTP 协议用于将上述四种信息提供给无盘计算

机或第一次启动的计算机。 BOOTP 使用客户 - 服务器模式,客户请求配置信

息,服务器响应配置信息。 BOOTP 是一种静态配置协议,客户信息必须预先

保存在配置信息表中。 BOOTP 包括了 RARP 的功能

Page 8: 第五部分  应用层协议

BOOTP 的分组格式

Page 9: 第五部分  应用层协议

选项格式 选项只在回答报文中出现,用于携带附加信息或某些特定厂商的信息。

Page 10: 第五部分  应用层协议

BOOTP 的选项

Page 11: 第五部分  应用层协议

BOOTP 的操作 BOOTP 使用 UDP 协议,服务器和客户分别使用熟知端口

号 67和 68。 客户发送 BOOTP 请求报文,报文先被封装成 UDP 用户数据报,然后再封装成 IP数据报(源地址为全 0,目的地址为全 1), IP数据报再封装在广播帧中发送。

服务器查找相应的配置信息,构造 BOOTP 响应报文。封装响应报文的 IP数据报的目的地址仍为全 1地址,但可使用广播帧或单播帧发送。使用单播帧发送时,目的地址为服务器从携带 BOOTP 请求报文的帧中获取的源MAC 地址。

若客户需要引导程序,服务器在 BOOTP 响应报文中只是给出了文件的路径名。客户需要使用 TFTP 协议从相应的文件服务器获取所需要的引导程序。

Page 12: 第五部分  应用层协议

BOOTP 报文的封装

Page 13: 第五部分  应用层协议

中继代理 若使用一个 BOOTP 服务器为好几个局域网提供服务,则必须在每个局域网中安装一个中继代理。

中继代理是一个路由器,负责在本地计算机和远程服务器之间转发请求和响应。 收到客户请求的中继代理在网关 IP 地址字段中填入自己的地址,用单播方式

发送给 BOOTP 服务器; BOOTP 服务器将响应报文发送给中继代理;中继代理再转发给请求计算机。

Page 14: 第五部分  应用层协议

差错控制 BOOTP 使用以下差错控制策略:

BOOTP 要求 UDP 使用检验和 BOOTP 使用超时重传机制进行差错恢复。

Page 15: 第五部分  应用层协议

17.2 动态主机配置协议 DHCP DHCP扩充了 BOOTP 协议,支持动态配置,特别是可提供临时 IP 地址。 永久地址和临时地址:

永久地址一般分配给服务器。 临时(租用)地址一般分配给普通客户。当临时地址将到期时,客户必须与 DHCP 服务器协商延长租期,否则不能再使用该 IP 地址。

DHCP 服务器使用两个数据库: 静态配置数据库:类似于 BOOTP 服务器中的配置数据库。 动态配置数据库:拥有一个可用 IP 地址池。

当收到客户请求时, DHCP 服务器先查找静态数据库;若存在请求的表项,返回这个客户的永久 IP 地址;否则,从可用 IP 地址池中选择一个分配给客户,并添加表项到动态数据库中。

Page 16: 第五部分  应用层协议

DHCP 分组格式

Page 17: 第五部分  应用层协议

DHCP新增的选项

这些新增的选项用来定义在客户和服务器之间交互的类型。

Page 18: 第五部分  应用层协议

DHCP 的操作 DHCP 客户启动时发送 DHCPDISCOVER 报文。 提供 DHCP 服务的服务器发送 DHCPOFFER 报文,向客户

提供一个临时 IP 地址,并锁定该 IP 地址。 DHCP 客户从收到的响应中选择一个 IP 地址,向提供该 IP

地址的服务器发送 DHCPREQUEST 报文。 DHCP 服务器发送 DHCPACK报文进行响应,并绑定客户

的物理地址与 IP 地址。 在租期经过一半后,客户发送一个 DHCPREQUEST 报文请

求更新。若收到 DHCPACK,续约完成;若收到 DHCPNACK或租期超过,重新申请一个 IP 地址。

Page 19: 第五部分  应用层协议
Page 20: 第五部分  应用层协议

DHCP状态转换图

Page 21: 第五部分  应用层协议

练习 28 , 29 , 30

Page 22: 第五部分  应用层协议

第 18 章 域名系统 DNS 网络内部使用 IP 地址来引用资源,而人们往往倾向于使

用便于记忆的 ASCII 名字,这就需要在资源的 ASCII 名字和它的 IP 地址之间建立起一种映射关系。

早期的 Internet 使用主机文件来实现映射: 名字冲突 更新慢

域名系统是一种分级结构的基于域的命名方案和实现这种命名方案的分布式数据库: 层次命名解决了大规模网络中名字冲突的问题; 分布式数据库解决了表的维护与传播问题。

Page 23: 第五部分  应用层协议

命名空间 DNS 在概念上将因特网分成了 200多个顶级域,每个顶级域被进一步划分成若干个二级子域,每个二级子域还可以再分子域,依次类推。

Page 24: 第五部分  应用层协议

域名和标号 一个指定的域是指树中一个特定的节点以及该节点以下所

有的节点。 树上每一个节点都有一个标号(最多 63 个字符),根标

号是空字符串。 某个域的域名用从该域开始向上直到树根(为空)的标号

序列表示,标号之间用句点隔开。 域名的任一后缀也是一个域。

Page 25: 第五部分  应用层协议

顶级域 顶级域分为组织域、国家域和反向域三种。

组织域:由美国国内机构及一些国际组织使用。 国家域:使用二字符的国家代码,每个国家对应一个。 反向域:域名为 arpa ,用来把一个地址映射为名字。

Page 26: 第五部分  应用层协议

组织域

Page 27: 第五部分  应用层协议

国家域

Page 28: 第五部分  应用层协议

反向域

Page 29: 第五部分  应用层协议

DNS解析过程 DNS 的一般工作过程:

应用程序调用一个称为解析器的库例程,将名字作为参数传递进去。

解析器的内部配置了本地 DNS 服务器的地址。解析器将需要查询的信息封装成一个 DNS 请求报文,发送给本地域名服务器。

若本地数据库中有所需的信息,本地域名服务器将查到的信息封装成 DNS 响应报文,发回给解析器。

解析器从 DNS 响应报文取出查询结果,返回给调用者。

Page 30: 第五部分  应用层协议

DNS 服务器的组织方式三种类型的 DNS 服务器:

根服务器:知道所有顶级域服务器的 IP 地址,因特网上共有 13 个根服务器。

顶级域( TLD )服务器:每个顶级域至少有一个顶级域服务器,每个 TLD 服务器知道本域下所有二级子域的权威 DNS 服务器的 IP 地址。

权威 DNS 服务器:存放各组织机构公共可访问 DNS记录的服务器。

Page 31: 第五部分  应用层协议

本地数据库中没有找到所需的信息递归解析:由域名服务器逐层向上查询,并将最

终解答返回给解析程序。迭代解析:域名服务器将需要进一步查询的域名

服务器的 IP 地址返回给解析器,由解析器向推荐 的服务器发送查询请求。

使用 DNS缓存:当服务器收到不在它域中的名字 -IP 地址映射关系时,将收到的映射关系保存在其高速缓存中,以备下一个客户查询。

Page 32: 第五部分  应用层协议

递归解析示意

Page 33: 第五部分  应用层协议

迭代解析示意

Page 34: 第五部分  应用层协议

域名服务器的概念层次

Page 35: 第五部分  应用层协议

物理服务器的层次 一个物理服务器保存的信息可能涉及域名空间的若干层,它也可以把

它的域划分成若干子域,把其中的一些子域委托给其它服务器。 因此,实际的物理服务器的层次与域名空间的逻辑层次不同。

Page 36: 第五部分  应用层协议

资源记录 DNS数据库的每一个表项称为一个资源记录。 每个域都有一组与之相关联的资源记录,解析器从 DNS得到的其实是和域名相关联的资源记录。因此可以说, DNS 的主要功能是将域名映射到资源记录上。

一条资源记录是一个六元组,包括: 域名:该资源记录适用的域; 生存期:表示资源记录的稳定性; 信息类型:对于因特网信息,该字段总为 1 ; 资源记录类型:共有 20多种资源记录 资源数据长度 资源数据

Page 37: 第五部分  应用层协议

资源记录格式

Page 38: 第五部分  应用层协议

重要的资源记录类型

Page 39: 第五部分  应用层协议

DNS数据库内容示例

Page 40: 第五部分  应用层协议

DNS 报文的封装 DNS可以使用 UDP ,也可以使用 TCP ,服务器

的熟知端口都是 53。 当响应报文的长度小于 512 字节时,使用 UDP 。 当响应报文的长度超过 512 字节时,使用 TCP 。 当解析程序事先不知道响应报文的长度时,先使用 UD

P ;若响应报文的长度超过 512 字节,服务器截断这个报文,置 DNS报文首部的 TC 标志为 1;解析程序打开 TCP 连接,并重复这个请求,以便得到完整的响应。

Page 41: 第五部分  应用层协议

第 19 章 Telnet我们需要一种通用的客户 - 服务器程序,允许用

户注册到远程计算机上,然后使用远程计算机提供的服务,并把结果返回到本地计算机上。

Telnet 是提供虚拟终端服务的 TCP/IP 协议,使用户能够建立一条到远程系统的连接,好像本地终端就连接在远程系统上一样。

Page 42: 第五部分  应用层协议

19.1 注册 在分时环境中,大型计算机支持许多个用户,用

户通过终端与计算机交互。 当用户在键盘上输入字符时,字符被发送到计算

机,同时回送到显示器上,让用户有使用专用计算机的感觉。用户可以运行程序,使用系统资源。

在分时环境中,用户是系统的一部分,并具有使用资源的某些权利。

每一个授权用户都有一个标识和一个口令,当用户需要使用计算机时必须注册,提供用户标识和口令,供计算机进行鉴权。

Page 43: 第五部分  应用层协议

本地注册 用户注册到本地分

时系统时,称为本地注册。

用户在终端上的击键被终端驱动程序接受,操作系统解释字符的组合,并调用所需的程序。

Page 44: 第五部分  应用层协议

远程注册 用户注册到远程计算机上,称为远程注册。 用户的击键输入不在本地解释,而是通过 Internet 发送到远程计算机上,

由远程操作系统交付给应用程序。 用户输入的字符被送到 telnet 客户, telnet 客户将字符转换成网络虚拟终

端( NVT )字符,经因特网传输到远程机器, telnet 服务器将 NVT 字符转换成本机可理解的字符,再通过伪终端驱动程序交给适当的应用程序。

Page 45: 第五部分  应用层协议

19.2 网络虚拟终端 NVT 每一个计算机及其操作系统接受特殊的字符组合作为一些记号。

NVT 是 Telnet 为异构系统之间通信而定义的通用接口。 Telnet 客户将来自本地终端的字符转换成 NVT形式,交付给网络; Telnet 服务器把来自 NVT形式的字符转换成远程计算机可接受的形式。

VNT 使用两个字符集,每一个字符都为 8 位: 数据字符:最高位为 0,低 7位与US ASCII 相同。 远程控制字符:最高位为 1。

Page 46: 第五部分  应用层协议

19.3 Telnet 传输 Telnet仅使用一个 TCP 连接,服务器使用熟知端口 23。 NVT 的远程控制字符嵌入在数据流中一起传输,控制字符前加上 IAC 以区别于数据。

Page 47: 第五部分  应用层协议

19.4 选项协商 Telnet允许客户与服务器之间协商选项,如终端类型、终端速率、回显、行模式等。

Telnet 使用四种控制字符进行选项协商。

Page 48: 第五部分  应用层协议

选项协商示例 客户希望服务器把发送给服务器的每一个字符回显。 回显选项仅能被服务器启动,因而客户使用 DO 来请求启动这个选项,

服务器用 WILL表示接受这个请求。

Page 49: 第五部分  应用层协议

19.5 对服务器进行控制 需要一些控制字符来控制在远程计算机上运行的程序。

Page 50: 第五部分  应用层协议

带外信令 为使控制字符在特殊情况下有效, Telnet 使用带外方式将控制字符发送给远程操作系统,方法是使用 TCP 的紧急报文段。

在控制字符序列后面插入特殊字符 DM(数据标记), TCP 报文段紧急指针指向 DM。

接收端 TCP根据 DM找到控制字符,交给上层,丢弃 DM之前的数据,从 DM开始的数据按正常数据处理。

Page 51: 第五部分  应用层协议

19.6 Telnet 的操作模式 默认模式:字符回显由客户完成,整个一行输完后再发送

给服务器,但必须收到来自服务器的 GA命令后才能接受用户的下一行输入(半双工方式)。这种模式已很少使用。

字符模式:每一个键入的字符都发送给服务器,并被回显到客户的屏幕上。这种方式开销很大。

行模式:行编辑由客户完成,然后把整行发送给服务器。行模式是全双工模式,客户可以一行接着一行地发送,不需要等待服务器的 GA命令。

Page 52: 第五部分  应用层协议

Telnet 交互示例(默认方式)

Page 53: 第五部分  应用层协议

切换到字符模式

Page 54: 第五部分  应用层协议

19.7 用户接口 用户不使用以上 Telnet命令,通常操作系统会定义一个用户友好的命令接口,用于将用户友好的命令转换为 Telnet命令。

Page 55: 第五部分  应用层协议

第 20 章 文件传送协议 FTP FTP 是 TCP/IP 提供的标准机制,用来从一个主机把文件复制到另一个主机。

FTP 使用两个 TCP 连接,一条连接用于传送数据,另一条连接用于传送控制信息(命令和响应)。

控制连接在整个 FTP会话期间一直保持,数据连接在每一次文件传送时打开,在一个文件传送结束后关闭。 FTP 使用关闭连接来表示一个文件传送结束。若传送多个文件,则数据连接打开和关闭多次。

Page 56: 第五部分  应用层协议

FTP 模型 两端的控制进程间建立控制连接,数据传送进程间建立数据

连接。

Page 57: 第五部分  应用层协议

建立控制连接 服务器在熟知

端口 21等待客户,客户使用临时端口号建立连接。

Page 58: 第五部分  应用层协议

建立数据连接 客户选择一个临时端口

号,在该端口上等待服务器的连接请求。

客户在控制连接上用 PORT命令将临时端口号发送给服务器。

服务器使用端口 20 与客户机给出的端口建立连接。

Page 59: 第五部分  应用层协议

将控制连接和数据连接分开的优点: 简化协议的设计和实现 控制连接在文件传输过程中一直可用 使用数据连接的关闭通知文件传输结束,允许动态创

建文件。

Page 60: 第五部分  应用层协议

解决异构系统之间的通信问题控制连接上的通信:

使用 NVT ASCII编码的 FTP命令和响应 在控制连接上定义要传送的文件类型、数据结构及传

输模式。数据连接上的通信:

按照在控制连接上定义的文件类型、数据结构及传输模式进行数据转换、传输及交付。

Page 61: 第五部分  应用层协议

文件类型 ASCII 文件:传送文本文件的默认格式,每一个字符使用 NVT ASCII 进行编码。

EBCDIC 文件:若连接的一端或两端使用 EBCDIC编码,则可使用 EBCDIC编码传送文件。

图像文件:传送二进制文件的默认格式,文件作为连续的位流而没有任何解释或编码。

Page 62: 第五部分  应用层协议

数据结构 文件结构(默认):这种文件没有结构,是连续

的字节流。记录结构:文件被划分为一些记录,只能用于文

本文件。页面结构:文件被划分为一些页面,每一个页面

有页号和页首部,页面可以被随机或顺序存取。

Page 63: 第五部分  应用层协议

传输模式流模式:默认模式。数据作为连续的字节流从 FT

P 交付给 TCP , TCP 将数据划分成适当大小的报文段。

块模式:数据可以按块从 FTP 交付给 TCP 。每一个块有 3个字节的首部,包括一个字节的块描述符、和两个字节定义的块长度。

压缩模式:当文件很大时,可对数据进行压缩,通常使用的压缩方法是游程长编码。

Page 64: 第五部分  应用层协议

FTP命令 FTP命令包括六类命令:

接入命令:使用户能够接入远程系统,如要求用户标识、口令、注销等。

文件管理命令:使用户接入到远程计算机的文件系统,包括对目录及文件的操作。

数据格式化命令:让用户定义数据结构、文件类型及传输模式。

端口定义命令:定义客户端数据连接使用的端口号。 文件传送命令:让用户传送文件。 杂项命令:用于将信息交付给客户端的 FTP 用户。

Page 65: 第五部分  应用层协议

FTP 响应 每一个 FTP命令产生至少一个响应。 响应包括两部分:

一个 3比特的数字:定义代码 正文:定义所需的参数或额外的解释

Page 66: 第五部分  应用层协议

FTP 交互

Page 67: 第五部分  应用层协议

用户接口大多数操作系统提供用户友好接口来接入 FTP 服

务。 接口提示用户作适当的输入,将其转换为相应的FTP命令。

Page 68: 第五部分  应用层协议

第 21 章 简单文件传送协议 TFTP TFTP 协议为仅需要复制一个文件的应用而设计,

如无盘工作站在被引导时下载引导和配置文件。 TFTP 使用 UDP 协议,以使软件包可被放入无盘

工作站的 ROM中。 UDP 不提供连接建立 / 终止、差错控制和流量控制的功能,这些功能需要 TFTP 来提供。

Page 69: 第五部分  应用层协议

TFTP 的传输控制机制 TFTP 将文件划分成若干数据块并编号,除最后一块外,每块为 512 字节,最后一块必须在 0~511字节之间。 TFTP 用发送小于 512 字节的块表示发送结束。

TFTP 采用停 - 等协议传送数据,发送端每次发送一个块,收到接收方的确认后再发送下一个块。

TFTP依靠 UDP检测数据错误并丢弃出错的包,发送端使用超时重传机制解决分组丢失问题。

Page 70: 第五部分  应用层协议

TFTP 报文 读请求 RRQ:客户向服务器请求读一个文件,报文中包含文件名和

文件模式( netascii或 octet )。

写请求 WRQ:客户请求向服务器写一个文件,报文中包含文件名和文件模式。

Page 71: 第五部分  应用层协议

TFTP 报文(续) 数据 DATA :客户或服务器用来传送数据块,报文中包含块号和数据块。

确认 ACK:客户或服务器用来确认收到数据块,报文中包含收到的数据块的块号。

Page 72: 第五部分  应用层协议

TFTP 报文(续) 差错报告 ERROR :

由客户或服务器用来报告出现差错,报文中包含差错类型及差错信息。

Page 73: 第五部分  应用层协议

建立连接 TFTP 使用 RRQ、 WRQ、 ACK和 ERROR 报文来建立连

接,并使用小于 512 字节的数据块来终止连接。

Page 74: 第五部分  应用层协议

UDP 端口 TFTP 使用 UDP熟知端口 69。 为使 TFTP 服务器能够服务于多个客户, TFTP 只使用端口69建立读文件或写文件的初始连接,此后使用短暂端口进行数据传输。 服务器在端口 69上等待客户请求。 客户在选择的临时端口上向服务器端口 69发送 RRQ或 WRQ报文。 服务器选择一个临时端口作为源端口,向客户端口发送 ACK或 ER

ROR 报文,自己仍回到端口 69上等待。服务器中的 UDP 模块根据目的端口号区分不同的客户。

客户使用自己的临时端口与服务器的临时端口进行通信。

Page 75: 第五部分  应用层协议
Page 76: 第五部分  应用层协议

TFTP 交互举例

Page 77: 第五部分  应用层协议

TFTP与 BOOTP 一起使用

Page 78: 第五部分  应用层协议

TFTP 的安全性 TFTP 不提供安全性,没有用户标识或口令。 为防止黑客利用 TFTP 进行非法文件存取,管理员一般限定 TFTP 只能访问某个存放引导和配置文件的文件夹。

Page 79: 第五部分  应用层协议

练习 18 , 20 , 21 , 23

Page 80: 第五部分  应用层协议

第 22 章 电子邮件系统 电子邮件系统支持:

把邮件发送给一个或多个收信人 发送包括文本、图形、声音、视频等媒体形式的报文

两个概念: 电子邮箱:由计算机上的一个存储区域(如磁盘上的

一个文件)组成,每个邮箱均被分配了唯一的电子邮件地址。

电子邮件地址:由两个部分组成,形如:mailbox@computer ,前者为用户邮箱的字符串,后者为邮箱所在的计算机的名字。

Page 81: 第五部分  应用层协议

22.1 因特网电子邮件系统的组成 用户代理 UA :一个本地程序(或称邮件阅读

器),为用户提供读邮件、编辑邮件、发送邮件及管理信箱等功能。

消息传输代理MTA :运行在邮件服务器后台的一个系统守护程序( daemon ),负责传递邮件及将收到的邮件放入用户邮箱。

简单邮件传输协议 SMTP (由 RFC 821定义):定义在两个计算机之间传递邮件的过程。

邮件访问协议:访问邮箱中的邮件。

Page 82: 第五部分  应用层协议

电子邮件系统的结构( 1 )情形一:

发信人和收信人在同一个系统上 只需要两个用户代理( UA )

Page 83: 第五部分  应用层协议

电子邮件系统的结构( 2 ) 情形二:

发信人和收信人在不同的系统上 需要两个用户代理( UA )和一对消息传输代理(MTA )

Page 84: 第五部分  应用层协议

电子邮件系统的结构( 3 ) 情形三:

发信人通过一个网络连接到邮件服务器上,而收信人仍然直接连接到邮件服务器

需要两个 UA和两对MTA

Page 85: 第五部分  应用层协议

电子邮件系统的结构( 4 ) 情形四:

发信人和收信人均通过网络连接到邮件服务器

需要两个 UA 、两对MTA 和一对MAA (邮件访问代理)

这是目前最常见的情形。

Page 86: 第五部分  应用层协议

推和拉 SMTP 是一种消息推送( push)协议 访问邮件需要一种“拉”( pull)协议

Page 87: 第五部分  应用层协议

延迟交付 发送端可以延迟发送报文。 UA创建报文后,先

将报文交付到发送端的临时存储系统。MTA 客户定期检查临时存储系统是否有邮件要发送,当能够与邮件服务器建立连接时发送邮件,否则邮件继续留在临时存储系统中,直到超时。

接收端收到邮件后,先放到收信人的信箱中,收信人在适当的时候从信箱中取信件。

中间MTA也可以在它的邮箱和临时存储系统中保存邮件,并在适当的时候发送。

Page 88: 第五部分  应用层协议

22.2 用户代理 用户代理提供编辑、阅读、回复、转发邮件的功

能,以及管理邮箱的功能。 邮件格式(由 RFC 822 定义):

信封:包含与信件传输有关的信息,仅供消息传输代理使用。

信头:包括发信人地址及信体格式说明,供用户代理使用。

信体:收信人真正感兴趣的部分。

Page 89: 第五部分  应用层协议

电子邮件的格式

Page 90: 第五部分  应用层协议

多用途因特网邮件扩展MIME SMTP 只支持纯文本( NVT ASCII )格式的报文传输,不支持其它

语言及二进制文件传输。 MIME 是对 RFC 822 的扩展,它允许信体具有一定的数据结构,并规定了非 ASCII 文本信息在传输时的统一编码形式。

MIME 在信头中增加了 5 个域(现在可能有扩展)。

Page 91: 第五部分  应用层协议

MIME头 MIME版本 内容类型:定义信体使用的数据类型,共定义了七大类及若干子类(有扩展)。 内容传输编码:定义信体使用的传输编码格式,共定义了基本 ASCII编码集、扩展

ASCII编码集、二进制编码、基 64编码、引用可打印编码五种传输编码形式。 内容标识:消息 ID 。 内容描述:对于非文本信体的文字描述。

Page 92: 第五部分  应用层协议

MIME 中的内容类型与子类型

Multipart :信体包含多个独立的部分,多部分首部中应定义每一个部分的边界。 Multipart/mixed :信体是不同数据类型的组合,如包含文本、声音、附件等内容,必须按顺序呈现。

Multipart/parallel :信体是不同数据类型的组合,各部分之间的顺序不重要。 Multipart/digest :类似于 mixed ,但缺省的 type/subtype 是 message/RFC822 。 Multipart/alternative :信体包含同一个消息的不同版本,如有 text 和 html 两种

格式的文本。

Page 93: 第五部分  应用层协议

MIME 中的内容类型与子类型

Page 94: 第五部分  应用层协议

传输编码类型

Short lines :行的长度不能超过 1000 字符。 Unlimited-length lines :不限制行的长度 不推荐使用扩展 ASCII 字符集和二进制编码进行传输。 MIME 定义了 Base64 和 Quoted-printable 两种编码形式。

Page 95: 第五部分  应用层协议

Base64编码 每 24 比特数据被分成 4个 6比特的单元,每个单元编码成一个合法

的 ASCII 字符,其对应关系为: 0~ 25编码成‘ A’~‘ Z’, 26~ 51编码成‘ a’~‘ z’, 52~ 61编码成‘ 0’~‘ 9’,62 和 63分别编码成‘+’和‘/’,‘==’和‘=’分别表示最后一组只有 8比特和 16比特,回车和换行忽略。

Page 96: 第五部分  应用层协议

引用可打印编码 若数据的绝大部分为 ASCII 字符,只有一小部分是非 ASCII 码字符,则只

对非 ASCII 字符进行转换。将该字符的十六进制表示用两个 ASCII 字符标记,前面冠以特殊字符“=”。(更正:图中“ 5”应为“=”)

Page 97: 第五部分  应用层协议

22.3 SMTP 邮件的真正传送由MTA 完成, SMTP 定义了MTA 客户和MTA 服务器之间的交互方式。

SMTP 使用命令和响应在MTA 客户和MTA 服务器之间传送报文。

SMTP 定义了 14种命令,有 5个是每一种实现都必须支持的,有 3种是高度推荐的,还有 6种很少使用。

Page 98: 第五部分  应用层协议

SMTP命令 Helo:客户用来标识自己 Mail from:客户用来标识发

信人 Rcpt to:客户用来标识收信

人 Data:用来发送真正的报文 Quit :结束报文。

Page 99: 第五部分  应用层协议

邮件传送阶段 建立连接

MTA 客户与MTA 服务器在熟知端口 25 建立 TCP 连接。 服务器发送服务就绪报文 客户发送 HELO 报文,用域名标识自己 服务器响应

Page 100: 第五部分  应用层协议

报文传送 客户发送 MIAL FROM 报文,通报信件的发送方,

服务器响应。 客户发送 RCPT 报文,通报收信人的邮件地址。若接收人信箱在服务器上,服务器通知客户继续。 客户发送 DATA 报文,服务器响应。 客户用连续的行发送报文内容。 服务器将信件放入相应的信箱后进行响应。重复以上过程,将信件全部发完。

Page 101: 第五部分  应用层协议
Page 102: 第五部分  应用层协议

连接终止 客户发送 QUIT 报文 服务器响应。释放 TCP 连接。

Page 103: 第五部分  应用层协议

22.4 邮件交付 第一阶段:电子邮件从用户代理传送到本地服务

器,用户使用 SMTP 客户软件,本地服务器使用SMTP 服务器软件。

第二阶段:本地服务器将电子邮件转发给收信人的邮件服务器,本地服务器使用 SMTP 客户软件,远程服务器使用 SMTP 服务器软件。远程服务器将收到的邮件放入收信人的邮箱。

第三阶段:远程用户代理使用邮件访问协议,访问邮箱并获取邮件。

Page 104: 第五部分  应用层协议

邮件交付示意

Page 105: 第五部分  应用层协议

22.5 邮局协议 POP3 邮局协议 POP3:

POP3客户软件安装在收信人的计算机上, POP3服务器软件安装在收信人的邮件服务器上。

用户激活一个 POP3 客户,该客户与邮件服务器的端口 110 建立一个 TCP 连接。

用户发送用户名和口令进行身份鉴别。 若身份鉴别成功,用户发送 POP3命令,将邮件接收到本地。 客户发出退出命令,服务器进行响应。 释放 TCP 连接。

POP3 的模式: 删除模式:每次读取邮件后就把邮箱中的这个邮件删除。 保存模式:邮件读取后仍然保留在邮箱中。

Page 106: 第五部分  应用层协议

使用 POP3 读取邮件

Page 107: 第五部分  应用层协议

22.6 Internet 邮件访问协议 IMAP IMAP允许用户动态地在服务器上创建、删除和管理多个信箱,可以在文件夹中创建分层次的信箱。

IMAP允许用户在服务器上整理邮件,将阅读过的信件放到相应的信箱中保存。

允许用户在下载邮件之前可以检查邮件的头部,用特定的字符串搜索邮件内容,部分地下载电子邮件。

IMAP 除了为用户接收邮件外,还可以为用户发送邮件。 IMAP 服务器在端口 143 上监听。

Page 108: 第五部分  应用层协议

Webmail 一些网站(如 Hotmail、 Yahoo等)向访问网站

的用户提供电子邮件服务。 用户代理为普通浏览器,浏览器和远程邮箱之间

的通信使用 HTTP 协议,但邮件服务器之间仍是SMTP 协议。

和 IMAP 一样,用户可以在远程服务器上用文件夹来组织他们的信件。

Page 109: 第五部分  应用层协议

练习 36 , 37 , 38 , 45 , 47 , 48

Page 110: 第五部分  应用层协议

第 23 章 简单网络管理协议 SNMP 不作要求

Page 111: 第五部分  应用层协议

第 25 章 万维网 从用户的角度来看, Web 是由数量巨大且遍布全球的文

档组成,这些文档称为 Web页。 每个页除了含有基本的信息之外,还包含格式命令和指向其它页的链接: 格式命令:用于指示如何显示文档中的数据 链接:用于指示如何获取另一个文件

包含链接信息的文本串或图形称为超级链接,当用户点击一个超级链接时,该超级链接指向的页会被取回,并显示在用户屏幕上。

包含超级链接的页称为超文本页或超媒体页,它们的区别在于文档内容。

Page 112: 第五部分  应用层协议

浏览器 页需要用称为浏览器的程序阅读,浏览器负责取回指定的页,并按照

指定的格式显示在屏幕上。 浏览器由三个部分组成:

控制程序:接收来自键盘或鼠标的输入,调用某个客户程序访问文档;获取文件档后,使用某个解释程序将文档显示在屏幕上。

客户程序:可以是 HTTP 、 FTP 、 Telnet 等的一种。 解释程序:取决于文档的类型。

Page 113: 第五部分  应用层协议

25.1 网页获取 Web 采用客户 - 服务器模式工作,客户为浏览器软件,服

务器是运行在 Web 服务器上的一个软件程序。 服务器平时总在端口 80上监听客户的连接请求,当用户点击了一个超级链接后: 浏览器找到该链接所指的网页的名字 与网页所在的服务器建立一个 TCP 连接 向服务器发送取网页的请求 服务器将请求的网页发送给浏览器 释放 TCP 连接

两个问题需要解决: 如何命名一个网页 定义客户和服务器之间的传输协议

Page 114: 第五部分  应用层协议

统一资源定位符 URL 为在全网范围内确定一个页,页名必须包括:页的存放地

址,页在宿主机中的全路径名,页的访问方法。符合这三个条件的名字称为 URL。

Uniform Resource Locator ( URL)的一般格式为 method://host/path method:方法名,指出访问网页的协议名称,常见的方法有 http、 ftp、 telnet 、 Gopher 和 news。

Host :网页所在宿主机的域名 Path:网页在宿主机上的全路径名 可选地, URL可以包含服务器的端口号,如: method://host: port/path

Page 115: 第五部分  应用层协议

Web 的客户方( 1 ) 当用户点击了超级链接 http://www.itu.org/home/index.html

后,浏览器按以下步骤工作: 浏览器确定 URL (从页及点击位置获取) 请求 DNS解析域名 www.itu.org , DNS返回 IP 地址 156.106.192.32

浏览器与 156.106.192.32 的端口 80 建立一个 TCP 连接 浏览器发送一个请求,要求取文件 /home/index.html

服务器发送文件 /home/index.html ,释放 TCP 连接 浏览器显示文件 /home/index.html 的所有文本内容 浏览器取回该文件中的所有图像并显示(一次取一个图像显示)

Page 116: 第五部分  应用层协议

Web 的客户方( 2 ) 为使浏览器能够正确解释和显示每一个 Web页, Web页应当使用称

为 HTML (超文本标记语言)的标准语言书写。 如果一个页不是 HTML 格式的,怎么显示?

当服务器返回一个页的时候,同时要返回关于这个页的一些额外信息,特别是页的 MIME 类型。

当页的 MIME 类型是 text/html (浏览器的内置类型)时,浏览器直接显示。

当页的 MIME 类型不是浏览器本身所支持的,浏览器查找MIME类型表,该表将每个 MIME 类型关联到一个阅读器上,浏览器调用相应的阅读器进行显示。

阅读器可以是和浏览器运行在同一个程序空间的插件程序,也可以是一个独立的助手程序。

对于本地文件,浏览器通过文件的扩展名得知文件类型。

Page 117: 第五部分  应用层协议

Web 的服务器方 Web 服务器的典型工作过程:

服务器在端口 80监听,与请求的客户建立 TCP 连接,接收服务请求。

确定请求的 Web页(名字扩展)。 (若需要)认证客户;对客户进行访问控制;对请求的页进行访问控制。

检查请求的页是否在高速缓存中,有则直接读取,否则从本地磁盘读取文件。

确定要包含在响应中的 MIME 类型。 其它处理。 将文件返回给客户,进行日志记录,释放连接。

Page 118: 第五部分  应用层协议

25.2 Web 文档 Web 文档类型:

静态文档:静态文档以文件方式保存在 Web 服务器上,由文档的作者决定文档的内容,对静态文档的每次请求均产生相同的响应。

动态文档:动态文档由 Web 服务器动态创建。当请求到达时, Web

服务器运行一个应用程序创建动态文档,并返回给浏览器,因此每次请求产生的动态文档是不同的。

主动( active )文档:主动文档由一个计算机程序组成,当游览器请求一个主动文档时,服务器返回一个必须在浏览器本地运行的程序的拷贝,程序运行时可以与用户进行交互,并不断访问服务器取回新的信息,因此主动文档的内容是不断更新的。

Page 119: 第五部分  应用层协议

静态文档和超文本标记语言HTML HTML 是一种标记语言,用于描述文档的显示格式。使用 ASCII 字符表示

的格式命令可被任何浏览器识别和理解。 HTML 中的格式命令称为标签。标签一般成对出现,包含在一对标签中的

文档内容,显示格式由该标签指定。 有些标签可以有属性,如:

<IMG> 标签在 Web页中嵌入图像: <IMG SRC=“http://www.widget.com/images/logo.gif” ALIGN=middle>

<A> 标签在 Web页中加入超级链接: <A HREF="http://www.nasa.gov"> NASA's home page </A>

也可以为图像设置超级链接:<A HREF="http://www.nasa.gov"> <IMG SRC="shuttle.gif" ALT="NASA"> </A>

Page 120: 第五部分  应用层协议

标签的使用示例

Page 121: 第五部分  应用层协议

表单 HTML 使用表单收集用户的输入信息,表单中包含需要用户提供信息

的条目,每个条目都有一个唯一的名字。当用户点击提交按钮时,浏览器将所有条目及条目的值汇总,发送给服务器。

Page 122: 第五部分  应用层协议

表单的处理

Page 123: 第五部分  应用层协议

动态文档和公共网关接口 CGI 处理动态文档的传统方法是公共网关接口 CGI :

CGI 是一个标准接口,它允许Web 服务器与一个能够处理动态文档的后台程序或脚本进行交互。

CGI 只规定了服务器与后台程序交互的通用规则,而允许程序员选择大多数的实现细节,如编程语言的选择。

每个 CGI 程序被赋予一个 URL ,位于 cgi-bin 目录下,表单的 ACTION参数指出了处理表单数据的 CGI 程序的 URL 。

当表单数据被提交后, Web 服务器调用相应的 CGI 程序,表单中的数据作为输入。

CGI 程序通过输出的头部与服务器进行通信,指出输出数据的长度、类型、有效时间等,也可以指出文档放在另一个 URL (重定向)。

服务器取得 CGI生成的文档,返回给浏览器。

Page 124: 第五部分  应用层协议

主动文档和 Java 大多数情况下, Java用来创建小应用程序 applet 。 Java applet 必须先被编译成字节码并存储在 Web 服务器上。 游览器需要运行 HTML解释器和 Java解释器。 当用户向浏览器提供一个 Applet 的 URL ,或浏览器在 HT

ML 文档中遇到一个指向 Applet 的标记 <applet> 时,浏览器与服务器联系获得该 Applet 的一个拷贝,下载到本地执行。

Applet 使用浏览器的 HTTP 客户检索文档,使用浏览器的HTML解释器显示网页信息。

Page 125: 第五部分  应用层协议

第 24 章 超文本传输协议 HTTP HTTP 是浏览器与Web 服务器之间通信使用的协

议,规定了客户与服务器通信所使用的命令及响应。

HTTP 通常运行在 TCP 连接之上,使用端口 80 。

Page 126: 第五部分  应用层协议

24.1 HTTP 请求和响应消息 HTTP 使用两种类型的报文:

请求报文:包含请求行、首部及可能的主体。 响应报文:包括状态行、首部及可能的主体。

Page 127: 第五部分  应用层协议

HTTP 请求和响应消息

Page 128: 第五部分  应用层协议

请求行和状态行 请求行包括请求类型(方法)、 URL和 HTTP版本 状态行定义响应报文的状态,包括 HTTP版本、状态码和状态短语

Page 129: 第五部分  应用层协议

请求类型(方法)

Page 130: 第五部分  应用层协议

HTTP 报文的首部 首部用于在客户和服务器之间交换附加的信息。特别地,

HTTP允许浏览器和服务器通过首部交换元信息和协商各种能力。

定义了四种类型的首部:通用首部,请求首部,响应首部和实体首部。

首部的一般格式:

Page 131: 第五部分  应用层协议

通用首部 给出关于报文的通用信息,可以出现在请求和响

应报文中。

Page 132: 第五部分  应用层协议

请求首部 指明浏览器

配置和优先使用的文档格式,只能出现在请求报文中。

Page 133: 第五部分  应用层协议

响应首部 指明服务器配置和关于请求的特殊信息,只能出现在响应

报文中。

Page 134: 第五部分  应用层协议

实体首部 给出文档主体的信息,可以出现在请求和响应报文中。

Page 135: 第五部分  应用层协议

HTTP 报文交互示例( 1 ) 使用 get 方法获取路径为 /usr/bin/image 1的图像

Page 136: 第五部分  应用层协议

HTTP 报文交互示例( 2 ) 使用 post 方法向服务器发送 CGI 文档

Page 137: 第五部分  应用层协议

25.2 HTTP 的工作模式基本工作模式:

浏览器与服务器建立 TCP 连接,发送 HTTP 请求; 服务器返回响应,关闭连接。

服务器不保留以前的请求或会话的历史记录,因而是无状态的。

优点: 服务器设计简单,不需要保存状态,扩展性好。

缺点: 如果Web页包含图片,则每传送一张图片就要打开和

关闭连接一次,开销大。

Page 138: 第五部分  应用层协议

持久连接方式 从 HTTP/1.1 开始使用持久连接方式(默认):

一旦客户建立了和服务器的 TCP 连接,该连接就在多个请求和响应过程中一直存在,直到某一方关闭连接。

非流水线方式:客户只能在收到前一个请求的响应后才能发送下一个请求。

流水线方式:客户可以连续发送多个请求而不需要等待响应,服务器也可以进行连续响应。

使用持久连接需要标识发送的每一个数据项的开头和结尾 HTTP 常用的方法是先发送数据项的长度,然后再发送数据项。 若不知道数据项的长度,则先通知客户,然后在发送数据后关闭

连接。

Page 139: 第五部分  应用层协议

25.3 Web性能优化 服务器端:

缓存:将经常访问的文件保存在高速缓存中,减少文件访问时间。

提高服务器的并行性:将服务器设计为多线程的,并将文档分布到多个磁盘上。

建立服务器集群系统,并使用负载均衡器进一步提高网站服务能力。

建立服务器镜像:在多个相距较远的位置建立镜像服务器,复制内容。

客户端: Web缓存技术

Page 140: 第五部分  应用层协议

Web缓存 Web缓存是将请求到的页放到缓存中,以备将来

使用。 通常使用一个代理程序来维护缓存:

浏览器被配置为向代理请求网页 当缓存中没有所请求的页时,代理从服务器取回

分级缓存方案: 本地 PC 、局域网及 ISP均运行代理,协同工作。

Page 141: 第五部分  应用层协议

Web 分级缓存方案

Page 142: 第五部分  应用层协议

确定页的缓存时间 启发式方法:

根据网页的最近修改时间(响应头中的 Last-Modified 行)确定缓存时间。如果最近修改时间距当前时间(取网页的时间)的间隔为 Δ ,则这个页可被缓存 Δ 时间。

使用条件请求: 代理将客户请求的 URL 及缓存中该页的最后修改时间放入请求头

中的 If-Modified-Since 行发送给服务器。若该页自给出的时间后未被修改过,服务器发回一个 Not Modified消息;否则返回新的页。

该方法可与启发式方法结合起来使用,在 Δ 时间内直接使用缓存的页,该时间后用使用条件请求。

由服务器指示如何进行缓存。