实验目的
一、利用分组嗅探器分析传输层与网络层协
1、了解传输层TCP/UDP协议构造
2、了解网络层IP协议构造
二、利用分组嗅探器分析数据链路层协议
1、了解数据链路层协议构造
实验预备知识
一、利用分组嗅探器分析传输层与网络层协议
详细掌握TCP段结构、UDP段结构、IP数据报结构
二、利用分组嗅探器分析数据链路层协议
用于以太网的ARP请求或应答分组格式
实验过程描述
一、利用分组嗅探器分析传输层与网络层协议
1、对传输层协议TCP/UDP进行捕包分析并回答问题
(1)启动浏览器,打开http://gaia.cs.umass.edu/ethereal-labs/alice.txt网页,得到
ALICE’S ADVENTURES IN WONDERLAND文本,将该文件保存到你的主机上。
(2)打开http://gaia.cs.umass.edu/ethereal-labs/TCP-ethereal-file1.html在Browse按钮旁的文本框中输入保存在你的主机上的文件ALICE’S ADVENTURES IN WONDERLAND的全名(含路径)
(3)启动Ethereal,开始分组俘获
(4)在浏览器中,单击“Upload alice.txt file”按钮,将文件上传到gaia.cs.umass.edu服务器
(5)停止俘获
(6)在显示筛选规则中输入“tcp”
(7)在Ethereal已俘获分组列表子窗口中选择一个TCP 报文段。选择菜单: Statistics->TCP Stream Graph-> Time-Sequence-Graph(Stevens)
2、对网络层协议IP进行捕包分析
(1)打开Ethereal,开始包捕获,然后在Ethereal包捕获的选择屏幕上点击OK;
(2)开启pingplotter,然后在“Address to Trace”窗口输入目的地目标的名字www.baidu,com:选择Edit->Options->Packet,确认在packet size字段的值为56,点OK。然后按下Trace按钮。
(3)接下来,发送一组具有较长长度的数据包,通过Edit->Options->Packet在包大小区域, 输入值为2000,点OK。接着按下Resume按钮;
(4)再发送一组具有更长长度的数据包,通过Edit->Options->Packet在包大小区域输入值为3500,点OK。接着按下Resume按钮;
(5)然后我们停止Ethereal tracing;
二、利用分组嗅探器分析数据链路层协议
1、对数据链路层协议进行捕包分析,俘获并分析以太网帧
(1)清空浏览器缓存
(2)启动Ethereal,开始分组俘获
(3)在浏览器的地址栏中输入:http://gaia.cs.umass.edu/ethereal-labs/HTTP-ethereal-file3.html
(4)停止分组俘获。首先,找到你的主机向服务器gaia.cs.umass.edu发送的HTTP GET报文的分组序号,以及服务器发送到你主机上的HTTP 响应报文的序号,选择“Analyze->Enabled Protocols”,取消对IP复选框的选择,单击OK
(5)选择包含HTTP GET报文的以太网帧,在分组详细信息窗口中,展开Ethernet II信息部分。
(6)选择包含HTTP 响应报文第一个字节的以太网帧。
2、ARP分析
(1)利用MS-DOS命令:arp 或 c:\windows\system32\arp查看主机上ARP缓存的内容。
(2)利用MS-DOS命令:arp-d * 清除主机上ARP缓存的内容。
(3)清除浏览器缓存。
(4)启动Ethereal,开始分组俘获。
(5)在浏览器的地址栏中输入:http://gaia.cs.umass.edu/ethereal-labs/HTTP-ethereal-lab-file3.html
(6)停止分组俘获。选择“Analyze->Enabled Protocols”,取消对IP复选框的选择,单击OK
实验结果
一、利用分组嗅探器分析传输层与网络层协议
1、对传输层协议TCP/UDP进行捕包分析并回答问题
三次握手:
回答问题:
(1)
向gaia.cs.umass.edu服务器传送文件的客户端主机的IP地址是10.236.97.254,TCP端口号是53681。
(2)
Gaia.cs.umass.edu服务器的IP地址是128.119.245.12,对这一连接,它用来发送和接收TCP报文段的端口号是80。
(3)
客户服务器之间用于初始化TCP连接的TCP SYN报文段的序号(sequence number)是0,在该报文段中,是用Flag中的标示位来标示该报文段是SYN报文段的,Flag中syn标志位是1。
(4)
服务器向客户端发送的SYNACK报文段序号是0,该报文段中,ACKnowledgement字段的值是1,Gaia.cs.umass.edu服务器是通过序号加长度来决定ACK的值得,故此处ACKnowledgement字段的值为SYN报文段中的seq+1, 在该报文段中,是用Flag:0x0012来标示该报文段是SYNACK报文段的。
(5)
包含HTTP POST命令的TCP报文段的序号是67521。
TCP拥塞控制
2、对网络层协议IP进行捕包分析
(12)
我的电脑的IP地址是192.168.43.172
(13)
图同上题
在IP包头部,上层协议区域的值是ICMP(0x01)
(14)
图同(12)题
IP头部有20字节,IP数据包的有效载荷是36字节。解释:总长度56字节,IP数据包的有效载荷是总长度-头部字节即56-20=36字节
(15)
图同(12)题
这个IP数据包没有被分割,因为flag中的三项和offset都是0。
IP协议的数据:
(16)
在包捕获列表窗口,我能看到在第一个ICMP下的所有并发的ICMP消息。
(17)
往同一IP的数据包,首部校验和、标识在改变而且必须改变,因为首部校验和用于差错检验、标识字段唯一地标识主机发送的每一份数据报;版本、首部长度、区分服务、协议、源地址保持不变而且必须保持不变。
(18)
图同(15)题
在IP数据包的Identification字段的值是0xc757(51031)
二、利用分组嗅探器分析数据链路层协议
1、对数据链路层协议进行捕包分析,俘获并分析以太网帧
主机向服务器gaia.cs.umass.edu发送的HTTP GET报文的分组序号为1,以及服务器发送到你主机上的HTTP 响应报文的序号为1。
选择“Analyze->Enabled Protocols”,取消对IP复选框的选择,单击OK。窗口如下:
实验当中问题及解决方法
1、ethereal中分析时对分组首部明细(details of selected packet header)部分各条信息具体指的内容不是很了解,基础知识不够牢固,需要边查询边做题。
2、ethereal中过滤时输入大写内容如ICMP,会显示为无效的过滤包,无法过滤。
解决方法: ethereal中过滤时应该输入小写内容如icmp.
3、在判断IP数据包是否被分割时,长度为56b的包没有被分割而长度为2000b的包被分割了。开始的时候不会在明细中找到相应的信息查看判断是否被分割。
解决方法:ethereal中可以通过看flag中的三项和offset是否都是0来判断是否IP数据包被分割;wireshark中可以直接通过看Length列的长度来判断IP数据包是否被分割以及分割成了几段。
eg.
长度为56b的包没有被分割,因为flag中的三项和offset都是0
长度为2000b的包被分割了,因为发的是长度为2000b的包,接收到的分为了两个包,长度分别为1534b和534b。
4、不确定怎么从获得的数据中判断跟踪文件中是否有重传的报文段。
解决方法:通过查询百度知道,如果跟踪文件中没有重传的报文段,则得到的数据中,从源端发往目的地的序号是逐渐增加的;如果跟踪文件中有重传的报文段,那么从源端发往目的地的序号中应该有小于其临近的分组序号的分组。
5、浏览Time-Sequence-Graph(Stevens) plotting中由客户端向服务器发送的报文段序号和时间对应关系图时知道TCP慢启动阶段的开始为HTTP POST报文段的发出时刻,但不会判断慢启动阶段的截止时刻以及在何处转入避免拥塞阶段。
解决方法:通过询问同学知道,慢启动阶段和避免拥塞阶段的鉴定取决于发送方拥塞窗口的大小,但是拥塞窗口的大小在Time-Sequence-Graph中并不能看出。