wireshark分析http协议 计网实验总结

利用wireshark分析http报文

    上周实验中进行了课程实验用wireshark抓包了http协议,收获许多,准备开启我的第一篇博客文章。

0x01 http的基本知识

    HTTP(HyperText Transfer Protocol,超文本传输协议)是Web系统最核心的内容,是Web服务器和客户端直接进行数据传输的规则。HTTP协议是用于从WWW服务器传输超文本到本地浏览器的传送协议。可以使浏览器更加高效,使网络传输减少。不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及首先显示(如文本先于图形)等。HTTP是一个应用层协议,有请求和响应构成,是一个标准的客户端服务器模型。HTTP具有以下几个特点:

  1. 支持客户/服务器模式:支持基本认证和安全认证;
  2. 简单快速:客户端向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快;
  3. 灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记;
  4. HTTP 0.9和1.0使用非持续连接:限制每次连接只处理一个请求,服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。HTTP 1.1使用持续连接:不必为每个web对象创建一个新的连接,一个连接可以传送多个对象;
  5. 无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。

http的请求格式

HTTP请求信息由3部分组成:
(1)请求方法URI协议/版本
(2) 请求头(Request Header)
(3) 请求正文

请求方法URI协议/版本:请求的第一行是"方法URI协议/版本"
例如:GET/sample.jsp HTTP/1.1 其中"GET"代表请求方法,"/sample.jsp"表示URI,"HTTP/1.1代表协议和协议的版本。

请求方法的8种方法

OPTIONS:返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向Web服务器发送"*"的请求来测试服务器的功能性。

HEAD:向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。

GET:向特定的资源发出请求。注意:get方法不应当被用于产生“副作用”的操作中。例如在Web APP中,其中一个原因是GET可能会被网站蜘蛛等随意访问。

POST:向指定资源提交数据进行处理请求(比如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立或已有资源的修改。

PUT:向指定资源位置上传其最新内容。

DELETE:请求服务器删除Request-URI所标识的资源。

TRACE:回显服务器收到的请求,主要用于测试或者诊断。

CONNECT:HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。

请求头

   - Accept:[表示浏览器可以接受文本,网页图片等]

   - Accept-Charaset: [表示接受字符编码]

   - Accept-Encoding:[可以接受格式压缩后数据]

   - Accept-Language:[浏览器支持的语言为中文]   

   - Host:[浏览器要找的主机]

   - IF-MODIFIED-Since:[文件在缓存中且指明文件时间]

   - Referer:[指明来源]

   - User-Agent:[本机浏览器内核]

   - Connection:close/Keep-Alive [保持链接,即发完数据后不关闭链接]

   - Date:[浏览器发送数据的请求时间]

请求正文: 请求头和请求正文之间是一个空行,这个行非常重要,它表示请求头已经结束,接下来的是请求正文。请求正文中包含客户提交的查询字符串信息:

http响应格式

HTTP请求信息由3部分组成::
(1)响应首行;
(2)响应头信息;
(3)响应正文。

响应首行:包含协议版本,响应状态码,对状态码的解释。
例如:分析”HTTP/1.1 200 OK”
其中HTTP/1.1:为协议版本。200 :为响应状态码,此表示响应成功。OK :为解释响应状态码200是响应成功。

常见状态响应码6个:

200 请求成功,浏览器把响应回来的信息显示在浏览器端。

404 客户端出错,在浏览器端请求一个不存在的资源时会出现404状态码。

405 客户端错误的一种,表示当前的请求方式不支持。如:服务器端只对GET请求做了处理,而客户端的请求是post方式的,这个时候会出现405状态码。

500 服务器端错误,如:服务器端代码出现空指针等异常,浏览器就会收到服务器发送的500状态码。

302 表示重定向。如:浏览器访问一个资源,服务器响应给浏览器一个302的状态码,并且通过响应头Location发送了一个新的url,告诉浏览器去请求这个url。这就是重定向。

304 第一次访问一个资源后,浏览器会将该资源缓存到本地,第二次再访问该资源时,若该资源没有发生改变,则服务器响应给浏览器304状态码,告诉浏览器使用本地缓存的资源。

响应头信息:与请求头信息类似

-Server:服务器告诉浏览器,当前响应的服务类型和版本。

-Content-Type:服务器告诉浏览器响应内容的类型和字符编码。如:值为text/html;charset=utf-8。说明响应信息的类型是文本类型中的html,使用的字符编码是utf-8。

-Content-Length:服务器告诉浏览器,响应内容的长度字节数。

-Date:表示是服务器是响应回浏览器的时间,注意该时间是按照格林尼治标准时间(GMT)来计算。

响应正文:空行连接响应头和响应体。响应正文即为返回资源内容。浏览器可以直接识别响应正文html文件。

0x02 实验操作步骤

本实验用windows7,wireshark,IE浏览器进行实验操作。

实验1
HTTP GET/response交互
(1)清空缓存DNS高速缓存,确保Web服务器域名到IP地址映射是从网络请求的。在cmd窗口输入:ipconfig/flushdns 后按回车。
在这里插入图片描述
(2)启动Wireshark分组俘获器,开始Wreshark分组俘获。
(3)在浏览器地址栏中前往网址:http:// www.cqu.edu.cn/。
(4)单击测览器中的“刷新”按钮。
(5)停止Wireshark分组俘获,在显示过滤筛选说明处输入“http”显示捕获到的HTTP报文。

(1)对请求报文分析
Alt
“GET”:向特定的资源发出请求。
”HOST”首部在HTTP1.1版本中是必须的,描述了URL中的主机,在这里是http:// www.cqu.edu.cn/。
”USER-AGENT”首部显示了web服务器浏览器和本机windows系统。
Accept包括:Accept、 Accept-Language 、Accept-Encoding。
Connection首部描述了有关TCP连接的信息,通过此连接发送HTTP请求和响应,表明在发送请求之后连接是否保持活动状态及保持多久大多数HTTP1.1连接是持久的,意思是在每次请求后不关闭TCP连接,而保持该连接以接受从同一台服务器发来的多个请求。

(2)对响应报文进行分析
Alt
响应发送”HTTP/1.1 200 ok" ,状态码200表示响应成功,用HTTP1.1版本发送网页。
Cache-control首部,用于描述是否将数据的副本存储或高速缓存起来,此处为no-store 表示所有内容不会存在缓存 或internet临时文件中。
Content-length首部描述了数据长度为1676字节
Date首部表示了数据发送时间为:2020.5.19 07:04:42 其中GMT表示格林尼治标准时间。

此处补充Cache-control的相关字段信息:
在这里插入图片描述
实验2
HTTP条件 GET/response交互
1)启动浏览器,清空浏览器的缓存。
(2)启动Wireshark分组俘获器,开始Wreshark分组俘获。
(3)在浏览器地址栏中前往网址: http://gaia.cs.umass.edu/wireshark-labs/ HTTP-wireshark-file2.html
你的浏览器中将显示一个的非常简单的HTML文件。
(4)单击测览器中的“刷新”按钮。
(5)停止Wireshark分组俘获,在显示过滤筛选说明处输入“http”显示捕获到的HTTP报文。
在这里插入图片描述
实验3
获取长文件
(1)启动浏览器,将浏览器的缓存清空。
(2)启动Wireshark分组俘获器,开始Wireshark分组俘获。
(3)在浏览器地址栏中输入如下网址:http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file3.html
(4)停止Wireshark分组俘获,在显示过滤筛选说明处输入“http”。
在这里插入图片描述
实验4
嵌有对象的HTML文档
(1)启动浏览器,将浏览器的缓存清空。
(2)启动Wireshark分组俘获器。开始Wireshark分组俘获。
(3)在浏览器地址栏中输入如下网址:http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file4.html
(4)停止Wireshark分组俘获,在显示过滤筛选说明处输入“http"。
在这里插入图片描述
实验5
HTTP认证
(1)启动浏览器,将浏览器的缓存清空。
(2)启动Wireshark分组俘获器。开始Wireshark分组俘获。
(3)在浏览器地址栏中输入如下网址:http://gaia.cs.umass.edu/wireshark-labs/protected_pages/HTTP-wireshark-file5.html
(4)停止Wireshark分组俘获,在显示过滤筛选说明处输入“http”。
在这里插入图片描述

