880 likes | 1.01k Views
第七章 应用层. 应用层是原理体系结构中的最高层,其重要特点就是自身的可扩张性。本章讨论各种应用进程通过什么样的应用层协议来使用网络所提供的通信服务。. 概述 域名系统 电子邮件 远程登录 文件传输与访问 USENET 新闻 万维网 WWW. 第一节 概述. 应用层是 OSI 体系结构中的 最高层 ,一个重要特点就是 自身的可扩展性 。 每个 应用层协议 都是为了解决某一类应用问题。 应用进程: 为了解决具体应用问题而彼此通信的进程。 具体内容: 规定本进程在通信时所遵循的协议。 应用进程之间通信时所使用的协议:
E N D
第七章 应用层 应用层是原理体系结构中的最高层,其重要特点就是自身的可扩张性。本章讨论各种应用进程通过什么样的应用层协议来使用网络所提供的通信服务。 • 概述 • 域名系统 • 电子邮件 • 远程登录 • 文件传输与访问 • USENET新闻 • 万维网WWW
第一节 概述 • 应用层是OSI体系结构中的最高层,一个重要特点就是自身的可扩展性。 • 每个应用层协议都是为了解决某一类应用问题。 • 应用进程:为了解决具体应用问题而彼此通信的进程。 • 具体内容:规定本进程在通信时所遵循的协议。 • 应用进程之间通信时所使用的协议: • 一部分是标准化的应用层协议; • 在此之上,还有一些为了满足特定的应用需求而制定的非标准化协议。 • 应用软件:为用户提供高层服务,并决定用户对基础互联网能力的理解方式。 • 互联网系统提供基础的通信服务,除协议软件外,通信中必须有两个应用程序参加: • 一个启动通信; • 另一个接受它。
客户端软件的一般特性: 是一个任意的应用程序,在需要进行远程访问时临时成为客户,同时也做其他的本地计算; 直接被用户调用,只运行一次; 在用户的个人计算机上本地运行; 主动地与服务器启动通信; 能支持所需的多重服务,但同时只与一个远程服务器进行主动通信; 不需要特殊的硬件和高级的操作系统。 服务器软件的一般特性: 有专门用途,享有特权,专门用来提供某种服务,可同时处理多个远程客户的请求; 在系统初启时自动调用,不断运行许多遍; 在一台共享计算机上运行(即:不是在用户的个人计算机上); 被动地等待来自任意客户的通信; 接受来自任意客户的通信,但只提供一种服务; 需要强大的硬件和高级的操作系统支持。 第一节 概 述 7.1.1 客户—服务器交互——网络应用程序使用的通信方式,描述进程之 间服务和被服务的关系。 主要特征:客户应用程序是主叫方,主动地启动通信;服务器应用程序是被叫方,被动地等待通信。
服务器 客 户 应用层 应用层 传输层 传输层 互联网层 互联网层 网络接口 网络接口 Internet 客户进程与服务器进程使用TCP/IP进行通信 第一节 概 述 • 客户与服务器的通信可以是双向的,都可以发送和接收信息。 • 大多数应用进程都使用TCP/IP协议进行通信。 • 客户与服务器的交互直接通过传输协议建立通信和收发信息; • 传输协议接着使用更低层的协议来收发自己的信息。 • 一台计算机无论运行客户程序还是服务器程序,都需要一个完整的协议栈。
计算机1 计算机3 计算机2 应用层 应用层 应用层 客户1 客户2 服务器1 服务器2 传 输 层 传 输 层 传 输 层 互联网层 互联网层 互联网层 网络接口 网络接口 网络接口 Internet 单机上的多重访问 第一节 概 述 功能较强的计算机系统同时运行多个客户与服务器程序的条件: 首先,这台计算机必须具有足够的硬件资源; 其次,这台计算机必须具有允许多个应用程序同时执行的操作系统。 在服务器系统上,对应每种服务有一个服务器程序在运行,并有唯一标识。 例如:计算机1和计算机2中的客户进程分别和计算机3中的两个服务器进程进行通信。 单机运行多重服务,通过TCP的复用技术只需有一个物理连接。
第一节 概 述 7.1.2 套接字接口 客户与服务器应用程序使用传输协议进行通信! 应用程序与协议软件进行交互时必须说明一些细节: 应用程序:是服务器还是客户(即它是被动等待还是主动启动通信); 发送方:必须说明数据将传给谁; 接收方:必须说明接收的数据应从何处获得,等等。 应用程序接口(API):应用程序与操作系统中通信协议之间的接口。 一个API定义了一组操作,应用程序在进行交互时可以对API进行操作; API决定了应用程序所能达到的功能,以及使用这些功能开发程序的难度; 大多数API给出一组应用程序能够调用的过程以及过程参数; 通常一个API对每个基本操作有一个独立的过程,例如:一个API包含两个过程,一个用来建立通信,另一个用来接收数据。 通信协议通常只定义协议应当提供的一般操作; 操作系统定义应用程序用来完成这些操作的API规范。
第一节 概 述 套接字API——被众多操作系统支持,包括个人机操作系统及各种UNIX系统。 套接字库(socket library):提供套接字API,目的是广泛使用套接字而不修改基本操作系统。 从程序员角度看,套接字库与操作系统提供的本机套接字在语义上是相同的! 一个使用套接字的程序可以被复制到一台使用套接字库的计算机上,经过重新编译后执行,移植时无须改动。 套接字库与由操作系统直接提供的本机套接字API在实现上是完全不同的! 本机套接字API是操作系统的一部分; 套接字库的过程代码是链接到应用程序并驻留于应用程序地址空间的。 当应用程序从套接字库调用过程时,控制转向库例程,库例程接着进行一个或多个对基本操作系统函数的调用来达到希望的效果。 基本操作系统支持的函数不需要与套接字API相匹配,套接字库例程对应用程序隐蔽了本机操作系统而只给出了一个套接字接口。 套接字库能够向没有本机套接字的计算机上的应用程序提供套接字API! 当应用程序调用套接字过程时,控制转向库例程,由它进行一个或多个对基本操作系统的调用来完成套接字功能。
第一节 概 述 由于起源于UNIX,套接字使用了UNIX其他部分的许多概念; 套接字与I/O紧密相连:应用程序通过套接字进行通信和应用程序与文件进行数据交换是相似的。 套接字通信使用描述符方法:当应用程序创建一个套接字时,它会得到一个标识(短整型数)来指向该套接字。 过程:应用程序在使用协议进行通信前,须申请操作系统生成一个套接字用以通信系统返回一个短整型数作为描述符来标识这个套接字应用程序在调用过程通过网络传输数据时,将这个描述符作为参数,不必在每次传输数据时都指明远程目的地的细节。 套接字与其它I/O集成在一起:系统对套接字和其他I/O设备使用相同的描述符空间。 集成系统的主要优点:在于灵活性,一个单独的应用程序可以写成向任意方向(设备、文件、套接字)传输数据,既用于网络通信又用于本地数据传输。 套接字编程与传统I/O编程有所不同:应用程序要使用套接字则必须说明许多细节,每个套接字有许多参数与选项以提供所有这些细节,应用程序支持这些选项的每个取值。 例如:应用程序必须选择特定的传输协议,向协议提供远程机器的地址,并说明该应用程序是客户还是服务器。
第一节 概 述 选项与参数在一个API中的表达:应用程序首先创建一个套接字,然后用调用函数来说明套接字被使用的细节。 为避免单个套接字函数对每个选项有不同的参数,须定义多个函数。 优点:大多数函数只有三个或更少的参数, 缺点:编程者在使用套接字时必须记住要调用多个函数。 创建一个套接字时,应用程序必须说明使用的协议族以及所希望的服务类型(面向连接的或无连接的)。 服务器在创建套接字后,向该套接字说明一个本地地址及请求队列的大小。 客户在创建套接字后,向该套接字说明远程服务器的地址。 一个套接字建立以后,应用程序就可以传输信息! 用于发送信息的基本过程是send,send有多种形式,应按照服务所需的类型选择合适的过程。 用于接收信息的基本过程是recv,recv也有对应于send的多种形式。
第一节 概 述 实现套接字API的过程
服务器端:getprotobyname socket bind listen accept send close 客 户 端:gethostbyname getprotobyname socket connect recv close 套接字过程调用的顺序 第一节 概 述 • 套接字API应设计成适应于并发程序工作。 • 新线程被创建后,继承创建它的线程所拥有的所有套接字的访问权; • 一个并发服务器首先打开一个套接字用以接受请求; • 系统在连接请求到达时接着创建一个新的套接字; • 主线程关闭这个新套接字而新线程关闭旧套接字。 • 客户与服务器对套接字过程调用的顺序。 • 如图所示,服务器调用了7个套接字过程而客户调用了6个。
第二节 域名系统 • 因网络进行通信最终需要使用二进制地址,因此需要一些机制把ASCII串网络名转换为二进制网络地址。 • 域名系统DNS(Domain Name System ):主要用来把主机名和电子邮件地址映射为IP地址,其核心是分级的、基于域的命名机制,以及为了实行这个命名机制的分布式数据库系统。 • DNS的使用方式:应用程序调用一种名叫解析器(resolver)的库过程,参数为网络名字,解析器将UDP分组传送到本地DNS服务器上,本地DNS服务器查找名字并将IP地址返回给解析器,解析器再把它返回给调用者。 7.2.1 计算机域名的结构 语法上,每台计算机的域名由一系列由字母和数字构成的段组成。 例如,吉林大学具有域名:www.jlu.edu.cn 。 概念上,因特网被分为几百个顶层域,每个域可包含多个主机,也可被分为若干子域;可以用树结构表示域的划分,树叶代表没有子域的域,一个树叶域可以包含一台主机,也可以包含上千台的主机。 DNS的顶层:域名系统规定的最高域的值。
通用的 国家 int com edu gov mil org net jp us nl ··· cn sun yale acm ieeee ac co oce vu eng cs eng jack jill keio nec cs a inda cs csl flits fluit robot pc24 因特网域名空间的一部分 第二节 域名系统 域名的层次规则:最重要的部分位于右边,最左边的段是单台计算机的名字,其他段标识拥有该域名的机构。 域名的段规则:一个域名有几个段,除了规定最高域的选择方法外,域名系统既不规定每个域名中段的个数,也不规定这些段代表什么,每个组织能够选择该组织内计算机域名中段的数目以及这些段所代表的意义。
第二节 域名系统 域名对大小写不敏感,成员名最长达63个字符,路径全名不超过255个字符。 当一个组织希望参加域名系统时,必须申请其中一个顶层域下的一个域名,大多数公司选择登记在com域下。 一旦一个组织被指派到一个域,后缀将为该组织保留,其他组织将不会被指派到相同的后缀。 域名最高域段的值 一旦一个 新的域被创 建和登记, 它就可以创 建子域,无 须征得树的 上级同意。 命名遵循组 织界限,而非 物理网络。
7.2.2 资源记录 • DNS的功能:把域名映射到资源记录上。 • 每个域(无论是主机还是顶层域)都有相关的资源记录集合;当解析器给DNS一个域名,DNS取回的是与该域名有关的资源记录。 资源记录的格式: Domain_name Time_to_live Type Class Value Domain_name(域名):指出这条记录所指向的域。 Time_to_live(生存时间):指出记录的稳定性。 Type(类型):指出记录的类型。 Class(类别):对于因特网信息总是IN;非因特网信息则使用其他代码。 Value(值):可以是数字、域名或ASCII串。其语义基于记录类型。 • 大多数情况下资源记录以ASCII文本显示,每条资源记录一行。 第二节 域名系统
第二节 域名系统 7.2.3 名字服务器 DNS的一个主要特点——自治:DNS系统允许每个组织为计算机指派域名或改变域名而不必通知中心机构。 自治的实现: 命名体系通过允许组织使用特定后缀控制所有域名(层次域名)来帮助自治。 例如:IBM公司可以自由地创建或改变任何域名,只要这些域名以ibm.com结尾。 DNS运用客户一服务器交互来帮助自治。 整个域名系统以一个大的分布式数据库方式工作:大多数具有Intemet连接的组织运行一个域名服务器;每个服务器包含连向其他域名服务器的信息,结果这些服务器形成一个大的、地位同等的域名数据库。 DNS服务器按照域名层次安排其层次 ——每个服务器作为域名体系中一部分的管辖者(authority);一个根服务器(root server)占领着这个层次体系的顶部,是顶层域(如.Com)的管辖者。 根服务器并不包含所有可能的域名,但包含如何到达其他服务器的信息! 例如:虽然根服务器不知道IBM公司的计算机的名字,但它知道如何找到处理对ibm.com的请求的服务器。
com com 根服务器 根服务器 foobar.com 服务器 Candy.foobar.com 服务器 foobar foobar soap soap candy candy walnut.candy.foobar.com服务器 walnut walnut peanut almond peanut almond (a) (b) DNS服务器层次的划分 第二节 域名系统 一个公司可以选择将它所有的域名都放在一个服务器上;也可以选择运行几个服务器! 如图所示:Foobar公司可能选择的、将其域名层次安排在两个服务器上的两种方法。
第二节 域名系统 域名解析:将域名转换为对等的IP地址的过程,即域名被解析为地址。 域名解析器(或简称解析器)软件:完成地址转换工作的软件。 许多操作系统提供域名解析器软件作为应用程序可以调用的库例程。 例如:在UNIX系统中,应用程序可以调用库例程gethostbyname来进行域名解析。 gethostbyname有一个参数并返回一个结构,参数是一个包含待查域名的字符串; 如果解析成功,gethostbyname返回一个结构,其中包含一个或多个对应于该域名的IP地址的表; 如果解析失败,gethostbyname返回一个NULL指针。 因UDP对单个请求的开销较小,解析器大多数被配置为使用UDP。 工作过程: 每个解析器被配置在一个本地域名服务器上 解析器将指定的域名放在一个DNS请求报文中,并向本地服务器发送这个报文; 解析器接着等待服务器发回一个包含答案的DNS应答(DNS reply)报文 当服务器发现收到的请求中,指定的域名属于自己的管辖范围时,就直按回答这个请求 当服务器发现到达请求中的域名不在自己的管辖范围时,临时成为另一个域名服务器的客户 在第二个服务器返回一个回答后,原先的服务器向发送请求的解析器发送一个该回答的副本
com 根服务器 foobar soap candy walnut.candy.foobar.com服务器 walnut peanut almond 第二节 域名系统 DNS服务器并不知道其他哪个DNS是给定域名的管辖者,根据根服务器的地址得到解析! 例如:假设图(b)中一个远程站点的解析器(如一个大学的)发送一个请求给它的本地服务器L,域名为:venus.walnut.candv.foobar.com。 反复查询解析:在服务器层次间逐步寻找管辖一个域名的服务器的过程,仅在服务器要解析域名时使用。 当一个服务器成为另一个服务器的客户时,可以请求反复解析,在服务器层次间每次一层地逐步查找。 递归查询解析:请求完全解析——递归请求的回答,要么是要查看的IP地址,要么是一个表示没有这个域名的声明。 主机上的解析器软件往往请求递归解析,将一个域名解析为一个对等的地址。
第三节 电子邮件 • 7.3.1 体系结构和服务 • 电子邮件系统的两个子系统: • 用户代理(user agent):允许人们读取和发送电子邮件;是一个本地程序,提供命令行方式、菜单方式或图形方式的界面来与电子邮件系统交互。 • 消息传输代理(message transfer agent):将消息从出发地传到目的地;是在后台运行的系统幽灵程序,在系统间传输电子邮件。 • 电子邮件系统支持的5个基本功能: • 撰写(composition):创建消息和回答的过程。 • 传输(transfer):将消息从寄出者送到接收者。 • 告诉发信者消息的情况(是否已发送、被拒收或丢失?) • 显示(displaying):使人们能够阅读自己的电子邮件。 • 处理(disposition):最后一步,关心接收者收到消息如何处理它。
第三节 电子邮件 • 电子邮件系统的多种高级特性: • 当暂时离开时,具有电子邮件自动转发功能; • 提供命令来创建和销毁邮箱,检查邮箱内容,从邮箱插入或删除消息等; • 收件人列表(mailing list):即电子邮件地址的列表,当一条消息寄往收件人列表时,则向列表中的每一个对象都发送一个同样的拷贝; • 挂号电子邮件:使发信者知道自己的消息是否已到达,在任何情况下发信者对于应报告的内容有一定控制权; • 其他:拷贝、高优先级电子邮件、秘密(加密)电子邮件、第一个收信人找不到时寄给其他接收者,以及秘书处理自己老板的电子邮件的能力。 • 7.3.2 电子邮件信息格式 • 电子邮件信息的格式: • 头部(header):包括有关发送方、接收方、邮件内容等方面的信息。 • 主体(body):包括信息的文本。
第三节 电子邮件 • 头部 • ——收发信息时头部需保持标准格式 • 头部格式: • <关键字>:<附加信息> • 关键字:告诉电子邮件软件如何翻译该行中剩下的内容。 • 有些关键字在电子邮件头部是必须的,另一些是可选的。 • 例如: • <To>:<一个或多个电子邮件地址> • < From >:<发送方的电子邮件地址>
(a)邮寄的电子邮件 (b)电子邮件 Name: Mr.Daniel Dumkopf Street: 18 Willow Lane Zip code:10604 Priority Urgent Encryption:None Mr.Daniel Dumkopf 18 Willow Lane White Plains,NY 10604 信封 信封 From: United Gizmo Address: 180 Main St Location: Boston,MA 02120 Date: Sept,1,1996 Subject: Invoice 1081 United Gizmo 180 Main St Boston,MA 02120 Sept,1,1996 Subject:Invoice 1081 Dear Mr.Dumkopf, Our computer records show that you still have not paid the above invoice of $0.00.Please send us a check for $0.00 promptly. Yours truly United Gizmo 头部 Dear Mr.Dumkopf, Our computer records show that you still have not paid the above invoice of $0.00.Please send us a check for $0.00 promptly. Yours truly United Gizmo 消息 主体 第三节 电子邮件 信封(envelope) ——封装着消息,被消息传输代理用来选择路由 内容:与消息本身不同,包括用来传输消息所需的所有信息,如收件人地址、优先级和安全等级。 信封中的消息的格式: 头部(header):包括用户代理的控制信息。 主体(body):写给收信者的内容。 两个可选的附加行:包括信息发出的日期及信息的主题。
第三节 电子邮件 • 7.3.3 多用途互联网邮件扩充协议MIME——由IETF发明 • 为使电子邮件系统能处理二进制数据,需要将二进制数据编码成文本形式! • 原理:在使用MIME时,发送方在头部包含一些附加行说明信息遵循MIME格式,或是在主体中增加一些附加行说明数据编码的类型。 • 特点:主要优点在于灵活性,允许发送方和接收方选择方便的编码方法,允许使用任何时候发明的新的编码方式,并且与老电子邮件系统是兼容的; • 允许发送方将信息分成几个部分,并对每个部分指定不同的编码方法,使得用户可以在同一个信息中既发送文本又发送图像。 • 实现:在电子邮件头部增加两行,一行用来声明使用MIME生成信息;另一行说明MIME信息是如何包含在主体中的。 例如:头部:MIME - version:1.0 Content-Type:Multipart/Mixed; Boundary=Mime_separator 说明: 信息是使用MIME版本1.0生成的; 包含Mime_separator的行将出现在主体信息的每个部分之前。 当MIME用来发送标准文本信息时,第二行变为: Content - Type:text/plain
电子邮件信息的路径 接收方邮箱 发送方计算机用户接口 接收方计算机服务器 发送方计算机邮件传输程序 互联网 7.3.4 消息传输 用户写完电子邮件并指定接收方后,电子邮件软件将信息的副本发送给每个接收方! 邮件传输程序:包含在下层电子邮件系统中,处理将信息副本发送给一台远程计算机的细节。 邮件传输程序需要作为一个客户与远程机器上的服务器通信!(如图所示) 客户向服务器发送信息; 服务器将信息副本放人接收方的邮箱。 过程:用户在写信息或读接收到的信息时与电子邮件接口程序进行交互 用户写完邮件时,电子邮件接口将该信息置于一个队列中,交给邮件传输程序管理 邮件传输程序等待放入队列的信息,然后向每个接收方发送该信息的副本 (向本地计算机上的接收方发送信息副本较简单,向远程用户发送副本相对复杂)
第三节 电子邮件 多重接收优化:可以处理所有接收方同时处于同一台远程计算机上的情况。 假设:计算机nonexist.com上的一个用户向三个位于foobar.com的用户发送信息。 解决:nonexist.com上的邮件传输程序不必与foobar.com上的服务器建立三个不同的连接,只需与服务器建立单个连接,说明所有的三个接收方,然后将信息的单个副本传输过去,服务器接收信息后,向每个接收方传递一个副本。 多重接收优化的重要性: 第一,极大地降低了传输电子邮件对网络带宽的要求; 第二,优化减少了所有用户接收同一信息副本时的延迟,在同一台计算机上拥有邮箱的用户几乎能在同一时间收到信息的副本; 第三,如果处于发送方和接收方之间的互联网发生故障,所有接收方要么都收到了信息的副本,要么都没有收到。 1.简单邮件传输协议(SMTP)——使用TCP连接进行通信时遵循简单传输协议! 功能:允许发送方说明自己,指定接收方,以及传输电子邮件信息。 尽管邮件传输看起来很简单,但SMTP协议仍须处理许多细节! 例如: 要求可靠传递,发送方须保存信息副本,直到接收方将副本放至不易失的存储器; SMTP允许发送方询问在服务器所在的计算机上是否存在一个给定的邮箱。
第三节 电子邮件 2.邮件分发器、列表和转发器 分发器:使用邮件列表(mailing list)数据库来决定如何处理信息,数据库中每一项是一组电子邮件地址,同时被赋予一个名字以及自己的电子邮件地址。 ——使得发送方与一组人通过电子邮件进行通信时不需清楚地指明所有接收方。 当电子邮件信息到达时,邮件分发器检查目标地址,如果目标地址在数据库中出现,分发器就将信息的副本转发给表中的每个地址! 要想接收到发往该组的邮件,就必须请求在列表中加上自己的电子邮件地址! 要使邮件列表地址完整,还必须在名字后加上分发器所运行的计算机的名字! 例如:若分发器运行在计算机wit.com上,则第一个邮件列表全名为:friends@wit.com。 邮件分发器所使用的数据库实例
电子邮件网关 发送方计算机用户接口 接收方邮箱 数据库 接收方计算机服务器 邮件传 输程序 发送方计算机邮件传输程序 分发器 互联网 电子邮件网关的工作过程 第三节 电子邮件 3.邮件网关(e-mail gateway)——用来完成转发电于邮件任务的计算机! 分发器程序在邮件网关内部接收发给邮件列表的信息,并将副本转发给列表中的每个接收方! 电子邮件网关:专门用于处理电子邮件的计算机,或称为电子邮件中继。 大多数电子邮件网关所保存的邮件列表是公共的——任何人都可以加人列表,任何人都可以向列表发送信息。 如图所示,一个信息至少通过Internet两次!
第三节 电子邮件 4.自动邮件列表 想法:编写一个程序,在没有人工介入的情况下利用电子邮件处理日常杂务! 例如:电子邮件可用来获取文档,编写一个程序接收包含文档名信息的电子邮件! 该程序将文档的副本放入一个电子邮件中,然后将该信息自动发给提出请求的人。 列表管理者(list manager):该自动程序与电子邮件分发器结合起来,自动地保存分发器的邮件列表数据库。 通过向列表管理者程序发送一个电子邮件信息,来创建新的邮件列表,用户可将自己的地址添加到表中,或将自己的地址从表中移去。 例如,一个列表管理者期望收到的电子邮件包含命令: add mailbox to list mailbox是电子邮件地址; list是邮件列表的名字。 优点:从参与者的角度来看,自动管理改进了服务,因为它允许参与者加入或离开列表,而不需要与别人通信或等待有人输入更改信息;从列表所有者角度来看,自动管理减少了维护列表的开销。
第三节 电子邮件 • 5.邮件中继与电子邮件地址 • 拥有多台计算机的组织有许多电子邮件地址,为了防止混乱和统一所有职员的电子邮件地址,可以选择运行一个邮件网关,并将所有电子邮件地址与该中继网关相关联! • 例如,Foobar公司邮件网关计算机名为:foobar.com • 则公司可按如下形式给每个职员分派电子邮件地址:employee@foobar.com • 发给Foobar公司职员的电子邮件将到达邮件网关计算机,网关的数据库需使用邮件列表包含每个职员的项以说明职员的邮箱在哪台计算机上,并将简单接收方的外部电子邮件标识与内部邮箱相对应! • 电子邮件网关上的数据库允许外部和内部的地址不同,外部电子邮件地址可以与特定计算机系统的邮箱标识无关! • 例如,职员John T.Doe使用计算机bubbles.soap.foobar.com ,并有7位数8456311作为邮箱标识; 则公司邮件网关中的表项可能为John_T_Doe,内容为: • 84563ll@bubbles.soap.foobar.com • 优点:在整个组织中统一电子邮件地址外;提供灵活性,组织可以移动或重命名一台计算机而不需要改变职员的电子邮件地址。
发送计算机 带邮箱的计算机 用户计算机 接收方 邮 箱 POP客户 邮 件 服务器 邮件传输程序 POP服务 互联网 使用POP时的工作过程 第三节 电子邮件 6.邮箱访问——邮局协议,提供对电子邮箱进行远程存取 如果计算机不运行邮件服务器,邮箱就无法放到计算机上! 邮局协议(POP):包含在TCP/IP协议中,将用户的邮箱安置于运行邮件服务器的计算机上,并允许用户从另一台计算机对邮箱的内容进行存取,需要在邮箱所在的计算机上运行一个附加的使用POP协议的服务器。 用户运行的电子邮件软件成为该POP服务器的客户,对邮箱的内容进行存取。
第三节 电子邮件 电子邮件服务器和POP服务器的区别: 第一,邮件服务器使用SMTP协议,而POP服务器使用POP协议; 第二,邮件服务器接收来自任意发送方的信息,而POP服务器只有在用户输入鉴别信息(如密码)后才允许对邮箱进行访问; 第三,邮件服务器只能传输电子邮件信息,而POP服务器还能提供邮箱内容的信息。 7.拨号连接与POP POP对于依靠拨号连接的用户来说特别普遍! 用户计算机不需要与Internet建立永久连接! 接收电子邮件时,用户通过调制解调器与邮箱所在计算机或Internet上其他的计算机建立一个拨号连接,连接成功后就可以运行POP客户,与服务器通信并收发电子邮件。
第四节 远程登录 • 为使远程交互服务普遍化,可允许用户在远程机器上建立一个登录会话,然后执行命令来实现,即使用远程登录措施。 • 好处:用户可访问远程系统上所有可用的命令;系统设计员不需提供多个专用的服务器。 • 需构造用于大多数操作系统的远程登录服务器软件和客户应用软件。 7.4.1 远程登录TELNET协议——是一个简单的远程终端协议 功能:用户可以用TELNET在其所在地通过TCP连接注册(即登录)到远地的另一个主机上(使用主机名或IP地址),TELNET能把用户的击键传到远地主机,同时也能把远地主机的输出通过TCP连接返回到用户屏幕。 特点:这种服务是透明的,用户感觉到好象键盘和显示器是直接连在远地主机上。 三种基本服务: 定义一个网络虚拟终端,为远程系统提供一个标准接口,客户程序不必详细了解所有可能的远程系统,只需构造使用标准接口的程序。 包括一个允许客户和服务器协商选项的机制,而且还提供一组标准选项(如,选项之一控制着通过连接传输的数据是使用标准7位ASCII字符集还是8位字符集)。 对称处理连接的两端(即不强迫客户从键盘输入,也不强迫客户在屏幕上显示输出),任意程序都可称为客户,任何一端都可发起协商选项。
TELNET终端与服务器的数据通路: 伪终端:用来描 述操作系统入口 点,允许TELNET 服务器之类的运 行程序向操作系 统传输字符,并 使用字符似乎来 自本地键盘。 操作系统只有提 供伪终端这种措 施才能构造一个 TELNET服务器! 将TELNET服务器 安排为应用层程 序的优缺点: 优点:比把代码 嵌入操作系统更 易修改和控制服 务器。 缺点:效率不高。 键入的信息从用户键盘通过操作系统传到客户程序 再从客户程序返回操作系统 通过互联网传到服务器机器 到达目的主机后,数据通过操作系统向上传给服务器应用程序 再从服务器应用程序返回到服务器的操作系统上的伪终端入口点 远程操作系统将字符传给用户正运行的应用程序 同时,输出按照同一通路从服务器回送到客户
7.4.2 适应异构性 网络虚拟终端NVT(Network virtual Terminal):为适应异构环境,TELNET定义的在Internet上传输数据和命令序列的方式。 实现过程: 客户软件把来自用户终端的按键和命令序列转换为NVT格式 发送到服务器 服务器软件将收到的数据和命令 从NVT格式转换为远程系统需要的格式 通过互联网 的TCP连接 客 户 服务器 服务器 的系统 用户的键盘 和显示器 使用客户系统格式 使用NVT格式 使用服务器系统格式 TELNET使用的NVT格式 第四节 远程登录
网络虚拟终端NVT格式——所有通信都涉及的是8比特字节网络虚拟终端NVT格式——所有通信都涉及的是8比特字节 在启动时: 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 标准7比特US-ASCII字符,表示数据 保留用作命令序列 USASCII控制字符的TELNET NVT解释 ASCII控制码 十进制值 赋予的意义 NUL 0 无操作(不影响输出 BEL 7 声响/可视信号(无活动) BS 8 左移一个字符位置 HT 9 右移至下一个水平制表站 LF 10 下移(垂直)到下一行 VT 11 下移到下一个垂直制表站 FF 12 移到下一页的顶部 CH 13 移到当前行的左边界 其他控制 - 无操作(不影响输出) 第四节 远程登录 US-ASCII字符集:包括95个可打印字符(包括字母、数字和标点符号)和33个控制码。 NVT标准行结束字符:为两字符的CR-LF序列。 当用户按下本地终端上对应行结束(end-of-line)的一个键时(如Enter或Return键),TELNET客户必须将它映射为CR-LF两字符序列用作传输,TELNET服务器将CR-LF转换为适于远程机器的字符序列。
第四节 远程登录 • 7.4.2 控制传输远程命令 • 多个控制功能的实现:TELNET NVT客户除从用户那里接受数据外还接受控制功能,并将它们传输到必须解释它们的服务器系统。 • 从概念上讲,把NVT看作可接受可以产生超过128个字符的键盘的输入,并假定用户键盘上有典型的用于控制功能的虚拟键(想象的键)。 • TELNET NVT识别的控制功能
第四节 远程登录 • 实际上,大多数键盘不提供额外的命令键,而是由各个操作系统或命令解释器用不同的方法产生它们。 • 最常用的技术:将特殊的ASCII字符与控制功能相联系,以便在用户按下此键时,操作系统将来取相应的动作,而不是将该字符作为输入。 • 使命令与正常ASCII字符集分开有两个原因: • 第一,分开定义控制功能意味着TELNET具有更大的灵活性,它可在客户和服务器间传输所有可能的ASCII字符以及所有可能的控制功能; • 第二,通过将信令与普通数据分开,NVT使得客户能够无二义性地指定信令,不可能发生无法确定输人字符是数据还是控制功能的混乱情况。 • 转义序列(escape sequence):用一个保留八位组,指示下一个八位组将是一个控制码,目的是使TELNET用它对控制功能进行编码,从而在TCP连接上传递控制功能。 • 按命令解释IAC(Interpret As Command)八位组:在TELNET中开始一个转义序列的保留八位组。
第四节 远程登录 TELNET的命令和编码
与普通数据一起发送控制功能并不总能保证得到正确的结果,通常只有当远程机器上的运行程序出错或用户希望终止程序时才需要发送中断进程控制!与普通数据一起发送控制功能并不总能保证得到正确的结果,通常只有当远程机器上的运行程序出错或用户希望终止程序时才需要发送中断进程控制! 例如:服务器的应用程序停止读取输入,操作系统的缓冲区最终会满,服务器也不能将更多数据写入伪终端; 一旦发生此事,服务器必须停止从TCP连接读取数据,从而使TCP连接的缓冲区变满; 最后服务器所在机器上的TCP将接收窗口大小通告为零,从而阻止数据从此连接流入; 若用户此时生成一个终端控制功能,如形成命令序列IAC IP并写入到TCP连接,但由于TCP已停止把数据发送到服务器机器,服务器将不能读到这个控制序列。 由于需要得到控制而又发生错误的应用程序可能无意中阻塞数据流,TELNET不能单独依靠客户和服务器间常规的数据流传输控制序列。 第四节 远程登录
第四节 远程登录 解决:必须使用带外信令! 实现:TCP用紧急数据机制实现带外数据信令。 紧急数据机制: TELNET(只要)在数据流中放入了控制功能 发送一个SYNCH信令 TELNET再附加一个称为数据标记(data mark)的保留八位组 通过让TCP发送已设置紧急数据比特的报文段通知服务器 携带紧急数据的报文段将绕过流量控制直接到达服务器 作为对紧急信令的响应,服务器读取并抛弃所有数据,直到找到该数据标记 服务器在遇到数据标记后返回正常处理过程
第四节 远程登录 7.4.4 TELNET选项 TELNET选项是可协商的,使得客户和服务器可以重新配置其连接! 例如:客户和服务器通过协商选项,可以在彼此之间传递8比特的数据(当传递8比特的数据时,如果保留八位组IAC出现在数据中仍需使用两个)。 TELNET选项的范围很广:一些选项扩充了大方向的功能,一些选项只涉及一些微小细节。 常用的TELNET选项
第四节 远程登录 • TELNET协商选项的方式:使用一种对称选项协商机制,允许任何一端发出申请,接收端可以做出肯定接受的响应或拒绝请求,允许客户和服务器重新配置控制其交互的参数。 • TELNET术语: • 请求:WILL X——“你是否同意我使用选项X”; • 响应:DO X或DON’T X——“我同意你使用选项X”或“我不同意你使用选项X”; • WILL X或WON’T X——“我将开始使用选项X”或“我不会使用选项 X”。 • 两端可能都认为对方的确认是请求,为避免引起循环,协议规定不用确认对已在使用的选项的协商请求。 • 几种情况: • 当一端试图协商另一端不了解的选项时,接收请求的一端可简单地拒绝协商; • ——可使更新、更复杂的客户服务器版本与较老的、不太复杂的版本进行互操作 • 若客户和服务器都理解新的选项,则可能会对交互有所改善,否则,将一同转入效率较低但可工作的运行方式; • 由于所有TELNET软件理解基本的NVT协议,即使客户和服务器中有一方理解选项而另一方不理解,它们之间也能互操作。
第四节 远程登录 • 7.4.5 远程登录服务rlogin(源于BSD UNIX的操作系统) • 远程登录服务rlogin:支持受信任的主机,允许系统管理员选择一组机器,在这些机器上共享登录名和文件访问保护,并在登录用户间建立等价关系。 • 作用:用户通过为基于远程主机的远程登录和远程用户名授权,可控制对其用户账号的访问。 • rsh命令:是rlogin命令的一个变形,它调用远程UNIX机器上的命令解释器,并把命令行参数传递到命令解释器,完全跳过了登录的步骤。 • rsh命令调用的格式:rsh machine command • 例如:用户在任一台机器上键入 :rsh merlin ps,都将执行机器merlin上的ps命令,该机器上UNIX的标准输入和输出通过网络连接到用户的键盘和显示器,用户查看输出就像自己登录到机器merlin中一样。 • 由于用户可设法使rsh调用远程命令而不需要键入口令,该命令既可在程序中使用,也可从键盘输入。
第五节 文件传输与访问 • 几种常见的设计: • 单个集中的文件服务器为一些没有本地硬盘的终端提供辅存,各终端通过高速无线网与文件服务器通信; • 用户使用带本地存储设备的常规计算机,并定期通过网络把文件备份(或整个盘的副本)发送到一个保管数据的设备,在避免数据的偶然丢失; • 重点加强在多个程序、多个用户或多个网点之间共享数据的能力,例如把一个联机数据库供所有工作组共享。 • 7.5.1 联机共享式访问 • 文件共享的两种不同形式: • 联机共享访问(on line access):允许多个程序同时访问一个文件。 • 特点:对文件的改动迅速生效,并在所有访问文件的程序中都可获得改动信息。 • 整文件复制(whole file copying):程序无论何时想访问一个文件,都必须获得一个本地文件副本。 • 特点:通常用于只读数据,如果必须修改文件,程序对本地副本进行修改,并将修改后的文件传回到原网点。
第五节 文件传输与访问 • (一)联机访问方式 • 文件共享比数据库系统更先进且更容易使用:操作系统提供对远程共享文件的访问,用户可使用远程文件进行输入和输出来运行任何应用程序,如同对本地文件的访问一样,整个文件系统提供对共享文件的透明访问。 • 透明访问的优点:远程文件访问不需对应用程序进行明显改动,用户可对本地和远程文件进行访问,允许这些文件对共享数据进行任意计算。 • 透明访问的缺点:使用本地和远程文件的应用程序不太可靠。 • ——若网络或远程机器出现故障、超负载或者网络拥塞,即使用户的机器仍在运行,应用程序也不能正常工作、运行缓慢或引起通信协议向用户报告出现超时。 • 实现一体化的、透明的文件访问比较困难! • 可能存在的几个问题: • 在异构环境中,一台机器上可用的文件名可能无法映射到另一台机器的文件名空间; • 一个远程文件访问机制必须处理计算机系统中所有权、访问授权和访问保护的关系; • 由于文件表示和允许的操作在不同机器间各不相同,在所有文件上实现全部操作可能很难或不太可能。
(二)文件传输共享(整文件复制) ——用传输机制访问远程数据,取代一体化的透明联机访问的方案 特点:用户首先获得一个文件的本地副本,然后对副本进行操作;大多数传输机制在本地文件系统之外运作(即未实现一体化)。 实现:用户必须调用一个特殊的客户程序传输文件,并同时指明一个远程机器 该远程机器上有用户所需的文件以及获得访问所需的授权(如一个账号或口令) 客户与远程机器上的服务器联系,并请求一个文件的副本 传输结束,用户终止客户,并使用本地机器上的应用程序读取或修改本地副本 优点:操作的高效性,一旦程序获得远程文件的一个副本,就可以高效地处理文件副本,许多计算用整文件复制比用远程文件访问运行得快。 缺点:异构机器间实现较难,客户和服务器必须就访问授权、文件所有者和访问保护的观念以及数据格式达成一致。 第五节 文件传输与访问
第五节 文件传输与访问 由于异构机器间,各种表示之间、以及处理各种表示的技术之间有详细的区别,可能使得反向转换无法进行,因此整文件复制尤其重要! 例如:两台浮点数表示和文本文件表示都不同的机器A和B间的文件复制。 不可能将一台机器的浮点格式不丧失精确度地转换为另一台机器上的格式; 对于文本文件,假设系统A存储文件允许各行长度可变,而系统B要求必须将文本行填充为定长的;从系统A把文件传输到系统B时需要填充每行文本,从而使得最终的副本与原文件不同;然而,在从B传回A时,又要从每一行末尾自动去掉填充字符,这也会使副本与原先每行有填充字符的文件不同。 几点注意: 以上各种详细区别与计算机系统有关; 不是所有的表示差异都是可适应的,数据从一种表示转换为另一种表示时可能有丢失现象; TCP/IP是为异构环境设计的,牢记这一点将有助于解释TCP/IP文件传输协议的一些特征。
第五节 文件传输与访问 7.5.2 文件传输协议FTP(File Transfer Protocol) 文件传输是最常用的TCP/IP应用之一,它的使用导致了大量的网络通信量。 起源:由早期的ARPANET中的标准文件传输协议版本发展而成。 FTP提供的、超出自身传输功能的设施: 交互访问,大多数实现提供了一个交互接口,使得用户更容易与远程系统交互。 例如,一个用户可能请求列出远程机器上某个目录中的所有文件,或通过显示可调用命令的有关用户信息,来响应用户输入的“help”。 格式(表示)规范,允许客户指定存储数据的类型和格式。 例如,用户可指明一个文件是包含文本还是二进制整数,以及文本文件是使用ASCII字符集还是EBCDIC字符集。 鉴别控制(Authentication Control),需要客户在请求文件传输前把登录名和口令发送给服务器,以获得访问许可。
大多数FTP服务器实现允许多个客户的并发访问!大多数FTP服务器实现允许多个客户的并发访问! 客户和服务器通常创建一个单独的进程来处理数据传输! 客户使用TCP边接到服务器 一个主服务器进程等待连接 主服务器进程为处理每个连接建立各个从进程(slave process) 从进程不完成所有心要的计算,只接受和处理来自客户的控制连接 (控制连接也使用TCP作为传输协议,传输所有数据) 服务器使用一个或多个额外进程处理单独的数据传输连接 (数据传输连接也使用TCP作为传输协议,传输所有数据)