1、西安郵電大學网络协议分析与仿真课程设计报告书院系名称:计算机学院实验内容:网络流量分析学生姓名:专业名称:网络工程班 级:学号:时间:2012年12月15日 网络协议分析与仿真课程设计报告 网络流量分析一、课程设计目的l 加深对IP、DSN 、TCP、UDP、HTTP等协议的理解;l 掌握流量分析工具的使用,学习基本的流量分析方法。二、课程设计内容l 流量分析 工具:Wireshark(Windows或Linux),tcpdump(Linux) 要求:使用过滤器捕获特定分组;用脚本分析大量流量数据(建议用perl)。 内容:Web流量分析清除本机DNS缓存,访问某一网站主页,捕获访问过程中的所
2、有分组,分析并回答下列问题(以下除1、3、8、11外,要求配合截图回答):(1) 简述访问web页面的过程。(2) 找出DNS解析请求、应答相关分组,传输层使用了何种协议,端口号是多少?所请求域名的IP地址是什么?(3) 统计访问该页面共有多少请求IP分组,多少响应IP分组?(提示:用脚本编程实现)(4) 找到TCP连接建立的三次握手过程,并结合数据,绘出TCP连接建立的完整过程,注明每个TCP报文段的序号、确认号、以及SYNACK的设置。(5) 针对(4)中的TCP连接,该TCP连接的四元组是什么?双方协商的起始序号是什么?TCP连接建立的过程中,第三次握手是否带有数据?是否消耗了一个序号?
3、(6) 找到TCP连接的释放过程,绘出TCP连接释放的完整过程,注明每个TCP报文段的序号、确认号、以及FINACK的设置。(7) 针对(6)中的TCP连接释放,请问释放请求由服务器还是客户发起?FIN报文段是否携带数据,是否消耗一个序号?FIN报文段的序号是什么?为什么是这个值?(8) 在该TCP连接的数据传输过程中,找出每一个ACK报文段与相应数据报文段的对应关系,计算这些数据报文段的往返时延RTT(即RTT样本值)。根据课本200页5.6.2节内容,给每一个数据报文段估算超时时间RTO。(提示:用脚本编程实现)(9) 分别找出一个HTTP请求和响应分组,分析其报文格式。参照课本243页图
4、6-12,在截图中标明各个字段。(10) 访问同一网站的不同网页,本次访问中的TCP连接是否和上次访问相同?(与上次页面访问时间间隔不能过长,可连续访问,分别分析。)(11) 请描述HTTP协议的持续连接的两种工作方式。访问这些页面(同一网站的不同页面)的过程中,采用了哪种方式?(参考课本241页)三、 设计与实现过程(1) 简述访问web页面的过程。1)解析Web页面的URL,得到Web服务器的域名2)通过DNS服务器获得Web服务器的IP地址3)与Web服务器建立TCP连接4)与Web服务器建立HTTP连接5)从Web服务器获得URL指定的文档6)浏览器解释页面文档,并显示在屏幕(2)、找
5、出DNS解析请求、应答相关分组,传输层使用了何种协议,端口号是多少?所请求域名的IP地址是什么? DNS解析请求,应答分组:请求:(本机端口:59257;DNS服务器端口:53) 应答:(DNS服务器端口:53;本机端口:59257)传输层协议:udp协议。所请求域名ip是:123.125.160.40(3)、统计访问该页面共有多少请求IP分组,多少响应IP分组?(提示:用脚本编程实现)请求分组:(ip.src eq 172.16.1.234 or ip.dst eq 172.16.1.234) and( ip.src eq 123.125.160.40 or ip.dst eq 123.12
6、5.160.40)脚本Package_count.sh#!/bin/bash#by sky version 1.0#20121205function checkip dot=echo $1 | awk -F . print NF-1 if $dot -ne 3 ; then return 1 if count=0 for var in echo $1 | awk -F. print $1, $2, $3, $4 do echo $var | grep 0-9*$ /dev/null if $? -ne 0 ; then return 1 fi if $var -ge 0 -a $var -le
7、 255 ; then (count=count+1) continue else return 1 fi done if $count -eq 4 ; then return 0 else return 1 fiif $# -eq 0 -o $# -ne 2 then echo Usage: shellname filename ipaddress echo just like: package_count.sh http 172.16.1.234 exit 1fiif ! -f $1 then echo The $1 is no exist exit 2fi#echo $2 | grep
8、(0-91,3.)30-91,3 /dev/nullcheckip $2if $? -ne 0 then echo Please input effective IP exit 3fi number=grep Src: $2 $1 2 /dev/null | wc -l if $number -eq 0 then echo Please input an IP than include the $1 exit 4fiecho The $2 as source has $number packages(4) 找到TCP连接建立的三次握手过程,并结合数据,绘出TCP连接建立的完整过程,注明每个TC
9、P报文段的序号、确认号、以及SYNACK的设置。与tcp建立连接的三次握手的分组:TCP三次握手过程第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认; 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态; 第三次握手:客户端收到服务器的SYNACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。实现过程如下:第一次:(序号:0, SYN:1)第二
10、次:(序号:0, 确认号:1,SYN:1,ACK:1) 第三次:(序号:1, 确认号:1,SYN:0,ACK:1)(5)针对(4)中的TCP连接,该TCP连接的四元组是什么?双方协商的起始序号是什么?TCP连接建立的过程中,第三次握手是否带有数据?是否消耗了一个序号?四元组:源地址-172.16.1.234;目的地址-123.125.160.40; 源端口-49382 目的端口-80 协商的起始序号:0; 第三次握手未携带数据。 消耗一个序号。 (6) 找到TCP连接的释放过程,绘出TCP连接释放的完整过程,注明每个TCP报文段的序号、确认号、以及FINACK的设置。TCP释放过程: A、服务
11、器向本机请求释放:B、本机响应服务器的请求释放:(半关闭)C、本机向服务器请求释放连接:D、服务器响应本机的请求释放:TCP的释放过程流程图:(7) :针对(6)中的TCP连接释放,请问释放请求由服务器还是客户发起?FIN报文段是否携带数据,是否消耗一个序号?FIN报文段的序号是什么?为什么是这个值? 释放请求由服务器发起。 FIN报文段未携带数据。 消耗了一个序号:实现过程如下:FIN报文段的序号是436(8) 、在该TCP连接的数据传输过程中,找出每一个ACK报文段与相应数据报文段的对应关系,计算这些数据报文段的往返时延RTT(即RTT样本值)。根据课本200页5.6.2节内容,给每一个数
12、据报文段估算超时时间RTO。脚本#!/bin/bash#by sky version 1.0#20121207if $# -ne 1 then echo Usage: shellname filename echo Just like:rtt_count.sh http exit 1fiif ! -f $1 then echo Please input an effective file exit 2figrep RTT $1 |awk BEGINs1=0.125; s2=0.875; d1=0.25; d2=0.75 RTTNR=$9; line_num=NR END for( i=1; i
13、RTTi?RTTSi-RTTi:RTTi-RTTSi);printf(The number is %dttRTTS-%0.8ftRTTD-%0.8ftRTTS-%0.8fn,i,RTTSi,RTTDi,RTTSi+4*RTTDi) (9)、分别找出一个HTTP请求和响应分组,分析其报文格式。参照课本243页图6-12,在截图中标明各个字段。请求报文: 响应报文:10)、访问同一网站的不同网页,本次访问中的TCP连接是否和上次访问相同?(与上次页面访问时间间隔不能过长,可连续访问,分别分析。)访问同一网站的另一网页本次访问中的TCP连接是与上次访问不相同(11)、请描述HTTP协议的持续连接的两
14、种工作方式。访问这些页面(同一网站的不同页面)的过程中,采用了哪种方式?(参考课本241页)http协议的持续连接的两种工作方式: a.非流水线方式:客户在收到前一个响应后才能发出下一个请求,在TCP连接已建好后,客户每次访问一次对象都要用去一个往返时间RTT。 b.流水线方式:客户在收到HTTP的响应报文之前就能够接着发送新的请求报文,客户访问所有的对象只需花费一个RTT时间。访问这些页面过程中采用流水线方式四、 设计技巧及体会通过本次课程设计,我们加深对IP、DSN 、TCP、UDP、HTTP等协议的理解;并且通过用wireshark流量分析工具,进行抓包、过滤、筛选等一系列操作获取到有用
15、的数据进行观察、分析、处理。通过观察和处理数据,更加深刻的理解了tcp建立的三次握手、以及释放的四次挥手过程以及更加明确的了解了tcp、udp、http等协议的工作原理,以及他们的作用。而且我们也学会了在Linux环境下用shell或perl脚本编程实现一些数据的统计与计算功能,提高了我们的Linux操作技能,丰富了我在Linux方面的知识。 本次试验我遇到了很多问题,包括抓包过程由于出现中断和丢包等问题总是抓不到合适的可以用来整体分析的包,不过通过多次实验终于抓取到所需的包。在开始编写脚本的过程中,由于对脚本语言运用不熟练,是编程过程不怎么顺利,但我努力理解和学习脚本语言,最终克服了这个问题,并且完成了脚本的编写。总的来说,通过本次课程设计,我学习到了很多东西,通过实践和动手操作是我能够更加快速的学到实际并有用的东西,我受益良多。【本文档内容可以自由复制内容或自由编辑修改内容期待你的好评和关注,我们将会做得更好】精选范本,供参考!