当前位置:文档之家› 基于wireshark的HTTP协议分析

基于wireshark的HTTP协议分析

长沙理工大学计算机与通信工程学院《计算机网络》课程设计报告学院计算机与通信工程专业通信工程班级通信1003班学号************ 学生姓名赵旋指导教师熊兵课程成绩完成日期2013年7月11日课程设计成绩评定院系计算机与通信工程专业通信工程班级1003 学号201054080333学生姓名赵旋指导教师熊兵指导教师对学生在课程设计中的评价指导教师成绩指导教师签字年月日课程设计答辩组对学生在课程设计中的评价答辩组成绩答辩组长签字年月日课程设计综合成绩注:课程设计综合成绩=指导教师成绩×60%+答辩组成绩×40%课程设计任务书计算机与通信工程学院通信工程专业基于Wireshark的HTTP协议分析学生姓名:赵旋指导老师:熊兵摘要本文通过协议分析工具Wireshark软件作为HTTP协议的设计平台,通过对连接网页时用Wireshark进行抓取协议,再过滤得到HTTP协议。

并分析HTTP协议从而了解HTTP协议的数据包。

通过此次课设了解并且学会使用Wireshark软件,学会如何利用Wireshark进行捕获抓包、过滤对协议进行分析,而且进一步掌握HTTP协议。

关键词Wireshark;数据包;HTTP协议1 引言经过计算机网络基础前面时间的学习,使我们对网络应用层的协议有了一定的了解。

协议就像一门语言,需要定义语法、语意和语序(时序、同步)。

语法即为协议的具体格式;语意定义了具体格式中具体指代,比如说,空一行后的数据表示为数据字段;就目前说掌握的只是而言,我对语序的理解还不是很清楚,这里就不加赘述。

下面将主要从应用层的协议出发,利用我们所学习过的知识,对不同的应用请求响应过程进行分析,探究在不同网络工作环境下网络协议的变化。

1.1 课程设计目的(1) 熟悉并掌握WireShark的基本操作,了解网络协议实体间的交互以及报文交换。

(2) 通过对WireShark抓包实例进行分析,进一步加深对常用网络协议的理解,如DNS和HTTP协议。

(3) 培养理论联系实践的科学研究精神。

1.2 实验方法(1)利用Wireshark软件抓取本地PC的数据包,观察其主要使用的网络协议。

(2)根据所获数据包的内容分析相关协议,从而加深对HTTP网络协议的理解。

2 基本原理2.1 协议简介HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写。

它的发展是万维网协会(World Wide Web Consortium)和Internet工作小组IETF(Internet Engineering Task Force)合作的结果,(他们)最终发布了一系列的RFC,RFC 1945定义了HTTP/1.0版本。

其中最著名的就是RFC 2616。

RFC 2616定义了今天普遍使用的一个版本——HTTP 1.1。

HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。

它可以使浏览器更加高效,使网络传输减少。

它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。

HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。

HTTP是一个无状态的协议。

HTTP协议的主要特点可概括如下:(1) 支持客户/服务器模式。

(2) 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。

请求方法常用的有GET、HEAD、POST。

每种方法规定了客户与服务器联系的类型不同。

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

(3) 灵活:HTTP允许传输任意类型的数据对象。

正在传输的类型由Content-Type加以标记。

(4) 无连接:无连接的含义是限制每次连接只处理一个请求。

服务器处理完客户的请求,并收到客户的应答后,即断开连接。

采用这种方式可以节省传输时间。

(5) 无状态:HTTP协议是无状态协议。

无状态是指协议对于事务处理没有记忆能力。

缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。

另一方面,在服务器不需要先前信息时它的应答就较快。

HTTP报文是面向文本的,报文中的每一个字段都是一些ASCII码串,各个字段的长度是不确定的。

HTTP有两类报文:请求报文和响应报文。

1、请求报文图 2.1 请求报文结构一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求数据4个部分组成,下图给出了请求报文的一般格式。

(1)请求行请求行由请求方法字段、URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔。

例如,GET /index.html HTTP/1.1。

HTTP协议的请求方法有GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT。

这里介绍最常用的GET方法和POST方法。

GET:当客户端要从服务器中读取文档时,使用GET方法。

GET方法要求服务器将URL定位的资源放在响应报文的数据部分,回送给客户端。

使用GET 方法时,请求参数和对应的值附加在URL后面,利用一个问号(“?”)代表URL 的结尾与请求参数的开始,传递参数长度受限制。

例如,/index.jsp?id=100&op=bind。

POST:当客户端给服务器提供信息较多时可以使用POST方法。

POST方法将请求参数封装在HTTP请求数据中,以名称/值的形式出现,可以传输大量数据。

