实验9_利用wireshark分析协议HTTP

实验九 利用Wireshark分析协议HTTP

一、实验目的

分析HTTP协议

二、实验环境

与因特网连接的计算机,操作系统为Windows,安装有Wireshark、IE等软件。

三、实验步骤

1、利用Wireshark俘获HTTP分组

(1)在进行跟踪之前,首先清空Web 浏览器的高速缓存来确保Web网页是从网络中获取的,而不是从高速缓冲中取得的。之后,还要在客户端清空DNS高速缓存,来确保Web服务器域名到IP地址的映射是从网络中请求。在WindowsXP机器上,可在命令提示行输入ipconfig/flushdns完成操作。

(2)启动Wireshark 分组俘获器。

(3)在Web 浏览器中输入:http://www.google.com/

(4)停止分组俘获。

图1:利用Wireshark俘获的HTTP分组

在URL http://www.google.com中,www.google.com 是一个具体的web 服务器的域名。最前面有两个DNS分组。第一个分组是将域名www.google.com转换成为对应的IP 地址的请求,第二个分组包含了转换的结果。这个转换是必要的,因为网络层协议——IP协议,是通过点分十进制来表示因特网主机的,而不是通过www.google.com这样的域名。当输入URL http://www.google.com时,将要求Web服务器从主机www.google.com上请求数据,但首先Web浏览器必须确定这个主机的IP地址。

随着转换的完成,Web浏览器与Web服务器建立一个TCP连接。最后,Web 浏览器使用已建立好的TCP连接来发送请求“GET/HTTP/1.1”。这个分组描述了要求的行为(“GET”)及文件(只写“/”是因为我们没有指定额外的文件名),还有所用到的协议的版本(“HTTP/1.1”)。

(1)在协议框中,选择“GET/HTTP/1.1” 所在的分组会看到这个基本请求行后跟随着一系列额外的请求首部。在首部后的“\r\n”表示一个回车和换行,以此将该首部与下一个首部隔开。

Host首部在HTTP1.1版本中是必须的,它描述了URL中机器的域名,本例中是www.google.com。这就允许了一个Web服务器在同一时间支持许多不同的域名。有了这个首部,Web服务器就可以区别客户试图连接哪一个Web服务器,并对每个客户响应不同的内容,这就是HTTP1.0到1.1版本的主要变化。

User-Agent首部描述了提出请求的Web浏览器及客户机器。

接下来是一系列的Accpet首部,包括Accept(接受)、Accept-Language(接受语言)、Accept-Encoding(接受编码)、Accept-Charset(接受字符集)。它们告诉Web服务器客户Web浏览器准备处理的数据类型。Web服务器可以将数据转变为不同的语言和格式。这些首部表明了客户的能力和偏好。

Connection及Keep-Alive首部描述了有关TCP连接的信息,通过此连接发送HTTP请求和响应。它表明在发送请求之后连接是否保持活动状态及保持多久。大多数HTTP1.1连接是持久的(persistent),意思是在每次请求后不关闭TCP连接,而是保持该连接以接受从同一台服务器发来的多个请求。

(2)我们已经察看了由Web浏览器发送的请求,现在我们来观察Web服务器的回答。响应首先发送“HTTP/1.1 200 ok”,指明它开始使用HTTP1.1版本来发送网页。同样,在响应分组中,它后面也跟随着一些首部。最后,被请求的实际数据被发送。

第一个Cache-control首部,用于描述是否将数据的副本存储或高速缓存起来,以便将来引用。一般个人的Web浏览器会高速缓存一些本机最近访问过的网页,随后对同一页面再次进行访问时,如果该网页仍存储于高速缓存中,则不再向服务器请求数据。类似地,在同一个网络中的计算机可以共享一些存在高速缓存中的页面,防止多个用户通过到其他网路的低速网路连接从网上获取相同的数据。这样的高速缓存被称为代理高速缓存(proxy cache)。在我们所俘获的分组中我们看到“Cache-control”首部值是“private”的。这表明服务器已经对这个用户产生了一个个性化的响应,而且可以被存储在本地的高速缓存中,但不是共享的高速缓存代理。

在HTTP请求中,Web服务器列出内容类型及可接受的内容编码。此例中Web服务器选择发送内容的类型是text/html且内容编码是gzip。这表明数据部分是压缩了的HTML。

服务器描述了一些关于自身的信息。此例中,Web服务器软件是Google自己的Web服务器软件。响应分组还用Content-Length首部描述了数据的长度。最后,服务器还在Date首部中列出了数据发送的日期和时间。

2、HTTP GET/response交互

(1)启动浏览器,清空浏览器的缓存。

(2)启动Wireshark分组俘获器,开始Wireshark分组俘获。

(3)在浏览器地址栏中如下网址:

http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file1.html

你的浏览器中将显示一个具有一行的非常简单的HTML文件。

(4)停止Wireshark分组俘获,在显示过滤筛选说明处输入“http”,分组列表子窗口中将只显示所俘获到的HTTP报文。

