基于wireshark的HTTP协议分析Word下载.docx
- 文档编号:8216496
- 上传时间:2023-05-10
- 格式:DOCX
- 页数:16
- 大小:1.55MB
基于wireshark的HTTP协议分析Word下载.docx
《基于wireshark的HTTP协议分析Word下载.docx》由会员分享,可在线阅读,更多相关《基于wireshark的HTTP协议分析Word下载.docx(16页珍藏版)》请在冰点文库上搜索。
课程名称
计算机网络
时间
2013学年第二学期19~20周
学生姓名
赵旋
指导老师
熊兵
题目
主要内容:
1、利用wireshark软件进行抓包;
2、分析HTTP协议的数据包;
3、分析HTTP(AddressResolutionProtocol)报文格式;
要求:
(1)掌握用wireshark软件的操作。
(2)按照要求来写课程设计报告,能够正确分析HTTP协议的内容。
应当提交的文件:
(1)课程设计报告。
学生姓名:
赵旋指导老师:
摘要本文通过协议分析工具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是HyperTextTransferProtocol(超文本传输协议)的缩写。
它的发展是万维网协会(WorldWideWebConsortium)和Internet工作小组IETF(InternetEngineeringTaskForce)合作的结果,(他们)最终发布了一系列的RFC,RFC1945定义了HTTP/1.0版本。
其中最著名的就是RFC2616。
RFC2616定义了今天普遍使用的一个版本——HTTP1.1。
HTTP协议(HyperTextTransferProtocol,超文本传输协议)是用于从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请求报文由请求行(requestline)、请求头部(header)、空行和请求数据4个部分组成,下图给出了请求报文的一般格式。
(1)请求行
请求行由请求方法字段、URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔。
例如,GET/index.htmlHTTP/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-VersionStatus-CodeReason-PhraseCRLF
其中,HTTP-Version表示服务器HTTP协议的版本;
Status-Code表示服务器发回的响应状态代码;
Reason-Phrase表示状态代码的文本描述。
状态代码由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值。
1xx:
指示信息--表示请求已接收,继续处理。
2xx:
成功--表示请求已被成功接收、理解、接受。
3xx:
重定向--要完成请求必须进行更进一步的操作。
4xx:
客户端错误--请求有语法错误或请求无法实现。
5xx:
服务器端错误--服务器未能实现合法的请求。
常见状态代码、状态描述的说明如下。
200OK:
客户端请求成功。
400BadRequest:
客户端请求有语法错误,不能被服务器所理解。
401Unauthorized:
请求XX,这个状态代码必须和WWW-Authenticate报头域一起使用。
403Forbidden:
服务器收到请求,但是拒绝提供服务。
404NotFound:
请求资源不存在,举个例子:
输入了错误的URL。
500InternalServerError:
服务器发生不可预期的错误。
503ServerUnavailable:
服务器当前不能处理客户端的请求,一段时间后可能恢复正常。
2.2wireshark简介
Wireshark(前称Ethereal)是一个网络封包分析软件。
网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。
Wireshark主要应用于网络管理员用来解决网络问题,网络安全工程师用来检测安全隐患,网络管理员用来解决网络问题,用来学习网络协议。
Wireshark不是入侵侦测软件(IntrusionDetectionSoftware,IDS)。
对于网络上的异常流量行为,Wireshark不会产生警示或是任何提示。
然而,仔细分析Wireshark撷取的封包能够帮助使用者对于网络行为有更清楚的了解。
Wireshark不会对网络封包产生内容的修改,它只会反映出目前流通的封包资讯。
网络分析也被称为流量分析、协议分析、嗅探、数据包分析或者窃听。
网络分析器可以是一个配有专用软件的独立硬件设备,也可以是一种安装在PC机上的软件工具。
网络分析器有开源和商用两种,不同之处在于它们所支持的协议种类、用户接口、图表及统计功能,以及数据包的解码的质量。
而Wireshark正是一种开源的网络分析器。
3设计步骤
3.1课程设计步骤
(1)启动WireShark。
图3.1wireshark启动界面
(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在这个过程中本机IP10.10.22.75。
然后浏览器与服务器建立TCP连接(服务器端的IP地址为173.194.72.199,端口是80)。
然后浏览器发出取文件命令:
GET/webhp?
hl=zh-CN&
sourceid=cnhpHTTP/1.1\r\n。
服务器给出响应把文件(text/html)发送给浏览器,浏览器显示text/html中的所有文本。
浏览器下载网页文本内容,网页文本中标记着图片、CSS文件和Flash等等。
在这次课程设计中谷歌主页还包括谷歌logo图片和其他一些内容,浏览器分析出这些内容后开4个线程对这些内容进行下载,分别向服务器发送请求报文,服务器接收到内容后根据HTTP协议发送响应报文。
所有的内容下载完毕时候浏览器会显示全部内容,一个完整的谷歌主页就这样打开了。
3.3分析HTTP报文
下面是根据时间顺序给抓到的包编号为1到8。
图3.6第1个包
分析:
本地PC机(IP地址为10.10.22.75)中的浏览器向谷歌的服务器(IP地址为173.194.72.199)请求服务时,先和校园网代理服务器建立TCP连接,并向代理服务器发出HTTP请求报文,请求服务器发送文本文件。
代码分析:
sourceid=cnhpHTTP/1.1\r\n//请求目标
.hk//目标所在的主机
Connection:
keep-alive//激活连接
text/html,application/xhtml+xml,application/xml;
q=0.9,*/*;
q=0.8
Mozilla/5.0(WindowsNT6.1;
WOW64)AppleWebKit/537.31(KHTML,likeGecko)Chrome/26.0.1410.64Safari/537.31//用户代理,浏览器的类型是chrome浏览器;
括号内是相关解释
X-Chrome-Variations:
CLS1yQEIkbbJAQihtskBCKO2yQEIp7bJAQiptskBCLm2yQEI/IPKAQibhMoB
Accept-Encoding:
gzip,deflate,sdch//可接受编码,文件格式
Accept-Language:
zh-CN,zh;
q=0.8//语言中文
Accept-Charset:
GBK,utf-8;
q=0.7,*;
q=0.3//告诉服务器,客户端提交的表单可能使用的编码
Cookie:
NID=67=FFrU7T8-DNJkzwhsGzijolp09lzBgCLKCRzVNkZRrfsoTT2-aTJFjxZ9dWgebP_mDb_DAt6tYahSqydnDLk0gW5vP47JC7Xhj-183NqQxUGUnb3dZHh71-WeAabsKurvndnGPPa3MdY;
PREF=ID=1c5991ad66b47581:
U=4e3bc9a43161a8a2:
FF=2:
LD=zh-CN:
NW=1:
TM=1330947425:
LM=1372979082:
S=zO71aH_kzkhNciIQ//允许站点跟踪用户,cookieID是1c5991ad66b47581
图3.7第2个包
由状态栏的200代码可知,谷歌服务器(IP地址为173.194.72.199)成功接收到我们本地发送的请求报文,向IP地址为10.10.22.75的本地发送响应报文,把文件发送给浏览器。
根据报文内容可以知道更多的关于文档的信息。
HTTP/1.1200OK\r\n//状态行,成功
Date:
Fri,05Jul201304:
19:
16GMT\r\n//响应信息创建的时间
Expires:
-1\r\n//设置内容过期时间
Cache-Control:
private,max-age=0\r\n
Content-Type:
text/html;
charset=UTF-8\r\n//内容类型:
文本
Content-Encoding:
gzip\r\n//内容编码
Server:
gws\r\n//服务器
X-XSS-Protection:
1;
mode=block\r\n//X-XSS防护
X-Frame-Options:
SAMEORIGIN\r\n
Transfer-Encoding:
chunked\r\n//分块传输编码
\r\n
HTTPchunkedresponse
Line-basedtextdata:
text/html//对所传文本信息(基于html)的描述
图3.8第3个包
第二个包中抓到的包中的文本文档中有标记还要继续下载的内容,本地服务器再次发送请求报文向谷歌服务器请求下载文件,由请求行可以看出请求的是一张png格式的图片,应该是谷歌主页的logo。
GET/textinputassistant/tia.png/1.1\r\n//请求目标是一张格式为png的图片
//目标所在的主机
*/*
CLS1yQEIkbbJAQihtskBCKO2yQEIp7bJAQiptskBCLm2yQEI/IPKAQibhMoB
//允许站点跟踪用户
图3.9第4个包
状态行显示的结果表明谷歌服务器成功接收到本地发送的请求报文,相应的的向本地发出响应报文并把图像文件发送给了本地。
响应报文中有关于图片的一些信息记录。
image/png\r\n//内容类型:
图像格式为png
Last-modified:
mon,02Apr201202:
13:
37GMT\r\n//上一次修改时间
Thu,03Ju1201421:
21:
50\r\n//设置内容过期时间
sffe\r\n//服务器sffe
Content-length:
387\r\n//内容长度
PortablenetworkGraphics//对所传图片信息的描述
下面一并分析第5和第六个包。
图3.10第5个包
图3.11第6个包
本地连续向谷歌服务器发送了两个请求报文,是因为在第二个包接收后在网页文本文档中标记的图片,音乐等多媒体文档都有标记在里面,浏览器分析出这些内容后对这些内容进行并行下载。
图3.12第7个包
状态行显示的结果表明谷歌服务器成功接收到本地发送的请求报文,204NoContent没有新文档,浏览器应该继续显示原来的文档。
重要代码分析:
HTTP/1.1204noContent\r\n//没有需要更新的内容
图3.13第8个包
状态行显示的结果表明谷歌服务器成功接收到本地发送的请求报文,相应的的向本地发出响应报文并把文本文件发送给了本地。
响应报文中有关于内容编码、内容类型、上次修改时间、创建日期、以及期限的记录上面包的的分析中都有提到,不再赘述。
这个文本文件是基于javascript脚本的,详细内容都有具体给出。
text/javascript//对所传文本信息(基于javascript脚本)的描述
最后,通过HTTP协议向谷歌服务器请求谷歌主页的万维网文档,服务器通过HTTP协议把文档传送给浏览器,浏览器下载完所有内容后把所有内容显示到浏览器上面,从而在浏览器上打开了谷歌网站的主页。
4结束语
经过本次实验的我学会了如何使用WireShark进行基本的数据的抓取,以及对数据包的简单分析,加深了对常用网络协议HTTP的理解,顺便也理解了DNS协议,对TCP和UDP的报文结构有了更多的了解。
由于自身能力和时间的限制,对更加细节的流程把握的不是很好,希望能够随着今后对课程体系更深入的学习能有进一步的改进。
同时,此次课程设计也让我看到了自己的不足,自己对本专业的相关知识掌握的还很少,还有很多知识都没掌握,还让我认识到解决问题的方法、途径很多做事要开阔自己的思维,看待问题要从多个角度看。
最后,感谢熊兵老师的悉心指导和同学的帮助!
在熊老师的耐心指导下,我从原理到实践都理解通透。
老师严谨求实的治学态度、踏实坚韧的工作精神将使我终生受益。
非常感谢老师的知道与教诲。
参考文献
[1]谢希仁.计算机网络.北京:
电子工业出版社,
2011:
239-246
[2]陈鸣译.计算机科学网络自顶向下的方法(第4版),2001-9-6
[3]计算机网络管理.西安电子科技大学出版社,2009:
250-280
[4]罗小嘉.学习用wireshark进行抓包分析.2009
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 wireshark HTTP 协议 分析