1、第12章 HTTP协议,第12章 HTTP协议,12.1 超文本和URL 12.1.1 超文本 12.1.2 统一资源定位URL 12.2 HTML简介 12.2.1 超文本文档结构 12.2.2 HTML中常用标签 12.3 HTTP协议概述 12.3.1 HTTP协议的工作模式 12.3.2 HTTP协议特点 12.4 HTTP请求和应答 12.4.1 请求消息 12.4.2 应答消息 12.4.3 首部字段 12.5 浏览器,12 HTTP(文本传输协议),HTTP是万维网协会和Internet工作小组合作的结果,发布最著名的就是RFC 2616,定义了今天普遍使用的一个版本HTTP 1
2、.1。 HTTP是一个客户端和服务器端请求和应答的标准,也叫超文本转移协议。通过使用浏览器等其它的工具,客户端发起一个到服务器上指定端口(80)的HTTP请求。调用服务器上存储着HTML文件和图像等一些资源,用于从WWW服务器传输超文本到本地浏览器的传送协议。,12 HTTP(文本传输协议),因为浏览器使用HTTP协议,所以只要在地址栏里输入网站的地址,如, www .*.com/china/index.htm,就会自动出现:http:/www .*.com/china/index.htm。它的含义如下: 1. http:/:代表超文本转移协议,通知*.com服务器显示Web页,通常不用输入;
3、 2. www:代表一个Web(万维网)服务器; 3. *.com/:这是装有网页的服务器的域名,或站点服务器的名称; 4. China/:为该服务器上的子目录,就好像我们的文件夹; 5. Index.htm:是文件夹中的一个HTML文件(网页)。 HTM与HTML没有本质意义的区别,是因为DOS的8.3的文件名规定。,12 HTTP(文本传输协议),万维网的出现,使因特网变为普通百姓也能利用的信息资源。 万维网是一个分布式的超文本系统。 万维网以客户/服务器方式工作。传输层是TCP连接。,12 HTTP(文本传输协议),客户端向服务器发送一个请求,请求头包含请求的方法、URL、协议版本、以及
4、包含请求修饰符、客户信息和内容的类似于MIME的消息结构。服务器相应的内容包括消息协议的版本,成功或者错误编码加上包含服务器信息、实体元信息以及可能的实体内容。 请求消息和响应消息都由一个起始行,一个或者多个头域,一个指示头域结束的空行和可选的消息体组成。总体就是头部与实体!HTTP的头域包括通用头,请求头,响应头和实体头四个部分。每个头域由一个域名,冒号(:)和域值三部分组成。域名是大小写无关的,域值前可以添加任何数量的空格符,头域可以被扩展为多行,在每行开始处,使用至少一个空格或制表符。,12 HTTP(文本传输协议),通用头域通用头域是请求和响应消息都支持的头域,包含Cache-Cont
5、rol、Connection、Date、Pragma、Transfer-Encoding、Upgrade、Via。对通用头域的扩展要求通讯双方都支持此扩展,如果存在不支持的通用头域,一般将会作为实体头域处理。下面简单介绍几个使用的通用头域(了解)。,12 HTTP(文本传输协议),Cache-Control头域Cache-Control指定请求和响应遵循的缓存机制。在请求消息或响应消息中设置Cache-Control并不会修改另一个消息处理过程中的缓存处理过程。请求时的缓存指令包括no-cache、no-store、max-age、max-stale、min-fresh、only-if-cac
6、hed,响应消息中的指令包括public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age。各个消息中的指令含义如下: Public指示响应可被任何缓存区缓存。 Private指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的部分响应消息,此响应消息对于其他用户的请求无效。 no-cache指示请求或响应消息不能缓存。 no-store用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。 max-age指示客户机可以接收
7、生存期不大于指定时间(以秒为单位)的响应。 min-fresh指示客户机可以接收响应时间小于当前时间加上指定时间的响应。 max-stale指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以接收超出超时期指定值之内的响应消息。,12 HTTP(文本传输协议),Host头域指定请求资源的Intenet主机和端口号,必须表示请求urL(uniform resource location,统一资源定位符或统一资源定位器)的原始服务器或网关的位置。HTTP/1.1请求必须包含主机头域,否则系统会以400状态码返回。 Referer头域允许客户端指定请求uri(
8、uniform resource identifier,统一资源标志符) 的源资源地址,这可以允许服务器生成回退链表,可用来登陆、优化cache等。他也允许废除的或错误的连接由于维护的目的被追踪。如果请求的uri没有自己的uri地址,Referer不能被发送。如果指定的是部分uri地址,则此地址应该是一个相对地址。 Range头域可以请求实体的一个或者多个子范围。例如,表示头500个字节:bytes=0-499;表示第二个500字节:bytes=500-999;表示最后500个字节:bytes=-500;同时指定几个范围:bytes=500-600,601-999。但是服务器可以忽略此请求头,
9、如果无条件GET包含Range请求头,响应会以状态码206(PartialContent)返回而不是以200(OK)。 URI与URL:URI就是一种资源定位机制,它是比较笼统地定位了资源,并不局限于客户端和服务器,而URL就定位了网上的一切资源,只要是网上的资源,都有唯一的URL.,12 HTTP(文本传输协议),User-Agent头域(内容包含发出请求的用户信息) 响应消息:第一行的格式:HTTP-Version SP Status-Code SP Reason-Phrase CRLF。HTTP-Version表示支持的HTTP版本。Status-Code是一个三个数字的结果代码,主要用
10、于机器自动识别。Reason-Phrase给Status-Code提供一个简单的文本描述,用于帮助用户理解。Status-Code的第一个数字定义响应的类别,后两个数字没有分类的作用。第一个数字可能取5个不同的值: 1xx:信息响应类,表示接收到请求并且继续处理 2xx:处理成功响应类,表示动作被成功接收、理解和接受 3xx:重定向响应类,为了完成指定的动作,必须接受进一步处理 4xx:客户端错误,客户请求包含语法错误或者是不能正确执行 5xx:服务端错误,服务器不能正确执行一个正确的请求 响应头域允许服务器传递不能放在状态行的附加信息,这些域主要描述服务器的信息和Request-URI进一步
11、的信息。响应头域包含Age、Location、Proxy-Authenticate、Public、Retry-After、Server、Vary、Warning、WWW-Authenticate。对响应头域的扩展要求通讯双方都支持,如果存在不支持的响应头域,一般将会作为实体头域处理。,12 HTTP(文本传输协议),User-Agent头域(续)典型的响应消息: HTTP/1.0 200 OK Date:Mon,31Dec200104:25:57GMT Server:Apache/1.3.14(Unix) Content-type:text/html Last-modified:Tue,17A
12、pr200106:46:28GMT Etag:“a030f020ac7c01:1e9f“ Content-length:39725426 Content-range:bytes55*/40279980 上例第一行表示HTTP服务端响应一个GET方法。Server响应头,包含处理请求的原始服务器的软件信息。此域能包含多个产品标识和注释,产品标识一般按照重要性排序。,12 HTTP(文本传输协议),实体请求消息和响应消息都可以包含实体信息,实体信息一般由实体头域和实体组成。实体头域包含关于实体的原信息,实体头包括Allow、Content-Base、Content-Encoding、Content
13、-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定义。,12 HTTP(文本传输协议),Content-Type实体头Content
14、-Type实体头用于向接收方指示实体的介质类型,指定HEAD方法送到接收方的实体介质类型,或GET方法发送的请求介质类型Content-Range实体头 Content-Range实体头用于指定整个实体中的一部分的插入位置,也指示了整个实体的长度。在服务器向客户返回一个部分响应,它必须描述响应覆盖的范围和整个实体长度。一般格式: Content-Range:bytes-unit SP first-byte-pos-last-byte-pos/entity-legth 例如,传送头500个字节次字段的形式:Content-Range:bytes0-499/1234Last-modified实体头
15、该实体头指定服务器上保存内容的最后修订时间。,12 HTTP(文本传输协议),协议结构请求报文格式如下:请求行 通用信息头 请求头 实体头 报文主体。请求行以方法字段开始,后面分别是 URL 字段和 HTTP 协议版本字段,并以 CRLF 结尾。SP 是分隔符。除了在最后的 CRLF 序列中 CF 和 LF 是必需的之外,其他都可以不要。应答报文格式如下:状态行 通用信息头 响应头 实体头 报文主体。状态码元由3位数字组成,表示请求是否被理解或被满足。原因分析是对原文的状态码作简短的描述,状态码用来支持自动操作,而原因分析用来供用户使用。客户机无需用来检查或显示语法。,12 HTTP(文本传输
16、协议),工作原理一次HTTP操作称为一个事务,其工作过程可分为四步: 1、首先客户机与服务器需要建立连接。只要单击某个超级链接,HTTP的工作就开始了。 2、建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。 3、服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。 4、客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。,12 HTTP(文本传输协议
17、),如果在以上过程中的某一步出现错误,那么产生错误的信息将返回到客户端,由显示屏输出。对于用户来说,这些过程是由HTTP自己完成的,用户只要用鼠标点击,等待信息显示就可以了。 此过程就好像我们打电话订货一样,可以打电话给商家,告诉我们需要什么规格的商品,然后商家再告诉什么商品有货,什么商品缺货。这些,是通过电话线用电话联系(HTTP是通过TCP/IP)。,12.1 超文本和URL,万维网的大致工作过程如图12-2所示。,12.1 超文本和URL,超文本:文挡中除了基本信息外,还有可以指向信息集合中其他文挡的指针,使用html语言。 统一资源定位:http:/ 超文本和URL,HTTP客户与HT
18、TP服务器之间的每次交互都由一个ASCII码串构成的请求和一个“类MIME (即RFC 822 MIME-like)”的响应组成。用户浏览页面的方法有两种:一种方法是在浏览器的Location窗口中键入所要找的页面的URL。另一种方法是在某一个页面中用鼠标点击一个可选部分,这时浏览器自动在因特网上找到所要链接的页面。,12.2 HTML简介,超文本标记语言HTML (HyperText Markup Language)中的Markup的意思就是“设置标记”。因此HTML也常译为超文本置标语言。当浏览器从服务器读取某个页面的HTML文档后,就按照HTML文档中的各种标签,根据浏览器所使用的显示器
19、的尺寸和分辨率大小,重新进行排版并恢复出所读取的页面。,12.2 HTML简介,每个HTML格式文档由两个主要元素组成:首部(head)和主体(body),主体紧接在首部的后面。首部包含文档的标题(title),以及系统用来标识文档的一些其他信息。标题相当于文件名。 HTML用一对标签(即一个开始标签和一个结束标签)或几对标签来标识一个元素。元素(element)是HTML文档结构的基本组成部分。一对标签中的内容就是元素。主体部分常由若干更小的元素组成,如段落(paragraph)、表格(table)和列表(list)等。,12.2 HTML简介,12.2 HTML简介,12.3 HTTP协议
20、概述,万维网的工作过程在Internet中工作的主机要访问万维网中的某个网页时,大致要经过以下步骤:(1) 用户首先要确定网页文件所在的URL(即统一资源定位器),由URL惟一确定用户要访问的文件在Internet上的位置,如设为http:/ HTTP协议概述,(2) 浏览器(相当于客户)向DNS(域名服务器)发出请求,要求把域名转化为它所对应的IP地址。(3) DNS进行查询后,向浏览器发出应答。比如域名对应的IP地址为23.76.34.3。(4) 在查询得到网页所在的服务器IP地址后,就进入HTTP协议的工作阶段。浏览器向IP地址为23.76.34.3的主机发出与端口80建立一条TCP连接
21、的请求。80端口是服务器提供Web服务的端口。(5) 连接建立成功后,浏览器发出一条请求传输网页的HTTP命令,格式为GET/app/exam.html。,12.3 HTTP协议概述,(6) 当域名为的服务器收到请求后,向浏览器发送exam.html文件。(7) 文件发送完成后,由服务器主动关闭TCP连接。至此,HTTP的工作过程也结束了。(8) 浏览器显示收到的网页文件exam.html。(9) 如果exam.html文件中包含有图片,还要与服务器建立TCP连接以下载图片。,12.4 HTTP请求和应答,典型的HTTP协议请求报文如下(头与主体) Request-line( URI )hea
22、ders,请求行,具体请求方法,统一资源标识,用户端版本,请求消息的报文头,将头和主体空行分割,主体,12.4 HTTP请求和应答,典型的HTTP响应报文如下:Statue-line( response-code response-phrase)Headers,服务器应答状态行,版本号,状态编辑码,原因短语,12.4 HTTP请求和应答,超文本传输协议HTTP与应用实例1客户HTTP请求HTTP请求可以由多行组成,但最后一行必须是空行。HTTP/1.1最常用的请求格式为:请求方法 URL HTTP版本号请求头信息请求数据(1) 客户可用的请求方法见后表。,12.4 HTTP请求和应答,HTTP
23、请求方法,12.4 HTTP请求和应答,(2) 用户要访问Web中的某一个网页,一定要告诉浏览器三个问题:第一是该网页怎样下载到本地主机;第二是该网页在Web中的什么地方;第三是该网页的名称是什么。第一个问题其实就是下载网页使用什么协议的问题,第二个问题要求给出一个网页所在主机的地址(或域名),第三个问题要求给出网页文件名称。为此,人们定义了URL(Uniform Resource Locator,统一资源定位器),它可以很方便地描述以上三个问题,它的格式为,12.4 HTTP请求和应答,URL=协议名称+主机名(或IP地址)+目录与文件名例如:http:/ HTTP请求和应答,HTTP请求头
24、信息,(3) “HTTP版本号”常为HTTP/1.0或HTTP/1.1。(4) “请求头信息”是可选项,它用于向服务器提供客户端的其他信息。请求头信息见下表。,12.4 HTTP请求和应答,(5) 当客户使用POST或PUT请求时,由于要向服务器发送数据,所以在HTTP/1.1的请求格式中才有“请求数据”这一项。如用户输入如下请求:GET http:/ HTTP/1.1Accept: text/plainAccept: text/htmlUser-Agent: Mozilla/4.5(WinNT)则说明浏览器使用GET方法请求下载网站的home.html网页,并声明它只能接收纯文本和html数
25、据的文件,客户使用的是Mozilla/4.5(Netscape)浏览器(引擎)。,12.4 HTTP请求和应答,2服务器HTTP应答服务器在处理完客户的请求之后,要向客户发送响应消息。HTTP/1.1的响应消息格式如下:状态行响应头响应数据(1) 服务器程序响应的第一行叫状态行。状态行以HTTP版本号开始,后面跟着3位数字,它表示响应代码,如“HTTP/1.1 200 OK”。在表4-19中详细列出了这些响应代码的含义。,12.4 HTTP请求和应答,HTTP响应代码,12.4 HTTP请求和应答,(2) “响应头”是服务器向客户方提供请求文档信息或服务器的状态信息,如下表所示。,HTTP响应头,12.4 HTTP请求和应答,(3) “响应数据”表示的是如果客户方的请求包含数据,则数据放在响应头之后,并且数据与响应头之间用一行空行分隔。数据传输完成时,由服务器主动关闭连接。如果没有要传输的数据,则服务器直接关闭连接。下面例子中,显然由客户端通过浏览器提出要下载一个网页的请求,使用的方法是GET,获得的Web服务器响应见表4-21的说明。,12.4 HTTP请求和应答,HTTP响应实例,12.5 浏览器,万维网WWW (World Wide Web)并非某种特殊的计算机网络。万维网是一个大规模的、联机式的信息储藏所,英文简称为Web。图12-1说明了万维网提供分布式服务的特点。,