学院(系)名称:计算机与通信工程学院
姓名 | 学号 | 2012** 2012** | 专业 | 计算机科学与技术(中加) | ||||
班级 | 教学2班 | 实验项目 | 实验三:协议分析 | |||||
课程名称 | 计算机网络 | 课程代码 | 0662016 | |||||
实验时间 | 2015年6月18日 第7、8节 | 实验地点 | 7-219 | |||||
批改意见 | 成绩 | |||||||
" 教师签字: | ||||||||
(一)实验目的:掌握常用TCP/IP协议族中协议的原理及工作过程。 (二)实验环境: 软件环境:Windows 2000/XP 硬件环境:IBM-PC或兼容机 局域网、PC机连入Internet (三)实验学时:2学时,必做. (四)实验要求:利用Wireshark抓包,并进行协议分析。 (五)实验内容: 1.熟练掌握Wireshark的使用方法。 2.掌握TCP、IP、ARP、DNS、HTTP和Ethernet等协议的基本原理。 3.详细分析HTTP协议的通信过程。 4.尝试使用Follow TCP Stream 功能。 (六)实验步骤: 1.安装并启动wireshark。选择网卡,设置过滤条件,开始抓包。 2.打开浏览器,在地址栏中输入教师指定的web服务器地址。http://202.113.78.39。为了确保连通性,可以先ping一下服务器。 3.在打开的页面上,鼠标右键单击你看到的图片,将图片另存为到本地。 4.鼠标左键单击图片,页面改变后,关闭浏览器,停止wireshark抓包。 5.在wireshark中将抓到的数据包保存。 6.列举出你所抓到数据包的种类(协议名称)。列表写出客户端、网关、web服务器的IP地址和MAC地址。HTTP客户端和服务器段的端口号。 答:数据包的种类TCP、UDP、DNS、DHCP、ARP、OSPF、LLDP、SSL、TLS、NBNS、BROWSER=等。 | 客户端 | 网关 | Web服务器 | |||||
IP地址 | 101.4.60.122 | 202.113.78.31 | 202.113.78.39 | |||||
MAC地址 | 58:6a:b1:5d:be:33 | 44:37:e6:04:08:9f | 44:37:e6:04:09:c5 |
HTTP客户端的端口号:80,服务器端口号:2518。
7.将TCP、IP、ARP、DNS、HTTP和Ethernet的首部字段的名字和值按照协议的格式(参见附录2)分别记录下来。(任意打开一个消息)
答:IP:
版本:4 | 首度:20bytes | 区分服务:0x00 | 总长度:40 |
标识:0x41c6 | 标志:0x02 | 片偏移:0 | |
生存时间:51 | 协议:TCP(6) | 首部校验和:0x4bfb | |
源地址:101.4.60.122 | |||
目的地址:202.113.78.31 | |||
可选字段: | 填充 |
源端口:80 | 目的端口:2518 | |||||||||
序号:1 | ||||||||||
确认号:716 | ||||||||||
数据偏移 | 保留 | URG 0 | ACK 1 | PSH 0 | RSI 0 | SYN 0 | FIN 0 | 窗口:16128 | ||
检验和0xf2e5 | 紧急指针: 无效 | |||||||||
选项:空 | 填充:空 |
以太网目的地址:HonHaiPr_04:08:9f
(44:37:e6:04:08:9f) | 以太网源地址:HonHaiPr_04:09:c5 (44:37:e6:04:09:c5) | 帧类型:ARP (0x0806) |
标识:0xa632 | 标志:0x8180 |
问题数:1 | 资源记录数:3 |
授权资源记录数:0 | 额外资源记录数:0 |
查询问题:qurl.f.360.cn:type A,class IN | |
回答:qurl.f.360.cn:type CNAME,class IN,cname qurl.qh-lb.com pe A,class IN, addr 101.4.60.122 1 | |
额外授权:0 | |
记录信息:0 |
版本:1.1 | 空格 | 状态码:200 | 空格 | 原因短语:OK | 回车符 | 换行符 |
首部:nginx | : | 阈值:0.6.39 | 回车符 | 换行符 | ||
实体: Date:Sat, 09 May 2015 07:58:02 GMT \\r\\n |
目的地址:(58:6a:b1:5d:be:33) | 源地址:(44:37:e6:04:08:9f) | 类型:IP | 数据:769bytes | FCS:0x0800 |
答:
9.在wireshark界面上分别圈出TCP建立连接和释放连接的数据包。
找到TCP连接建立的三次握手过程,并结合数据,绘出TCP连接建立的完整过程,注明每个TCP报文段的序号、确认号、以及SYN\\ACK的设置。
找到TCP连接的释放过程,绘出TCP连接释放的完整过程,注明每个TCP报文段的序号、确认号、以及FIN\\ACK的设置。
答:
第一个TCP报文段:seqNumber: 0 SYN: set ACK:not set
第二个TCP报文段:seqNumber:0 ackNumber:1 SYN:set ACK:set
第三个TCP报文段:seqNumber:1 ackMunber:1 SYN:not set ACK:set
找到TCP连接的释放过程,绘出TCP连接释放的完整过程,注明每个TCP报文段的序号、确认号、以及FIN\\ACK的设置。
第一个TCP报文段:seqNumber:2283 ackNumber: 209229 FIN:not set ACK:set
第二个TCP报文段:seqNumber:2283 ackNumber: 209229 FIN:s:not set
10. 在wireshark界面上圈出你的主机如何找到web服务器的MAC地址(ARP协议)或者IP地址(DNS协议)。
答:
11.依据实际抓到的数据包,截图并圈出TCP顺序号和确认号的使用方法及变化规律。
答:
12.在你所抓到的各种类型数据包中,在wireshark的主界面上是以何种底纹标注?
答:ARP:粉色 。 BROSWER:黄色 。 DHCP:蓝色 。 HTTP:绿色、黑色 。 NBNS:黄色 。 OSPF:粉色。SSDP:绿色。
13.尝试使用Statistics菜单中“IO graph”、“HTTP”、“Protocol Hierarachy”等功能,并记录结果。
答:IO graph功能记录:
HTTP功能记录如下:
14.找到全部HTTP的请求消息并截图。(过滤条件类似“http.request and ip.addr eq 202.113.78.39”)
答:
15.找到全部源IP地址为指定web服务器地址的HTTP响应消息并截图。
答:
16.查看你访问指定Web服务器HTTP会话的工作过程。将结果截图,并对前10个包进行详细分析。
答:
17.使用Follow TCP Stream 功能,将你看到的图片从你收到的HTTP响应消息数据包中恢复出来(或者你下载的其它文件)。要求必须详细说明并每步骤截图。
答:
18.参考“使用wireshark进行流量分析”,对本网络中的流量进行分析。
(1)简述访问web页面的过程。
答:
a>浏览器向DNS请求解析网站的IP地址
b>域名系统DNS解析出网站的IP地址202.113.78.39
c>浏览器与服务器建立TCP连接
d>浏览器发出取文件命令
e>服务器端给出响应,把首页文件发送给浏览器
f>释放TCP连接
g>浏览器显示西安邮电大学首页中的所有文本
(2)找出DNS解析请求、应答相关分组,传输层使用了何种协议,端口号是多少?所请求域名的IP地址是什么?
答:
DNS请求分组,基于UDP的传输协议,源端口号282,目的端口号53,请求域名的IP地址是59.67.148.5。
DNS应答分组:源端口号53,目的端口号282。
(3)统计访问该页面共有多少请求分组,多少响应分组?
答:应用如下显示过滤规则,对包进行过滤:
然后点击菜单栏的statics,接着点击summary选项,然后就能看到过滤后显示的包的各项统计数据。
由上图知,一共有个IP请求分组,共捕获5个包
(4)找到TCP连接建立的三次握手过程,并结合数据,绘出TCP连接建立的完整过程,注明每个TCP报文段的序号、确认号、以及SYN\\ACK的设置。
答:
第一个TCP报文段:SeqNumber: 0 SYN: set ACK:not set
第二个TCP报文段:SeqNumber:0 AckNumber:1 SYN:set ACK:set
第三个TCP报文段:SeqNumber:1 AckMunber:1 SYN:not set ACK:set
第一次握手:序号Seq#=0;无确认号;ACK=0(not set);SYN=1 set
第二次握手:序号Seq#=0;确认号:ACK=1 set; SYN=1 set
第三次握手:序号Seq#=1;确认号:ACK=1 set;SYN=0(not set);
(5)针对(4))中的TCP连接,该TCP连接的四元组是什么?双方协商的起始序号是什么?TCP连接建立的过程中,第三次握手是否带有数据?是否消耗了一个序号?
答:四元组:
源IP地址:202.113.78.31; 源端口号:2518;
目的IP地址:101.4.60.122; 目的端口号:80
由上题知,双方协商的起始序号是0。
由上图,第三次握手后的报文段。序号Seq#=1和第三次握手报文中的序号相同,由此可以看出第三次报文没有消耗序号,没有带数据。
(6)找到TCP连接的释放过程,绘出TCP连接释放的完整过程,注明每个TCP报文段的序号、确认号、以及FIN\\ACK的设置。
答:
第一个TCP报文段:seqNumber:253; AckNumber: 716; FIN:set; ACK:set
第二个TCP报文段:seqNumber:716; AckNumber: 254; FIN:not set; ACK: set
第三个TCP报文段:seqNumber:716; AckNumber: 254; FIN:set; ACK: set
(7)针对(6)中的TCP连接释放,请问释放请求由服务器还是客户发起?FIN报文段是否携带数据,是否消耗一个序号?FIN报文段的序号是什么?为什么是这个值?
答:1. 释放请求由服务器端发起的。
2. FIN报文段不携带数据,消耗一个序号。根据TCP规定,FIN报文段即使不携带数据,也消耗一个序号。根据第二次挥手报文,确认号为254,说明没有携带数据。
3. FIN报文段的序号是716。
4. 由下图可以看出此报文前的一个报文的确认号为:ACK为254,确认号是期望对方下一个报文段的第一个数据字节的序号。即它等于前面已经传送过的数据的最后一个字节的序号加1。
(8)在该TCP连接的数据传输过程中,找出每一个ACK报文段与相应数据报文段的对应关系,计算这些数据报文段的往返时延RTT(即RTT样本值)。
答:报文段的往返时间RTT(Round-Trip Time)新的RTTs =(1-a)*(旧的RTTs)+ a*(新的RTT样本值)
新的RTTD = (1-b)*(旧的RTTD) + b*|RTTs – 新的RTT样本|
(9)分别找出一个HTTP请求和响应分组,分析其报文格式。在截图中标明各个字段。
答:
请求行:
Request Method:POST(请求的方法)
Request Version:HTTP/1.1(http版本)
HTTP响应分组:
开始行:Request version:HTTP/1.1(版本)
Response code:200(状态码,2xx表示成功)
首部行:Server:Tengine(web服务器是Tengine)
Date:Sat, 09 May 2015 07:57:59 GMT/r/n
(10)请描述HTTP协议的持续连接的两种工作方式。访问这些页面(同一网站的不同页面)的过程中,采用了哪种方式?
答:HTTP/1.1协议的持续连接有两种工作方式,即非流水线方式(without pipelining)和流水线方式(with pipelining)非流水线方式的特点,是客户端在收到前一个响应后才能发出下一个请求。流水线方式的特点,是客户端在收到HTTP的响应报文之前就能够接着发送新的值来请求报文。于是一个接一个的请求报文到达服务器后,服务器就可连续发回响应报文。流水线工作方式使TCP连接中的空闲时间减少。
由上图可知,访问同一网站的不同页面采用了流水线方式。 |