您好,欢迎来到爱问旅游网。
搜索
您的当前位置:首页网络协议分析课程设计-流量分析报告模板-http

网络协议分析课程设计-流量分析报告模板-http

来源:爱问旅游网


西 安 邮 电 大 学

(计算机学院)

网络协议分析设计报告

题 目: Web流量分析

专业名称: 网络工程 班 级: 1201 学生姓名: 司联波

学号(8位): 04122007 指导教师: 孙韩林

设计起止时间:2014年12月15日—2014年12月19日

网络协议分析与仿真课程设计报告

网络流量分析

一、 课程设计目的

加深对IP、DSN 、TCP、UDP、HTTP等协议的理解; 掌握流量分析工具的使用,学习基本的流量分析方法。

二、 课程设计内容

流量分析

 工具:Wireshark(Windows或Linux),tcpdump(Linux)

 要求:使用过滤器捕获特定分组;用脚本分析大量流量数据(建议用perl)。  内容:Web流量分析

清除本机DNS缓存,访问某一网页(http://www.zhihu.com/),捕获访问过程中的所有分组,分析并回答下列问题(以下除1、3、8、11外,要求配合截图回答): (1) 简述访问web页面的过程

(2) 找出DNS解析请求、应答相关分组,传输层使用了何种协议,端口号是多少?

所请求域名的IP地址是什么 (3) 统计访问该页面共有多少请求IP分组,多少响应IP分组?(提示:用脚本编

程实现) (4) 找到TCP连接建立的三次握手过程,并结合数据,绘出TCP连接建立的完整过

程,注明每个TCP报文段的序号、确认号、以及SYN\\ACK的设置。 (5) 针对(4)中的TCP连接,该TCP连接的四元组是什么?双方协商的起始序号是

什么?TCP连接建立的过程中,第三次握手是否带有数据?是否消耗了一个序号? (6) 找到TCP连接的释放过程,绘出TCP连接释放的完整过程,注明每个TCP报文

段的序号、确认号、以及FIN\\ACK的设置。 (7) 针对(5)中的TCP连接释放,请问释放请求由服务器还是客户发起?FIN报文

段是否携带数据,是否消耗一个序号?FIN报文段的序号是什么?为什么是这个值? (8) 在该TCP连接的数据传输过程中,找出每一个(客户)发送的报文段与其ACK

报文段的对应关系,计算这些数据报文段的往返时延RTT(即RTT样本值)。根据课本200页5.6.2节内容,给每一个数据报文段估算超时时间RTO。(提示:用脚本编程实现 (9) 分别找出一个HTTP请求和响应分组,分析其报文格式。参照课本243页图6-12,

在截图中标明各个字段。

(10) 访问同一网站的不同网页,本次访问中的TCP连接是否和上次访问相同?(与

上次页面访问时间间隔不能过长,可连续访问,分别分析。 (11) 请描述HTTP协议的持续连接的两种工作方式。访问这些页面(同一网站的不同

页面)的过程中,采用了哪种方式?(参考课本241页) 三、 设计与实现过程

(1)简述访问web页面的过程 答:主要分为三个大的方面:

连接 当我们输入这样一个请求时,首先要建立一个socket连接,因为socket是通过ip和端口建立的,所以之前还有一个DNS解析过程,把http://www.zhihu.com/变成ip,使用UDP协议的默认端口号(53)。

DNS的过程是这样的:首先我们知道我们本地的机器上在配置网络时都会填写DNS, 这样本机就会把这个url发给这个配置的DNS服务器,如果能够找到相应的url则返回其ip,否则该DNS将继续将该解析请求发送给上级DNS,整个DNS可以看做是一个树状结构,该请求将一直发送到根直到得到结果。现在已经拥有了目标ip和端口号,这样我们就可以打开socket连接了。

请求 连接成功建立后,开始向web服务器发送请求,这个请求一般是GET或POST命令(POST用于FORM参数的传递)。GET命令的格式为: GET 路径/文件名 HTTP/1.0 文件名指出所访问的文件,HTTP/1.0指出Web浏览器使用的HTTP版本。现在可以发送GET命令:

GET /zhihu/index.html HTTP/1.0,

应答 web服务器收到这个请求,进行处理。从它的文档空间中搜索子目录mytest的文件index.html。如果找到该文件,Web服务器把该文件内容传送给相应的Web浏览器。 为了告知浏览器,,Web服务器首先传送一些HTTP头信息,然后传送具体内容(即HTTP体信息),HTTP头信息和HTTP体信息之间用一个空行分开。 常用的HTTP头信息有:

① HTTP 1.0 200 OK 这是Web服务器应答的第一行,列出服务器正在运行的HTTP版本号和应答代码。代码\"200 OK\"表示请求完成。 ② MIME_Version:1.0 它指示MIME类型的版本。

③ content_type:类型 这个头信息非常重要,它指示HTTP体信息的MIME类型。如:content_type:text/html指示传送的数据是HTML文档。

④ content_length:长度值 它指示HTTP体信息的长度(字节)。

关闭连接:当应答结束后,Web浏览器与Web服务器必须断开,以保证其它Web浏览器能够与Web服务器建立连接。

(2)找出DNS解析请求、应答相关分组,传输层使用了何种协议,端口号是多少?所请求域名的IP地址是什么?

试验中访问www.zhihu.com,抓到dns 数据包,找到www.zhihu.com的请求分组,查

看使用相关的四元组,和使用的协议,然后使用过滤规则(ip.addr= 192.168.1.111 &&ip.addr == 221.11.1.67) &&(udp.port ==62369 and udp.port== 53)找到其相应的DNS的解析请求的和应答的相关分组。结果如下图:

第9行的DNS的请求分组,第18行为DNS的响应分组。分别展开如下: 下面为DNS的请求分组,使用的协议为UDP 源端口为:62369 目的端口为:53

下面为DNS的应答分组,使用的协议为UPD 源端口为:53 目的端口为:62369可以看出来所请求域名的IP 为两个(60.28.215.70和60.28.215.71)

产生两个ip的主要原因是服务器采用了负载均衡!DNS负载均衡技术是在DNS服务器中为同一个主机名配置多个IP地址,在应答DNS查询时,DNS服务器对每个查询将以DNS文件中主机记录的IP地址按顺序返回不同的解析结果,将客户端的访问引导到不同的机器上去,使得不同的客户端访问不同的服务器,从而达到负载均衡的目的。DNS负载均衡的优点 :一旦某个服务器出现故障,即使及时修改了DNS设置,还是要等待足够的时间(刷新时间)才能发挥作用,在此期间,保存了故障服务器地址的客户计算机将不能正常访问服务器。DNS

负载均衡采用的是简单的轮循负载算法,不能区分服务器的差异,不能反映服务器的当前运行状态,不能做到为性能较好的服务器多分配请求,甚至会出现客户请求集中在某一台服务器上的情况。

(3)统计访问该页面共有多少请求IP分组,多少响应IP分组?(提示:用脚本编程实现)

用wireshare工具分析可知道请求分组为29个响应为9个;讲数据导出之后用脚本分析:

结果与工具分析一致

(4)找到TCP连接建立的三次握手过程,并结合数据,绘出TCP连接建立的完整过程,注明每个TCP报文段的序号、确认号、以及SYN\\ACK的设置。

第一次握手:序号:seq=0;无确认号:ACK=0(not set);SYN=1

第二次握手:序号:seq=0;确认号:ack=1;ACK=1;SYN=1

第三次握手:序号seq=1;确认号:ack=1;ACK=1;SYN=0(not set)

二次握手:seq=0,SYN=1,ACK=1 ack=1

三次握手:seq=1,ACK=1 ack=1

(5)针对(4)中的TCP连接,该TCP连接的四元组是什么?双方协商的起始序号是什么?TCP连接建立的过程中,第三次握手是否带有数据?是否消耗了一个序号?

客户机 服务器 一次握手:seq=0,SYN=1 答:源IP地址:192.168.1.111目的IP地址:60.28.215.71源端口:52617目的端口80,起始的序列号:0,TCP在连接建立的过程中,在第三次握手的时候不携带数据,只有三次连接建立了之后才开始传输数据!同时也没有消耗序列号。

(6)找到TCP连接的释放过程,绘出TCP连接释放的完整过程,注明每个TCP报文段的序号、确认号、以及FIN\\ACK的设置。

客户 服务器

Fin=1 seq=1 ACK=1 ACK=2 seq=1 FIN=0

FIN=1 ACK=1 seq=1

Ack=2 seq=1 FIN=0

(7)针对(5)中的TCP连接释放,请问释放请求由服务器还是客户发起?FIN报文段是否携带数据,是否消耗一个序号?FIN报文段的序号是什么?为什么是这个值? 答: 请求释放是由客户端发起的,FIN报文没有携带数据因为确认号还是1但是 消耗了一个序列号,因为tcp规定即使不携带数据也需要消耗一个序号! Fin的报文段的序号是1。

(8)在该TCP连接的数据传输过程中,找出每一个(客户)发送的报文段与其ACK报文段的对应关系,计算这些数据报文段的往返时延RTT(即RTT样本值)。根据课本200

页5.6.2节内容,给每一个数据报文段估算超时时间RTO。(提示:用脚本编程实现 答: 报文段的往返时间RTT(Round-Trip Time)

新的RTTs =(1-a)*(旧的RTTs)+ a*(新的RTT样本值) 新的RTTD = (1-b)*(旧的RTTD) + b*|RTTs – 新的RTT样本| 超时重传时间RTO = RTTs + 4 * RTTD; 使用tcp.port==52617过滤!

使用perl脚本

结果为:

(9)分别找出一个HTTP请求和响应分组,分析其报文格式。参照课本243页图6-12,在截图中标明各个字段。

答:以下为HTTP的请求分组(75):

Request Method:GET(请求的方法) Request URL:/(URL)

Request Version:HTTP/1.1(http版本)

首部行:Host:www.zhihu.com\\r\\n(主机的域名)Connection:keep-alive\\r\\n(告诉服务器发送完请求文档后哦不释放链接) User-Agent:Mozilla/5.0(windows

NT

6.1)

AppleWebkit/537.6(KHTML,like

Gecko)

chrome/23.0.1243.2 Safari/537.6(用户代理使用的基于Mozilla内核的浏览器) Accept:text/html(希望接受的文档格式) 以下为HTTP的响应分组(85):

开始行:Request version:HTTP/1.1(版本)

Status code:200(状态码,2xx表示成功)Reponse Phrase:OK首部行:Server:Tengine(web服务器是Tengine)Date:Thu,06 Dec 2012 02:57:57 GMTConnection:keep-aliveVary:Accept-Encoding (11)HTTP/1.1协议的持续连接有两种工作方式,即非流水线方式(without pipelining)和流水线方式(with pipelining)非流水线方式的特点,是客户端在收到前一个响应后才能发出下一个请求。流水线方式的特点,是客户端在收到HTTP的响应报文之前就能够接着发送新的值来请求报文。于是一个接一个的请求报文到达服务器后,服务器就可连续发回响应报文。流水线工作方式使TCP连接中的空闲时间减少。

(10)访问同一网站的不同网页,本次访问中的TCP连接是否和上次访问相同?(与上次页面访问时间间隔不能过长,可连续访问,分别分析。

第一次访问:

访问其相同网站的不同界面;

(11)请描述HTTP协议的持续连接的两种工作方式。访问这些页面(同一网站的不同页面)的过程中,采用了哪种方式?(参考课本241页)

非流水线方式:客户在收到前一个响应之后才能发出下一个请求。 流水线方式:客户在受到HTTP响应报文之前就能够接着发送新的报文请求。

流水线工作方式使TCP连接中的空闲时间减少,提高了传输效率

使用过滤规则ip.addr==60.28.215.71 &&http.request ==1从抓到的数据中可以看出,访问这些页面(同一网站的不同页面)的过程中,采用了流水线的方式。

四、 设计技巧及体会

通过本次课程使用wireshark 工具对web流量分析的,在一周实习中,工具有个熟练的掌握,在抓包的过程中,对web 工作过程有了一个详细的了解,对其工作原理更加深刻的的认识。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- awee.cn 版权所有 湘ICP备2023022495号-5

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务