西安邮电大学
(计算机学院)
网络协议分析设计报告题目:Web流量分析
专业名称:网络工程
班级:1201
学生姓名:司联波
学号(8位):04122007
指导教师:孙韩林
设计起止时间:2014年12月15日—2014年12月19日
网络协议分析与仿真课程设计报告
网络流量分析
一、课程设计目的
加深对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页面的过程
答:主要分为三个大的方面:
连接当我们输入这样一个请求时,首先要建立一个socket连接,因为socket是通过ip和端口建立的,所以之前还有一个DNS解析过程,把/变成ip,使用UDP协议的默认端口号(53)。
DNS的过程是这样的:首先我们知道我们本地的机器上在配置网络时都会填写DNS,
这样本机就会把这个url发给这个配置的DNS服务器,如果能够找到相应的url则返回其ip,否则该DNS将继续将该解析请求发送给上级DNS,整个DNS可以看做是一个树状结构,该请求将一直发送到根直到得到结果。现在已经拥有了目标ip和端口号,这样我们就可以打开socket连接了。
请求连接成功建立后,开始向web服务器发送请求,这个请求一般是GET或POST命令(POST用于FORM参数的传递)。GET命令的格式为:GET 路径/文件名HTTP/1.0 文件名指出所访问的文件,HTTP/1.0指出Web浏览器使用的HTTP版本。现在可以发送GET命令:
GET /zhihu/index.html HTTP/1.0,
应答web服务器收到这个请求,进行处理。从它的文档空间中搜索子目录mytest的文件index.html。如果找到该文件,Web服务器把该文件内容传送给相应的Web浏览器。
为了告知浏览器,,Web服务器首先传送一些HTTP头信息,然后传送具体内容(即HTTP 体信息),HTTP头信息和HTTP体信息之间用一个空行分开。
常用的HTTP头信息有:
① HTTP 1.0 200 OK 这是Web服务器应答的第一行,列出服务器正在运行的HTTP 版本号和应答代码。代码"200 OK"表示请求完成。
② MIME_Version:1.0它指示MIME类型的版本。
③ content_type:类型这个头信息非常重要,它指示HTTP体信息的MIME类型。如:content_type:text/html指示传送的数据是HTML文档。
④ content_length:长度值它指示HTTP体信息的长度(字节)。
关闭连接:当应答结束后,Web浏览器与Web服务器必须断开,以保证其它Web浏览器能够与Web服务器建立连接。
(2)找出DNS解析请求、应答相关分组,传输层使用了何种协议,端口号是多少?所请求域名的IP地址是什么?
试验中访问,抓到dns 数据包,找到的请求分组,查
看使用相关的四元组,和使用的协议,然后使用过滤规则(ip.addr= 192.168.1.111 &&ip.addr == 221.11.1.67) &&(udp.port ==62369 and udp.port== 53)找到其相应的DNS的解析请求的和应答的相关分组。结果如下图:
第9行的DNS的请求分组,第18行为DNS的响应分组。分别展开如下:
下面为DNS的请求分组,使用的协议为UDP 源端口为:62369 目的端口为:53
下面为DNS的应答分组,使用的协议为UPD 源端口为:53 目的端口为:62369可以看出来所请求域名的IP 为两个(60.28.215.70和60.28.215.71)
产生两个ip的主要原因是服务器采用了负载均衡!DNS负载均衡技术是在DNS服务器中为同一个主机名配置多个IP地址,在应答DNS查询时,DNS服务器对每个查询将以DNS文件中主机记录的IP地址按顺序返回不同的解析结果,将客户端的访问引导到不同的机器上去,使得不同的客户端访问不同的服务器,从而达到负载均衡的目的。DNS负载均衡的优点:一旦某个服务器出现故障,即使及时修改了DNS设置,还是要等待足够的时间(刷新时间)才能发挥作用,在此期间,保存了故障服务器地址的客户计算机将不能正常访问服务器。DNS