网络协议分析与仿真课程设计报告书.docx
- 文档编号:12877884
- 上传时间:2023-04-22
- 格式:DOCX
- 页数:15
- 大小:489.79KB
网络协议分析与仿真课程设计报告书.docx
《网络协议分析与仿真课程设计报告书.docx》由会员分享,可在线阅读,更多相关《网络协议分析与仿真课程设计报告书.docx(15页珍藏版)》请在冰豆网上搜索。
网络协议分析与仿真课程设计报告书
西安郵電大學
网络协议分析与仿真
课程设计报告书
院系名称
:
计算机学院
实验内容
:
网络流量分析
学生姓名
:
专业名称
:
网络工程
班级
:
学号
:
时间
:
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页)
3、设计与实现过程
(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.srceq172.16.1.234orip.dsteq172.16.1.234)and(ip.srceq123.125.160.40orip.dsteq123.125.160.40)
脚本
Package_count.sh
#!
/bin/bash
#byskyversion1.0
#20121205
functioncheckip{
dot=`echo$1|awk-F'.''{printNF-1}'`
if[$dot-ne3];then
return1
if
count=0
forvarin`echo$1|awk-F.'{print$1,$2,$3,$4}'`
do
echo$var|grep"^[0-9]*$">/dev/null
if[$?
-ne0];then
return1
fi
if[$var-ge0-a$var-le255];then
((count=count+1))
continue
else
return1
fi
done
if[$count-eq4];then
return0
else
return1
fi
}
if[$#-eq0-o$#-ne2]
then
echo"Usage:
shellnamefilenameipaddress"
echo"justlike:
package_count.shhttp172.16.1.234"
exit1
fi
if[!
-f$1]
then
echo"The$1isnoexist"
exit2
fi
#echo$2|grep'\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}'>>/dev/null
checkip${2}
if[$?
-ne0]
then
echo"PleaseinputeffectiveIP"
exit3
fi
number=`grep"Src:
$2"$12>/dev/null|wc-l`
if[$number-eq0]
then
echo"PleaseinputanIPthanincludethe$1"
exit4
fi
echo"The$2assourcehas$numberpackages"
(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。
脚本
#!
/bin/bash
#byskyversion1.0
#20121207
if[$#-ne1]
then
echo"Usage:
shellnamefilename"
echo"Justlike:
rtt_count.shhttp"
exit1
fi
if[!
-f$1]
then
echo"Pleaseinputaneffectivefile"
exit2
fi
grepRTT$1|awk'BEGIN{s1=0.125;s2=0.875;d1=0.25;d2=0.75}{RTT[NR]=$9;line_num=NR}
END{
for(i=1;i<=line_num;i++)
{
RTTS[i]=s2*RTT[i-1]+s1*RTT[i];
RTTD[i]=d2*RTTD[i-1]+d1*(RTTS[i]>RTT[i]?
RTTS[i]-RTT[i]:
RTT[i]-RTTS[i]);
printf("Thenumberis%d\t\tRTTS->%0.8f\tRTTD->%0.8f\tRTTS->%0.8f\n",i,RTTS[i],RTTD[i],RTTS[i]+4*RTTD[i])
}
}'
(9)、分别找出一个HTTP请求和响应分组,分析其报文格式。
参照课本243页图6-12,在截图中标明各个字段。
请求报文:
响应报文:
10)、访问同一网站的不同网页,本次访问中的TCP连接是否和上次访问相同?
(与上次页面访问时间间隔不能过长,可连续访问,分别分析。
)
访问同一网站的另一网页
本次访问中的TCP连接是与上次访问不相同
(11)、请描述HTTP协议的持续连接的两种工作方式。
访问这些页面(同一网站的不同页面)的过程中,采用了哪种方式?
(参考课本241页)
http协议的持续连接的两种工作方式:
a.非流水线方式:
客户在收到前一个响应后才能发出下一个请求,在TCP连接已建好后,客户每次访问一次对象都要用去一个往返时间RTT。
b.流水线方式:
客户在收到HTTP的响应报文之前就能够接着发送新的请求报文,客户访问所有的对象只需花费一个RTT时间。
访问这些页面过程中采用流水线方式
4、设计技巧及体会
通过本次课程设计,我们加深对IP、DSN、TCP、UDP、HTTP等协议的理解;
并且通过用wireshark流量分析工具,进行抓包、过滤、筛选等一系列操作获取到有用的数据进行观察、分析、处理。
通过观察和处理数据,更加深刻的理解了tcp建立的三次握手、以及释放的四次挥手过程以及更加明确的了解了tcp、udp、http等协议的工作原理,以及他们的作用。
而且我们也学会了在Linux环境下用shell或perl脚本编程实现一些数据的统计与计算功能,提高了我们的Linux操作技能,丰富了我在Linux方面的知识。
本次试验我遇到了很多问题,包括抓包过程由于出现中断和丢包等问题总是抓不到合适的可以用来整体分析的包,不过通过多次实验终于抓取到所需的包。
在开始编写脚本的过程中,由于对脚本语言运用不熟练,是编程过程不怎么顺利,但我努力理解和学习脚本语言,最终克服了这个问题,并且完成了脚本的编写。
总的来说,通过本次课程设计,我学习到了很多东西,通过实践和动手操作是我能够更加快速的学到实际并有用的东西,我受益良多。
欢迎您的下载,
资料仅供参考!
致力为企业和个人提供合同协议,策划案计划书,学习资料等等
打造全网一站式需求
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网络 协议 分析 仿真 课程设计 报告书
![提示](https://static.bdocx.com/images/bang_tan.gif)