1HTTP协议分析.docx
- 文档编号:18111111
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:17
- 大小:378.73KB
1HTTP协议分析.docx
《1HTTP协议分析.docx》由会员分享,可在线阅读,更多相关《1HTTP协议分析.docx(17页珍藏版)》请在冰点文库上搜索。
1HTTP协议分析
开放式课题
实验报告
实验名称:
基于Wireshark软件的HTTP协议分析
学号:
姓名:
指导教师:
宫婧
指导单位:
理学院
目录
实验目的..........................................................2
1)掌握Wireshark软件使用方法2
2)理解HTTP协议工作原理.....................................2
实验任务2
1)抓取数据包2
2)分析数据包2
实验环境2
软件介绍2
1)wireshark软件简介2
2)wireshark软件的应用2
3)wireshark软件的价值2
4)wireshark软件的操作简介3
HTTP协议详解4
1)HTTP协议基础概念4
2)HTTP协议工作流程5
3)HTTP协议请求响应信息6
ØHTTP请求报文信息....................................6
ØHTTP响应报文信息....................................7
HTTP数据包分析..................................................8
1)网络接口层信息10
2)网络层信息11
3)传输层信息12
4)应用层信息13
总结14
参考文献........................................................14
基于Wireshark软件的HTTP协议分析
实验目的:
(1)掌握wireshark软件的使用方法,了解wireshark的工作原理;
(2)掌握HTTP协议的工作原理。
实验任务:
(1)抓取数据包
学会利用wireshark软件进行抓包,学会过滤获取HTTP数据包
(2)分析数据包
学会获取数据包信息,了解HTTP工作机制。
实验环境:
(1)WindowsXP操作环境
(2)wireshark软件
软件介绍:
(1)wireshark简介
Wireshark(前称Ethereal)是一个网络封包分析软件。
网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。
(2)wireshark的应用
网络管理员使用Wireshark来检测网络问题,网络安全工程师使用Wireshark来检查资讯安全相关问题,开发者使用Wireshark来为新的通讯协定除错,普通使用者使用Wireshark来学习网络协定的相关知识,有的人也居心叵测的用它来寻找一些敏感信息……
仔细分析Wireshark撷取的封包能够帮助使用者对于网络行为有更清楚的了解。
Wireshark不会对网络封包产生的内容进行修改,它只会反映出目前流通的封包资讯。
Wireshark本身也不会送出封包至网络上。
(3)Wireshark的价值
在GNUGPL通用许可证的保障范围底下,使用者可以以免费的代价取得软件与其源代码,并拥有针对其源代码修改及客制化的权利。
它是目前全世界最广泛的网络封包分析软件之一。
(4)Wireshark的操作简介
点击wireshak图标,出现以下页面:
点击
此时,有图片显示可知,该PC机的之连了有线网络,因而,我们只能捕捉到有限网络信息,点击Start,即可捕捉网络信息。
若只想捕捉打开一个网页的信息,可以先打开该网页,再打开wireshark软件,点击Start,刷新该网页,即可获得该网页信息。
例如:
下面的打开,获得该网页信息,获得的如下页面:
此时,获得的是打开XX网页的所有协议的数据包,若只想得知一种协议的数据包信息,我们可以在下面这一过滤工具栏中打上协议名称,wireshark软件就可以过滤掉其他协议信息,仅出现想要的协议信息
HTTP协议详解
(1)HTTP协议基础概念
HTTP协议(HyperTextTransferProtocol,超文本传输协议)是互联网上应用最为广泛的一种网络协议。
它是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。
所有的www文件都必须遵守这个标准。
它是客户端浏览器或其他程序与Web服务器之间的应用层通信协议。
在Internet上的Web服务器上存放的都是超文本信息,客户机需要通过HTTP协议传输所要访问的超文本信息。
HTTP包含命令和传输信息,不仅可用于Web访问,也可以用于其他因特网/内联网应用系统之间的通信,从而实现各类应用资源超媒体访问的集成。
它可以使浏览器更加高效,使网络传输减少。
它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。
HTTP协议通常承载于TCP协议之上,有时也承载于TLS或SSL协议层之上,这个时候,就成了我们常说的HTTPS。
如下图所示:
默认HTTP的端口号为80,HTTPS的端口号为443。
(2)HTTP协议工作流程
一次HTTP操作称为一个事务,其工作过程可分为四步:
1)首先客户机与服务器需要建立连接。
只要单击某个超级链接,HTTP的工作开始。
2)建立连接后,客户机发送一个请求给服务器,请求方式的格式为:
统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。
3)服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。
4)客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。
如图所示:
(3)HTTP协议请求响应信息:
HTTP协议永远都是客户端发起请求,服务器回送响应。
HTTP协议是一个无状态的协议,同一个客户端的这次请求和上次请求是没有对应关系。
ØHTTP请求报文信息
HTTP请求报文格式:
<请求行>
<通用信息头>
<请求头>
<实体头>
<空行>
[<报文体>]
[<报文尾部>]
请求行=方法+URL+HTTP版本号+CRLF
方法=GET|HEAD|POST|……,请求类型是对大小写敏感的,下面简要叙述这几种方法的功能:
1.GET方法表示取回由Request-URI标识的信息。
2.HEAD方法也表示取回由Request-URI标识的信息,只是可以在响应时,不返回消息体。
3.POST方法可以请求服务器接收包含在请求中的实体信息,可以用于提交表单,向新闻组、BBS、邮件群组和数据库发送消息。
当然还有其他的方法,如PATCH,COPY,MOVE,DELETE,LINK,UNLINK,OPTION
URL=协议名称+宿主名+目录与文件名
URL是一种特殊类型的URI,包含了用于查找某个资源的足够的信息,其的格式如下:
http:
//host[":
"port][abs_path]
http表示要通过HTTP协议来定位网络资源;host表示合法的Internet主机域名或者IP地址;port指定一个端口号,默认端口为80;abs_path指定请求资源的URI;如果URL中没有给出abs_path,那么当它作为请求URI
时,必须以“/”的形式给出,通常这个工作浏览器自动帮我们完成。
HTTP版本号=HTTP0.9|HTTP1.0|HTTP1.1
HTTP1.1是请求服务器响应的HTTP版本,HTTP1.1是我们目前最常使用的版本,它和HTTP0.9,HTTP1.0的最大不同之处在于,HTTP1.1是默认连接的,也就是说服务器在发送响应后,让连接连续为一些请求打开。
请求头
请求头由关键字/值对组成,每行一对,关键字和值用英文冒号“:
”分隔。
请求头部通知服务器有关于客户端请求的信息,典型的请求头有:
User-Agent:
产生请求的浏览器类型,允许客户端将它的操作系统,浏览器和其他属性告诉服务器,但这个报头域不是必须的。
Accept:
请求报头域用于指定客户端接受哪些类型的信息,HTTP可以接受MIME信息
Host:
发送请求时,该报头域是必需的,主要用于指定被请求资源的Internet主机和端口号,它通常从HTTPURL中提取出来的
Accept-Charset:
用于指定客户端接受的字符集。
Accept-Encoding:
类似于Accept,但是它是用于指定可接受的内容编码。
Accept-Language请求报头域类似于Accept,但是它是用于指定一种自然语言。
Authorization:
主要用于证明客户端有权查看某个资源。
ØHTTP响应报文信息
HTTP响应报文格式为:
<状态行>
<通用信息头>
<响应头>
<实体头>
[<报文体>
状态行=HTTP版本号+状态码+原因叙述
其中,状态码表示服务器发回的响应状态代码;原因叙述表示状态代码的文本描述。
状态码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值:
1xx:
指示信息--表示请求已接收,继续处理
2xx:
成功--表示请求已被成功接收、理解、接受
3xx:
重定向--要完成请求必须进行更进一步的操作
4xx:
客户端错误--请求有语法错误或请求无法实现
5xx:
服务器端错误--服务器未能实现合法的请求
常见状态代码、状态描述、说明:
200OK:
客户端请求成功
400BadRequest:
客户端请求有语法错误,不能被服务器所理解
401Unauthorized:
请求XX,这个状态代码必须和WWW-Authenticate报头域一起使用
403Forbidden:
服务器收到请求,但是拒绝提供服务
404NotFound:
请求资源不存在,eg:
输入了错误的URL
500InternalServerError:
服务器发生不可预期的错误
503ServerUnavailable:
服务器当前不能处理客户端的请求,一段时间后,可能恢复正常
响应头:
几种常见的响应头如下
Allow:
服务器支持哪些请求方法(如GET、POST等);
Content-Encoding:
文档的编码(Encode)方法。
只有在解码之后才可以得到Content-Type头指定的内容类型。
利用gzip压缩文档能够显著地减少HTML文档的下载时间。
Content-Length:
表示内容长度。
只有当浏览器使用持久HTTP连接时才需要这个数据;
Content-Type:
表示后面的文档属于什么MIME类型。
Servlet默认为text/plain,但通常需要显式地指定为text/html。
Date:
当前的GMT时间。
可以用setDateHeader来设置这个头以避免转换时间格式的麻烦;
Expires:
指明应该在什么时候认为文档已经过期,从而不再缓存它。
Location:
表示客户应当到哪里去提取文档。
Location通常不是直接设置的,而是通过HttpServletResponse的sendRedirect方法,该方法同时设置状态代码为302;
Refresh:
表示浏览器应该在多少时间之后刷新文档,以秒计。
HTTP数据包分析:
为了更详尽的了解HTTP协议,下面,我利用wireshark软件对HTTP协议的数据包进行分析:
首先,我点击wireshark中的
开始,并开启我的主页,wireshark软件自动获取数据包,再在显示过滤器中输入HTTP,筛选出HTTP数据包:
下图为我打开我的主页所抓取的HTTP数据包:
我选择对数据包4进行分析:
上面一条截图给了我们一些简要的信息:
0.02689表示数据包4的时间戳,即与最先捕获的数据包1相差的时间;192.168.1.100表示显示包的源地址;
119.75.217.56表示显示包的目标地址;
HTTP即为显示包的应用协议;
GET/HTTP/1.1表示显示包的内容的附加信息;
由GET可知,数据包4是客户端向服务器请求发送内容数据包,则192.168.1.100为我的pc当时的IP地址。
下为wireshark的“包详情”面板,显示了数据包4的详细信息:
首先,点击上图中的第一列,将显示
上图显示了帧4的一些基本信息:
捕获到帧4的长度为709byte;
到达时间为"Dec1,201009:
44:
01.123481000";
时间戳为1291167841.123481000s,表示与1970-01-01T00:
00:
00Z的时间是1291167841.123481000s;
帧4距上一个数据包被捕获时间的时间差为0.000432000s;
帧4总共使用的协议有IP,TCP,HTTP协议;
使用端口号为80。
网络接口层信息
上图大致描述TCP/IP网络接口层的信息,
网络接口层是TCP/IP与各种LAN或WAN的接口,网络接口层在发送端将上层的IP数据报封装成帧后发送到网络上;数据帧通过网络到达接收端时,该结点的网络接口层对数据帧拆封,并检查帧中包含的MAC地址。
如果该地址就是本机的MAC地址或者是广播地址,则上传到网络层,否则丢弃该帧。
通过上图我们大致可知:
数据包4源地址的pc机的物理地址为00:
1e:
68:
24:
68:
96,即我的Pc机的物理地址为00:
1e:
68:
24:
68:
96;
目的地址的pc机的物理地址为00:
25:
86:
1f:
b0:
3e。
网络层信息
此为网络层的信息,网络层只要负责解决忘记通信问题,主要功能是提供路由,还具有流量控制和拥挤控制的能力,由上图可知:
IP版本号为4;
头部长度为20bytes;
整个IP包总长度为695bytes,
服务类型为00;
存活时间为64;
创建该数据包的高级协议为TCP(6是TCP的代号);
片标志(flags)为0x02,它占3个Bit位,第一位不用,第二位是分片标志位,0表示分片,1表示不分版本,此处为1,即不分版本,第三位用来判断该分片是否为最后一片,若是,则为0,不是则为1
Fragmentoffset=0,表示片偏移地址为0
头检验为0xfe5b,是正确的,未被非法修改过;
发送源IP地址为192.168.1.100,目的地IP地址为119.75.217.56
传输层信息
此为传输层的信息,传输层是用户设备为上层应用提供分段功能,并且对下层来的数据进行重组。
由上图可知:
发送源端口号为1402,接收端口号为80;
sequencenumber是1,这表明该数据段的第一个字节的顺序号是1;
nextsequencenumber是656,这是下一个分段的数据段的第一个字节的顺序号,两者相减,表明该数据段所携带的数据长度为655;
acknowledgenumber是1,这是确认应答号,这是接收端下一个期望接收的tcp分段号,因为这是客户端发送的请求,所以确认应答号为1,表明下一个期望接收的数据分段号码为1,这恰与顺序段的1相吻合;
Headerlength为20byte,即tcp分段的头长,给出了数据在tcp数据段的起始位置;
Push设置为1,这是请求急迫操作,它要求分段一到,马上送应用程序而不等到接收缓冲区满时才送应用程序,acknowledgement也设置为1,它起到的作用是确认字段有效,其他的一些标志都为0,即没有设置,所以,我将不一一解释;
Windowsize为65535,这是窗口对应的最大数据长度,这是发送方可以接收的数据量,即我的pc能接受的最大数据量为65535,;
Numberofbytesinflight:
655表明数据段长度为655byte,这与上面的下一个顺序号与顺序号相减的结果一致。
应用层信息
此为应用层的信息,应用层直接向用户提供服务,是计算机网络与用户界面的接口,HTTP就是适用于应用层的一种超文本传输协议,由上图可得:
HTTP的请求行为GET/HTTP/1.1\r\n,由GET可知此次为客户端向服务器发送请求,HTTP版本为HTTP1.1;
Referer头域为:
http:
/
Accept_language为zh-ch,表示它指定的自然语言是简体中文;
Accept_Encoding:
gizp,deflate,表示指定的编码为gizp,deflate;
User-Agent=Mozilla/4.0(compatible;MISE6.0;windowsNT5.1;SVI;InfoPath.2)
告诉了服务器我所使用的网页浏览器;
Host=表示主机名为;
Connection=keep-Alive表示保持持续连接;
由服务器向客户机响应的数据包与请求包类似,有wireshark软件捕捉到后将多一层信息,举例说明:
此为关于HTTP协议的响应数据包的溅落信息,以TEXT和html格式返回给客户端,
此时,wireshark包详情面板中多了一行信息,Lin-basedtextdata:
text/html,这给我们提供了简略的html代码。
总结
本次开放式实验主要目的是学习使用wireshark软件,学会用它捕获的数据包进行网络协议解析,并通过对数据包的分析,对网络协议有深层次的了解。
通过本次实验,我学会了使用wireshark软件,掌握了HTTP协议的基本原理,明白了HTTP协议的各种数据报头的作用,了解了HTTP协议在互联网络中的至关重要的作用。
在学习过程中,我遇到很多困难,开始,对wireshark软件不慎了解,对各种协议的概念模糊不清,幸而有指导老师和学长的帮助,才使得我的这次实验能够顺利进行。
通过这次实验,我对于网络协议,特别是HTTP协议有了较清楚的认识,也学会了利用各种学习资料,各种软件工具来学习网络知识。
TCP/IP协议有很多种类,单单学习HTTP协议还远远不够。
我知道自己的知识很有限,需要学习的东西还有很多,但我会继续努力!
参考文献
XX百科:
web技术:
HTTP到服务端
TCP/IP指南.卷2应用层协议
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- HTTP 协议 分析