您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 网络协议分析课程设计-web流量分析
网络协议分析与仿真课程设计报告网络流量分析一、课程设计目的加深对IP、DSN、TCP、UDP、HTTP等协议的理解;掌握流量分析工具的使用,学习基本的流量分析方法。二、课程设计内容流量分析工具:Wireshark(Windows或Linux),tcpdump(Linux)要求:使用过滤器捕获特定分组;用脚本分析大量流量数据(建议用perl)。内容:Web流量分析清除本机DNS缓存,访问某一网站主页,捕获访问过程中的所有分组,分析并回答下列问题(以下除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页面的过程。1.浏览器分析链接指向页面的url2.浏览器向dns请求解析url的ip地址3.Dns解析出ip地址4.浏览器与服务器建立tcp连接(ip地址,端口80)5.浏览器发出取文件命令6.服务器给出响应,将指定文件发给浏览器7.释放tcp连接8.浏览器显示文件内容2.找出DNS解析请求、应答相关分组,传输层使用了何种协议,端口号是多少?所请求域名的IP地址是什么?访问请求分组应答分组由上可知:传输层使用了udp协议,本机端口号57949,服务器端口号:53由下可知:的ip地址为202.117.128.83.统计访问该页面共有多少请求IP分组,多少响应IP分组?(提示:用脚本编程实现)1.过滤:2.将数据导出到ip.txt文件中3.执行下面脚本echoip.txt|grepNo.|wc-l统计出共有66个请求包4.同理可得共有66个应答包4.找到TCP连接建立的三次握手过程,并结合数据,绘出TCP连接建立的完整过程,注明每个TCP报文段的序号、确认号、以及SYN\ACK的设置。1.过滤2.三次握手包如下:3.绘图如下:5.针对(4)中的TCP连接,该TCP连接的四元组是什么?双方协商的起始序号是什么?TCP连接建立的过程中,第三次握手是否带有数据?是否消耗了一个序号?1.该tcp连接的四元组为:本机IP:192.168.1.11.端口:80,目的IP:202.117.128.8.端口:21412.第三次握手包的len为0,没有携带数据3.第四个包的seq与第三次握手报的seq相同为1,没有消耗序号。6.找到TCP连接的释放过程,绘出TCP连接释放的完整过程,注明每个TCP报文段的序号、确认号、以及FIN\ACK的设置。情况一(谷歌浏览器):1.过滤:2.找到fin包如下图:3.绘图如下:情况二(用IE浏览器):1.过滤:2.找到fin包如下图:3.绘图如下:7.针对(5)中的TCP连接释放,请问释放请求由服务器还是客户发起?FIN报文段是否携带数据,是否消耗一个序号?FIN报文段的序号是什么?为什么是这个值?1.释放连接是由服务器发起的,FIN报文段不携带数据。(len=0)2.消耗一个序号(138124-138125)3.FIN报文段的序号是138124,因为前一个包对方给出的Ack数值是138124.也就是说138124以前的数据包正确到达,FIN包从138124序号开始。8.在该TCP连接的数据传输过程中,找出每一个(客户)发送的报文段与其ACK报文段的对应关系,计算这些数据报文段的往返时延RTT(即RTT样本值)。根据课本200页5.6.2节内容,给每一个数据报文段估算超时时间RTO。(提示:用脚本编程实现)公式:报文段的往返时间RTT(Round-TripTime)新的RTTs=(1-a)*(旧的RTTs)+a*(新的RTT样本值)新的RTTD=(1-b)*(旧的RTTD)+b*|RTTs–新的RTT样本|超时重传时间RTO=RTTs+4*RTTD;1.过滤:2.导出到rtt.txt文件中3.脚本编程如下:#!/bin/bashrtts=0rttd=0temp=0rto=0catrtt.txt|grepTheRTTtoACKthesegmentwas:|cut-d':'-f2|cut-d''-f2|whilereadrttdortts=`echo0.875*$rtts+0.125*$rtt|bc`temp=`echo$rtts-$rtt|bc|tr-d-`rttd=`echo0.75*$rttd+0.25*$temp|bc`rto=`echo4*$rttd+$rtts|bc`echo$rtt$rtolog.txtDone4.运行结果RTTRTO0.0010520000.0010520000.0000190000.0009062450.0052830000.0058746040.0000270000.0051488310.0000230000.0045154840.0000160000.0039647090.0000180000.0034783620.0000160000.0030525590.0000190000.0026759839.分别找出一个HTTP请求和响应分组,分析其报文格式。参照课本243页图6-12,在截图中标明各个字段。请求字段应答字段10.访问同一网站的不同网页,本次访问中的TCP连接是否和上次访问相同?(与上次页面访问时间间隔不能过长,可连续访问,分别分析。)情况一:短时间1.过滤:2.在相同的tcp流中查找到了两条不同的GET网页分别为西邮主页和“西邮机构设置”网页,由于两个网页在同一个网站中,所以在同一个tcp连接中。(截图如下)情况二:长时间1.过滤:2.在相隔了0.0018个time段后,前3个包是一个tcp连接,第四个是另一个tcp连接。如下图所示。原因:http/1.1使用了持续连接,在发送响应一段时间后任然保持连接,当继续访问当前服务器其他资源时,不用建立新连接.11.请描述HTTP协议的持续连接的两种工作方式。访问这些页面(同一网站的不同页面)的过程中,采用了哪种方式?(参考课本241页)1.非流水线方式:客户在收到前一个响应之后才能发出下一个请求。2.流水线方式:客户在受到HTTP响应报文之前就能够接着发送新的报文请求。流水线工作方式使TCP连接中的空闲时间减少,提高了传输效率访问这些页面(同一网站的不同页面)的过程中,采用了流水线的方式,在同一网站上的不同引用对象,可以进行连续的请求,不一定非要等到确认报文。如图是连续请求的截图.四、设计技巧及体会1、书上讲的理论在实际应用中会有所变化,例如tcp的四次挥手,在实际抓包中抓到的还有一种rst包。经过分析,是不同浏览器实现方法不同。2、在机子上抓到好多黑底红字的包,最后解决方法是wireshark中有关网卡设置的问题。如下图所示:
本文标题:网络协议分析课程设计-web流量分析
链接地址:https://www.777doc.com/doc-6053243 .html