根据俘获窗口内容,回答“四、实验报告内容”中的1-6题。

3、HTTP条件GET/response交互

(1)启动浏览器,清空浏览器的缓存。

(2)启动Wireshark分组俘获器,开始Wireshark分组俘获。

(3)在浏览器地址栏中如下网址:

http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file2.html

你的浏览器中将显示一个具有五行的非常简单的HTML文件。

(4)在你的浏览器中重新输入相同的URL或单击浏览器中的“刷新”按钮。

(5)停止Wireshark分组俘获,在显示过滤筛选说明处输入“http”,分组列表子窗口中将只显示所俘获到的HTTP报文。

根据操作回答“四、实验报告内容”中的7-10题。

4、获取长文件

(1)启动浏览器,将浏览器的缓存清空。

(2)启动Wireshark 分组俘获器,开始Wireshark分组俘获。

(3)在浏览器地址栏中输入如下网址:

http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file3.html

浏览器将显示一个相当大的美国权力法案

(4)停止Wireshark分组俘获,在显示过滤筛选说明处输入“http”,分组列表子窗口中将只显示所俘获到的HTTP报文。

根据操作回答“四、实验报告内容”中的11-14题。

5、嵌有对象的HTML文档

(1)启动浏览器,将浏览器的缓存清空。

(2)启动Wireshark分组俘获器。开始Wireshark分组俘获。

(3)在浏览器地址栏中输入如下网址:

http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file4.html

浏览器将显示一个具有两个图片的短HTTP文件。

(4)停止Wireshark分组俘获,在显示过滤筛选说明处输入“http”,分组列表子窗口中将只显示所俘获到的HTTP报文。

根据操作回答“四、实验报告内容”中的15-16题。

6、HTTP认证

(1)启动浏览器,将浏览器的缓存清空。

(2)启动Wireshark分组俘获器。开始Wireshark分组俘获。

(3)在浏览器地址栏中输入如下网址:

http://gaia.cs.umass.edu/wireshark-labs/protected_pages/HTTP-wireshark-file5.html

浏览器将显示一个HTTP文件,输入所需要的用户名和密码(用户名:wireshark-students,密码:network)。

(4)停止Wireshark分组俘获,在显示过滤筛选说明处输入“http”,分组列表子窗口中将只显示所俘获到的HTTP报文。

根据操作回答“四、实验报告内容”中的17-18题。

四、实验报告内容

在实验的基础上,回答以下问题:

(1)你的浏览器运行的是HTTP1.0,还是HTTP1.1?你所访问的服务器所运行的HTTP版本号是多少?

(2)你的浏览器向服务器指出它能接收何种语言版本的对象?

(3)你的计算机的IP地址是多少?服务器的IP地址是多少?

(4)从服务器向你的浏览器返回的状态代码是多少?

(5)你从服务器上所获取的HTML文件的最后修改时间是多少?

(6)返回到你的浏览器的内容一共多少字节?

(7)分析你的浏览器向服务器发出的第一个HTTP GET请求的内容,在该请求报文中,是否有一行是:IF-MODIFIED-SINCE?

(8)分析服务器响应报文的内容,服务器是否明确返回了文件的内容?如何获知?

(9)分析你的浏览器向服务器发出的第二个“HTTP GET”请求,在该请求报文中是否有一行是:IF-MODIFIED-SINCE?如果有,在该首部行后面跟着的信息是什么?

(10)服务器对第二个HTTP GET请求的响应中的HTTP状态代码是多少?服务器是否明确返回了文件的内容?请解释。

(11)你的浏览器一共发出了多少个HTTP GET请求?

(12)承载这一个HTTP响应报文一共需要多少个data-containing TCP报文段?

(13)与这个HTTP GET请求相对应的响应报文的状态代码和状态短语是什么?

(14)在被传送的数据中一共有多少个HTTP状态行与TCP-induced”continuation”有关?

(15)你的浏览器一共发出了多少个HTTP GET请求?这些请求被发送到的目的地的IP地址是多少?

(16)浏览器在下载这两个图片时,是串行下载还是并行下载?请解释。

(17)对于浏览器发出的最初的HTTP GET请求,服务器的响应是什么(状态代码和状态短语)?

(18)当浏览器发出第二个HTTP GET请求时,在HTTP GET报文中包含了哪些新的字段?

 

第二篇:用Wireshark进行HTTP协议分析

TCP/IP 实 验 报 告

实验1 用Wireshark进行HTTP协议分析

学 院 专 业

班 级 1班

姓 名 刘小芳

学 号 41009040127

2012. 5

1.1 实验性质

本实验为操作分析性实验。

1.2 实验目的

1. 掌握Wireshark软件的基本使用方法。

2. 掌握基本的网络协议分析方法。

3. 使用Wireshark抓包工具,分析HTTP数据报的格式。

4. 加深理解HTTP协议的原理及其工作过程。

1.3 实验环境

1. 硬件环境:PC机1台。

