1、什么是协议
协议是指计算机通信网络中两台计算机之间进行通信必须共同遵守的规定或规则,超文本传输协议(http)是一种通信协议,它允许将超文本标记语言(HTML)是一种通信协议,它允许将超文本标记语言(HTML)文档从web服务器传送到客户端的浏览器。
2、HTTP协议是无状态的
Http协议是无状态的,同一个客户端的当前这次请求和上次请求是没有对应关系的,对http服务器来说,它并不知道这两个请求来自同一个客户端。为了解决这个问题,web程序引入了cookie机制来维护状态。
注意:
(1)http是基于请求和响应的,无状态的协议
(2)标准的http协议是哦无状态的,无连接的
a) 标准的http协议指的是不包括cookies,session,Application的http协议,他们都不属于标准协议,虽然这种网络应用提供商,实现语言、web容器等,都默认支持它。
b) 状态:客户端和服务器在临时会话中产生的数据
i. 状态不仅包括不同URL访问之间的关系,还有对其他URL访问的数据记录,还有其他的一些,因此确切说,状态应该是实现了这些东西所凭借的后面的缓存空间中的客户的临时数据。
ii. Cookie和session应该是完全实现了有状态的功能
c) 无连接
i. 每一个访问都是无连接的,服务器挨个处理访问队列里的访问,处理完一个就关闭连接,这次访问就算结束,然后处理下一个新的。
ii. 无连接的含义是限制每次连接只处理一个请求,服务器处理完客户的请求,并收到客户的应答后,即断开连接。
http协议无状态中的“状态“可参考:
http://www.cnblogs.com/bellkosmos/p/5237146.html
3、http消息的结构
(1)Request消息的结构:Request消息分为3部分,第一部分叫请求行,第二部分叫http header,第三部分是body.header和Body之间有个空行。结构图如下:
第一行中的Method表示请求方法,比如”post“,”get“,path-to-resource表示请求的资源,Http/version-number表示http协议的版本号。
(2)response消息结构:和request消息的结构基本一样。 同样也分为三部分,第一部分叫request line, 第二部分叫request header,第三部分是body. header和body之间也有个空行,结构如下图
Http/version-number表示Http协议的版本号,statues-Code(状态码)和Message(响应信息)。
4、状态码
Response消息行中的第一行叫做状态行,由Http协议版本号,状态码,状态消息三部分组成。
状态码用来告诉http客户端,http服务器是否产生了预期的Response。
http/1.1中定义了5类状态码,状态码由三位数字组成,第一数字定义了响应的类别。
1XX:提示信息——表示请求已被成功接收,继续处理
2XX:成功——表示请求已被成功接收,理解,接受
3XX:重定向——要完成请求必须进行更进一步的处理
4XX:客户端错误——请求有语法错误或请求无法实现
5XX:服务器端错误——服务器未能实现合法的请求