HTTP协议概述

什么是HTTP协议

1、HTTP协议:hypertext transfer protocol(超文本传输协议)

    规定客户端和服务器如何进行交互

    基于TCP/IP协议的应用层协议


2HTTP最基本的三个条件:

    1HTTP协议基于请求响应模型

    2一次请求对应一次响应

    3请求只能由客户端发出服务器只能被动的等待请求做出响应

 

2HTTP1.0HTTP1.1的区别

1HTTP1.0协议中,客户端与web服务器建立连接后,只能获得一个web资源。

2HTTP1.1协议,客户端与web服务器建立连接后,一个连接上获取多个web资源。

 

3、客户端请求了几次?

一个web页面中,使用img标签引用了3幅图片,当客户端访问服务器中的这个web页面时,客户端总共会访问4次服务器,即向服务器发送了4HTTP请求。


HTTP协议详解

1.HTTP请求

    客户端连上服务器后,向服务器请求某个web资源,称之为客户端向服务器发送了一个HTTP请求。

1、请求行 GET /books/java.html HTTP/1.1

[1]请求方式GET

   1.七种请求方式: POSTGETHEADOPTIONSDELETETRACEPUT

   2.真正使用的时候:POST/GET

   3. GETPOST请求区别在于请求参数在传递的过程中方式不同

     (1)GET提交请求参数将会附加在请求的URL后面作为请求地址的一部分带到服务器端传输的数据大小有限            制一般不允许超过1K.

     (2)POST提交,请求参数将会在http请求的实体内容中进行传输这种方式传输的数据没有大小限制.

   4.form表单提交数据时,form表单明确的声明要用POST提交,这时请求参数就是POST提交

   5.默认请求方式是GET提交

[2]请求的资源部分的名称books/java.html

[3] 所遵循的协议版本HTTP/1.1


2若干请求头

      Accept: */*    

      Accept-Charset: ISO-8859-1

      Accept-Encoding: gzip,compress

      Accept-Language: en-us,zh-cn

      Host: www.it315.org:80

      If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT

      Referer: http://www.it315.org/index.jsp

      User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)

      Cookie

      Connection: close/Keep-Alive   

      Date: Tue, 11 Jul 2000 18:23:51 GMT

    

3实体内容


2.HTTP响应

    一个HTTP响应代表服务器向客户端回送的数据

1状态行 HTTP/1.1 200 OK

   [1].协议版本 HTTP

   [2].状态码--用来表示本次请求的处理结果的代码

      100~199 用的少

      200 

      302 浏览器请求重定向

      304/307 使用缓存资源

      404 找不到资源

      500 

[3]原因叙述<CRLF>OK

 用文字的形式将服务端处理结果说一遍

2 若干响应头

   Location: http://www.it315.org/index.jsp

   Server:apache tomcat

   Content-Encoding: gzip

   Content-Length: 80

   Content-Language: zh-cn

   Content-Type: text/html; charset=GB2312

   Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT

   Refresh: 1;url=http://www.it315.org

   Content-Disposition: attachment;filename=aaa.zip

   Transfer-Encoding: chunked  

   Set-Cookie:SS=Q0=5Lb_nQ; path=/search

   ETag: W/"83794-1208174400000"

   Expires: -1  ----> 通知浏览器是否缓存当前资源 ,

如果这个头的值是一个以毫秒为单位值就是通知浏览器缓存资源到指定的时间点,

如果值是0-1则是通知浏览器禁止缓存

   Cache-Control: no-cache  --> 通知浏览器是否缓存资源

   Pragma: no-cache    --> 通知浏览器是否缓存资源

          三个头是一个功能,是因为历史原因.不同的浏览器对这三个头支持的不同,一般来说这三个头要同时使用确保不同的浏览器都能实现控制缓存的功能

    Connection: close/Keep-Alive   

    Date: Tue, 11 Jul 2000 18:23:51 GMT


3 实体内容

    代表服务器向客户端回送的数据