一、HTTP协议
1.概述
基于TCP/IP协议的应用层的协议。
规定了客户端和服务器端之间进行通信的协议。
2.基本原则
基于请求响应模型。
一次请求对应一次响应。
请求只能由客户端发出,服务器端被动的等待请求做出响应。
HTTP协议分为1.0版本和1.1版本。 两个版本中唯一的区别是,1.0版本的协议,每次都新建、销毁流,而1.1版本中,会将流持续一段时间,实现底层流的复用,较少开关流的次数,提高整体效率。
3.监测http协议
httpwatch
二、http协议详解
1、HTTP请求:
一个请求行
GET /movie/rgqwl.html HTTP/1.1
请求方式 共有七种请求方式 GET、POST、HEAD、OPTIONS、PUT、DELETE和TARCE 但是我们只用两种 GET 和 POST
GET和POST的区别: 请求参数的传输方式不同
GET 请求参数在地址后。不安全,数据量不能超过1kb(4kb)
POST 请求参数在底层流中传输。安全,没有数据量大小的限制。
请求的资源部分的名称
当前请求遵循的协议版本
若干请求头
Accept: text/html,image/* -- 通知服务器当前浏览器可以接受那些格式的数据
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 -- 和cookie相关的头
Connection: close/Keep-Alive -- 是否继续保持连接
Date: Tue, 11 Jul 2000 18:23:51 GMT -- 当前发送请求的时间
一个空行
实体内容
2、HTTP响应
一个状态行
HTTP/1.1 200 OK
当前遵循的协议
响应码 所谓的响应码就是一个3位的数字,取值为100 - 999,表示服务器对请求的处理结果。
200~299 表示服务器正确的处理了请求
300~399 表示服务器正确的处理了本次请求,但是如果想要继续执行,还需要更多的额外信息。
400~499 表示客户端的请求有问题
500~599 表示服务器端发生了问题
200 表示服务器处理成功
302 表示请求重定向
304、307 表示通知浏览器使用之前的缓存的资源
404 客户端访问的资源不存在
500 服务器处理请求出错
描述字符
若干相应头
Location: http://www.it315.org/index.jsp -- 配合302使用实现请求重定向
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.tarena.com.cn -- 定时刷新相关的头,通知浏览器,过几秒后自动刷新访问哪个地址
Content-Disposition: attachment;filename=aaa.zip -- 通知浏览器以附件的形式打开发送过去的数据,是和文件下载相关的头
Set-Cookie:SS=Q0=5Lb_nQ; path=/search -- 和Cookie相关的头
Expires: -1 -- 通知浏览器是否缓存
Cache-Control: no-cache -- 通知浏览器是否缓存
Pragma: no-cache -- 通知浏览器是否缓存
-----之所以一样功能有三个头是因为历史原因造成的。
Connection: close/Keep-Alive -- 是否保持连接
Date: Tue, 11 Jul 2000 18:23:51 GMT -- 响应时的时间
一个空行
实体内容
人生如逆旅,我亦是行人