目录

HTTP协议精解

WEB服务器和浏览器之间的一问一答的交互过程也得遵循一定的规则,这个规则就是HTTP协议。它是TCP/IP协议集中的一个应用层协议,用于定义浏览器和WEB服务器之间交换数据过程以及数据本身的格式。现在被广泛使用的HTTP/1.1相对HTTP/1.0而言,最大的特点就是支持持续连接。

1.HTTP/1.0的会话方式:

                    建立连接,发送请求信息         
         ----------------------------------------->
  客户机                                              服务器
         <------------------------------------------
                   关闭连接,回送响应消息

每次连接只处理一个请求,即使是对同一个网站的每一个页面的访问,浏览器和WEB服务器都要建立一次单独的连接。

2.HTTP/1.1的会话方式:

                         建立连接,第1个请求信息         
         -------------------------------------------------------------------------->
                                   ............
                         发送第N请求信息         
         -------------------------------------------------------------------------->
  客户机                 回送第1次响应                                               服务器
         <--------------------------------------------------------------------------     
                                 ..............
                         回应第n次响应
         <--------------------------------------------------------------------------
                         发送关闭连接请求         
         -------------------------------------------------------------------------->          
                         关闭连接              
         <--------------------------------------------------------------------------      

HTTP/1.1 支持持久连接,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟。一个包含有许多图象的网页文件的多个请求和响应可以在一个连接中传输,但每个单独的网页文件的请求和响应仍然需要使用各自的连接,还允许客户端不用等待上一次请求结果返回就可以发送下一个请求。

HTTP消息的格式:

一个完整的请求消息包括:一个请求行、若干消息头、以及实体内容。
一个完整的响应消息包括:一个状态行、若干消息头、以及实体内容。
这在前面已经有过简单的介绍。下面对这几个部分再做个详细的解说:
1.请求行:包括三个部分,即请求方式、资源路径、以及使用的HTTP协议版本。语法如下:请求方式 资源路径 HTTP版本号<CRLF>,其中<CRLF>表示回车和换行这两个字符的组合。HTTP请求方式包括POST、GET、 HEAD、OPTIONS、DELETE、TRACE和PUT几种。常用的是前两种。
2.状态行:包括HTTP协议的版本号、一个状态码、以及对状态码进行描述的文本信息。
语法如下:HTTP版本号 状态码 原因叙述<CRLF>

使用GET和POST传递参数:

在URL地址后面可以附加一些参数,每个参数都由参数名和参数值组成,中间用=分隔,各个参数用&分隔,URL地址和整个参数之间用?分隔,如下所示:

http://www.it315.org/servlet/ParamsServlet?param1=aaa&param2=bbb

使用GET传递参数的数据量是有限的,一般限制在1KB以下。使用POST比GET要大的多。是没有限制的。但是必须设置Content=Type消息头为‘application/x-www-form-urlencoded’和设置Content-Length消息头为实体内容的长度。

响应状态码:

状态代码

通用信息头:

请求头:

响应头:

实体头:

扩展头: