Ethereal实验之HTTP

今天要做的事情是使用抓包工具Ethereal,加深一下对HTTP的理解

一、准备工作

首先我们需要的环境就是Ethereal,这个软件安装的过程中会有一些问题,这里先不讲。

安装成功之后,我们这次按照指导书中的要求来做,首先打开我们的浏览器,然后启动Ethereal,选择筛选的条件为HTTp,这样我们可以从复杂的抓包信息中筛选出只与http有关的信息,减少了工作量。然后稍微等一段时间之后开始抓包,如果直接点start可能会提示没选择interface(大概是类似于这种提示信息),这个时候从capture的interface中选择,这时候可以先观察一下,看一下哪个interface比较活跃我们就选择哪一个,然后就可以start了。在此之后我们在浏览器中输入网址,指导书中给出的是http://gaia.cs.umass.edu/ethereal-labs/HTTP-ethereal-file1.html,嗯那我们就使用这个。如果成功之后网页会有如下的提示信息:

然后在Ethereal中停止抓包 ,根据我们筛选出的信息,可以看到大概有这些:

二、包内信息

首先大概看一下在中间的解释栏都有一些什么:

大概分为五部分,和我之前看的tcp和udp的抓包信息类型差不多,那么接下来把每部分都打开来看一下吧

Frame

我们在学计算机网络的层次结构的时候学到,数据封装到链路层,也就是最下面一层的名字就是frame,这层解释下面包含了一些内容:

477 bytes on wire,477 bytes captured,也就是说链路上有的字节都被我们抓取到了,其中包含了一些有关于包的传送时间、长度、协议名称的解释

HTTP message是在TCP segment中传输的,而TCP segment是在IP datagram中传输的,而IP datagram是在以太网frame中传输的,所以在Protocols in frame中,提到了以太网协议/ip协议/tcp协议/http协议,在课上老师提到了tcp常用端口是80端口或者8080端口,这一点在最后一行也得到了证实。

Ethernet II

这里的Ethernet II是一种帧格式,可以看到这里指明了源端和目的端,分别将这两部分展开。

可以看到源端和目的端都是unicast,结合tcp的特点,是一种可靠传输,也就是源端和目的端操作的数据对象;frame,应该是明确的,所以指明了“this is a unicast frame”,而在udp传输中,目的端的frame就是multicast。

Internet Protocol

可以看到这部分包含了几种信息:版本,首部字节数,Differentiated Services Field指的是一种区分服务域,通过一种可扩展性较强的服务来保证IP的服务质量,同时指明了这种服务的长度和标识。中间的flags没太弄明白具体的作用,后面的checksum是我们在课上学过的检验和,用来检查数据的正确性的。

Transmission Control Protocol

字面理解,传输控制协议,这部分包含了什么呢?

两端的端口号,后面的number应该是一些有关建立传输的报文数据(结合tcp报文结构猜测),窗口size,还有用于检查数据正确性的校验和

修正:sequence number是tcp报文的序列号,acknowledgement number是tcp报文的确认号,与数据的可靠传输有直接关系,这部分有时间单独整理一篇博客出来吧,这里也没太弄明白

Hypertext Transfer Protocal 

嗯让我们大概看一下这部分的内容,将其中折叠的部分展开一下

所以这部分其实是由三部分组成的,分别是使用的方法、访问的路径、以及使用的http版本

get是一种请求资源的方法,结合我们前面做了一些什么呢?我们在浏览器输入了一个网址,然后对这个网址进行了访问。在课上学到,我们输入网址之后,通过域名解析获得对方服务器的ip地址,然后进行访问,对方会对我们想要的内容的数据发送过来(这里就对应到了post方法),在我们的浏览器中对这些数据进行解析,重新以网页的形式展示出来。我们使用get就是在向服务器请求资源

/*

*URI:Uniform Resource Identifier,统一资源标识符,嗯就暂且理解成路径吧

*/

后面还包括客户端的浏览器信息、可接受的编码方式、语言等

三、问题

1.http版本号我们在最后一部分涉及到了,request version也就是我们请求的版本,这时候需要结合下一条记录来看

下一条记录的意思是我们的传输是成功的,同时版本号也是http1.1,嗯我们请求的版本号是http1.1,返回的时候版本号也是HTTP1.1,而且也正常运行了,所以我的浏览器的HTTP版本号和服务器提供给我的都是1.1

2.语言的问题在最后一部分也提到了:

zh-CN是简体中文

3.双方的ip地址:以get的记录为例,source是我的ip,destination是服务器的ip

4.服务器返回给我的状态码:emmm这里应该说的就是response code吧,200代表请求成功

5.这个问题应该要查看一下回复请求的包中的信息,于是我找到了这样的一条:

看来这个时间应该就是我们要找的答案了

6.

7.这道题是要我们检查一下在包的原始数据中,是否存在一些没在中间的解释部分出现的数据,网上很多答案都说是有的,不过我还没太搞懂这个是什么意思,至少我在点击下面的部分的时候中间都有对应的语句被高亮了,嗯先留一个坑吧

发布了63 篇原创文章 · 获赞 15 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/LieberVater/article/details/89078001