西安郵電大學
网络协议分析与仿真
课程设计报告书
院系名称
: 计算机学院实验内容: 网络流量分析学生姓名
专业名称: 网络工程班级
学号
时间: 2012年12月15日
网络协议分析与仿真课程设计报告
网络流量分析
一、课程设计目的
占力卩深对IP、DSN、TCP UDR HTTP等协议的理解;
J掌握流量分析工具的使用,学习基本的流量分析方法。
二、课程设计内容
■I流量分析
工具: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 M面的URL得到Web服务器的域名
2)通过DNS!务器获得Web服务器的IP地址
3)与Web服务器建立TCP连接
4)与Web服务器建立HTTP连接
5)从Web服务器获得URL指定的文档
6)浏览器解释页面文档,并显示在屏幕
(2)、找出DN9解析请求、应答相关分组,传输层使用了何种协议,端口号是多少?所请求域名的IP地址是什么?
请求:(本机端口:59257; DN&艮务器端口:53)
Rl internet Protocol Version 4, &rc: (172.16.1. 2^), Dst: 221.11.1. 67 (221.11.1^67)
A user Datagram Protocol, src Port: 59257 (59257), Dst Port: domain (53)
Source port: 59257 [59257) Destination port: domain ⑸)
Length: 49
应答:(DN&艮务器端口:53;本机端口:59257)
Destination port: 59257 (59257)
Length: 379
传输层协议: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)
[root@localhost mnt]# sh packagecount,sh web 172.16.1.234 The 172*16.1.234 as source has 130 packages
[root@localhost mnt]# sh packagecount.sh web 123.125,160.40
The 123*125.160.40 as source has 5 packages
[root@localhost mnt]# []
脚本
Package_co un t.sh
#!/bi n/bash
#by sky versi on 1.0
#20121205
fun cti on checkip {
dot='echo $1 | awk -F '.' '{print NF-1}'、
if [ $dot -ne 3 ]; then return 1
if
coun t=0
for var in 'echo $1 | awk -F. '{print $1, $2, $3, $4}'、do
echo $var | grep "A[0-9]*$" >/dev/null if [ $? -ne 0 ]; then
return 1
fi
if [ $var -ge 0 -a $var -le 255 ] ; the n
((co un t=co un t+1))
con ti nue
else
return 1
fi
done
if [ $count -eq 4 ]; the n
return 0
else
return 1
fi
}
if [ $# -eq 0 -o $# -ne 2 ]