视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
使用网络分析软件学习HTTP协议
2025-10-02 13:59:12 责编:小OO
文档
使用网络分析软件学习HTTP协议

一、 目的

学习网络分析也有段时间了,到现在也算是逐渐入门了吧,想想自己以前刚接触时,不知道从何入手。学习网络分析,肯定要从协议入手,如果只看相关资料,这样印象不深刻,而且也没什么实战的经验,速度和效率都慢了很多。后来有高人指点了我,用网络分析软件来学习协议比较好,从此我开始了另外一种方法的学习。呵呵,自己作为一个初学者,想把自己学习的方法写出来,和大家交流交流,个人认为方法是最重要的。

TCP/IP协议族里的协议太多了,这个还的靠时间的积累:)说了这么多废话,嘿嘿!

其实应用层协议是我们经常用到的协议,比如HTTP,FTP等等,下面我们就来谈谈HTTP 协议(不看网页不可能吧-.-#),学习其他协议时可以用类似的方法,灵活变通。^o^

二、 试验环境

我们这里试验的网络环境很简单,简单描述一下:

1.网络环境:本人电脑通过代理服务器ADSL拨号上网,本机IP=19

2.168.0.92;

2.操作系统:本人电脑使用Windows XP+SP2;

3.工具(关键哟):我接触过Sniffer,OmniPeek,ethereal,科来网络分析系统,个人相对

这几种软件用的稍微熟悉的还是OmniPeek,这里我就以OmniPeek为学习工具。

三、 具体操作

我试验过程也很简单,访问网页大家都很清楚吧?我这里只是用更加深入的方式来了解访问网页的种种过程及原理,具体操作如下:

1.打开OminPeek的设置,在Filers里面设置Address filer:19

2.168.0.92和protocl filter选

择HTTP协议,如图1,

(图1 过滤器设置)

说明:通过设置图1的过滤器,我们就可以只捕获192.168.0.92使用HTTP协议的通讯了:)2.开始捕获,使用主机192.168.0.92访问网页http://www.csna.cn,抓取数据包,如图2,

(图2 抓取的数据包)

说明:呵呵,准备就绪,开始捕获,我们访问http:\\\\www.csna.cn论坛,捕获到的数据包。

四、 原理知识

使用网络分析软件进行对协议学习,并不是叫我们都抛开那些资料,那些理论原理,我这里所说的就是“结合”,了解协议的结构,工作原理,相关特征是很重要的,这时我们在通过网络分析软件来操作,就会更加明确。我们还是先介绍一下HTTP协议的工作原理吧(不要怪我罗嗦哟)。

1. TCP/IP分层结构

TCP/IP的层次结构和工作原理,我们就不详细介绍了,这里就针对HTTP进行一下说明:简单的说HTTP协议是应用层协议,通过下层传输层的TCP进行可靠连接,网络层IP选路,链路层Ethernet II,最后在物理上以位(Bit)进行传输。

应用层-------------HTTP

传输层-------------TCP

网络层-------------IP链路层-------------Ethernet II

2. HTTP协议工作方式

由于HTTP协议是基于请求/响应模式的(相当于客户机/服务器)。一个客户机与服务器建立连接后,发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。 

这个过程就好像我们打电话订货一样,我们可以打电话给商家,告诉他我们需要什么规格的商品,然后商家再告诉我们什么商品有货,什么商品缺货。这些,我们是通过电话线用电话联系(HTTP是通过TCP/IP)。 

HTTP协议的内部操作过程:基于HTTP协议的客户/服务器模式的信息交换过程,它分四个过程:建立连接、发送请求信息、发送响应信息、关闭连接。这就好像上面的例子,我们电话订货的全过程。 

其实简单说就是任何服务器除了包括HTML文件以外,还有一个HTTP驻留程序,用于响应用户请求。你的浏览器是HTTP客户,向服务器发送请求,当浏览器中输入了一个开始文件或点击了一个超级链接时,浏览器就向服务器发送了HTTP请求,此请求被送往由IP地址指定的URL。驻留程序接收到请求,在进行必要的操作后回送所要求的文件。在这一过程中,在网络上发送和接收的数据已经被分成一个或多个数据包(packet),每个数据包包括:要传送的数据;控制信息,即告诉网络怎样处理数据包。TCP/IP决定了每个数据包的格式。 

