2. 发送请求信息
接下来我们再来观察第四个数据包,这个是主机192.168.0.92发起的HTTP请求包,如图4,
(图4 发送请求信息)
图4中,我们从数据包解码中看到HTTP协议发送请求信息的一些特征。打开一个连接后,客户机把请求消息送到服务器的停留端口上,完成提出请求动作。
图4中的HTTP请求报文
 HTTP Command: //方法字段,说明其使用的是GET方法
 URI: / //URL字段,发送请求至保存该网站的服务器。
 HTTP Version: //http协议版本字段,用是的http/1.1版本
 Accept: //指示可被接受的请求回应的介质类型范围列表。
 Accept-Language: //限制了请求回应中首选的语言为简体中文,否则使用默认值。
 Accept-Encoding: //限制了回应中可接受的内容编码值,指示附加内容解码方式为gzip,deflate.
 User-Agent: //定义用户代理,即发送请求的浏览器类型为Mozilla/4.0
 Host: www.csna.cn\r\n //定义了目标所在的主机
 Connection: Keep-Alive\r\n //告诉服务器使用持久连接
3. 发送响应信息
第6个数据包是服务器的响应包信息,从图4可以看出,
(图5 响应报文)
分析解码,我们可以知道这些内容:
服务器在处理完客户的请求之后,要向客户机发送响应消息。
图5中的HTTP回应报文
 HTTP Version: HTTP/1.1 //服务器用的是HTTP/1.1版本
 HTTP Status: 200 //请求成功,信息可以读取,包含在响应的报文中
 Date: //指服务器从文件系统中检索到该对象,插入到响应报文,并发送该响应报文的时间
 Server: //表明刻报文是由一个Apache/2.0.52的服务器产生的
 X-Powered-By: //表明是使用PHP(版本)的动态网页
 Set- cookie: //
 Vary: //
 Content-Length: //表明实体的长度
 Connection: //告诉客户机在报文发送完毕后仍然保持连接
 Content-Type: //表明实体中的对象是html文档
 Binary Data: //二进制数据
说明:在服务器给的回应请求中,我们可以从状态码中看到访问的相关信息。
状态码表示响应类型,常用的有:
1×× 保留
2×× 表示请求成功地接收
3×× 为完成请求客户需进一步细化请求
4×× 客户错误
5×× 服务器错误
在我们抓到的数据包中,状态码是200,表明请求是成功接受请求。
4. 关闭连接
最后4个数据包(52.53.54.55)就是通讯的关闭过程,建立一个连接需要进行三次握手,而终止一个连接则需要经过4次握手。这是由于TCP连接是全双工的,每个方向上都必须单独地进行关闭。4次握手实际上就是两个方向上单独关闭的过程。这里就不详细说明了,
六、 小结
从上面的讲解,我想咱们对HTTP协议也了解了很多了吧,对照分析软件来学习是不是觉得有点不一样哇,我们在数据包解码中看到只是资料所说的有点出入。呵呵,资料上说的是不是要复杂的多,这也说明,在具体实际情况下是不同的。在这里,我们只是说说学习的思路,TCP/IP协议是非常复杂的,一个好的学习方法,使的咱们在学习其他协议的时候就能举一反三:)希望大家能谈谈自己的学习方法。大家互相交流撒。
[ 本帖最后由 菜青虫 于 2006-6-21 12:07 编辑 ] |