《第15章 超文本传输协议.ppt》由会员分享,可在线阅读,更多相关《第15章 超文本传输协议.ppt(32页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第15章章 超文本传输协超文本传输协议议第15章 超文本传输协议15.1 统一资源定位符统一资源定位符15.2 超文本传输协议超文本传输协议15.3 一般格式一般格式15.4 HTTP请求报文请求报文15.5 HTTP响应报文响应报文15.1 统一资源定位符统一资源定位符 统一资源定位符统一资源定位符URL(Uniform Resource Locator),也称,也称Web地址,俗地址,俗称称“网址网址”。URL的完整格式有以下基本部分的完整格式有以下基本部分组成组成:协议协议+“:/”+主机域名主机域名(IP地址地址)+“:”端口端口号号+目录路径目录路径+文件名文件名1协议协议 协议是
2、指定服务连接而使用的所有访问协议,协议是指定服务连接而使用的所有访问协议,下表表示常用的协议类型。下表表示常用的协议类型。协协 议议 名名 称称功功 能能httphttp超文本文件服超文本文件服务务ftpftp文件文件传输传输服服务务Gopher(Gopher(网网际际GopherGopher协议协议)GopherGopher服服务务newsnewsUsenetUsenet新新闻组闻组服服务务telnettelnet远远程主机程主机连连接服接服务务wais(wais(广域信息广域信息查查询询系系统统)WAISWAIS服服务务器器连连接服接服务务2主机域名主机域名(IP地址地址)主机域名主机域名
3、(IP地址地址)指出指出WWW数据所在的服务器域名,数据所在的服务器域名,例如例如。3端口端口(port)服务器提供端口号表示客户访问不同资源类型,例服务器提供端口号表示客户访问不同资源类型,例如常见的如常见的WWW服务器提供端口号为服务器提供端口号为80或或8080。在。在URL中中端口号可以省略端口号可以省略,省略时连同前面的,省略时连同前面的“:”一一起省略。起省略。4目录路径目录路径(path)目录路径指明服务器上存放被请求信息的路径。目录路径指明服务器上存放被请求信息的路径。5文件名(文件名(file)文件名是客户访问页面的名称。例如文件名是客户访问页面的名称。例如index.htm
4、,页,页面名称与设计时网页的源代码名称并不要求相同,面名称与设计时网页的源代码名称并不要求相同,由服务器完成两者之间的映射。由服务器完成两者之间的映射。路径路径表示资源在主机中的位置,路径描述采表示资源在主机中的位置,路径描述采用的是用的是UNIX下的路径格式。下的路径格式。端口和路径都是可以省略的端口和路径都是可以省略的。例子:例子:http:/ 超文本传输协议超文本传输协议HTTP协议是作为一种协议是作为一种请求回答请求回答协议来实现协议来实现的。客户请求从的。客户请求从Web服务器上给他传输一页。服务器上给他传输一页。Web服务器以那一页来应答。服务器以那一页来应答。HTTP协议工作在协
5、议工作在应用层应用层。一个客户将一个请。一个客户将一个请求发送给求发送给HTTP服务器服务器(通常在通常在TCP的的80号端口号端口);HTTP服务器接受这个请求,并给客户发送服务器接受这个请求,并给客户发送一个合适的回答。一个合适的回答。实际的通讯一般不是持续连接的,并且非静态实际的通讯一般不是持续连接的,并且非静态的。当的。当HTTP服务器回答了客户的请求之后连服务器回答了客户的请求之后连接便撤销,直到发布了下一个请求。接便撤销,直到发布了下一个请求。1HTTP通信方式通信方式 HTTP为客户服务器通信提供了为客户服务器通信提供了握手方式握手方式 及及消息传送格式消息传送格式。HTTP采用
6、请求响应的握手方式,采用请求响应的握手方式,HTTP定义定义的事务处理其运作的的事务处理其运作的基本过程基本过程如下图所示:如下图所示:HTTP通信方式主要三种:通信方式主要三种:1)点对点方式点对点方式 点对点方式是最简单的传输方式,用户经过请求与源点对点方式是最简单的传输方式,用户经过请求与源服务器间通过服务器间通过HTTP建立起点对点的连接。建立起点对点的连接。2)具有中间服务器方式具有中间服务器方式 中间服务器系统充当通信中间服务器系统充当通信中继中继功能,客户发出的功能,客户发出的 请请求通过中继到达相关的服务器,同样服务器的响应求通过中继到达相关的服务器,同样服务器的响应也要通过中
7、继才能返回给客户也要通过中继才能返回给客户。3)缓存方式缓存方式 缓存方式暂时保存一定时间内的客户请求及该客户缓存方式暂时保存一定时间内的客户请求及该客户请求所对应的服务器响应,这样的缓存便于处理新请求所对应的服务器响应,这样的缓存便于处理新的客户请求,节省网络流量和当地计算资源。的客户请求,节省网络流量和当地计算资源。2.HTTP的安全性的安全性 HTTP安全性可以通过安全性可以通过加密和鉴别加密和鉴别来实现,最通常的方法是使来实现,最通常的方法是使用用安全套接字层安全套接字层(SSL)(安全套接字层是用于服务器之上的一个安全套接字层是用于服务器之上的一个加密系统,它可以确保在客户机与服务器
8、之间传输的数据仍加密系统,它可以确保在客户机与服务器之间传输的数据仍然是安全与隐密的然是安全与隐密的)。安全套接字层安全套接字层SSL工作在工作在TCP/IP的传输层和应用层之间。在的传输层和应用层之间。在客户和服务器之间的所有传输都被客户和服务器之间的所有传输都被SSL加密和解密。下图显示加密和解密。下图显示的是一个典型的的是一个典型的SSL通信顺序。通信顺序。SSL通信通信工作过程工作过程如下:如下:1)客户机发送安全客户机发送安全会话请求会话请求消息,此消息消息,此消息包括包括SSL版版本、客户机支持的密码族和客户机支持的数据压缩本、客户机支持的密码族和客户机支持的数据压缩方法等。方法等
9、。2)服务器发送服务器发送响应响应消息和服务器数字消息和服务器数字证书证书(含服务器(含服务器的公钥),的公钥),响应消息包含响应消息包含密码方法和由服务器选择密码方法和由服务器选择的数据压缩方法,以及会话标识等。如果服务器需的数据压缩方法,以及会话标识等。如果服务器需要对客户进行认证(可选),则向客户发出要对客户进行认证(可选),则向客户发出“证书请证书请求求”消息。消息中消息。消息中包含包含服务器支持的数字证书类型的服务器支持的数字证书类型的列表和可接受的认证中心的专有名称。列表和可接受的认证中心的专有名称。3)客户机()客户机(Web 浏览器)将浏览器)将验证验证服务器数字证书的服务器数
10、字证书的有效性并有效性并检查检查服务器的响应消息参数是否可以接受。服务器的响应消息参数是否可以接受。如果服务器请求客户机的证书,客户机将发送数字如果服务器请求客户机的证书,客户机将发送数字证书证书;如果;如果没有没有合适的数字证书可用,客户机将发合适的数字证书可用,客户机将发送送“没有证书没有证书”警告。如果客户机认证是警告。如果客户机认证是强制性强制性的,的,服务器将会使会话失败。服务器将会使会话失败。4)客户机发送)客户机发送“客户机密钥交换客户机密钥交换”消息。此消息消息。此消息包含随机产生的会话密钥、报文鉴别码包含随机产生的会话密钥、报文鉴别码(MAC)密钥(用服务器的公钥加密的)以)
11、密钥(用服务器的公钥加密的)以及用于加密和报文鉴别的密钥材料。及用于加密和报文鉴别的密钥材料。如果客户机发送数字证书给服务器,客户机将发如果客户机发送数字证书给服务器,客户机将发出签有客户机的专用密钥的出签有客户机的专用密钥的“证书验证证书验证”消息。消息。通过验证此消息的签名,服务器可以显式通过验证此消息的签名,服务器可以显式验证验证客户机数字证书的所有权客户机数字证书的所有权。5)服务器发送)服务器发送“已完成已完成”消息响应,消息响应,SSL 握手结握手结束。束。随后的所有的数据将被加密和解密。随后的所有的数据将被加密和解密。URL中包中包含含HTTPS:/,表明使用了安全套接字层。表明
12、使用了安全套接字层。3HTTP主要特点主要特点 1)简单简单 HTTP协议在客户与服务器连接后,要求客户必须传协议在客户与服务器连接后,要求客户必须传送的信息只是送的信息只是请求方法和路径请求方法和路径。HTTP协议规范定义的协议规范定义的几种请求方法几种请求方法,实际上常用的,实际上常用的只是其中的只是其中的GET、HEAD、POST三种。由于三种。由于HTTP简单,使得简单,使得HTTP服务器程序规模小且简单服务器程序规模小且简单,与其它,与其它协议相比协议相比时间开销小时间开销小。HTTP协议的通信速度很快,协议的通信速度很快,可以有效地处理大量请求,得到了广泛的使用。可以有效地处理大量
13、请求,得到了广泛的使用。2)无连接性无连接性 HTTP是一个无连接性协议是一个无连接性协议(HTTP 1.0),每次连接只每次连接只处理一个请求处理一个请求,并且客户接到服务器,并且客户接到服务器应答后立即断开应答后立即断开连接连接。(HTTP1.1提供对持续连接的支持提供对持续连接的支持)3)无状态性无状态性 HTTP是无状态的协议。是无状态的协议。HTTP无状态性使客户与服务器连接通信运行无状态性使客户与服务器连接通信运行速度快速度快,服务器应答也快。但是,因为无状态性,协议对事服务器应答也快。但是,因为无状态性,协议对事务处理是务处理是没有记忆没有记忆的和的和独立独立的。所以,为了满足后
14、的。所以,为了满足后续事务处理需要前面事务的有关信息的情况,这些续事务处理需要前面事务的有关信息的情况,这些前面事务的有关信息必须在协议外面保存,这便导前面事务的有关信息必须在协议外面保存,这便导致每次连接要传送较多的信息。致每次连接要传送较多的信息。4)元信息元信息 HTTP协议对所有事务处理都加了首部,我们称之为协议对所有事务处理都加了首部,我们称之为元信息,即关于信息的信息。利用元信息可以进行元信息,即关于信息的信息。利用元信息可以进行有条件的请求,或报告一次事务处理是否成功。有条件的请求,或报告一次事务处理是否成功。返回返回15.3 一般格式一般格式HTTP信息采用信息采用RFC 82
15、2的普通信息格式,信息包含的普通信息格式,信息包含请求行请求行/状态行状态行(start-line)、信息首部、信息首部(messageheader)、空行(、空行(null)和信息体)和信息体(messagebody)。请求行请求行/状态行状态行信息首部信息首部空空 行行信息行信息行1请求行请求行/状态行状态行 请求行请求行/状态行指示本报文的状态行指示本报文的请求类型请求类型或或响应的状态响应的状态等信息。在客户端发出的请求报文中指明请求类型等信息。在客户端发出的请求报文中指明请求类型(方法方法)、URL、HTTP版本号;在服务器发出的响应版本号;在服务器发出的响应报文中指明报文中指明HT
16、TP版本号和服务器执行请求的状态信版本号和服务器执行请求的状态信息。息。2信息首部信息首部 信息首部信息首部(message-header)用于在客户端和服务器之用于在客户端和服务器之间间交换附加信息交换附加信息。HTTP信息首部有信息首部有4类:类:一般首部一般首部(generalheader)请求首部请求首部(request-header)响应首部响应首部(response-header)实体首部实体首部(entity-header)信息首部每行用一个首部名信息首部每行用一个首部名-值对表示。首部值对表示。首部名和首部值用冒号分割。名和首部值用冒号分割。首部内容:首部内容:(1)一般首部一
17、般首部:一般首部是:一般首部是请求和响应中都可请求和响应中都可以出现的用于描述报文的一般信息以出现的用于描述报文的一般信息,如,如Cache-control、Connection、Date、MIME-version、Upgrade。首部名:首部值首部名:首部值首部名:首部值首部名:首部值首部名:首部值首部名:首部值(2)请求首部请求首部:仅出现在请求报文中,:仅出现在请求报文中,定义客户定义客户端的配置和客户端所期望的文档格式端的配置和客户端所期望的文档格式。如:。如:Accept 表明客户端可以接受的媒体格式表明客户端可以接受的媒体格式Accept-charset 表明客户端可以处理的字符集
18、表明客户端可以处理的字符集Accept-encoding 表明客户端可以处理的编码机制表明客户端可以处理的编码机制Accept-language 表明客户端可以接受的语言表明客户端可以接受的语言Authorization 表明客户端具有的权限表明客户端具有的权限From 表明用户的表明用户的e-mail地址地址Host 表示客户端的主机和端口号表示客户端的主机和端口号If-modified-since 如果比定义的日期新则发送文件如果比定义的日期新则发送文件If-match 如果与给定匹配则发送文件如果与给定匹配则发送文件(3)响应首部响应首部:仅出现在响应报文中,定义:仅出现在响应报文中,定
19、义服务器的配置服务器的配置和关于请求的信息和关于请求的信息。如:。如:Accept-range 服务器接受客户请求的范围服务器接受客户请求的范围Age 文档的存在时间文档的存在时间 Public 表明服务器所支持的方法列表表明服务器所支持的方法列表Retry-after 定义服务器可用的日期定义服务器可用的日期Server 服务器名和版本号服务器名和版本号(4)实体首部实体首部:给出文档主体数据的信息给出文档主体数据的信息。实体头部。实体头部主要主要出现在响应中出现在响应中,POST和和PUT类型的请求类型的请求也会使用实也会使用实体头部。体头部。HTML的书看看的书看看FORM:GET:请求
20、的数据随:请求的数据随HTTP请求头发过去请求头发过去 POST:请求的数据在请求的数据在HTTP请求头发过去之后再发过去请求头发过去之后再发过去 PUT:用于上传数据:用于上传数据 Allow 可用于可用于URL的方法列表的方法列表Content-encoding 定义编码机制定义编码机制Content-language 定义语言定义语言Content-length 表示文档的长度表示文档的长度Content-range 定义文档的范围定义文档的范围Content-type 定义媒体的类型定义媒体的类型Etag 实体标签实体标签Expires 给出实体可能变化的日期和时间给出实体可能变化的日
21、期和时间Last-modified 给出实体上次变化的日期和时间给出实体上次变化的日期和时间Location 定义产生和移动的文档的位置定义产生和移动的文档的位置3.信息体信息体(message-body)信息体是用来传递与请求或响应相关的实体的。信息体是用来传递与请求或响应相关的实体的。使用传递编码使用传递编码:信息体是经过编码的实体;:信息体是经过编码的实体;未使用传递编码未使用传递编码:信息体就是实体本身。:信息体就是实体本身。传递编码主要是用来增强保密性或让支持这种传递编码主要是用来增强保密性或让支持这种编码的接收者能正确接收。编码的接收者能正确接收。在客户的在客户的请求报文中请求报文
22、中,信息体存放,信息体存放POST、PUT等请求向服务器传送的数据;等请求向服务器传送的数据;在服务器发出的在服务器发出的响应报文中响应报文中,信息体存放服,信息体存放服务器返回的客户所请求的页面。务器返回的客户所请求的页面。返回返回15.4 HTTP请求报文请求报文在在HTTP报文中,大多数请求报文没有实体数报文中,大多数请求报文没有实体数据,请求报文的格式如图所示:据,请求报文的格式如图所示:常用的常用的HTTP请求的请求的方法方法有有GET、HEAD、PUT、POST、DELETE、LINK、UNLINK七七种方法,其中种方法,其中GET、HEAD、POST方法被大方法被大多数服务器支持
23、。多数服务器支持。1)GET方法方法 GET方法的目的是取回由方法的目的是取回由URL指定的资源。指定的资源。若对象是若对象是文件文件,则,则GET取的是文件内容;取的是文件内容;若对象是若对象是程序或描述程序或描述,则,则GET取的是该程序执行的取的是该程序执行的结果,或该描述的输出;结果,或该描述的输出;若对象是若对象是数据库查询数据库查询,则,则GET取的是查询的结果。取的是查询的结果。GET允许通过使用允许通过使用IF语句来增加附加的灵活性语句来增加附加的灵活性,即,即条件条件GET。当在。当在IF语句中的语句中的条件得到满足条件得到满足时,数据便被传输时,数据便被传输。如果。如果We
24、b页在最近没有被页在最近没有被更新,更新,HTTP客户便可以使用客户便可以使用Web页在缓冲区页在缓冲区的拷贝。这样可以充分利用网络带宽。的拷贝。这样可以充分利用网络带宽。2)HEAD方法方法 HEAD方法要求服务器方法要求服务器查找某对象的元信息查找某对象的元信息而不是对而不是对象本身,仅要求服务器返回关于文档的信息,而非象本身,仅要求服务器返回关于文档的信息,而非文档本身。例如用户想知道对象的大小,对象的最文档本身。例如用户想知道对象的大小,对象的最后一次修改的时间等。后一次修改的时间等。HEAD方法和方法和GET方法的工作非常类似,只是信息体方法的工作非常类似,只是信息体不被返回到客户那
25、里。不被返回到客户那里。3)POST方法方法 POST方法方法从客户向服务器传送数据从客户向服务器传送数据,用来请求,用来请求HTTP服务器服务器将附带的数据当作将附带的数据当作HTTP服务器一个新服务器一个新的记录来接收的记录来接收。这种方法可被用来将消息发给一个。这种方法可被用来将消息发给一个新闻组,或向新闻组,或向HTTP服务器提交一个服务器提交一个HTML表格,或表格,或者将一个记录附加到者将一个记录附加到HTTP服务器上驻留的一个数据服务器上驻留的一个数据库上去。库上去。4)PUT方法方法 PUT方法是用来请求方法是用来请求将这个请求中所发送的数将这个请求中所发送的数据储存到请求消息
26、中表明的资源处据储存到请求消息中表明的资源处。如果数据。如果数据已经存在,则此数据将被看成已存在数据的一已经存在,则此数据将被看成已存在数据的一个修改。个修改。与与POST方法的不同之处:方法的不同之处:数据的目标位置可以数据的目标位置可以规定规定。5)DELETE方法方法 DELETE方法是用来请求方法是用来请求HTTP服务器删除在服务器删除在请求消息中表明的资源。这个方法可能被人工请求消息中表明的资源。这个方法可能被人工干预或干预或HTTP服务器上的安全设置所超越。仅服务器上的安全设置所超越。仅当服务器同意删除这个资源时,才会发送一个当服务器同意删除这个资源时,才会发送一个成功应答。成功应
27、答。6)TRACE方法方法 TRACE方法用来确保方法用来确保HTTP服务器所接收到的服务器所接收到的数据是正确的。数据是正确的。TRACE的回答是实际的的回答是实际的HTTP请求,允许对请求,允许对HTTP请求进行测试和调试。请求进行测试和调试。7)CONNECT方法方法 CONNECT方法被保留为安全接口层方法被保留为安全接口层SSL隧隧道所用。道所用。信息首部可以有一个或多个行首部,每一个首部行由首部名、冒号、空格和首部值组成。返回返回15.5 HTTP响应报文HTTP响应报文一般都带有实体数据,响应报响应报文一般都带有实体数据,响应报文的格式如图所示。文的格式如图所示。1.状态行状态行
28、(status-line)响应信息中的状态行由协议响应信息中的状态行由协议版本号版本号、数字式的、数字式的状态码状态码(status-code)以及这个状态码对应的以及这个状态码对应的状态短语状态短语(Reason-Phase)组成。响应信息中,状态行以后的组成。响应信息中,状态行以后的内容均使用内容均使用MIME进行编码。进行编码。版本版本:HTTP 1.1;HTTP 1.0;HTTP 0.9状态码状态码:3位十进制数的状态编码。位十进制数的状态编码。100199 信息信息200299 成功成功300399 重定向重定向400499 客户端错客户端错500599 服务器错服务器错状态短语状态
29、短语:对状态码的文字解释。:对状态码的文字解释。HTTP1.1正正被被定定义义为为新新的的HTTP协协议议的的标标准准。一一些些新新特特性性已已被被增增加加到到最最新新版版本本的的 HTTP协协议中,包括如下这些:议中,包括如下这些:固固定定的的连连接接。HTTP1.1允允许许在在同同一一个个连连接接中中服服务务于于多多重重请请求求。此此协协议议以以前前的的实实现现方方法法要要求求为为每每一一个个在在一一个个Web页页上上嵌嵌入入的的图图像像建建立立一个独立的连接。一个独立的连接。流流水水线线技技术术。这这个个特特性性允允许许给给一一个个Web服服务务器器发发送送附附加加的的请请求求,这这可可
30、在在他他们们初初始始请请求求的的回回答答信信号号到到达达之之前前发发生生。这这将将导导致致一一个个巨巨大大的性能改进。的性能改进。缓缓冲冲区区指指针针。实实现现缓缓冲冲区区指指针针允允许许客客户户和和服服务器的缺省缓冲区算法可以被调用或优化。务器的缺省缓冲区算法可以被调用或优化。主主机机标标题题。HTTP1.1协协议议允允许许多多重重主主机机名名与与一一个个单单独独的的IP地地址址相相关关联联。这这便便除除去去了了给给一一个个驻驻留留许许多多虚虚拟拟服服务务器器的的Web服服务务器器配配置置多多个个IP地地址址的的需需要要了了。这这个个主主机机标标题题用用来来确确定定请求应该被导向哪个虚拟服务
31、器。请求应该被导向哪个虚拟服务器。PUT和和DELETE选选项项。这这些些命命令令允允许许一一个个远远程程管管理理者者通通过过使使用用一一个个标标准准的的Web浏浏览览器器来来记入或删除一些内容。记入或删除一些内容。HTTP重重定定向向。当当原原始始的的主主页页不不能能访访问问或或被被删删除除时时,这这个个特特性性允允许许一一个个管管理理者者将将一一个个用用户户重定向到一个备选的主页或重定向到一个备选的主页或Web站点。站点。本章要点本章要点超超文文本本传传输输协协议议HTTP主主要要用用于于从从WWW服服务务器器传传输输超超文本到本地浏览器。文本到本地浏览器。URL规规定定了了某某一一特特定
32、定信信息息资资源源在在WWW中中存存放放地地点点的的统统一一格格式式,即即地地址址指指针针。统统一一资资源源定定位位符符向向浏浏览览器器提提供了访问网页供了访问网页(资源资源)时需要的时需要的网页位置信息网页位置信息。URL的的完完整整格格式式由由以以下下基基本本部部分分组组成成:协协议议+“:/”+主机域名主机域名(IP地址地址)+“:”端口号端口号+目录路径目录路径+文件名。文件名。HTTP协协议议是是作作为为一一种种请请求求回回答答协协议议来来实实现现的的。客客户户请请求求Web服服务务器器上上的的一一页页,Web服服务务器器则则以以那那一一页页来来应应答答。HTTP协协议议工工作作在在
33、应应用用层层。其其实实际际的的通通信信是是非非连连接接的的,且且是是非非静静态态的的。当当HTTP服服务务器器回回答答了了客客户户的请求之后连接便撤销,直到发布了下一个请求。的请求之后连接便撤销,直到发布了下一个请求。HTTP通通信信方方式式主主要要有有:点点对对点点方方式式、中中间间服服务器方式和缓存方式三种。务器方式和缓存方式三种。HTTP具具有有简简单单、灵灵活活、无无状状态态性性、元元信信息息的的特点特点。HTTP信信息息采采用用RFC 822的的普普通通信信息息格格式式,包包含含请求行请求行/状态行、信息首部、空行和信息体。状态行、信息首部、空行和信息体。常常用用的的HTTP请请求求的的方方法法:GET、HEAD、PUT、POST等。等。在在HTTP响应报文中,响应报文中,HTTP首部与信息体之首部与信息体之间有一个空行,信息体的长度由首部决定。间有一个空行,信息体的长度由首部决定。返回返回