(该文文章查阅属于整理类型,参考来源于http://www.cnblogs.com/li0803/archive/2008/11/03/1324746.html

http://www.w3cschool.cc/http/http-messages.html )

       HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准。HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。该协议的核心在于传输数据。在实现该协议的过程中,我们构建一个简单的模型(客户机_服务器)。作为web程序的理论基础,接下来我们讨论以下几个问题:协议特点,模型过程(协议原理),消息格式。

      一Http协议特点

          1 支持客户/服务器模型(见模型过程)。

          2 无连接(单连接):无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

          3 无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

      二协议模型

          在协议特点中我们提到,Http协议是支持客户/服务器模型的。这个模型过程概括为以下步骤:建立连接、发送请求信息、返回响应信息、关闭连接。

          具体过程是这样的,由Http客户端(web浏览器、网络爬虫或者类似工具)发起一个请求,建立一个到服务器指定端口(默认是80端口)的TCP连接。HTTP服务器则在那个端口坚挺客户端发送的请求。一旦收到请求,服务器返回一个状态行,比如"HTTP/1.1 200 OK", 和响应的消息,消息的消息体可能是请求的文件、错误信息,或者其它的一些信息。

         对于该模型的实现,HTTP协议制定了一些细节性的规则:建立连接需要URL,发送请求信息要符合其请求的基本格式,返回响应消息也有自己响应格式,关闭连接正式其无连接的特点。在下面我们会具体讨论这些细节。

     三HTTP协议之URL

     url是一种特殊类型的URI,包含了用于查找某个资源的足够的信息。其一般格式如下:

     http://host[":"port][abs_path]

     http表示要通过HTTP协议来定位网络资源;

     host表示合法的Internet主机域名或者IP地址;

     port指定一个端口号,为空则使用缺省端口80;

     abs_path指定请求资源的URI。如果URL中没有给出abs_path,那么当它作为请求URI时,必须以“/”的形式给出,通常这个工作浏览器自动帮我们完成。

     eg:

       (1)、输入:www.guet.edu.cn
                浏览器自动转换成:http://www.guet.edu.cn/
       (2)、http:192.168.0.116:8080/index.jsp 

      四客户端请求信息格式

       在Http协议模型中我们讨论到客户端可以和服务端发送信息。但是发送的信息必须符合一定的格式。格式如下:请求行(request line)请求头部(header)空行请求数据4个部分组成,下图给出了请求报文的一般格式。

Http协议_因特网

   现在给出以get方式发出请求的HTTP请求信息实例

GET /hello.txt HTTP/1.1
User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3
Host: 
Accept-Language: en, mi

     HTTP协议中定义了多种请求方法。

     HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。

     HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。

 Http协议_因特网_02

     五服务端响应的信息格式

     HTTP响应消息是由状态行、消息报头、空行(空格)、响应正文组成。

     Http协议_因特网_03

   五HTTP 1.0 和HTTP 1.1的区别


名字特点
HTTP 1.0每次请求_响应只能建立一个单独的连接,每次连接只能传输一个对象,效率低下。
HTTP 1.1每个TCP连接可以支持多个HTTP请求_响应,减少了建立和关闭连接的消耗和延迟

 六实现HTTP协议

   由于个人开发是侧重于java开发,所以这里浅谈j2ee技术和HTTP的渊源。

   在HTTP协议中的客户端/服务端模型中,客户端一般是浏览器,当然也有类似于客户端的工具或程序。服务端一般是web容器(比如Tomcat)。在建立连接和请求服务器资源的过程中,可能会出现请求转发,重定向及服务器路径处理的问题。同时也因此而制定了J2EE的文件目录结构。

   在分析HTTP协议时,我们发现它没有记忆能力这个时候j2ee提供了一个cookie和Session机制,保存了HTTP连接状态。

   在J2EE的API中,我们可以看到很多操作请求头和消息包头的方法。

   最后,总结一句:J2EE技术的理论基础是HTTP协议。