wireshark实验二:HTTP

一,实验目的

掌握HTTP协议的工作方式与原理,理解HTTP协议内容

二,实验环境

客户机:安装有Wireshark的Windows7及以上系统

网站服务器:WINDOWS2003及以上版本,安装有IIS,编写一简单的的的index.htm的文件

三,实验原理

1,概念

HTTP协议是超文本传输​​协议的缩写,是用于从万维网(WWW:万维网)服务器传输超文本到本地浏览器的传送协议。

HTTP是一个基于TCP / IP通信协议来传递数据(HTML文件,图片文件,查询结果等)。

HTTP协议工作于客户端 - 服务端架构为上浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求名.web服务器根据接收到的请求后,向客户端发送响应信息.HTTP协议是一个无状态的协议,同一个客户端的这次请求和上次请求是没有对应关系。

HTTP请求 - 响应模型

2,协议栈

HTTP协议通常承载于TCP协议之上,有时也承载于TLS或SSL协议层之上,这个时候,就成了我们常说的HTTPS如下图所示:


    默认HTTP的端口号为80,HTTPS的端口号为443。

3,工作流程

一次HTTP操作称为一个事务,其工作过程可分为四步:

1)首先客户机与服务器需要建立连接。只要单击某个超级链接,HTTP的工作开始。

2)建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL),协议版本号,后边是MIME信息包括请求修饰符,客户机信息和可能的内容。

3)服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号,一个成功或错误的代码,后边是MIME信息包括服务器信息,实体信息和可能的内容。

4)客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。

4,HTTP请求

HTTP请求是客户端往服务端发送请求动作,告知服务器自己的要求。

 HTTP请求由状态行,请求头,空行和请求正文四部分组成:

状态行(请求行):包括请求方式的方法,资源路径URL,协议版本版;

请求头:包括一些访问的域名,用户代理,饼干等信息;

请求正文:就是HTTP请求的数据。

 备注:请求方式方法一般有GET,POST,PUT,DELETE,含义分别是获取,修改,上传,删除,其中GET方式仅仅为获取服务器资源,方式较为简单,因此在请求方式为GET的HTTP请求数据中,请求正文部分可以省略,直接将想要获取的资源添加到URL中。

下图所示就是GET的请求,没有请求正文。现在大多数协议版本为http / 1.1

下图所示为POST请求的格式,有状态行,请求头,请求正文三部分。

5,HTTP响应

服务器收到了客户端发来的HTTP请求后,根据HTTP请求中的动作要求,服务端做出具体的动作,将结果回应给客户端,称为HTTP响应。

 HTTP响应由四部分组成:状态行,消息头部,空行,响应正文;

状态行:包括协议版本,状态码,状态码,回应短语;

消息头部:包括搭建服务器的软件,发送响应的时间,回应数据的格式等信息;

响应正文:就是响应的具体数据。

 备注:我们主要关心并且能够在客户端浏览器看得到的是三位数的状态码,不同的状态码代表不同的含义,其中

1XX 表示HTTP请求已经接受,继续处理请求
2XX 表示HTTP请求已经处理完成
3XX 表示把请求访问的URL重定向到其他目录
4XX 表示客户端出现错误
5XX 表示服务端出现错误

具体HTTP响应实例如下图:

四,实验内容

1,HTTP GET /响应

通过一个非常简单的HTML文件来开始对HTTP的探索,这个文件不包含嵌入对象。

具体步骤如下:

(1)启动浏览器

(2)启动的Wireshark的的,并在显示过滤器中输入的“HTTP”,以便稍后在捕获的数据包列表中只显示HTTP消息

(3)在浏览器中输入服务器的网页网址,浏览器应该正常显示的的index.htm的的文件

(4)停止的Wireshark的的的数据包捕获

由上图得到,数据包列表窗口中显示捕获了两条HTTP消息:GET消息(从浏览器到卷筒纸服务器的)和响应消息(从网络服务器到浏览器)。

通过查看捕获的两条HTTP消息回答下面的问题:

<1>客户端浏览器运行的是HTTP哪个版本,1.0还是1.1?服务器运行的哪个版本的HTTP?

<2>你的浏览器通知服务器它能支持哪种语言?

<3>浏览器与服务器的IP地址分别是多少?

<4>从服务器返回给浏览器的HTTP状态码是什么?

<5>服务器对页面最后的修改时间是什么时候?

<6>浏览器返回了多少字节的内容?

