HTTP协议基础

HTTP协议:(hypertext transfer protocol)--超文本传输协议,是TCP/IP协议族中应用层的协议,用于定义WEB服务器间的交换数据过程及数据本身的格式。目前版本:HTTP1.0 HTTP1.1 HTTP-NG(下一代版本)
 
一、HTTP的会话方式

     HTTP/1.0:
          1、建立连接
          2、客户端发送请求
          3、服务器响应请求
          4、关闭连接
         每次连接只能处理一个http请求,如要向服务器请求一个包含多图片的网页,需要建立多次连接。
     HTTP1.1
       特点:
       1、在一个TCP连接上可以传送多个HTTP请求和响应
       2、多个请求和响应可以重叠进行,也被称作管道(pipeline)
       3、增加了更多的请求头(如:Host)和响应头
  
二、HTTP消息

    1、请求消息:
            一个请求行、若干消息头、实体内容(消息头和实体内容是可选的,他们之间用空行隔开)

            请求行:
                   格式:请求方式 资源路径 HTTP/版本号(回车换行)
                  请求方式:POST、HEAD、OPTIONS、DELETE、TRACE、PUT

           例如:
           GET/books/java.html HTTP/1.1   ---请求行
           Accept: */*         ----消息头
           Accept-Language: en-us     ----消息头
           Connection: Keep-Alive      ----消息头
           Host: localhost        ----消息头
           Referer: http://localhost/links.jsp   ----消息头
           User-Agent: Mozilla/4.0      ----消息头
           Accept-Encoding: gzip,deflate    ----消息头
                                                                     ------空行
              
   2、响应消息
           一个状态行、若干消息头、实体内容(消息头和实体内容是可选的,他们之间用空行隔开)

           状态行:
                    格式: HTTP/版本号 状态码 原因叙述(回车换行)


           例如:
           HTTP/1.1 200 OK       ---状态行
           Server: Microsoft-IIS/5.0      ----消息头
           Date: Thu,13 Jul 2000 05:44:22 GMT  ----消息头
           Content-Length: 2291      ----消息头
           Content-Type: text/html     ----消息头
           Cache-control: private      ----消息头
                                                         ------空行
           <HTML>          -----实体内容
           <BODY>
            .....
   
GET方式的请求消息中不包含实体内容,只有POST、PUT、DELETE方式的请求消息中才可以包含实体内容
在HTTP1.1中,如果消息中包括实体内容,并且没有采用chunked传输编码方式,那么消息头重必须包含内容长度的字段,否则客户端或服务器程序就无法知道实体内容何时结束。

在HTTP协议中,还可以使用简单的请求消息和响应消息。简单消息没有消息头部分,并且简单请求消息只能使用GET方式,且请求行中不包含HTTP版本号,简单响应消息中只包含实体内容
 
三、HTTP消息头:(格式:头字段名称,然后是冒号、空格、值、回车换行)
      消息头按用途的分类:通用信息头、请求头、响应头、实体头、扩展头
              1、通用信息头:既能用于请求消息也能用于响应消息
                            Cache-Control: no-cache   (是否缓存消息)
                            Connection: close (是否保持连接)
                            Date: Tue,11 Jul 2010 18:18:18 GMT
                            Pragma: no-cache  (HTTP1.0中的指示是否缓存消息)
                            Trailer: Date  (表示Date消息头在实体内容之后)
                            Transfer-Encoding: chunked  (将实体内容分段传送,并在每段内容前加上一个16进制的数字表示分段的大小,最后一个分段大小必须为0,表示实体内容结束)
              2、请求头
                              Accept: text/heml,image/*   (客户端能够接受的数据类型)
                              Accept-Charset: ISO-8859-1,unicode-1-1  (客户端能够接受的字符集编码)
                              Accept-Encoding: gzip,compress  (客户端能够解码的数据编码方式,多为压缩编码)
                              Accept-Language: en-gb,zh-cn   (客户端接受的语言种类)
                              Host: www.baidu.com:80
                              Authorization: Basic enh3ojeyMzQug
                              Range: bytes=100-600 (要求服务器端返回实体内容中100到600字节的内容,可用于断点续传)
                              Referer: http://www.baidu.com (表示该请求是从那个超连接发起)
                              User-Agent: Mozilla/4.0  (客户端浏览器种类)
               3、 实体头: 实体内容的元信息,描述了实体内容的属性。包括实体信息类型、长度、压缩方法、最后一次修改时间、数据有效期等。
                              Allow: GET,POST  (访问资源允许的方式)
                              Content-Encoding: gzip  (当前实体内容的数据压缩编码方式)
                              Content-Language: zh-cn  (当前实体内容的语言类型)
                              Content-length: 80  (实体内容的长度)
                              Content-Location: http://www.xxx.com/yyy.html  (响应内容所位于的真实位置)
                              Content-Range: bytes 100-600  (返回的部分实体内容是完整实体内容的100字节到600字节)
                              Content-Type: text/heml; charset=GB2312  (实体内容的MIME类型以及字符集编码)
                              Expires: Tue, 11 Jul 2000 18:18:18 GMT   (缓存过期时间)
                              Last_Modified: Tue, 11 Jul 2000 18:18:18 GMT   (最后更新时间)
                4、 扩展头:在HTTP消息中也可以使用规范里没有定义的头字段,既自定义HTTP头。目前流行的浏览器支持的常用扩展头有:Cookie、Set-Cookie、Refresh和Content-Disposition等
                              Refresh: 1   (在指定的时间(1S)之后进行刷新)
                              Refresh: 1; url=htp://www.xxx.com  (在指定时间后跳转到URL) 

你可能感兴趣的:(应用服务器,cache,浏览器,Microsoft,IIS)