实验十二 HTTP 协议分析实验

实验十二 HTTP 协议分析实验

1.HTTP 协议简介
HTTP是超文本传输协议 (Hyper Text Transfer Protocol)的缩写,用于WWW 服务。
(1)HTTP的工作原理
HTTP是一个面向事务的客户服务器协议。尽管HTTP 使用TCP 作为底层传输协议,但 HTTP协议是无状态的。也就是说,每个事务都是独立地进行处理。当一个事务开始时,就在万维网客户和服务器之间建立一个TCP 连接,而当事务结束时就释放这个连接。此外,客户可以使用多个端口和和服务器 (80 端口)之间建立多个连接。其工作过程包括以下几个阶段。
① 服务器监听TCP 端口 80,以便发现是否有浏览器 (客户进程)向它发出连接请求;
② 一旦监听到连接请求,立即建立连接。
③ 浏览器向服务器发出浏览某个页面的请求,服务器接着返回所请求的页面作为响应。
④ 释放TCP 连接。
在浏览器和服务器之间的请求和响应的交互,必须遵循HTTP 规定的格式和规则。
当用户在浏览器的地址栏输入要访问的HTTP 服务器地址时,浏览器和被访问HTTP 服务器的工作过程如下:
① 浏览器分析待访问页面的URL 并向本地DNS 服务器请求IP 地解析;
② DNS 服务器解析出该HTTP 服务器的IP 地址并将IP 地址返回给浏览器;
③ 浏览器与HTTP 服务器建立TCP 连接,若连接成功,则进入下一步;
④ 浏览器向HTTP 服务器发出请求报文 (含GET 信息),请求访问服务器的指定页面;
⑤ 服务器作出响应,将浏览器要访问的页面发送给浏览器,在页面传输过程中,浏览器会打开多个端口,与服务器建立多个连接;
⑥ 释放TCP 连接;
⑦ 浏览器收到页面并显示给用户。

(2)HTTP 报文格式
HTTP有两类报文:从客户到服务器的请求报文和从服务器到客户的响应报文。图 1 显示了两种报文的结构。
在这里插入图片描述

                    图1  HTTP 的请求报文和响应报文结构                        

在图1中,每个字段之间有空格分隔,每行的行尾有回车换行符。各字段的意义如下:
① 请求行由三个字段组成:
* 方法字段,最常用的方法为 “GET”,表示请求读取一个万维网的页面。常用的方法还有 “HEAD(指读取页面的首部)”和“POST(请求接受所附加的信息);
* URL 字段为主机上的文件名,这时因为在建立TCP 连接时已经有了主机名;
* 版本字段说明所使用的HTTP 协议的版本,一般为 “HTTP/1.1”。
② 状态行也有三个字段:
* 第一个字段等同请求行的第三字段;
* 第二个字段一般为 “200”,表示一切正常,状态码共有41 种,常用的有:301(网站已转移),400(服务器无法理解请求报文),404(服务器没有锁请求的对象)等;
* 第三个字段时解释状态码的短语。
③ 根据具体情况,首部行的行数是可变的。请求首部有Accept 字段,其值表示浏览器可以接受何种类型的媒体;Accept-language,其值表示浏览器使用的语言;User-agent 表明可用的浏览器类型。响应首部中有Date、Server、Content-Type、Content-Length 等字段。在请求首部和响应首部中都有 Connection 字段,其值为Keep-Alive 或 Close,表示服务器在传送完所请求的对象后是保持连接或关闭连接。
④ 若请求报文中使用 “GET”方法,首部行后面没有实体主体,当使用 “POST”方法是,附加的信息被填写在实体主体部分。在响应报文中,实体主体部分为服务器发送给客户
的对象。
图2 和图3显示了wireshark 捕获的HTTP 请求和响应报文,结合上面的介绍,请自己分析和体会。
在这里插入图片描述

                         图2 HTTP 请求报文示例 

在这里插入图片描述

                         图3 HTTP 响应报文示例 

2.实验环境与说明
(1)实验目的
在PC 机上访问RCMS 的Web 页面,截获报文,分析HTTP 协议的报文格式和HTTP 协议的工作过程。
(2)实验设备和连接
本地实验室环境,无须设备连接;
注意:请通过访问可以连接的WWW 站点或使用IIS 建立本地WWW 服务器来进行实验。
3.实验步骤
步骤1:在PC 机上运行wireshark,开始截获报文,为了只截获和我们要访问的网站相关的数据报,将截获条件设置为 “not broadcast and not multicast”;
步骤2:从浏览器上访问Web 界面,如http://202.202.43.125。打开网页,待浏览器的状态栏出现 “完毕”信息后关闭网页。
步骤3:停止截获报文,将截获的报文命名为http-学号保存。
分析截获的报文,回答以下几个问题:

1)综合分析截获的报文,查看有几种HTTP 报文?
答:有两种HTTP报文,分别是客户到服务器的请求报文和服务器到客户的响应报文。

2)在截获的HTTP 报文中,任选一个HTTP 请求报文和对应的 HTTP 应答报文,仔细分析它们的格式,填写表1 和表 2。
在这里插入图片描述

表1 HTTP 请求报文格式
方 法 GET 版 本 HTTP/1.1
URL http://www.baidu.com
首部字段名 字段值 字段所表达的信息
Connection Keep-Alive\r\n 表示是否保存socket连接为开放的通用头标
Accept /\r\n 表示浏览器可以接受何种类型的媒体
User-Agent Microsoft-CryptoAPI/6.1\r\n 表明可用的浏览器类型
Host www.download.windowsupdate.com\r\n 指定被请求资源的Internet主机和端口号
Accept-language zh-cn\r\n 表示浏览器使用的语言

在这里插入图片描述

表2 HTTP 应答报文格式
版 本 HTTP/1.1 状态码 304
短 语 Not Modified
首部字段名 字段值 字段所表达的信息
Date Mon, 28 Dec 2020 06:37:24 GMT\r\n 消息发送的时间
Last-Modified Mon, 12 Oct 2020 21:55:08 GMT\r\n 服务器上保存内容的最后修订时间
Server KNGX-3.0\r\n 确定实际被发送的资源是否一致
ETag “069559e2a0d61:0”\r\n 实体标签,用于请求HEAD的属性
Age 2676\r\n 表明实体从产生到现在经过的时间
在这里插入图片描述在这里插入图片描述

3)分析在截获的报文中,客户机与服务器建立了几个连接?服务器和客户机分别使用了哪几个端口号?
答:客户机与服务器建立了1个tcp连接,服务器端口号为80端口,客户机端口号为50735。

4 )综合分析截获的报文,理解HTTP 协议的工作过程,将结果填入表3 中。

在这里插入图片描述

                             表3 HTTP 协议工作过程

HTTP 客户机端口号 HTTP 服务器端口号 所包括的报文号 步骤说明
50735 80 1648 发送SYN包,开始一次握手,建立连接
50735 80 1649 二次、三次握手,连接建立
50735 80 2101
客户机发起HTTP GET请求

50735 80 2102 客户机向服务器请求具体数据信息如服务器ip等
50735 80 3626 服务器应答,发送状态码
50735 80 3627 具体的请求数据发送
50735 80 3638 客户机发送FIN包,开始四次挥手,准备断开连接
50735 80 3639 进行四次挥手过程断开连接,或发送RST包强制断开

  • 17
    点赞
  • 117
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

半夏风情

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值