(2)请求头部请求头部由关键字/值对组成,每行一对,关键字和值用英文冒号“:”分隔。

请求头部通知服务器有关于客户端请求的信息,典型的请求头有:User-Agent:产生请求的浏览器类型。

Accept:客户端可识别的内容类型列表。

Host:请求的主机名,允许多个域名同处一个IP地址,即虚拟主机。

(3)空行最后一个请求头之后是一个空行,发送回车符和换行符,通知服务器以下不再有请求头。

(4)请求数据请求数据不在GET方法中使用,而是在POST方法中使用。

POST方法适用于需要客户填写表单的场合。

与请求数据相关的最常使用的请求头是Content-Type和Content-Length。

2、HTTP响应报文图 2.2 响应报文结构HTTP响应也由三个部分组成,分别是:状态行、消息报头、响应正文。

状态行格式如下:HTTP-Version Status-Code Reason-Phrase CRLF其中,HTTP-Version表示服务器HTTP协议的版本;Status-Code表示服务器发回的响应状态代码;Reason-Phrase表示状态代码的文本描述。

状态代码由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值。

1xx:指示信息--表示请求已接收,继续处理。

2xx:成功--表示请求已被成功接收、理解、接受。

3xx:重定向--要完成请求必须进行更进一步的操作。

4xx:客户端错误--请求有语法错误或请求无法实现。

5xx:服务器端错误--服务器未能实现合法的请求。

常见状态代码、状态描述的说明如下。

200 OK:客户端请求成功。

400 Bad Request:客户端请求有语法错误,不能被服务器所理解。

401 Unauthorized:请求未经授权,这个状态代码必须和WWW-Authenticate 报头域一起使用。

403 Forbidden:服务器收到请求,但是拒绝提供服务。

404 Not Found:请求资源不存在,举个例子:输入了错误的URL。

500 Internal Server Error:服务器发生不可预期的错误。

503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常。

2.2 wireshark简介Wireshark(前称Ethereal)是一个网络封包分析软件。

网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。

Wireshark主要应用于网络管理员用来解决网络问题,网络安全工程师用来检测安全隐患,网络管理员用来解决网络问题,用来学习网络协议。

Wireshark不是入侵侦测软件(Intrusion DetectionSoftware,IDS)。

对于网络上的异常流量行为,Wireshark不会产生警示或是任何提示。

然而,仔细分析Wireshark撷取的封包能够帮助使用者对于网络行为有更清楚的了解。

Wireshark不会对网络封包产生内容的修改,它只会反映出目前流通的封包资讯。

网络分析也被称为流量分析、协议分析、嗅探、数据包分析或者窃听。

网络分析器可以是一个配有专用软件的独立硬件设备,也可以是一种安装在PC机上的软件工具。

网络分析器有开源和商用两种,不同之处在于它们所支持的协议种类、用户接口、图表及统计功能,以及数据包的解码的质量。

而Wireshark正是一种开源的网络分析器。

3 设计步骤3.1课程设计步骤(1)启动WireShark。

图 3.1 wireshark启动界面(2)启动PC上的chrome浏览器。

图3.2 启动chrome浏览器(3) 开始分组捕获:选择“抓包”下拉菜单中的“抓包参数选择”命令,在WireShark:“抓包选项”窗口中可以设置分组捕获的选项。

图3.3选项(4) 在这次实验中,使用窗口中显示的默认值。

选择“抓包”下拉菜单中的“网络接口”命令,显示计算机中所安装的网络接口(即网卡)。

我们需要选择电脑真实的网卡,点击后显示本机的IP地址。

(5) 随后,点击“开始”则进行分组捕获,所有由选定网卡发送和接收的分组都将被捕获。

图3.4 抓包选项设置(6) 待捕获一段时间,关闭浏览器,选择主窗口中有的“stop”按钮,可以停止分组的捕获。

图3.5 结束按钮3.2 抓包并分析过程这次实验通过分析打开谷歌主页来分析http协议的作用。

在filter中输入http进行筛选。

wireshark所抓的含有http请求报文的帧:图3.6 打开谷歌主页抓到的HTTP包对打开谷歌网页这个事务进行分析:在浏览器中输入谷歌主页地址,敲击回车的过程中,浏览器向DNS请求解析的IP地址。

域名系统DNS 解析出谷歌服务器的IP地址为173.194.72.199在这个过程中本机IP 10.10.22.75。

然后浏览器与服务器建立TCP连接(服务器端的IP地址为173.194.72.199,端口是80)。

然后浏览器发出取文件命令:GET /webhp?hl=zh-CN&sourceid=cnhp HTTP/1.1\r\n。

服务器给出响应把文件(text/html)发送给浏览器,浏览器显示text/html中的所有文本。

相关主题