JavaEE技术-http协议工作原理.ppt_第1页
JavaEE技术-http协议工作原理.ppt_第2页
JavaEE技术-http协议工作原理.ppt_第3页
JavaEE技术-http协议工作原理.ppt_第4页
JavaEE技术-http协议工作原理.ppt_第5页
免费预览已结束,剩余26页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

http 协议基础 梁胜彬 ,java ee技术,主讲:梁胜彬,本章要点,主讲:梁胜彬,http与web服务 http工作流程 http连接类型 http消息格式 http常用状态码,1、http与web服务,http应用层协议是web的核心。 http协议运行在客户程序和服务器程序中。不同端系统上的客户程序和服务器程序通过交换http消息彼此交流。 http定义web客户(即浏览器)如何从eb服务器请求web页面,以及服务器如何把web页面传送给客户。,主讲:梁胜彬,web页面(web page,也称为文档)由多个对象构成。对象(object)仅仅是可由单个url寻址的文件,例如html文件、jpg图像、gif图像、java小应用程序、语音片段等。 例如,如果一个web页面包含html文本和5个jpeg图像,那么它由6个对象构成,即基本html文件加5个图像。,主讲:梁胜彬,浏览器是web的用户代理,它显示所请求的web页面,并提供大量的导航与配置特性。web浏览器还实现了http的客户端。 web服务器存放可由url寻址的web对象,web服务器实现了http的服务器端。,主讲:梁胜彬,、http工作流程,http客户端启动tcp连接(创建插口) 到服务器, 端口 80。一旦建立连接,浏览器进程和服务器进程就可以通过各自的套接字来访问。 http 报文(应用层协议报文) 在浏览器 (http client) 和web服务器(http server)之间进行交换。 客户端套接字。客户往自己的套接字发送http请求消息,也从自己的套接字接收http响应消息。,主讲:梁胜彬,服务器从自己的套接字接收http请求消息,也往自己的套接字发送http响应消息。 关闭tcp 连接 注意:在向客户发送所请求文件的同时,服务器并没有存储关于该客户的任何状态信息。即便某个客户在几秒钟内再次请求同一个对象,服务器也不会响应说:自己刚刚给它发送了这个对象。 所以http 是 “无状态(stateless)”的服务,不保留任何访问过的请求信息,主讲:梁胜彬,当用户请求一个web页面(譬如说点击某个超链接)时,浏览器把请求该页面中各个对象的http请求消息发送给服务器。服务器收到请求后,以运送含有这些对象http响应消息作为响应。,主讲:梁胜彬,、http连接的类型,非持久连接和持久连接 http既可以使用非持久连接(nonpersistent connection),也可以使用持久连接(persistent connection)。http/1.0使用非持久连接,http/1.1默认使用持久连接。,主讲:梁胜彬,.1 非持久连接,非持久连接情况下从服务器到客户传送一个web页面的步骤。假设该贝面由1个基本html文件和10个jpeg图像构成,而且所有这些对象都存放在同一台服务器主机中。 再假设该基本html文件的url为:/somepath/index.html。,主讲:梁胜彬,下面是具体步骡: 1.http客户初始化一个与服务器主机中的http服务器的tcp连接。http服务器使用默认端口号80监听来自http客户的连接建立请求。 2.http客户经由与tcp连接相关联的本地套接字发出个http请求消息。这个消息中包含路径名/somepath/index.html。,主讲:梁胜彬,3.http服务器经由与tcp连接相关联的本地套接字接收这个请求消息,再从服务器主机的内存或硬盘中取出对象/somepath/index.html,经由同一个套接字发出包含该对象的响应消息。 4.http服务器告知tcp关闭这个tcp连接(不过tcp要到客户收到刚才这个响应消息之后才会真正终止这个连接)。,主讲:梁胜彬,5.http客户经由同一个套接字接收这个响应消息。tcp连接随后终止。该消息标明所封装的对象是一个html文件。客户从中取出这个文件,加以分析后发现其中有10个jpeg对象的引用。 6.给每一个引用到的jpeg对象重复步骡1-4。,主讲:梁胜彬,.2持久连接,持久连接情况下,服务器在发出响应后让tcp连接继续打开着。同一对客户/服务器之间的后续请求和响应可以通过这个连接发送。 通常,http服务器在某个连接闲置一段特定时间后关闭它,而这段时间通常是可以配置的。 持久连接分为不带流水线(without pipelining)和带流水线(with pipelining)两个版本。如果是不带流水线的版本,那么客户只在收到前一个请求的响应后才发出新的请求。,主讲:梁胜彬,http/1.1的默认模式使用带流水线的持久连接。这种情况下,http客户每碰到一个引用就立即发出一个请求,因而http客户可以一个接一个紧挨着发出各个引用对象的请求。服务器收到这些请求后,也可以一个接一个紧挨着发出各个对象。,主讲:梁胜彬,3.3 流水线和非流水线方式,流水线方式指没有收到上一个请求的对象就发送新的对象的请求 非流水线方式指必须要等到上一个请求的对象到达之后再发送新的对象的请求,主讲:梁胜彬,4、http消息格式,http规范1.0rpcl945和http1.1 rfc 2616定义了http消息的格式。http消息分为请求消息和响应稍息两类。,主讲:梁胜彬,4.1 http请求消息,下面是一个典型的http请求消息: get /somedir/page.html http/1.1 host: connection:close user-agent:mozilla/4.0 accept-language:zh-cn (额外的回车符和换行符),主讲:梁胜彬,首先,这个消息是用普通的ascii文本书写的。 其次,这个消息共有5行(每行以一个回车符和一个换行符结束),最后一行后面还有额外的一个回车特和换行符。 请求行有3个宁段:方法字段、url字段、http版本宇段。,主讲:梁胜彬,方法字段有若干个值可供选择,包括get、post和head。http请求消息绝大多数使用get方法, 头部行host:定存放所请求对象的主机。 请求消息中包含头部connection:close是在告知服务器本浏览器不想使用持久连接;服务器发出所请求的对象后应关闭连接。,主讲:梁胜彬,user-agent头部行指定用户代理,也就是产生当前请求的浏览器的类型。本例的用户代理是mozilla/4.0,它是nelscape浏览器的一个版本。,主讲:梁胜彬,http请求标准格式 request,请求报文的类型是由它所采用的方法决定的。,主讲:梁胜彬,附属体不在get方法中使用,而是在post方法中使用。 post方法适用于需由用户填写表单的场合,如往google搜索引擎中填入待搜索的词。用户提交表单后, head方法与get方法类似,两者的差别只是服务器在对head方法的响应消息中去掉了所请求的对象,其他内容则与对get方法的响应消息一样。head方法通常用于http服务器软件开发人员进行调试。,主讲:梁胜彬,4.2 http响应消息,下面是一个典型的http响应消息: http/1.1 200 0k connectlon:close date: thu, 13 oct 2005 03:17:33 gmt server: apache/2.0.54 (unix) lastnodified:mon,22 jun 1998 09;23;24 gmt contentlength:682l contenttype:text/html (数据 数据 数据 数据 数据),主讲:梁胜彬,http响应标准格式 response,版 本,状态码,短 语,首部字段名,首部行,:,值,首部字段名,值,:,实体主体 (有些响应报文不用),状态行,空格,回车换行,:,crlf,crlf,crlf,crlf,响应报文的开始行是状态行。 状态行包括三项内容,即 http 的版本,状态码,以及解释状态码的简单短语。,主讲:梁胜彬,5 http常用状态码,1xx 表示通知信息的,如请求收到了或正在进行处理。 2xx 表示成功,如接受或知道了。 3xx 表示重定向,表示要完成请求还必须采取进一步的行动。 4xx 表示客户的差错,如请求中有错误的语法或不能完成。 5xx 表示服务器的差错,如服务器失效无法完成请求。,主讲:梁胜彬,200 0k;请求成功,所请求信息在响应消息中返回。 301 moved permanently:所请求的对象己永久性迁移;新的url在本响应消息的location:头部指出。客户软件会自动请求这个新的url。 400 bad request;表示服务器无法理解相应请求的普通错误的状态码,主讲:梁胜彬,404 not found:服务器上不存在所请求的文档。 http version not support:服务器不支持所请求的http协议版本。,主讲:梁胜彬,cookies: 保存 “状态”,服务器产生一个 # , 服务器认识这个 #, 以备不时之需: 认证 记忆用户的前序访问, 先前的选择 服务器在响应报文中发送 “cookie” 给客户端 set-cookie: 1678453 客户端可以在后继的请求中发送“cookie” cookie: 1678453,client,server,普通 http 请求报文,普通 http响应报文+ set-cookie: #,cookie- 特定的,cookie- 特定的,主讲:梁胜彬,conditional get: 客户端缓存机制,目的: 如果客户端缓存了最新的请求对象,则服务器不必重复发送 客户端: 在http请求报文中声明所缓存拷贝的生成日期 if-modified-since: 服务器: 如果客户端缓存的拷贝是最新的,则在响应报文中不发请求的对象: http/1.0 304 not modified,client,server,http请求报文 if-modified-since: ,对象未经修改,http请求报文 if-modified-since: ,http响应报文 http/1.1 200 ok ,对象已 经修改,主讲:梁胜彬,用telnet测试 http (客户端操作),1. 用telnet 连接测试用的服务器:,打开 tcp 连接到 p

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论