0x03 实验问答

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

(2)你的浏览器向服务器指出它能接收何种语言版本的对象?
可以接受简体中文
在这里插入图片描述
(3)你的计算机的IP地址是多少?服务器的IP地址是多少?
计算机地址:.....
服务器地址:202.202.1.3

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

(5)你从服务器上所获取的HTML文件的最后修改时间是多少?
在2020年4月5日 02:34:44在这里插入图片描述

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

(7) 分析你的浏览器向服务器发出的第一个HTTP GET请求的内容,在该请求报文中,是否有一行是: IF-MODIFIED-SINCE?
没有
在这里插入图片描述
(8)分析服务器响应报文的内容,服务器是否明确返回了文件的内容?如何获知?
明确返回了
在这里插入图片描述
(9)分析你的浏览器向服务器发出的第二个“HTTP GET”请求,在该请求报文中是否有一行是:IF -MODIFIED- SINCE?如果有,在该首部行后面跟着的信息是什么?
有,是最后一次的修改时间。
在这里插入图片描述
(10)服务器对第二个HTTP GET请求的响应中的HTTP状态代码是多少?服务器是否明确返回了文件的内容?请解释。
在这里插入图片描述
304状态码表示:服务器没有明确返回文件内容。原因:浏览器端缓存页面最后修改时间与服务器端时间一致,返回304状态码,客户端接到之后,就直接把本地缓存文件显示到浏览器中。

(11 )你的浏览器一共发出了多少个HTTP GET请求?
总共四个,分别为序号17,46,61,102
在这里插入图片描述

(12 )承载这一个HTTP响应报文一共需要多少个data-containing TCP报文段?
需要四个data-containing TCP报文段。
在这里插入图片描述

(13)与这个HTTPGET请求相对应的响应损文的状态代码和状态短语是什么?
为200 OK在这里插入图片描述

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

(15)你的浏览器一共发出了多少个和打开的网址相关的HTTP GET请求?这些请求被发送到的目的地的IP地址是多少?
发送了三个和打开的网址相关的HTTP GET请求,目的IP 为:128.119.245.12
在这里插入图片描述
(16)浏览器在下载这两个图片时,是串行下载还是并行下载?请解释。
并行。两个图片是连续请求,不需要等第一个请求得到回复后才继续第二次请求。存在不需要等第一个请求得到回复后才继续第二次请求的情况,说明是并行的。

(17)对于浏览器发出的最初的HTTP GET请求,服务器的响应是什么(状态代码和状态短语)?
响应是:401 Unauthorized
在这里插入图片描述

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

猜你喜欢

转载自blog.csdn.net/weixin_47217021/article/details/106312360