HTTP是 Hyper Text Transfer Protocol(超文本传输协议)的缩写,其发展是 万维网协会(World Wide Web Consortium)和Internet工作小组(Internet Engineering Task Force)合作的结果,(他们)最终发布了一系列的RFC,其中最著名的就是RFC1945和RFC 2616,即Http1.0和Http1.1。
http是一个应用层无状态协议。有时承载于SSL、TLS协议层之上,就成为https,即http安全版。
http采用了请求/响应模型。客户端向服务器发送一个请求,请求头包含请求的方法、URL、协议版本、以及包含请求修饰符、客户信息和内容的类似于MIME的消息结构。服务器以一个状态行作为响应,相应的内容包括消息协议的版本,成功或者错误编码加上包含服务器信息、实体元信息以及可能的实体内容。
一次http操作称为一个事务,其工程过程可分为四步:
(1)客户端向服务端发起请求,建立连接。
(2)连接建立后,客户端发送一个请求访问服务器资源。其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。
(3)服务器接到请求后,给予响应,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。
(4)客户端接收服务器返回的信息,通过浏览器显示出来,然后断开与服务器的连接。
http通讯是可靠的信息传输,以上过程任一步出现错误,那么产生错误的信息将返回到客户端,有显示屏输出。对于用户来说,这些过程是由 HTTP自己完成的,用户只要用鼠标点击,等待信息显示就可以了。
通常HTTP消息包括客户机向服务器的Request消息和服务器向客户机的Response消息。
Request报文格式如下:
请求行
通用信息头|请求头|实体头
CRLF(回车换行)
报文主体
其中,请求行 = 方法[空格]请求URI[空格]版本号[回车换行], 如:GET / HTTP/1.1
Response报文格式如下:
状态行
通用信息头|响应头|实体头
CRLF
报文主体
其中:状态行 = 版本号 [空格 ]状态码 [空格 ]原因 [回车换行 ],如:HTTP/1.1 200 OK
Response报文实例:
通用头域包含请求和响应消息都支持的头域,通用头域包含Cache-Control、Connection、Date、Pragma、Transfer- Encoding、Upgrade、Via。对通用头域的扩展要求通讯双方都支持此扩展,如果存在不支持的通用头域,一般将会作为实体头域处理。
host头域:指定请求资源的 Intenet主机和端口号,必须表示请求 url的原始服务器或网关的位置。
User-Agent头域:发出请求的用户信息。
实体头用坐实体内容的元信息,描述了实体内容的属性,包括实体信息类型,长度,压缩方法,最后一次修改时间,数据有效性等。
参考资料:
1. 《http_百度百科》http://baike.baidu.com/view/9472.htm
2. 《http协议学习和总结系列》http://www.blogjava.net/amigoxie/archive/2009/11/30/304317.html