五、 数据包分析

我们现在来分析刚刚抓取的数据包,看看HTTP协议怎样进行建立连接,发送请求信息,发送响应信息,关闭连接的过程。

1. 建立连接

第1.2.3个数据包是HTTP协议使用下层TCP协议通过三次握手原则建立连接的过程,如图2所示,

(图3 建立连接)

说明:图3中选中三个数据包描述的是TCP三次握手的过程。这样我们可以知道,HTTP 通讯是发生在TCP协议之上,缺省端口是TCP的80端口,所以HTTP是一个可靠的协议。

至于三次握手原理,看解码:

上面三个图分别为前三个数据包中的TCP标记信息,反映了TCP的三次握手过程:客户端向Web服务器发送一个SYN同步连接请求,Web服务器收到请求后向客户端发送一个SYN/ACK数据包,同意客户端的连接请并向客端发起同步,客户端收到该数据包后再次确认,从而成功建立TCP连接。

2. 发送请求信息

接下来我们再来观察第四个数据包,这个是主机192.168.0.92发起的HTTP请求包,如图4,

(图4 发送请求信息)

图4中,我们从数据包解码中看到HTTP协议发送请求信息的一些特征。打开一个连接后,客户机把请求消息送到服务器的停留端口上,完成提出请求动作。

图4中的HTTP请求报文 

l HTTP Command: //方法字段,说明其使用的是GET方法

l URI: ///URL字段,发送请求至保存该网站的服务器。

l HTTP Version: //http协议版本字段,用是的http/1.1版本

l Accept: //指示可被接受的请求回应的介质类型范围列表。

l Accept-Language: //了请求回应中首选的语言为简体中文,否则使用默认值。

l Accept-Encoding: //了回应中可接受的内容编码值,指示附加内容解码方式为gzip,deflate.

l User-Agent: //定义用户代理,即发送请求的浏览器类型为Mozilla/4.0

l Host: www.csna.cn\\r\\n //定义了目标所在的主机

l Connection: Keep-Alive\\r\\n //告诉服务器使用持久连接

3. 发送响应信息

第6个数据包是服务器的响应包信息,从图4可以看出,

(图5 响应报文)

分析解码,我们可以知道这些内容: 

服务器在处理完客户的请求之后,要向客户机发送响应消息。 

图5中的HTTP回应报文 

l HTTP Version: HTTP/1.1 //服务器用的是HTTP/1.1版本

l HTTP Status: 200 //请求成功,信息可以读取,包含在响应的报文中

l Date: //指服务器从文件系统中检索到该对象,插入到响应报文,并发送该响应报文的时间

l Server: //表明刻报文是由一个Apache/2.0.52的服务器产生的

l X-Powered-By: //表明是使用PHP(版本)的动态网页

l Set- cookie: //

l Vary: //

l Content-Length: //表明实体的长度

l Connection: //告诉客户机在报文发送完毕后仍然保持连接

l Content-Type: //表明实体中的对象是html文档

l Binary Data: //二进制数据

说明:在服务器给的回应请求中,我们可以从状态码中看到访问的相关信息。

状态码表示响应类型,常用的有: 

l1××  保留 

l2××  表示请求成功地接收 

l3××  为完成请求客户需进一步细化请求 

l4××  客户错误 

l5××  服务器错误 在我们抓到的数据包中,状态码是200,表明请求是成功接受请求。 

4. 关闭连接 

最后4个数据包(52.53.54.55)就是通讯的关闭过程,建立一个连接需要进行三次握手,而终止一个连接则需要经过4次握手。这是由于TCP连接是全双工的,每个方向上都必须单独地进行关闭。4次握手实际上就是两个方向上单独关闭的过程。这里就不详细说明了, 

六、 小结

从上面的讲解,我想咱们对HTTP协议也了解了很多了吧,对照分析软件来学习是不是觉得有点不一样哇,我们在数据包解码中看到只是资料所说的有点出入。呵呵,资料上说的是不是要复杂的多,这也说明,在具体实际情况下是不同的。在这里,我们只是说说学习的思路,TCP/IP协议是非常复杂的,一个好的学习方法,使的咱们在学习其他协议的时候就能举一反三:)希望大家能谈谈自己的学习方法。大家互相交流撒。

菜青虫

2006年6月下载本文

显示全文
专题