实验一 应用协议与数据包分析实验(使用Wireshark)一、实验目的 通过本实验,熟练掌握Wireshark的操作和使用,学习对HTTP协议进行分析二、实验内容 1.HTTP 协议简介HTTP 是超文本传输协议 (Hyper Text Transfer Protocol)的缩写,用于WWW 服务 (1)HTTP 的工作原理 HTTP 是一个面向事务的客户服务器协议尽管HTTP 使用TCP 作为底层传输协议,但 HTTP 协议是无状态的也就是说,每个事务都是独立地进行处理当一个事务开始时,就 在web客户和服务器之间建立一个TCP 连接,而当事务结束时就释放这个连接此外,客 户可以使用多个端口和和服务器 (80 端口)之间建立多个连接其工作过程包括以下几个阶段 ① 服务器监听TCP 端口 80,以便发现是否有浏览器 (客户进程)向它发出连接请求; ② 一旦监听到连接请求,立即建立连接 ③ 浏览器向服务器发出浏览某个页面的请求,服务器接着返回所请求的页面作为响应 ④ 释放TCP 连接 在浏览器和服务器之间的请求和响应的交互,必须遵循HTTP 规定的格式和规则。
当用户在浏览器的地址栏输入要访问的HTTP 服务器地址时,浏览器和被访问HTTP 服 务器的工作过程如下: ① 浏览器分析待访问页面的URL 并向本地DNS 服务器请求IP 地解析; ② DNS 服务器解析出该HTTP 服务器的IP 地址并将IP 地址返回给浏览器; ③ 浏览器与HTTP 服务器建立TCP 连接,若连接成功,则进入下一步; ④ 浏览器向HTTP 服务器发出请求报文 (含GET 信息),请求访问服务器的指定页面; ⑤ 服务器作出响应,将浏览器要访问的页面发送给浏览器,在页面传输过程中,浏览 器会打开多个端口,与服务器建立多个连接; ⑥ 释放TCP 连接; ⑦ 浏览器收到页面并显示给用户 (2)HTTP 报文格式 HTTP 有两类报文:从客户到服务器的请求报文和从服务器到客户的响应报文图 5.46 显示了两种报文的结构 图1.1 HTTP 的请求报文和响应报文结构 在图1.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”方法 是,附加的信息被填写在实体主体部分在响应报文中,实体主体部分为服务器发送给客户 的对象 图1.2 和图1.3显示了捕获的HTTP 请求和响应报文,结合上面的介绍,请自己分析和体会 图1.2 HTTP 请求报文示例 图1.3 HTTP 响应报文示例 2.实验环境与说明 (1)实验目的 在PC 机上访问Web 页面,截获报文,分析HTTP 协议的报文格式和HTTP 协议的工作过程 (2)实验设备和连接 本地实验室环境,无须设备连接; 注意:请通过访问可以连接的WWW 站点或使用IIS 建立本地WWW 服务器来进行实验 (3)实验分组 每四名同学为一组,每人一台计算机独立完成实验。
3.实验步骤 步骤1:在PC 机上运行Wireshark,开始截获报文; 步骤2:从浏览器上访问Web 界面,如打开网页,待浏览器的状态栏出现 “完毕”信息后关闭网页 步骤3:停止截获报文,将截获的报文命名为http-学号保存 分析截获的报文,回答以下几个问题: 1)综合分析截获的报文,查看有几种HTTP 报文? 有两种,一种是从客户机到服务器的请求报文,一种是从服务器到客户机的响应报文 2)在截获的HTTP 报文中,任选一个HTTP 请求报文和对应的 HTTP 应答报文,仔细 分析它们的格式,填写表1.1 和表1.2 表1.1 HTTP 请求报文格式方 法GET版 本http/1.1URL首部字段名字段值字段所表达的信息Accept*/*\r\n表明客户端可识别的内容Accept-EncodingGzip,deflate,sdch\r\n浏览器申明自己接收的编码方法Accept-Languagezh-CN,zh;q=0.8\r\n客户端能解释的语言-简体中文User-AgentMozilla/5.0(Windows NT 6.1)AppleWebKit/537.36(KHTML,like Gecko)Chrome/35.0.1916.153 Safari/537.36 SE 2.X MetaSr 1.0\r\n定义用于产生请求的软件类型 Host\r\n客户端指定自己想访问的WEB服务器的域名/IP 地址和端口号connectionKeeep-alive\r\n用于表明是否保存socket连接为开放的通用头标 表1.2 HTTP 应答报文格式 版 本http/1.1状态码200短 语OK首部字段名字段值字段所表达的信息Servernginx\r\n用于确定实际被发送的资源是否为同一资源DateMon,06 Apr 12:38:50 GMT\r\n消息发送的时间Content-TypeText/plain;charset=UTF-8\r\r\nWEB 服务器告诉浏览器自己响应的对象的类型Transfer-Encodingchunked\r\nWEB 服务器表明自己对本响应消息体作了怎样的编码Connectionkeep-alive\r\n用于表明是否保存socket连接为开放的通用头标Connection-Encodinggzip\r\nWEB服务器表明自己使用了什么压缩方法 3)分析在截获的报文中,客户机与服务器建立了几个连接?服务器和客户机分别使用 了哪几个端口号? 建立了三个连接,服务器使用了63808、63818、63819端口,客户机使用了80端口。
4 )综合分析截获的报文,理解HTTP 协议的工作过程,将结果填入表1.3 中 表1.3 HTTP 协议工作过程HTTP 客户机端口号HTTP 服务器端口号所包括的报文号步骤说明806380880浏览器通过域名服务器DNS查询IP地址8063808323DNS应答806381874客户机请求连接服务器806381870服务器收到连接请求806381862服务器与客户机连接80638181058向指定资源提交数据经行处理请求806381867服务器对请求信息响应由于Connection是keep-alive,没有断开连接释放TCP连接 三、实验心得通过实验的学习,了解到了更加具体和细致的知识,对于HTTP协议的工作流程有了更加条理清晰的掌握,当然其中还有许多对软件的不熟悉、报文的不理解的问题,不过通过实验的直观收获还是很大的,希望在以后的学习中可以掌握更多的知识。