当前位置:文档之家› 网络协议分析与仿真课程设计报告书

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

下载可编辑 .专业.整理. 西安郵電大學 网络协议分析与仿真 课程设计报告书

院系名称 : 计算机学院 实验内容 : 网络流量分析 学生姓名 : 专业名称 : 网络工程 班 级 : 下载可编辑

.专业.整理. 学号 : 时间 : 2012年12月15日 下载可编辑

.专业.整理. 网络协议分析与仿真课程设计报告

网络流量分析 一、 课程设计目的 加深对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) 针对(6)中的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)解析Web页面的URL,得到Web服务器的域名 2)通过DNS服务器获得Web服务器的IP地址

3)与Web服务器建立TCP连接 4)与Web服务器建立HTTP连接 5)从Web服务器获得URL指定的文档 6)浏览器解释页面文档,并显示在屏幕

(2)、找出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.125.160.40)

脚本 下载可编辑

.专业.整理. Package_count.sh #!/bin/bash #by sky version 1.0 #20121205 function 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 255 ] ; then ((count=count+1)) continue else return 1 fi done if [ $count -eq 4 ]; then return 0 else return 1 fi } if [ $# -eq 0 -o $# -ne 2 ] then echo "Usage: shellname filename ipaddress" echo "just like: package_count.sh http 172.16.1.234" 下载可编辑 .专业.整理. exit 1 fi if [ ! -f $1 ] then echo "The $1 is no exist" exit 2 fi #echo $2 | grep '\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}' >> /dev/null checkip ${2}

if [ $? -ne 0 ] then echo "Please input effective IP" exit 3 fi 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 4 fi echo "The $2 as source has $number packages"

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

TCP三次握手过程 下载可编辑

.专业.整理. 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;

第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

实现过程如下: 第一次:(序号:0, SYN:1) 下载可编辑 .专业.整理. 第二次:(序号: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报文段的序号、确认号、以及FIN\ACK的设置。

TCP释放过程:

A、服务器向本机请求释放: B、本机响应服务器的请求释放:(半关闭) C、本机向服务器请求释放连接: D、服务器响应本机的请求释放:

TCP的释放过程流程图: 下载可编辑

.专业.整理. 下载可编辑

.专业.整理. (7):针对(6)中的TCP连接释放,请问释放请求由服务器还是客户发起?FIN报文段是否携带数据,是否消耗一个序号?FIN报文段的序号是什么?为什么是这个值?

释放请求由服务器发起。 FIN报文段未携带数据。 消耗了一个序号: 实现过程如下:

FIN报文段的序号是436 (8)、在该TCP连接的数据传输过程中,找出每一个ACK报文段与相应数据报文段的对应关系,计算这些数据报文段的往返时延RTT(即RTT样本值)。根据课本200页5.6.2节内容,给每一个数据报文段估算超时时间RTO。

相关主题