资源描述
1、HTTP与WEB服务nHTTP应用层协议是Web的核心。nHTTP协议运行在客户程序和服务器程序中。不同端系统上的客户程序和服务器程序通过交换HTTP消息彼此交流。nHTTP定义Web客户(即浏览器)如何从web服务器请求Web页面,以及服务器如何把Web页面传送给客户。nWeb页面(web page,也称为文档)由多个对象构成。对象(object)仅仅是可由单个URL寻址的文件,例如HTML文件、JPG图像、GIF图像、JAVA小应用程序、语音片段等。n例如,如果一个Web页面包含HTML文本和5个JPEG图像,那么它由6个对象构成,即基本H1ML文件加5个图像。n浏览器是web的用户代理,它显示所请求的Web页面,并提供大量的导航与配置特性。Web浏览器还实现HTTP的客户端nWeb服务器存放可由URL寻址的Web对象,web服务器还实现HTTP的服务器端。、Http工作流程nHTTP客户端启动TCP连接(创建插口)到服务器,端口 80。一旦建立连接,浏览器进程和服务器进程就可以通过各自的套接字来访问。nhttp 报文(应用层协议报文)在浏览器(http client)和Web服务器(http server)之间进行交换。n客户端套接字。客户往自己的套接字发送HTTP请求消息,也从自己的套接字接收HTTP响应消息。n服务器从自己的套接字接收HTTP请求消息,也往自己的套接字发送HTTP响应消息。n关闭TCP 连接n注意:在向客户发送所请求文件的同时,服务器并没有存储关于该客户的任何状态信息。即便某个客户在几秒钟内再次请求同一个对象,服务器也不会响应说:自己刚刚给它发送了这个对象。n所以http 是“无状态(stateless)”的服务,不保留任何访问过的请求信息当用当用户请求一个求一个Web页面面(譬如譬如说点点击某个超某个超链接接)时,浏览器把器把请求求该页面中各个面中各个对象的象的HTTP请求消息求消息发送送给服服务器。服器。服务器收到器收到请求后,求后,以运送含有以运送含有这些些对象象HTTP响响应消息作消息作为响响应。、HTTP连接的类型n非持久非持久连接和持久接和持久连接接HTTP既可以使用非持久连接(nonpersistent connection),也可以使用持久连接(persistent connection)。HTTP/1.0使用非持久连接,HTTP/1.1默认使用持久连接。.1 非持久连接n非持久连接情况下从服务器到客户传送一个Web页面的步骤。假设该贝面由1个基本HTML文件和10个JPEG图像构成,而且所有这些对象都存放在同一台服务器主机中。再假设该基本HTML文件的URL为: pipelining)和带流水线(with pipelining)两个版本。如果是不带流水线的版本,那么客户只在收到前一个请求的响应后才发出新的请求。nHTTP/1.1的默认模式使用带流水线的持久连接。这种情况下,HTTP客户每碰到一个引用就立即发出一个请求,因而HTTP客户可以一个接一个紧挨着发出各个引用对象的请求。服务器收到这些请求后,也可以一个接一个紧挨着发出各个对象。3.3 流水线和非流水线方式n流水线方式指没有收到上一个请求的对象就发送新的对象的请求n非流水线方式指必须要等到上一个请求的对象到达之后再发送新的对象的请求4、HTTP消息格式消息格式nHTTP规范1.0RPcl945和HTTP1.1 RFC 2616定义了HTTP消息的格式。HTTP消息分为请求消息和响应稍息两类。4.1 HTTP请求消息求消息n下面是一个典型的HTTP请求消息:GET/somedir/page.html HTTP/1.1Host:Connection:closeUser-agent:Mozilla/4.0Accept-language:zh-cn(额外的回车符和换行符)n首先,这个消息是用普通的ASCII文本书写的。n其次,这个消息共有5行(每行以一个回车符和一个换行符结束),最后一行后面还有额外的一个回车特和换行符。n请求行求行有3个宁段:方法字段、URL字段、HTTP版本宇段。n方法字段有若干个值可供选择,包括GET、POST和HEAD。HTTP请求消息绝大多数使用GET方法,n头部行Host:定存放所请求对象的主机。n请求消息中包含头部Connection:close是在告知服务器本浏览器不想使用持久连接;服务器发出所请求的对象后应关闭连接。nUser-agent头部行指定用户代理,也就是产生当前请求的浏览器的类型。本例的用户代理是Mozilla/4.0,它是Nelscape浏览器的一个版本。HTTP请求标准格式 Request方 法URL版 本首部字段名首部行:值首部字段名值:实体主体(通常不用)请求行空格回车换行:CRLFCRLFCRLFCRLF请求报文的类型是由它所采用的方法决定的。n附属体不在GET方法中使用,而是在POST方法中使用。nPOST方法适用于需由用户填写表单的场合,如往google搜索引擎中填入待搜索的词。用户提交表单后,nHEAD方法与GET方法类似,两者的差别只是服务器在对HEAD方法的响应消息中去掉了所请求的对象,其他内容则与对GET方法的响应消息一样。HEAD方法通常用于HTTP服务器软件开发人员进行调试。4.2 HTTP响响应消息消息n下面是一个典型的HTTP响应消息:HTTP/1.1 200 0KConnectlon:closeDate:Thu,13 Oct 2005 03:17:33 GMTServer:Apache/2.0.54(Unix)LastNodified:Mon,22 Jun 1998 09;23;24 GMTContentLength:682lContentType:text/html(数据 数据 数据 数据 数据)HTTP响响应标准格式准格式 Response版 本状态码短 语首部字段名首部行:值首部字段名值:实体主体(有些响应报文不用)状态行空格回车换行:CRLFCRLFCRLFCRLF响应报文的开始行是状态行。状态行包括三项内容,即 HTTP 的版本,状态码,以及解释状态码的简单短语。开始行5 HTTP常用状态码n1xx 表示通知信息的,如请求收到了或正在进行处理。n2xx 表示成功,如接受或知道了。n3xx 表示重定向,表示要完成请求还必须采取进一步的行动。n4xx 表示客户的差错,如请求中有错误的语法或不能完成。n5xx 表示服务器的差错,如服务器失效无法完成请求。n200 0K;请求成功,所请求信息在响应消息中返回。301 Moved Permanently:所请求的对象己永久性迁移;新的URL在本响应消息的Location:头部指出。客户软件会自动请求这个新的URL。400 Bad Request;表示服务器无法理解相应请求的普通错误的状态码n404 Not Found:服务器上不存在所请求的文档。HTTP Version Not Support:服务器不支持所请求的HTTP协议版本。Cookies:保存“状态”n服务器产生一个#,服务器认识这个#,以备不时之需:n认证n记忆用户的前序访问,先前的选择n服务器在响应报文中发送“cookie”给客户端nSet-cookie:1678453n客户端可以在后继的请求中发送“cookie”ncookie:1678453clientserver普通 http 请求报文普通 http响应报文+Set-cookie:#普通 http 请求报文cookie:#普通 http响应报文普通 http 请求报文cookie:#普通 http响应报文cookie-特定的cookie-特定的Conditional GET:客户端缓存机制n目的:如果客户端缓存了最新的请求对象,则服务器不必重复发送n客户端:在http请求报文中声明所缓存拷贝的生成日期nIf-modified-since:n服务器:如果客户端缓存的拷贝是最新的,则在响应报文中不发请求的对象:nHTTP/1.0 304 Not Modifiedclientserverhttp请求报文If-modified-since:http响应报文HTTP/1.0 304 Not Modified对象未经修改http请求报文If-modified-since:http响应报文HTTP/1.1 200 OK对象已经修改用telnet测试 http(客户端操作)1.用Telnet 连接测试用的服务器:打开打开 TCP 连接到连接到 port 80(默认的默认的http 服务器端口服务器端口)位于位于 202.117.35.70后续键入的内容将发送到后续键入的内容将发送到202.117.35.70 的的 80 号端口号端口$telnet 202.117.35.70 802.键入一条 http请求报文:GET/j1010/hello.htm HTTP/1.0将该指令键入后将该指令键入后(按两次回车键按两次回车键),就就将此最短之将此最短之(但是完整的但是完整的)GET 请求发到了请求发到了 http 服务器服务器3.注意观察http服务器发回的响应报文!
展开阅读全文