2,HTTP条件获取(条件获取)

在做这个实验前请清空浏览器缓存

(1)启动浏览器,确保清除浏览器缓存

(2)启动的Wireshark的的,并开始捕获

(3)在浏览器中执行的网页服务器,浏览的的index.htm的文件

(4)再次快速浏览相同URL(可以在浏览器中选择刷新)

(5)停止的Wireshark的的数据包捕获,并在显示过滤字段中输入“HTTP”

根据上述实验操作,观察的Wireshark的的捕获的HTTP消息,回答下列问题:

<7>检查第一个HTTP GET请求的内容,是否在HTTP GET中看到“IF-MODIFIED-SINCE”行?

<8>检查服务器响应的内容,服务器是否显示返回文件的内容?如何查看?

<9>现在检查浏览器到服务器的第二个HTTP GET请求的内容。是否能在HTTP GET中看到“IF-MODIFIED-SINCE:”行?如果可以的话,请写出“IF-MODIFIED-SINCE :”后的信息?

<10>为响应第二个HTTP GET,服务器返回的HTTP状态代码(状态代码)以及短语(短语)是什么?服务器是否显式地返回文件的内容,请给予说明原因?

3,检索长文档

前面浏览的文档是一个简短的HTML文件,接下来,我们来下载一个长HTML文件会有什么变化?

请执行下列操作:

(1)启动浏览器,确保清除浏览器缓存

(2)启动的Wireshark的的数据包嗅探

(3)在浏览器中输入windows2003 WEB服务器中的long.htm文件(如http://192.168.1.15/long.htm)

(4)停止的Wireshark的数据包捕获,并在显示过滤字段处输入的“HTTP”,以便仅显示捕获的HTTP消息

由于HTML文件太大,3393字节不适合一个TCP数据包,因此,单个HTTP响应消息由TCP分成多部分。

根据上述实验,回答下列问题:

<11>你的浏览器发送了多少个HTTP GET请求消息?

<12>哪个数据包编号包含了与HTTP GET请求响应相关联的状态代码和短语?

<13>响应中的状态代码和短语是什么?

<14>需要多少TCP数据包段来承载单个HTTP响应和教育法文本?

4,带有嵌入对象的HTML文档

当我们通过浏览器浏览服务器中嵌入对象的文件时,Wireshark的的的会发生什么?

请执行下列操作(预先在服务器编写一个嵌入对象的HTML文件,此处命名为media.htm):

(1)启动浏览器,确保清除浏览器缓存

(2)启动的Wireshark的的数据包嗅探器开始捕获数据包

(3)浏览器中输入包含有嵌入对象的URL(如http://192.168.1.15/media.htm),网页如上所示

(4)停止的Wireshark的数据包捕获,并在显示过滤字段中输入的“HTTP”,以便显示捕获的HTTP消息

根据上述实验,回答下列问题:

<15>你的浏览器发送了多少个HTTP GET请求消息?这些GET请求发送到哪些IP地址?

<16>判断一下浏览器是否按顺序下载了这两个图像,或者是并行下载?

5,HTTP身份验证

现在让我们尝试访问受密码保护的网站,通过的Wireshark的来检查浏览器与此类网站进行HTTP消息交换的现象。

在此提供的URL:http:  //gaia.cs.umass.edu/wireshark-labs/protected_pa​​ ges / HTTP-wireshark-file5.html用户名:wireshark-students   密码:network。

请执行下列实验操作:

(1)启动浏览器,同样启动前确保已清除浏览器缓存

(2)启动的Wireshark的数据包嗅探器,开始捕获数据包

(3)在浏览器中输入侧侧http://gaia.cs.umass.edu/wireshark-labs/protected_pa GES / HTTP-Wireshark的-file5.html在弹出的登录框中输入用户名与密码

(4)停止的Wireshark捕获数据包,并在显示过滤器中输入的“http”,仅使HTTP消息在列表框中显示

根据上述实验,回答下列问题:

<17>第一次响应来自浏览器的初始HTTP GET消息,服务器的响应(状态代码和短语)是什么?

<18>当浏览器第二次发送HTTP GET消息时,HTTP GET消息中包含哪些新的字段?

到此,我们第二个关于HTTP协议的实验完成了。

(实验改编自计算机网络:自上而下的方法,第7版)

猜你喜欢

转载自blog.csdn.net/wz_cow/article/details/81503653
今日推荐