2. 网络环境:PC机接入LAN或Internet。

物理地址:00-E0-4C-00-16-78

Ip地址:192.168.0.131

3. 软件环境:Windows操作系统和Wireshark软件。

1.4 实验学时

2学时(90分钟)。

1.5 实验内容与要求

1.5.1 启动Wireshark协议分析工具

1.5.2 抓取HTTP数据包

用Wireshark进行HTTP协议分析

1.5.3分析HTTP报文

1. The Basic HTTP GET/response interaction

1. Is your browser running HTTP version 1.0 or 1.1? What version of HTTP is the server running?

HTTP 1.1

2. What languages (if any) does your browser indicate that it can accept to the

server?

Accept-Language: zh-cn\r\n

3. What is the IP address of your computer? Of the gaia.cs.umass.edu server?

192.168.0.131 128.238.38.160

4. What is the status code returned from the server to your browser?

200 ok

5. When was the HTML file that you are retrieving last modified at the server

20 May 2013 09:42:43 GMT\r\n

6. How many bytes of content are being returned to your browser?

429

7. By inspecting the raw data in the packet content window, do you see any headers within the data that are not displayed in the packet-listing window? If so, name One.

2. The HTTP CONDITIONAL GET/response interaction

Answer the following questions:

8. Inspect the contents of the first HTTP GET request from your browser to the server. Do you see an “IF-MODIFIED-SINCE” line in the HTTP GET?

9. Inspect the contents of the server response. Did the server explicitly return the contents of the file? How can you tell?

有 HTTP/1.1 200 OK\r\n

10. Now inspect the contents of the second HTTP GET request from your browser to the server. Do you see an “IF-MODIFIED-SINCE:” line in the HTTP GET? If

so, what information follows the “IF-MODIFIED-SINCE:” header?

没有

11. What is the HTTP status code and phrase returned from the server in response to this second HTTP GET? Did the server explicitly return the contents of the file?

200 没有

3. Retrieving Long Documents

Answer the following questions:

12. How many HTTP GET request messages were sent by your browser?

1

13. How many data-containing TCP segments were needed to carry the single HTTP response?

4

14. What is the status code and phrase associated with the response to the HTTP GET request?

Code 200 phrase ok

15. Are there any HTTP status lines in the transmitted data associated with a TCPinduced

“Continuation”?

no

1.6 实验总结

http协议工作原理

HTTP协议的主要特点可概括如下:

1.支持客户/服务器模式。

2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。

由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。

3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。

4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量龃蟆A硪环矫妫诜衿鞑恍枰惹靶畔⑹彼挠Υ鹁徒峡臁?

. http协议

除了TCP/IP协议,http可以说是最重要,且使用最多的网络协议了

假设现在有一个html文件:http.html, 存放在Web服务器上,其URL为/http.html,文件内容为:

HTML 代码:

<html>

<head>

<title>http.html</title>

</head>

<body>

hello, http

</body>

</html>

现在,一个用户通过IE访问该地址,IE首先将此地址的域名通过DNS转换为一个IP地址,然后通过一个Web服务器开放的端口(默认为80,不为80需在域名后加上“:端口号”,例如)与其连接, 然后传送一个类似这样的http请求(使用flashget等下载软件下载文件时,在详细信息里也可以看到类似的信息):

GET /http.html HTTP/1.1

Host:

Accept: */*

User-Agent: Mozilla/4.0 (compatible; MSIE.6.0; Windows NT 5.1)

Pragma: no-cache

Cache-Control: no-cache

Connection: close

[空行]

请求的第一行为请求内容, 表示通过GET方法向服务器请求资源,/http.html为请求资源名称,HTTP/1.1 表示使用http协议,版本1.1。然后接下来的几行称为请求信息的标头(header),其中描述了请求的一些信息,比如客户端浏览器标识等。最后一个空行表示请求结束。

当Web服务器接收到该请求时,服务器检查所请求的资源是否有效,且是否有相应的权限。如果没有问题,则服务器会传回类似如下的http响应信息:

HTTP/1.1 200 OK

Server: Microsoft-IIS/5.0

Date: Thursday, March 31, 2005 17:15:23 GMT

Content-Type: text/html

Content-Length: 88

[空行]

<html>

<head>

<title>http.html</title>

</head>

<body>

hello, http

</body>

</html>

其中第一行的“200”是一个状态码,表示服务器成功完成该请求,如果不成功会返回其他状态码。Content-Type表示返回的数据类型,Content-Length表示返回的数据长度。空行表示标头结束,下面则是浏览器根据请求返回的数据内容,这里是http.html的文件内容,浏览器解析html源代码,将Web页面呈现给用户,到这里就完成了一次成功的http通信。

以上内容是Web通信的基础,就和Windows消息机制一样,你可能不会用到它,但是你必须了解它,你得知道那些高级的东西隐藏了哪些低级的内容,这样对你理解和使用那些高级的东西都有非常大的帮助:)。

相关推荐