这两天看了 小坦克的HTTP协议详解(http://www.cnblogs.com/TankXiao/category/415412.html )收益匪浅,之前看Cookie的时候看到一句话:Cookie是在客户端与服务器进行连接之后放入请求消息的头部发送的服务端,终于了解了什么是Head,什么是body,总结一下,以备不时之需。
1.HTTP协议是无状态协议,也就是服务端无法区分2个请求是否来自同一浏览器,来自浏览器的上一次请求和下一次请求没有任何关系。为了解决这一问题,引入了Cookie机制,通过在客户端存储一小段文本(作为客户端的标志)来辨别是否为同一客户端。
2.客户端创建完成于服务端的连接之后,会拥有一条TCP连接,至于是否在请求结束之后关闭这条连接,取决于服务器(Apache,nginx)的配置文件,apche的配置文件中为httpd.conf中keepAlive 为on 或者 为off
3.HTTP消息分为客户端到服务端的Request消息和服务器到客户端的Response消息,这2种消息的结构各分为3部分分别如下:
Request消息结构: Reponse消息结构:
请求行: Method path HTTP/version-number 响应行:HTTP/version-number 状态码 提示信息
请求头部: 响应头部:
请求主体: 响应主体:
注释:1) Request消息结构中的Method方法一般为平时所用的POST或者GET方法,POST和GET方法的区别参见:http://www.cnblogs.com/xuxu1390/articles/1080058.html
上实例,利用Chrome浏览器对http://www.cnblogs.com/进行抓包,打开Chrome,按F12按键,点击Network选项,地址栏输入http://www.cnblogs.com/,如下图:
点击Name栏的博客园网址,就能看到此次访问客户端和服务端进行Request消息和Response消息的头部信息如下:
头部中各个字段的含义参考:http://www.cnblogs.com/li0803/archive/2008/11/04/1324747.html