Web服务与应用开发 PPT 4、4-1HTTP(webService学习快速入门).ppt
1,HTTP简介,定义 HTTP是什么? HTTP是怎样工作的 HTTP协议基础,2,HTTP:超文本传输协议(Hypertext Transfer Protocol),一. 定义,3,二 . HTTP是什么?,当我们想浏览一个网站的时候,只要在浏览器的地址栏里输入网站的地址就可以了,例如www.baidu.com,但是在浏览器的地址栏里面出现的却是:http://www.baidu.com ,你知道为什么会多出一个“http”吗?我们在浏览器的地址栏里输入的网站地址叫做URL (Uniform Resource Locator,统一资源定位符)。就像每家每户都有一个门牌地址一样,每个网页也都有一个Internet地址。当你在浏览器的地址框中输入一个URL或是单击一个超级链接时,URL就确定了要浏览的地址。浏览器通过超文本传输协议(HTTP),将Web服务器上站点的网页代码提取出来,并翻译成漂亮的网页。因此,在我们认识HTTP之前,有必要先弄清楚URL的组成,例如:http://www.baidu.com/china/index.htm。它的含义如下:1. http://:代表超文本传输协议,通知baidu.com服务器显示Web页,通常不用输入; 2. www:代表一个Web(万维网)服务器;3. baidu.com/:这是装有网页的服务器的域名,或站点服务器的名称; 4. China/:为该服务器上的子目录,就好像我们的文件夹;5. Index.htm:index.htm是文件夹中的一个HTML文件(网页)。,4,我们知道,Internet的基本协议是TCP/IP协议,然而在TCP/IP模型最上层的是应用层(Application layer),它包含所有高层的协议。高层协议有:文件传输协议FTP、电子邮件传输协议SMTP、域名系统服务DNS、网络新闻传输协议NNTP和HTTP协议等。,HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。这就是你为什么在浏览器中看到的网页地址都是以http://开头的原因。,当决定使用超文本作为WWW文档的标准格式后,于是在1990年,科学家们立即制定了能够快速查找这些超文本文档的协议,即HTTP协议。经过几年的使用与发展,得到不断的完善和扩展,目前在WWW中使用的是HTTP/1.0的第六版。,5,三. HTTP是怎样工作的,一次HTTP操作称为一个事务,其工作过程可分为四步:1.首先客户机与服务器需要建立连接。只要单击某个超级链接,HTTP的工作就开始了。 2.建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请 求修饰符、客户机信息和可能的内容。3.服务器接到请求后,给予相应的响应信息,其格式为一个状态行, 包括信息的协议版本号、一个成功或错误的代码,后边是MIME信 息包括服务器信息、实体信息和可能的内容。4.客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。如果在以上过程中的某一步出现错误,那么产生错误的信息将返回到客户端,由显示屏输出。对于用户来说,这些过程是由HTTP自己完成的,用户只要用鼠标点击,等待信息显示就可以了。,6,许多HTTP通讯是由一个用户代理初始化的并且包括一个申请在源服务器上资源的请求。最简单的情况可能是在用户代理和服务器之间通过一个单独的连接来完成。在Internet上,HTTP通讯通常发生在TCP/IP连接之上。缺省端口是TCP 80,但其它的端口也是可用的。但这并不预示着HTTP协议在Internet或其它网络的其它协议之上才能完成。TCP只预示着一个可靠的传输。 这个过程就好像我们打电话订货一样,我们可以打电话给商家,告诉他我们需要什么规格的商品,然后商家再告诉我们什么商品有货,什么商品缺货。这些,我们是通过电话线用电话联系(HTTP是通过TCP/IP),当然我们也可以通过传真,只要商家那边也有传真。,7,以上简要介绍了HTTP协议的宏观运作方式,下面介绍一下HTTP协议的内部操作过程。 在WWW中,“客户”与“服务器”是一个相对的概念,只存在于一个特定的连接期间,即在某个连接中的客户在另一个连接中可能作为服务器。基于HTTP协议的客户/服务器模式的信息交换过程,它分四个过程:建立连接、发送请求信息、发送响应信息、关闭连接。其实简单说就是任何服务器除了包括HTML文件以外,还有一个HTTP驻留程序,用于响应用户请求。浏览器是HTTP客户,向服务器发送请求,当浏览器中输入了一个开始文件或点击了一个超级链接时,浏览器就向服务器发送了HTTP请求,此请求被送往由IP地址指定的URL。驻留程序接收到请求,在进行必要的操作后回送所要求的文件。在这一过程中,在网络上发送和接收的数据已经被分成一个或多个数据包(packet),每个数据包包括:要传送的数据;控制信息,即告诉网络怎样处理数据包。TCP/IP决定了每个数据包的格式。如果事先不告诉你,你可能不会知道信息被分成用于传输和再重新组合起来的许多小块。,8,四. HTTP协议基础,HTTP(HyperText Transfer Protocol)是超文本传输协议的缩写,它用于传送WWW方式的数据。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求,请求头包含请求的方法、URL、协议版本、以及包含请求修饰符、客户信息和内容的类似于MIME的消息结构。服务器以一个状态行作为响应,相应的内容包括消息协议的版本,成功或者错误编码加上包含服务器信息、实体元信息以及可能的实体内容。,9,通常HTTP消息包括客户机向服务器的请求消息和服务器向客户机的响应消息。这两种类型的消息由一个起始行,一个或者多个头域,一个指示头域结束的空行和可选的消息体组成。HTTP的头域包括通用头,请求头,响应头和实体头四个部分。每个头域由一个域名,冒号(:)和域值三部分组成。域名是大小写无关的,域值前可以添加任何数量的空格符,头域可以被扩展为多行,在每行开始处,使用至少一个空格或制表符。,10,HTTP 请求,客户端通过发送HTTP请求向服务器请求资源的访问。 HTTP 请求由三部分组成 ,分别是请求行,消息报头,请求正文。,请求行以一个方法符号开头,后面跟着请求URI 和协议的版本,以CRLF作为结尾,请求行以空格分隔,除了作为结尾的CRLF外,不允许出现单独的CR或者LF字符。格式如下: Method Request-URI HTTP-Version CRLF Method 表示请求的方法,Request-URI是一个统一资源标识符,标识了要请求的资源,HTTP-Version表示请求的HTTP协议的版本,如: GET /form.html HTTP/1.1(CRLF),11,12,HTTP响应,在接受和解释请求信息后,服务器会返回一个HTTP响应消息。与HTTP请求类似,HTTP响应也是由三个部分组成,分别是:状态行,消息报头,响应正文。 状态行由协议版本,数字形式的状态代码,及相应的状态描述组成,各元素之间以空格分隔,除了结尾的CRLF(回车换行)序列外,不允许出现CR或LF字符。格式如下: HTTP-Version Status-Code Reason-Phrase CRLF HTTP-Version 表示服务器HTTP协议的版本,Status-Code表示服务器发回的响应代码,Reason-Phrase表示状态代码的文本描述,CRLF表示回车换行。 如 : HTTP/1.1 200 OK (CRLF),13,状态代码由3位数字组成,表示请求是否被理解或被满足,状态描述了给出状态码的简短的文本描述。,状态代码的第一个数字定义了响应的类别,后面两位数字没有具体的分类。第一个数字有五种可能的取值: 1XX:指示信息-表示请求已经接收,继续处理 。 2XX:成功- 表示请求已经被成功接收、理解、接受。 3XX:重定向 - 要完成请求必须进行更进一步的操作 。 4XX:客户端错误 - 请求有语法错误或请求无法实现。 5XX:服务端错误 - 服务器未能实现合法的请求。,14,HTTP响应-状态代码与状态描述 状态代码 状态描述 说明 200 ok 客户端请求成功。 400 bad request 由于客户端请求有语法错误,不能被服务器所理解。 401 unauthorized 请求未经授权。这个状态代码必须和www-authenticate报头域一起使用。 403 forbidden 服务器收到请求,但是拒绝提供服务。服务器通常会在响应中文中给出不提供服务的原因。 404 not found 请求的资源不存在,例如,输入了错误的URL,15,HTTP 消息,HTTP 消息由客户端到服务器的请求和服务器到客户端的响应组成。请求消息和响应消息都是由 开始行,消息报头(可选的),空行(只有CRLF的行),消息正文(可选的)组成。 对于请求消息,开始行就是请求行,对于响应消息,开始行就是状态行。,HTTP 消息报头包括普通报头,请求报头,响应报头,实体报头。 每一个报头域都是由名字+“:“+空格+值组成,消息报头域的名字是大小写无关的。,16,通用头域包含请求和响应消息都支持的头域,通用头域包含Cache-Control、 Connection、Date、Pragma、Transfer-Encoding、Upgrade、Via。,Cache-Control指定请求和响应遵循的缓存机制。,Date头域表示消息发送的时间。,Pragma头域用来包含实现特定的指令,最常用的是Pragma:no-cache。,17,请求头域允许客户端向服务器传递关于请求或者关于客户机的附加 信息。请求头域可能包含下列字段Accept、Accept-Charset、Accept- Encoding、Accept-Language、Authorization、From、Host、If-Modified-Since、If- Match、If-None-Match、If-Range、If-Range、If-Unmodified-Since、Max-Forwards、 Proxy-Authorization、Range、Referer、User-Agent。,Host头域指定请求资源的Intenet主机和端口号,必须表示请求url的原始服务器或网关的位置。HTTP/1.1请求必须包含主机头域,否则系统会以400状态码返回。,User-Agent头域的内容包含发出请求的用户信息。,18,响应头域允许服务器传递不能放在状态行的附加信息,这些域主要描述服务器的信息和Request-URI进一步的信息。响应头域包含Age、 Location、Proxy-Authenticate、Public、Retry-After、Server、Vary、Warning、WWW- Authenticate。,Location响应头用于重定向接收者到一个新URI地址。,Server响应头包含处理请求的原始服务器的软件信息。,19,实体信息一般由实体头域和实体组成。实体头域包含关于实体的原信息,实体头包括Allow、Content-Base、Content-Encoding、Content-Language、 Content-Length、Content-Location、Content-MD5、Content-Range、Content-Type、 Etag、Expires、Last-Modified、extension-header。extension-header允许客户端定义新的实体头,但是这些域可能无法被接受方识别。实体可以是一个经过编码的字节流,它的编码方式由Content-Encoding或Content-Type定义,它的长度由Content-Length或Content-Range定义。,20,Content-Type 实体头用于向接收方指示实体的介质类型,指定HEAD方法送到接收方的实体介质类型,或GET方法发送的请求介质类型Content-Range实体头 Content-Range实体头用于指定整个实体中的一部分的插入位置,它也指示了整个实体的长度。在服务器向客户返回一个部分响应,它必须描述响应覆盖的范围和整个实体长度。一般格式: Content-Range:bytes-unit SP first-byte-pos - last-byte-pos/entity-legth 例 如,传送头500个字节此字段的形式:Content-Range:bytes 0-499/1234如果一个http消息包含此节(例如,对范围请求的响 应或对一系列范围的重叠请求),Content-Range表示传送的范围,Content-Length表示实际传送的字节数。 Last-modified实体头指定服务器上保存内容的最后修订时间。,