3应用层功能及协议3.0本章简介3.0.1本章简介第{{$PAGEVAR}}页1:我们大多数人都通过万维网、电子邮件服务以及文件共享程序体验Internet。除了这些应用程序之外,还有很多程序也可以为人们提供访问网络底层的界面,它们相对而言简单直观,让我们不必了解其工作原理就可以轻松收发信息。但是,对于网络工程师而言,就必须了解应用程序如何对网络中收发的信息进行格式编排、传输和解释。通过开放式系统互连(OSI)模型的分层结构,我们可以更容易地理解网络通信原理。本章将着重介绍OSI模型中应用层的作用以及它的组成部分:应用程序、各种服务及协议。同时,我们还将探讨上述三个组成要素如何保证信息网络中的通信稳定和可靠。在本章中,您将学会:描述OSI模型的上三层功能如何为终端用户应用程序提供网络服务;描述TCP/IP应用层协议如何提供OSI模型的上层结构所指定的服务;规定人们如何在信息网络中使用应用层通信;描述常见TCP/IP应用程序的功能,例如:万维网和电子邮件,以及相关服务,包括HTTP、DNS、SMB、DHCP、STMP/POP以及Telnet;描述使用点对点应用程序及Gnutella协议的文件共享过程;解释协议如何确保一种设备上运行的各种服务可以收发很多不同网络设备的数据;使用网络分析工具来检查并解释一般用户应用程序的工作原理。显示视觉媒体3.1应用程序—网络间的接口3.1.1OSI模型及TCP/IP模型第{{$PAGEVAR}}页1:开放式系统互连(OSI)参考模型是一种抽象的分层模型,人们用它来作为网络协议设计的指导原则。OSI模型将网络通信过程分为7个逻辑层,每一层都拥有独特的功能,且被赋予了特定的服务和协议。在该模型中,信息从源主机的应用层开始,逐层向下传送,直到物理层,然后通过通信通道传送至目的主机。在目的主机中,信息又自下而上传递到应用层。右图描述了该过程的详细步骤。无论在OSI模型还是TCP/IP模型中,应用层(第七层)都是最高层。该层为用于通信的应用程序和用于消息传输的底层网络提供接口。应用层协议用于在源主机和目的主机上运行的程序之间进行数据交换。目前已有很多种应用层协议,而且人们还在不断开发新的协议。显示视觉媒体第{{$PAGEVAR}}页2:虽然TCP/IP协议簇的开发早于OSI模型的推出,但TCP/IP应用层协议与OSI模型的上三层结构(应用层、表示层和会话层)仍然大致对应。由于人们在个人电脑、图形用户界面及多媒体对象涌现之前已经开发出了绝大多数TCP/IP应用层协议,因此,这些协议并没有实现OSI模型的表示层和会话层所指定的功能。表示层表示层有三个主要功能:对应用层数据进行编码与转换,从而确保目的设备可以通过适当的应用程序理解源设备上的数据;采用可被目的设备解压缩的方式对数据进行压缩;对传输数据进行加密,并在目的设备上对数据解密。表示层的应用并不完全与某一特定协议栈关联,比如视频和图形标准。常见的视频标准包括QuickTime和活动图像专家组(MPEG)。前者是苹果计算机的视频和音频技术标准,后者是视频压缩和编码标准。常见的图形图像格式则包括图形交换格式(GIF)、联合图像专家组(JPEG)以及标签图像文件格式(TIFF)。其中前两种是图形图像压缩和编码标准,而最后一种则是图形图像的标准编码格式。会话层会话层,顾名思义,它就是用于在源应用程序和目的应用程序之间创建并维持对话。会话层用于处理信息交换,发起对话并使其处于活动状态,并在对话中断或长时间处于空闲状态时重启会话。大多数应用程序(如Web浏览器或电子邮件客户程序)已包含OSI模型5、6、7层的功能。显示视觉媒体第{{$PAGEVAR}}页3:最广为人知的TCP/IP应用层协议是那些用于交换用户信息的协议。这些协议详细规定了许多常见Internet通信功能的必备格式和控制信息。常见TCP/IP协议包括:域名服务协议(DNS),用于将Internet域名解析为IP地址;超文本传输协议(HTTP),用于传输构成万维网网页的文件;简单邮件传输协议(SMTP),用于传输邮件及其附件信息;Telnet协议(一种终端模拟协议),提供对服务器和网络设备的远程访问;文件传输协议(FTP),用于系统间的文件交互传输。TCP/IP协议簇中的协议一般由请求注解(RFC)文件定义。Internet工程任务组(IETF)负责维护作为TCP/IP协议簇标准的RFC文件。显示视觉媒体3.1.2应用层软件第{{$PAGEVAR}}页1:应用层协议的相关功能实现了以人为本的网络与底层数据网络的对接。当我们打开Web浏览器或者即时消息窗口时,就启动了一个应用程序,并在程序运行时载入设备的内存。此时,在该设备上加载的每一个正在执行的程序都称为一个进程。在应用层中,软件程序或进程采用两种形式访问网络:应用程序和服务。网络感知应用程序应用程序是指人们用于网络通信的软件程序。有些终端用户应用程序是网络感知程序,即这些程序实现应用层协议,并可直接与协议栈的较低层通信。电子邮件客户程序和Web浏览器就属于这种类型的应用程序。应用层服务其它程序可能需要通过应用层服务使用网络资源,例如文件传输或网络假脱机打印。虽然这些服务对用户而言是透明的,但它们正是负责与网络交互和准备传输数据的程序。无论数据类型是文本、图形还是视频,只要类型不同,就需要与之对应的不同的网络服务,从而确保OSI模型的下层能够正确处理数据。协议定义了将要投入使用的标准和数据,每种应用程序和网络服务都要使用这些协议。如果没有协议,数据网络将不能使用通用的方式来格式化及引导数据。为了便于理解不同网络服务的功能,我们有必要先熟悉管理这些服务的底层协议。将鼠标指针置于右图中的按钮上查看示例。显示视觉媒体3.1.3用户应用程序、服务以及应用层协议第{{$PAGEVAR}}页1:如上文所述,应用层使用在应用程序和服务中实现的协议。应用程序为我们提供创建消息的方法;应用层服务负责创建与网络交互的接口;协议则负责提供进行数据处理的规则和格式。这三个组件可以由一个可执行程序使用,甚至还可以使用相同的名称。例如谈到“Telnet”时,我们可以指应用程序,也可以指服务,还可以指协议。在OSI模型中,直接参与人机交互的应用程序与用户本身共同处于协议栈的最高层。与OSI模型的其它层一样,应用层要依靠下一层的功能来完成通信过程。在应用层中,协议指定了源主机和目的主机之间有哪些消息交换、控制命令使用什么语法、传输数据使用哪些类型和格式、错误提示和错误恢复采用何种方式。请播放右侧动画,查看应用程序、服务以及协议间的互动关系。显示视觉媒体3.1.4应用层协议功能第{{$PAGEVAR}}页1:在通信会话过程中,源设备和目的设备均使用应用层协议。为确保通信畅通,源主机和目的主机上所实现的应用层协议必须一致。协议为加载到相关设备上的应用程序和服务之间的数据交换建立统一的规则。并且,协议还指定了消息中数据的构建方式,以及源主机和目的主机间传送的消息类型。消息可以是服务请求、确认消息、数据消息、状态消息或报错消息。协议还定义了消息对话,确保正在发送的消息得到期待的响应,并且在传输数据时调用正确的服务。由于在数据网络中有很多不同类型的应用程序进行通信,因此应用层服务必须实现多重通信协议,才能满足各种用户的通信体验需求。每个通信协议都有其特定目的,并且包含符合该目的的特征。为确保每一层都与下一层服务正确对接,每一层的通信协议都要保证其所有信息正确。在单一会话过程中,应用程序和服务也可以使用多重通信协议。其中,可能由一种协议来指定网络连接的方式,而由另一种协议来描述消息传递到下一层的数据传输过程。显示视觉媒体3.2准备应用程序和服务3.2.1客户端—服务器模型第{{$PAGEVAR}}页1:当人们从多种设备上访问信息时,无论是从个人电脑、笔记本、PDA、手机,还是从其它与网络相连的设备上访问,信息实际上可能并不是存储在上述设备的硬件中。如果情况确实如此,那么就必须向存储数据的设备发送数据访问请求。客户端/服务器模型在客户端/服务器模型中,请求信息的设备称为客户端,而响应请求的设备称为服务器。客户端进程和服务器进程都处于应用层。客户端首先向服务器发送数据请求,服务器通过发送一个或多个数据流来响应客户端。应用层协议规定了客户端和服务器之间请求和响应的格式。除了实际数据传输外,数据交换过程还要求控制信息,如用户身份验证以及要传输的数据文件的标识。公司网络环境是一种典型的客户端/服务器网络。在该环境中,员工使用公司的电子邮件服务器收发并存储电子邮件。员工计算机上的电子邮件客户端首先向电子邮件服务器发送未读邮件请求,随后服务器向客户端发送被请求的邮件以示响应。数据流方向一般被认为是从服务器流向客户端,但也有数据始终从客户端流向服务器。在两个方向上的数据流可以是相等的,也可以不等,甚至从客户端到服务器的数据流可以大于从服务器到客户端的数据流。例如,客户端可以向服务器传输要存储的文件。从客户端到服务器的数据传输称为上传;而从服务器到客户端的数据传输则称为下载。将鼠标悬停在图中所示的选项卡上可以查看文件传输。显示视觉媒体3.2.2服务器第{{$PAGEVAR}}页1:在一般网络环境中,响应客户端应用程序请求的设备扮演的是服务器角色。服务器通常指为多个客户端系统提供信息共享的计算机。服务器可以存储网页文件、文档、数据库、图片、视频以及音频文件等数据,并可将它们发送到请求数据的客户端。在其它情况下,如在网络打印机环境中,打印机服务器将客户端打印请求发送到指定打印机上。不同类型的服务器应用程序对客户端的访问请求可能有不同的要求。有些服务器可能要求验证用户帐户信息,以确认用户是否有权限访问所请求的数据或者执行特定操作。此类服务器的访问取决于用户帐户核心列表和验证机制,或者授予每个用户的权限(数据访问以及操作权限)。当使用FTP服务器(如请求向FTP服务器上传数据)时,您可能拥有对自己的文件夹写的权限,但没有对站点上的其它文件读的权限。在客户端/服务器网络中,服务器运行的服务或者进程有时被称为服务器守护程序。在大多数设备上,服务器守护程序一般在后台运行,终端用户不能直接控制该程序。守护程序用于“侦听”客户端的请求,一旦服务器接受到服务请求,该程序就必须按计划响应请求。按照协议要求,守护程序在“侦听”客户端的请求时与客户端进行适当的消息交换,并以正确的格式将所请求的数据发送到客户端。显示视觉媒体3.2.3应用层服务及协议第{{$PAGEVAR}}页1:单个应用程序可能使用多个不同的应用层服务。因此对用户来说,他针对某个网页提出的一个请求对程序而言实际上是许多的单独请求。并且,可能要为每个请求执行多个进程。例如,客户端可能需要用多个单独进程来合成一个请求发送到服务器上。此外,还会出现多台客户机同时向服务器请求信息的情况。如Telnet服务器可能有多台请求连接的客户机。这些客户端请求必须同时受理,并分别处理。通过下一层的功能支持,应用层进程和服务可以成功管理多个会话。显示视觉媒体第{{$PAGEVAR}}页2:在本练习中,您将学习客户端—服务器交互过程的实例。在后面的课程中,该实例将作为更复杂交互过程的模型。请单击PacketTracer图标了解详细信息。显示视觉媒体3.2.4点对点(P2P)网络及应用程序第{{$PAGEVAR}}页1:点对点模型网络模型中除了客户端/服务器模型外,还有点对点模型。点对点网络模型有两种不同形式:点对点网络设计和点对点应用程序。这两种形式具有相似的特征,但实际工作过程却大不相同。点对点网络在点对点网络中,两台或两台以上的计算机通过网络互连,它们共享资源(如打印机和文件)时可以不借助专用服务器。每台接入的终端设备(称为“点”)既可以作为服务器,也可以作为客户机。在某项事务中,作为服务器的计算机也可以同时成为其它服务器的客户端。于是,计算机的角色根据请求的不同在客户端和服务器之间切换。拥有两台互连电脑、一台共享打印机的家庭简易网络就是一种典型的点对点网络。两个人都可以对电