1、1,第2章 应用层,网络应用是计算机网络的重要功能之一。,20世纪80基于文本的电子邮件、文件传输、文本聊天等等。 20世纪90WebIP电话、视频会议等。 20世纪末:即时讯息、 P2P对等文件共享。,2,学习目标和主要内容,学习目标 网络应用的原理和实现方面的知识。 主要内容 应用层概念:应用层协议、客户机与服务器、进程、套接字和运输层接口。 应用程序:Web、电子邮件、域名系统DNS及P2P对等文件共享。 开发网络应用程序的方法:套接字API编程。,3,本章内容,2.1 应用层协议原理 2.2 Web和HTTP 2.3 FTP 2.4 电子邮件 2.5 DNS 2.6 P2P 文件共享
2、2.7 TCP的套接字 编程 2.8 UDP的套接字 编程 2.9 构建一个 Web 服务器 2.10 小结,4,流行的网络应用程序,E-mail Web 即时讯息 远程注册 P2P文件共享 多用户网络游戏 流式存储视频片段,因特网电话 实时视频会议 大规模并行计算,编制应用程序,5,网络应用程序的研发要点,写出能够分别在不同端系统运行,并通过网络相互通信的程序。 如Web应用程序,由两个可以相互通信的程序组成 浏览器程序:运行在用户主机上; Web服务器程序:运行在Web服务器主机上。 应用程序软件只在端系统运行,不需在网络核心设备上运行。 网络核心设备无应用层,只有较低层。 如图2-1。,
3、6,本节内容,2.1.1 网络应用程序体系结构 2.1.2 进程通信 2.1.3 应用层协议 2.1.4 应用所需要的服务 2.1.5 因特网运输协议提供的服务 2.1.6 本书介绍的网络应用,Web、文件传输、电子邮件、目录服务、对等文件共享等五个。,7,2.1.1 网络应用程序体系结构,应用程序体系结构:规定如何在各种端系统上组织应用程序,由研发者设计 。 三种类型: 客户机/服务器 对等 (P2P) 客户机/服务器与P2P的混合,8,1、客户机/服务器体系结构,服务器: 总是打开 为多个客户机请求提供服务 永久的IP地址 可扩展为服务器场(主机群集) 客户机: 总是打开或间歇打开 向服务
4、器发出请求 具有动态的IP地址 彼此之间不直接通信,如Web应用程序:总是打开的Web服务器为运行在客户机主机上的浏览器的请求提供服务(接收客户机请求,并发送响应结果)。,服务器响应,客户请求,9,2、纯P2P体系结构(peer-to-peer),无(最少)打开的服务器 任意端系统(对等方)可以直接通信 对等方间歇地连接,IP地址不固定 例:文件分发、因特网电话等。,可扩展度高、难以管理,10,3、客户机/服务器与P2P的混合,Napster:MP3文件共享应用程序。 P2P:对等方直接交换MP3文件 服务器注册/定位: 对等方在中心服务器上注册内容 对等方查询相同的中心服务器以定位内容 即时
5、讯息: P2P:两个用户直接聊天 服务器检测/定位: 用户在线时,向中心服务器注册其IP地址 用户联系中心服务器以找到聊天伙伴的IP地址,11,2.1.2 进程通信,进程 (process):在主机上运行的程序。 进程通信: 同一主机中两个进程间的通信:由操作系统控制; 不同主机中进程间的通信:通过网络交换报文进行。 发送进程:产生报文并向网络发送; 接收进程:接收报文,并回送报文。 如图2-1。,12,1、客户机和服务器进程,网络应用程序由成对的进程组成,并通过网络相互发送报文。如图2-1 根据功能分别标示为客户机和服务器 客户机进程:发起通信的进程。 服务器进程:等待其他进程联系的进程。
6、如Web应用程序中,一个客户机浏览器进程向某个Web服务器进程发起联系,交换报文。,13,说明:,P2P结构的应用程序也可分别看成是客户机进程或服务器进程。 如,对等方A(客户机)请求对等方B(服务器)发送某个文件。,14,2、套接字(socket),套接字:同一台主机内应用层与运输层之间的接口。 也叫应用程序和网络之间的应用程序接口API ,是在网络上建立网络应用程序的可编程接口。,应用层,运输层,15,进程与套接字关系,进程类似房子,套接字是进程的门。 进程通过套接字在网络上发送和接收报文。,具有缓存、变量的TCP,套接字,主机或服务器,具有缓存、变量的TCP,套接字,主机或服务器,因特网
7、,由操作系统控制,由应用研发者控制,发送进程:把报文推出门(套接字)。 传送报文:通过下面网络把报文传送到目的进程门口。 接收进程:通过其门(套接字)接收报文,16,说明,应用程序开发者可以控制套接字应用层端的全部; 对套接字的运输层端几乎不能控制(只能选择运输层协议、设定几个运输层参数等)。 应用程序开发者选择了一个运输层协议,则应用程序就建立在由该协议提供的运输层服务之上。如TCP协议。,17,3、进程寻址,主机上的进程可以有多个。 网络中有多个主机,每个主机上有多个进程。 进程识别信息:表示哪台主机上的哪一个进程。 源主机上的进程向目的主机上的进程发送报文时,应带有接收进程的识别信息(标
8、识)。 进程寻址: 根据进程识别信息找到相应进程。,如何识别 进程?,确定主机,确定进程,18,进程识别信息(两部分),主机名称或地址:网络中的哪一个主机。 因特网中,用IP地址标识(32位,全球惟一)。 进程的标识:主机中的哪一个进程。 因特网中,采用端口号标识(port number)。 常用的应用程序被指派固定的端口号(周知端口)。 如,Web服务进程(HTTP协议):80 邮件服务进程(SMTP协议):25 创建一个新的网络应用程序时,必须分配一个新的端口号。不重复。,19,4、用户代理(user agent),是用户与网络应用程序之间的接口。 如: Web应用的用户代理:是一些浏览器
9、软件。 一个通过套接字收发报文,并提供用户接口的进程。 电子邮件应用程序用户代理:是“邮件阅读器”。 允许用户进行邮件的撰写和阅读。,20,2.1.3 应用层协议,定义了运行在不同端系统上的应用程序进程间传递报文的格式和方式。 具体内容: 交换的报文类型:如请求报文和响应报文; 各种报文类型的语法:报文中的各个字段及描述; 字段的语义:字段包含信息的含义; 进程何时、如何发送报文及对报文进行响应的规则。,21,说明,公共领域协议:由标准文档RFC定义,如HTTP。 专用层协议:如P2P使用的协议。 应用层协议是网络应用的一部分。 如Web应用,客户机从Web服务器获得“文档”。 组成:HTML
10、、Web浏览器、Web服务器程序,以及一个应用层协议HTTP(超文本传输协议)等。 HTTP定义了在浏览器程序和Web服务器程序间传输的报文格式和序列。 其他协议:电子邮件协议SMTP等等,22,2.1.4 应用程序所需要的服务,应用程序间通信:由运输协议跨越网络将发送进程的报文传输到接收进程的门户 。 需要使用运输协议所提供的服务。 运输协议有多种,提供的服务不同。,23,应用程序需要什么样的运输服务?,可靠的数据传输(无数据丢失) 数据不能丢失的应用:如文件传输、金融事务等。 能容忍数据丢失的应用:如多媒体应用。 带宽(数据传输率) 带宽敏感的应用:需要特定的带宽才能正常工作。 如,因特网
11、电话、其他多媒体应用。 弹性应用:使用的带宽多或少影响不大。 如电子邮件、文件传输以及Web传输。 定时(数据传输的时间限制) 交互式实时应用:对时间敏感,要求时延小。如,因特网电话、视频会议以及多方游戏等。 非实时应用:时延无限制,低更好。,24,典型应用的运输服务要求,应用程序 文件传输 电子邮件 Web 文档 实时音频/视频 (因特网电话/视频会议) 存储音频/视频 交互式游戏 即时讯息,数据丢失 不能丢失 不能丢失 不能丢失 容忍丢失 容忍丢失 容忍丢失 不能丢失,带宽 弹性 弹性 弹性 音频: 5kbps-1Mbps 视频:10kbps-5Mbps 同上 几kbps以上 弹性,时间敏
12、感 不 不 不 是, 100 ms 是, 几秒 是, 100 ms 是和不是,25,2.1.5 因特网运输协议提供的服务,两个运输层协议: 用户数据报协议UDP 传输控制协议TCP 每个协议为调用它们的应用程序提供不同的服务模型。 在创建一个新的因特网应用时,要选择其中一个。,26,1、TCP服务,两个方面: 面向连接的服务: 可靠的传输服务:,27,面向连接的服务,划分三阶段 建立连接(握手过程): 客户机程序和服务器程序之间互相交换控制信息,在两个进程的套接字之间建立一个TCP连接。 传输报文: 连接是全双工的,即连接双方的进程可以在此连接上同时进行报文收发。 拆除连接: 应用程序报文发送
13、结束。,28,可靠的传输服务,通信进程可以无差错、按适当顺序交付发送的数据。 没有数据丢失和重复。,29,拥塞控制,当发送方和接收方之间的网络出现拥塞时,会抑制发送进程速率。 对整个网络有益。,30,未提供的服务,不确保最小传输速率:发送进程受拥塞控制机制制约; 不提供时延保证:数据传输的时间不确定。,TCP协议能保证交付所有的数据,但并不保证这些数据传输的速率以及期待的传输时延。 TCP协议不适合实时应用。,31,2、UDP服务,提供最小服务模式运行。 无连接:两个进程通信前没有握手过程; 不可靠数据传输:不保证报文能够被接收,或收到的报文是乱序到达。 没有拥塞控制机制:发送进程可以任何速率
14、发送数据 不提供时延保证: 适于实时应用。,32,因特网应用、应用协议与运输协议,应用 应用层协议传输协议 电子邮件 SMTP TCP 远程终端访问 Telnet TCP Web HTTP TCP 文件传输 FTP TCP 远程文件服务器 NFS UDP或TCP 流媒体 HTTP、RTP UDP或TCP 因特网电话 SIP、RTP 典型用UDP,33,2.2 Web应用和HTTP协议,产生于20世纪90年代初期。 改变了人们与工作环境内外的交流方式; 提升因特网地位; 生活和工作发生变化; 方便、快捷得到所需要的信息(按需操作); 任何人在Web上发布信息; 超链接和搜索引擎帮助人们浏览Web
15、站点。,34,本节内容,2.2.1 HTTP概况 2.2.2 HTTP连接 2.2.3 HTTP报文格式 2.2.4 用户与服务器交互:Cookie 2.2.5 HTTP内容 2.2.6 Web缓存 2.2.7 条件GET方法,35,2.2.1 HTTP概况,HTTP(超文本传输协议): 应用层协议,Web的核心。 包括两部分: 客户机程序 服务器程序 分别运行在不同的端系统中,通过交换HTTP报文进行会话。 HTTP协议定义了报文的格式以及客户机和服务器交换报文的方式。,36,Web常用术语,Web页(文档):由若干对象组成。 对象:是文件。通过一个URL地址来寻址。如HTML文件、JPEG
16、图形文件、Java小程序等。 Web页含有一个基本的HTML文件及几个引用对象。 例如,一个Web页包含HTML文本和5个JPEG图形文件(即有6个对象)。 在基本的HTML文件中,每个对象可由URL来寻址。,超文本标记语言,统一资源定位符,37,Web常用术语,URL:Uniform Resource Locator。统一资源定位符。标识万维网WWW上的各种文档,全网范围唯一。 URL地址组成: 存放对象的服务器主机名和对象的路径名。 如 http:/ www.someSchool.edu / somedepartment / picture.gif,主机名,路径名,38,Web常用术语,浏
17、览器(客户机):是Web应用的用户代理,用于显示所请求的Web页,提供导航功能和配置属性。 实现了HTTP协议的客户机端。 Web服务器:用于存贮Web对象(由URL寻址)。 实现HTTP协议的服务器端。,HTTP协议定义了Web客户机 (浏览器)如何向Web站点请求Web页,以及服务器如何将Web页传送给客户机。,39,客户机和服务器之间交互过程,客户机: 用户请求一个Web页(如点击一个超链接),浏览器向服务器发出对该页所含对象的“HTTP请求报文”。 服务器: 接受请求,回发包含请求对象的“HTTP响应报文”,40,说明,HTTP协议使用的底层运输协议是TCP。 工作过程: 创建TCP连
18、接交换报文关闭TCP连接 客户机先与服务器建立TCP连接,然后,浏览器和服务器进程通过套接字访问TCP:如图2-3 客户机:从其套接字接口发送“HTTP请求报文”和接收“响应报文”; 服务器:从其套接字口接收“HTTP请求报文”和发送“响应报文”。,41,说明,TCP提供可靠的数据传输服务:客户机进程和服务器进程发出的每个HTTP报文能完整地到达对方。 HTTP是无状态协议:服务器不保存关于客户机的任何信息。,Web使用客户机/服务器结构,Web服务器总是打开,有一个固定IP地址,为多个浏览器服务。,42,2.2.2 HTTP连接,持久HTTP连接 一个TCP连接上可以传送多个Web对象 传送
19、多个请求/相应对,非持久HTTP连接 每个TCP连接上只传送一个Web对象 只传送一个请求/相应对,默认方式下使用持久连接,43,1、非持久连接,例,客户机向服务器请求传送一个Web页: 含有一个基本HTML文件和10个JPEG图形,11个对象位于同一个服务器上。 HTML文件的URL为: http:/www.someSchool.edu/someDepartment/home.index,44,工作过程,1a. HTTP客户初始化一个与服务器主机www.someSchool.edu中HTTP服务器进程的TCP连接,2. HTTP客户发送一个HTTP请求报文 (包含URL)到TCP连接套接字,
20、 报文指明客户需要的Web对象someDepartment/home.index,1b. www.someSchool.edu服务器主机中的HTTP服务器在80端口监听来自HTTP客户的TCP连接请求,收到连接请求, 接受, 建立连接, 通知客户。,3. HTTP服务器接收请求报文, 产生一个响应报文(包含被请求对象), 并发送到其TCP连接套接字,time,TCP连接,报文传输,45,5. HTTP客户机接收包含HTML文件的响应报文,显示并解析HTML文件,发现10个引用的 jpeg对象,6. 对10个jpeg对象重复步骤15,4. HTTP服务器关闭TCP 连接,time,46,说明:,
21、每个TCP连接在服务器返回对象后关闭(非持久)。 每个TCP连接只传输一个请求报文和一个响应报文; 上例中,要建立11个TCP连接。 浏览器可同时打开多个连接: 并行的TCP连接:并行数大于1。默认打开510个。 串行的TCP连接:最大并行数为1。,47,请求一个HTML文件所需时间,即从客户机请求基本HTML文件开始,到用户收到整个文件为止所花时间。 往返时延RTT: 一个小分组从客户机到服务器,再回到客户机所花时间。 包括传播时延、排队时延以及处理时延。,48,TCP连接的“三次握手”过程 客户机发送一个TCP连接请求报文 服务器回送一个TCP确认响应报文 客户机向服务器发送一个包含“ H
22、TTP请求”与“TCP确认”的报文 总响应时间:两个RTT时延加上服务器发送文件的时间 总计 = 2RTT+文件传输时间,传输文件的时间,发起TCP 连接,RTT,请求文件,RTT,接收 文件,时间,时间,三次握手,建立TCP连接 交换报文,49,非持久连接缺点,服务器负担重:每一个请求对象建立和维护一个新的连接。 每一个对象的传输时延长:包含两个RTT时延,一个用于TCP建立,一个用于请求和接收对象。,50,2、持久连接,服务器在发送响应后保持该TCP连接: 相同客户机与服务器之间的后续请求和响应报文通过相同的连接进行传送。 如,一个Web页 的所有对象可以通过一个持久TCP连接传送。 或同
23、一服务器上的多个Web页也可以通过一个持久TCP连接传送给同一个客户机。 连接经一定时间间隔(超时间隔)未被使用,服务器就关闭该连接。,51,持久连接两种方式,非流水线方式:客户机只能在前一个响应接收到之后才能发出新的请求。 客户机为每一个引用对象的请求和接收都使用一个RTT时延。 会浪费一些服务器资源:服务器在发送完一个对象,等待下一个请求时,会出现空闲状态。,52,持久连接两种方式,流水线方式: 客户机可一个接一个连续产生请求(只要有引用就产生),即在前一个请求接收到响应之前可以产生新的请求。 服务器一个接一个连续发送相应对象。 特点: 节省RTT时延,可能所有引用对象只花费一个。 TCP
24、连接空闲时间很短。 默认方式:流水线方式的持久连接。,53,1、HTTP请求报文,客户机向服务器发送。ASCII文本形式,易读。 例:,GET /somedir/page.html HTTP/1.1 Host: www.someschool.edu User-agent: Mozilla/4.0 Connection: close Accept-language:fr (另外的回车,换行),请求行 (GET, POST, HEAD命令),首部行,回车,换行指示报文的结束,对象URL路径名,版本,对象主机,浏览器类型,非持久,方法(命令) GET:请求一个对象。 POST:提交表单(添加信息)。
25、 HEAD:请求返回对象响应报文首部,返回对象的语言,54,HTTP请求报文通用格式,请求行,首部行,实体主体,方法,版本,首部字段名,首部字段名,值,值,55,2、HTTP 响应报文,HTTP/1.1 200 OK Connection close Date: Thu, 06 Aug 1998 12:00:15 GMT 服务器: Apache/1.3.0 (Unix) Last-Modified: Mon, 22 Jun 1998 . Content-Length: 6821 Content-Type: text/html data data data data data .,状态行 (版本
26、、状态码、状态短语),首部行,实体:数据,如请求的HTML文件,请求成功,关闭连接,发送日期,对象创建或修改日期,对象长度,服务器到客户机的回答,56,HTTP响应状态码,200 OK 请求成功,请求的对象在这个报文后面 301 Moved Permanently 请求的对象已转移,新的URL在响应报文的Location:首部行中指定 400 Bad Request 请求报文不为服务器理解 404 Not Found 请求的文档没有在该服务器上发现 505 HTTP Version Not Supported 服务器不支持请求报文使用的HTTP版本,在服务器到客户机响应报文中的首行。,57,自
27、行试验HTTP (客户机侧),1. Telnet 到某个Web服务器上:,打开到位于cis.poly.edu的端口80(默认的HTTP服务器端口). 键入的任何东西将发送到位于cis.poly.edu的80端口,telnet cis.poly.edu 80,2. 键入一个GET HTTP请求:,GET /ross/ HTTP/1.1 Host: cis.poly.edu,向HTTP服务器发送最小的GET请求,3. 得到由HTTP服务器发送的响应报文!,58,2.2.4 用户与服务器交互:Cookie,HTTP服务器是无状态的,不保存客户信息。 Cookie:允许Web站点跟踪、识别用户;服务器
28、可以限制用户访问,或把内容与用户身份关联。 许多重要的Web站点使用cookies。 包括四个部分 1)在HTTP响应报文中有一个cookie 首部行 2)在HTTP请求报文中有一个cookie 首部行 3)用户主机中保留有一个 cookie 文件并由浏览器管理 4) Web站点的后端数据库保存cookie,59,例,Susan总是从相同的PC访问因特网 她首次访问一个特定的电子商务站点 当起始HTTP请求到达站点时,站点产生一个独特的ID,并为ID在后端数据库中生成一个表项,60,工作过程,客户机,服务器,普通HTTP请求报文,普通HTTP响应+ Set-cookie: 1678,特定coo
29、kie 动作,特定cookie 动作,服务器为用户生成ID 1678,后端数据库中的表项,访问,访问,Cookie file,识别码 1678,Cookie file,保存1678,Cookie file,识别码 1678,一个星期以后:,61,Cookie用途 身份认证 虚拟购物车(跟踪用户购买的物品) 推荐广告 用户会话状态 (Web e-mail) Cookie缺陷 站点可以知道用户许多信息 不利用户隐私保护,62,2.2.5 HTTP内容,传输Web页面所含对象:如HTML文件、JPEG文件、Java小应用程序等等。 可以传输其他类型的文件:如传输XML(可扩充的标识语言)文件。 P2
30、P文件共享中:作为文件传输协议使用。 用于流式存储的音频和视频。,63,2.2.6 Web缓存,Web缓存器(Web cache):也叫代理服务器。 能够代表起始服务器来满足HTTP请求的网络实体。 保存最近请求过的对象的副本。 可在客户机或服务器工作,也可在中间系统工作。 起始(原始)服务器(origin server):对象最初存放并始终保持其拷贝的服务器。,目标: 代替原始服务器满足HTTP请求。,64,使用Web缓存器,用户配置浏览器: 所有Web 访问经由缓存 浏览器向缓存发送所有HTTP请求 对象在缓存中:缓存器返回对象 不在:缓存向原始服务器发出请求,接收对象后转发给客户机,客户
31、机通过Web缓存器请求对象。,65,具体操作过程,浏览器:建立一个到缓存的TCP连接,并向缓存发送一个对该对象HTTP请求 Web缓存器:检查本地是否有该对象的拷贝。 有:就用HTTP响应报文向浏览器转发该对象,例:假设浏览器请求对象 http:/www.someschool.edu/campus.gif,66, 缓存在TCP连接上发送获取该对象的请求。 起始服务器收到请求,向缓存发送该对象的HTTP响应 缓存接收该对象,存储一份在本地中,并通过HTTP响应报文向浏览器转发该对象(通过已经建立的TCP连接)。,没有:与该对象的起始服务器打开一个TCP连接。 客户机 Web缓存器起始服务器,67
32、,说明,Web缓存器既可以是服务器也可以是客户机: 当它接收浏览器请求并发回响应时,是服务器; 当它向起始服务器发出请求并接收响应时,是客户机,68,Web缓存优点,减少客户机请求的响应时间: 客户机 Web缓存器起始服务器 高速链路 减少机构内部网络与因特网连接链路上的通信量: 降低开销,改善各种应用的性能。,69,例1,无Web缓存,包括两个网络:机构的内部网络和因特网。 机构内部网络:是一个高速的局域网。 其路由器与因特网上的路由器通过一条1.5Mbps的链路连接。 起始服务器:与因特网相连,遍布全球。,70,假设,平均对象长度为100kb 机构内浏览器对原始服务器上对象的平均请求率=
33、15/sec 机构内的HTTP报文小,忽略 从因特网路由器转发HTTP请求报文,到收到其响应报文的时间平均2s(因特网时延),71,总的响应时间,浏览器从请求一个对象到接收到的时间:三部分和 局域网时延 接入链路时延(两个路由器间) 因特网时延,72,局域网时延:与流量强度有关(比特到达率/推出率) (15请求/s)(100kb/请求)/(10Mbit/s)=0.15 强度为0.15的通信量最多数十毫秒的时延,可忽略 接入链路时延:与接入流量强度 (路由器之间)有关 (15请求/s)(100kb/请求)/(1.5Mbit/s)=1 强度接近1,链路时延非常大或无限增长。 总响应时间接入链路时延
34、+因特网时延 (分钟 +2 sec ) 请求时间长,用户难接受。,73,改进方法一,增加接入链路的速率: 如从1.5Mbps增加到10Mbps,使链路上的流量强度减少到0.15,链路时延也可以忽略了。 总响应时间=因特网时延=2秒钟 投资较大,成本昂贵。,74,改进方法二,在机构网络中安装一个Web缓存器。,Web缓存器的命中率:缓存器满足请求的比率(0.20.7)。 设命中率为0.4。,75,改进方法二,局域网时延:客户机和缓存器位于同一局域网,40%的请求几乎会立即得到响应,时延约10ms。 剩下的60%请求需要通过访问起始服务器才能满足。,100kb/10Mbps,76,接入链路时延:
35、只有60%的请求对象通过接入链路传送,流量强度从1.0减小到0.6。 通常,在1.5Mbps链路上,当流量强度小于0.8时,时延很小,可忽略。,Web缓存器减少响应时延,成本低,平均时延为: 0.4(0.01s)+0.6(0.01s+2s)=1.21s,0.01s,2s,77,2.2.7 条件GET方法,高速缓存: 减少响应时间; 存放在缓存中的对象拷贝可能是旧的。即保存在起始Web服务器中的对象可能已经被修改。 条件GET方法: 使缓存器能够证实其保存的对象是否为最新。 如果缓存中是最新对象版本,可继续使用,起始Web服务器就不需重新发送该对象。,78,条件GET方法使用,Web服务器回发响
36、应报文:包括对象的最后修改时间 Last-modified:date1 缓存检查Web服务器中的该对象是否已被修改,发送一个条件GET请求报文: If-modified-since: date1 告诉服务器,仅当自指定日期之后该对象被修改过,才发送该对象。 若Web服务器中的该对象未被修改,则响应报文含有 304 Not Modified,并且实体为空。,79,例,缓存器,服务器,304 Not Modified 实体为空,对象未修改,GET /fruit/kiwi.gif HTTP/l.1 Host:,HTTP/1.0 200 OK Last-modified:date1 ,缓存器将对象转发
37、到浏览器,并保存对象到本地(包括对象的最后修改时间)。,一周后,用户再次请求该对象(仍保留在缓存中),缓存发送一个条件GET,检查该对象是否已被修改,GET /fruit/kiwi.gif HTTP/l.1 Host: If-modified-since: date1,对象未修改,缓存可以继续使用该对象的拷贝,并转发给用户浏览器。,80,2.3 文件传输协议:FTP,本地主机上的用户,向远程主机上传或者下载文件。 用户通过一个FTP用户代理与FTP服务器交互。,上传,下载,81,文件传输过程,用户提供远程主机的主机名:在本地主机的FTP客户机进程与远程主机FTP服务器进程之间建立TCP连接;
38、提供用户标识和口令:在该TCP连接上向服务器传送。 服务器验证通过后,进行文件传送(双向): 将本地文件系统中的文件传送到远程文件系统(上传) 或从远程文件系统中得到文件(下载),82,FTP与HTTP比较,都是文件传输协议,并运行在TCP上。 FTP使用了两个并行的TCP连接: 控制连接: 数据连接:,83,控制连接,用于在两主机间传输控制信息(如用户标识、口令等) FTP会话开始前,FTP的客户机与服务器在21号端口上建立。 FTP的客户机通过该连接发送用户标识和口令,或改变远程目录的命令。,84,数据连接,用于准确传输文件。 当服务器收到一个文件传输的命令后(从远程主机上读或写),在20
39、端口发起一个到客户机的数据连接。 在该数据连接上传送一个文件并关闭连接。 控制连接是持久的:在整个用户会话期间一直保持; 数据连接是非持久的:会话中每进行一次文件传输,都需要建立一个新的数据连接。,85,FTP的控制信息是带外传送(out-of-band): 使用分离的控制连接; HTTP的控制信息是带内传输(in-band): 请求和响应都是在传输文件的TCP连接中发送。 FTP协议是有状态的: FTP服务器对每个活动用户会话的状态进行追踪,并保留;限制同时会话的总数。 HTTP协议是无状态的:不对用户状态进行追踪。,86,FTP命令, 响应,命令示例: 经控制信道以ASCII 文本发送 U
40、SER username PASS password LIST返回当前目录中的文件列表 RETR filename获取(get) 文件 STOR filename 存储 (puts)文件到远程主机,返回码示例: 状态码和短语(如在HTTP中的那样) 331 Username OK, password required 125 data connection already open; transfer starting 425 Cant open data connection 452 Error writing file,87,2.4 因特网中的电子邮件,电子邮件快速、多方接收,包含附件、超
41、链接、图像、声音、视频等等。 本节讨论电子邮件的核心,即应用层协议。,88,因特网电子邮件系统的总体结构,三部分: 用户代理 邮件服务器 简单邮件传输协议SMTP,电子邮件地址 用户邮箱名主机名,89,1、用户代理(useragent),当用户完成邮件撰写时,邮件代理向其邮件服务器发送邮件,并存放在发送队列中。 当用户想读取一条报文时,邮件代理从其邮件服务器的邮箱中获取该报文。,邮件阅读器。允许用户阅读、回复、发送、保存和撰写报文。,种类: GUI(图形用户接口):阅读和编写多媒体邮件。如Outlook、Foxmail等。,90,2、邮件服务器(mail server),邮箱:发送给用户的报文
42、。 报文队列:用户要发出的邮件报文。,邮件发送主要过程: 邮件保存到发送方报文队列 通过SMTP协议转发到接收方邮件服务器,保存到相应邮箱中 若投递失败,发送方将其保存在一个报文队列中,以后每30分钟发送一次,若几天后仍未成功,将该报文删除,并通知发送方。 用户访问自己邮箱时,邮件服务器对其身份进行验证(用户名和口令)。,91,3、简单邮件传送协议SMTP,从发送方的邮件服务器向接收方的邮件服务器发送邮件。 应用层协议。 使用TCP可靠数据传输服务。 包括两部分: 客户机端:在发送方邮件服务器上运行; 服务器端:在接收方邮件服务器上运行。 每个邮件服务器上都有SMTP的客户机端和服务器端。,9
43、2,本节内容,2.4.1 SMTP 2.4.2 SMTP与HTTP比较 2.4. 3 邮件报文格式和MIME 2.4. 4 邮件访问协议,93,2.4.1 SMTP,1) Alice启动邮件代理,提供接收方的邮件地址,撰写邮件 2) 用户代理把报文发给其邮件服务器,放在发送队列中 3) SMTP的客户机侧创建与Bob的邮件服务器的TCP连接,4) SMTP通过TCP连接发送报文 5) Bob的邮件服务器接收并将该报文放入Bob的邮箱 6) Bob调用其用户代理来读报文,1,2,3,4,5,6,把一封邮件从发送邮件服务器传送到接收邮件服务器的过程: 如Alice 向 Bob发送报文,SMTP,B
44、ob,Alice,94,2.4.1 SMTP,1) Alice启动邮件代理,提供接收方的邮件地址,撰写邮件 2) 用户代理把报文发给其邮件服务器,放在发送队列中 3) SMTP的客户机侧创建与Bob的邮件服务器的TCP连接,4) SMTP通过TCP连接发送报文 5) Bob的邮件服务器接收并将该报文放入Bob的邮箱 6) Bob调用其用户代理来读报文,1,2,3,4,5,6,把一封邮件从发送邮件服务器传送到接收邮件服务器的过程: 如Alice 向 Bob发送报文,SMTP,Bob,Alice,95,说明,客户使用TCP来可靠传输邮件报文到服务器端口号25。 建立TCP连接: 握手: 指明收发双
45、方的邮件地址 邮件报文的传输 结束:关闭TCP连接,96,SMTP不使用中间邮件服务器发送邮件,即TCP 连接是从发送方到接收方的直接相连。 如果接收方的邮件服务器没有开机,该邮件仍保留在发送方邮件服务器上,并在以后进行再次传送。邮件不会在某个中间邮件服务器停留。,97,共同点,都用于从一台主机向另一台主机传送文件 HTTP用于从Web服务器向Web客户机(浏览器)传送文件 (对象); SMTP用于从一个邮件服务器向另一个邮件服务器传送文件(电子邮件报文)。 持久HTTP和SMTP都使用持久连接。,98,区别,HTTP是拉协议:用户使用HTTP从服务器拉取信息。 其TCP连接是由想获取文件的机
46、器发起。 SMTP是推协议:发送邮件服务器把文件推向接收邮件服务器,其TCP连接是由要发送文件的机器发起。,99,区别,SMTP使用7位ASCII码格式: 对一些包含了非7位ASCII字符的报文或二进制数据(如图片、声音),需要按照7位ASCII码进行编码,再传送。 在接收方需要解码还原为原有报文。 HTTP数据没有该限制。 对含有文本和图形 (或其他媒体类型)的文档: HTTP把每个对象封装在它各自的HTTP响应报文中发送 电子邮件则把所有报文对象放在一个报文中。,100,邮件报文格式,首部行(收发人、主题) To: From: Subject: 主体 “报文”, 均为ASCII 字符,首部
47、,主体,空行,101,MIME(多用途因特网邮件扩展),SMTP只传送7位的ASCII码。 SMTP不能传送可执行文件或其他的二进制对象。 MIME:用于非ASCII数据传输。将非ASCII数据编码后传输,接收方再解码还原。 增加新的MIME邮件首部 采用某种编码,102,例:传输一个jpeg图形,多媒体数据类型, 子类型, 声明参数,使用数据编码的方法,MIME 版本,编码数据,base64编码:用于二进制文件,jpeg格式的静止图像,103,接收的报文,Received: from cress.fr by hamburger.edu;12 oct 98 15:27:39 GMT,添加一个R
48、eceived: 首部行,104,2.4.4 邮件访问协议,发送方:用户代理用SMTP将邮件推入其邮件服务器 邮件服务器再用SMTP将邮件转发到接收方的邮件服务器 接收方:通过其用户代理使用一个邮件访问协议(不是SMTP),从其邮件服务器上取回邮件。 取邮件是一个拉操作,而SMTP协议是一个推协议。,访问协议,接收方邮件服务器,105,邮件访问协议:从服务器获取邮件。 种类: POP3(第三版的邮局协议) IMAP(因特网邮件访问协议) HTTP,106,1、POP3,简单、功能有限。 在用户代理打开了一个到邮件服务器(服务器)端口110上的TCP连接后,开始工作。,107,工作步骤(三阶段):,特许阶段:用户代理发送用户名和口令获得下载邮件的特许。(身份认证) 事务处理阶段:用户代理取回报文,可对邮件进行某些操作。 如做删除标记、取消删除标记、获取统计信息等。 更新阶段:邮件服务器删除带有删除标记的报文,结束POP会话。,108,2、IMAP,POP3缺陷:用户读取邮件后,服务器不再保存。 IMAP