1、 实验一: Ethereal 使用入门一、实验目的熟悉分组嗅探器 Ethereal 实验环境,学习使用 Ethereal 捕获数据的方法。二、实验原理学生对网络协议的理解通常通过以下方法能够得到极大的深化:观察它们的工作过程和使用它们,即观察两个协议实体之间交换的报文序列,钻研协议操作的细节,使协议执行某些操作,观察这些动作及其后果,这能够在仿真环境下或在如因特网这样的真实网络环境下完成。在 Ethereal 实验中,我们将采用后一种方法,使用桌面上的计算机在各种情况下运行网络应用程序,在计算机上观察网络协议与在因特网别处执行的协议实体进行交互和交换报文的情况。因此,你与你的计算机将是这些实际
2、实验的组成部分,在实际动手实验中进行观察学习。观察在执行协议的实体之间交换的报文的基本工具被称为分组嗅探器(packet sniffer) 。顾名思义,一个分组嗅探器被动地拷贝(嗅探)由你的计算机发送和接收的报文,它也能存储并显示出这些被俘获报文的各个协议字段的内容。一个分组嗅探器本身是被动的,它观察运行在你计算机上的应用程序和协议收发的报文,但它自己从不发送任何分组。同样,接收到的分组也不会显式地标注是给分组嗅探器的。实际上,一个分组嗅探器收到的是运行在你机器上应用程序和协议收发的分组的备份。图 1 显示了一个分组嗅探器的结构。图 1 的右边是正常的运行在你的计算机上的协议和应用程序(比如
3、FTP client) 。在图中虚线矩形中的分组嗅探器是在你计算机中额外安装的软件,由两部分组成:一部分是分组捕获库(packet capture library) ,一部分是分组解析器(packet analyzer) 。分组获取库获得了从你主机发出或接收的每一个链路层数据帧的拷贝,更高层协议(HTTP、FTP 、TCP、UDP 、DNS、IP)传输的信息最终都被封装在链路层帧里,通过物理介质传送出去(如网线) 。在图 1 中,假定物理介质为以太网,则上层协议数据被封装在以太网帧中。因而抓取了所有的链路层帧将使我们可以获取机器上的协议和应用程序收发的所有数据。分组嗅探器的第二个部分是分组解析
4、器(packet analyzer) 。它将显示在一个协议信息包中的所有内容。为了做到这一点,分组解析器必须“理解”被协议交换的所有信息的结构。比如:假设我们想要显示 HTTP 协议所传递的信息的各个字段的内容,分组解析器理解以太网的帧格式,因此能从中截取 IP 分组;它也能理解 IP 分组的格式,因此从中截取 TCP 报文段;它能理解 TCP 报文段的格式,因此从中截取 HTTP数据包。最后,它理解 HTTP 数据包的格式,知道 HTTP 信息的前几个字节将包含字符串“GET” 、 “POST”或“HEAD” 。图 1 分组嗅探器结构我们将使用Ethereal分组嗅探器 http:/ (从技
5、术角度上讲,Ethereal是你计算机上一个使用分组获取库的分组解析器。 )Ethereal 是一个免费的网络协议分析器,可以运行在 Windows、Linux/Unix、Mac 计算机上。它是一个理想的分组解析器 它稳定,有较大的用户基础和良好的文档支持,包括用户指南(参见http:/ 、手册页(参见http:/ Asked Questions,“经常问到的问题”),它有丰富的功能,能够分析 500多种协议,拥有设计良好的用户界面,它除了工作在点对点协议(如PPP)上之外,还可以工作在使用以太网连入互联网的计算机上。Ethereal的名字就来源于以太网Ethernet协议。三、实验步骤1.获
6、取Ethereal为了运行Ethereal,你需要有一台支持 Ethereal和libpcap分组获取库的计算机。如果这个libpcap软件未被安装到你的操作系统中,为了使用Ethereal你需要安装它。参见http:/ 如果需要,则下载安装libpcap软件。在Ethereal下载页中提供了libpcap软件的链接。对于Windows主机而言, libpcap被称为WinPCap,在http:/winpcap.polito.it/可以找到它。参见 http:/winpcap.polito.it/上的FAQ question #2来决定你的机器上是否已被安装WinPCap。 到http:/ 下
7、载Ethereal用户指南。Ethereal FAQ中有很多有帮助的建议和有趣的信息,如果在安装运行Ethereal过程中遇到问题它们可能很有用。2.运行Ethereal当你运行Ethereal,Ethereal的图形用户界面将被显示(如图 2所示)。初始状态,在各个窗口都没有数据显示。Ethereal 界面有五个主要部分 (捕获到数据后可以看到):图 2:Ethereal 用户图形界面 命令菜单(command menus)是位于窗口上部的标准下拉菜单。我们现在感兴趣的是“文件”(File)、“捕获”(Capture)子菜单。“文件”菜单可以保存被捕获的分组数据或打开一个包含过去捕获的分组数
8、据的文件,以及退出Ethereal。“捕获”菜单可以开始分组捕获。 分组列表窗口(packet-listing window)显示了为每一个被捕获的分组生成的一行总结,包括分组号(由Ethereal分配,而并不是包含在协议头部的分组号)、分组捕获的时间、分组的源地址和目的地址、协议类型以及包含在分组中与协议相关的信息。可以通过单击列名来使分组列表按某一列数据排序。协议类型字段列出的是发送或接收该分组的最高层协议,也就是说列出的是这分组的源协议或最终协议。 分组头部详细信息窗口(packet-header details window)提供了在分组列表窗口选择的分组(高亮显示)的详细信息。(要在
9、分组列表窗口选择一个分组,将鼠标放在窗口内的该分组的一行总结上,左键单击)。显示的详细信息包括:封装该分组的以太网帧和IP数据报的信息。可以通过点击分组头部详细信息窗口以太网帧或IP数据报左边的向右箭头或向下箭头 来扩展或最小化被显示的以太网层和IP层的详细信息的数量。如果该分组是通过 TCP或UDP 携带传送的,TCP 或UDP协议的细节也可以被显示,同样也可以被扩展或最小化。最后,发送或接收分组的最高层的协议细节也被提供。 分组内容窗口(packet-contents window)显示被捕获帧的全部内容(以ASCII码和十六进制格式显示)。 在Ethereal用户窗口界面的上方是 分组显
10、示过滤区域( packet display filter field),可以在此窗口输入协议名或其他信息以过滤在分组列表窗口显示的信息(从而过滤分组头部详细信息窗口和分组内容窗口中的信息)。在下面的例子中,我们将利用分组显示过滤器区域让Ethereal将所有与HTTP信息无关的分组隐藏起来3.Ethereal试运行学习使用任何一种软件最好的办法是试着使用它。试着进行以下操作:1) 启动你喜爱的浏览器,显示你选择的主页2) 启动Ethereal软件,一开始将看到一个与图 2相似的窗口,当然由于 Ethereal还没有开始捕获分组,在分组列表、分组头部或分组内容窗口没有显示任何分组数据3) 选择“
11、Capture ”下拉菜单,选择“Options”,“Ethereal Capture Options”窗口将显示出来,如图3所示。选择“OK”,开始分组捕获图 3:Ethereal 捕获选项窗口4) 你可以使用这个窗口中的全部默认值。你计算机上连接网络使用的网络接口(即物理网络)将在“Capture Options”窗口中的上方的“Interface”下拉菜单显示。如果你的机器有不止一个的活动网络接口(比如你有无线和有线的两种以太网连接),你需要选择一个被用于收发分组的接口(通常选有线接口)。选择完接口后(或采用Ethereal 选择的默认接口)点击 OK。分组捕获现在开始所有被你主机发送或
12、接收的分组都将被Ethereal捕获!5) 一旦开始分组捕获,将出现一个“分组捕获总结窗口”,如图4所示。这个窗口将总结被捕获的不同类型的分组的数目,同时窗口中的“Stop”按钮将使你可以停止捕获(重要!)。但现在还不要这样做。图 4:Ethereal 分组捕获窗口6) 当Ethereal正运行时,输入以下 URL:“http:/gaia.cs.umass.edu/ethereal-labs/INTRO-ethereal-file1.html”,让这个网页显示在你的浏览器中。为了显示该网页,你的浏览器将联系在gaia.cs.umass.edu上的HTTP 服务器,与服务器交换 HTTP信息以下
13、载该网页。封装这些HTTP信息的以太网帧将被Ethereal 捕获。7) 浏览器显示INTRO-ethereal-file1.html页后,在Ethereal捕获窗口中选择stop来停止Ethereal分组捕获。这使 Ethereal分组捕获窗口消失,主 Ethereal窗口将显示所有被捕获分组。主Ethereal 窗口看起来与图2类似。你现在获得的最新数据包含了在你主机与其他网络实体之间交换的所有协议信息。与gaia.cs.umass.edu网络服务器交换的 HTTP报文应该在被捕获的分组列表中,但同时还有很多其他类型的分组显示(比如在图2中Protocol列显示的多个不同的协议类型)。即使
14、你只做了下载一个网页这一个动作,仍有许多不可见的协议运行在你的主机上。今后我们将学习这些协议的更多知识。现在你只要知道正在运行的协议远远超过你肉眼看见的!8) 在Ethereal主窗口上方的分组显示过滤窗口键入“http” (没有引号,小写在Ethereal中所有协议名均小写)。然后选择 “Apply”(在你键入“http”的右边)。这将使只有HTTP数据在分组列表窗口显示。9) 选择分组列表窗口的第一条HTTP报文。这应该是从你机器上发往gaia.cs.umass.edu HTTP服务器的HTTP GET报文。当选中 HTTP GET报文,以太网帧、IP数据报、TCP报文段、HTTP报文头部
15、信息将在分组头部窗口显示 2。通过点击分组详细信息窗口左边的加号和减号,最小化被显示的帧、以太网、IP、TCP 的信息量,最大化被显示的 HTTP协议的信息量。你的Ethereal应与图5相似(注意:在分组头部窗口将 HTTP协议信息量最大化,将其他协议的信息量最小化)图 5:第 9步后的 Ethereal显示10) 退出Ethereal.四、实验问题探讨第一个实验的目标主要是介绍Ethereal 。回答下面的问题将表明你已经能够启动运行Ethereal,并探索了它的一些功能。根据 Ethereal实验回答下列问题:1) 列出实验中的第7步时在未进行过滤的分组列表窗口中协议列出现的不同协议2)
16、 从发出HTTP GET 到收到 HTTP OK应答需要多长时间?(默认地在分组列表窗口的时间列上记录的是从Ethereal 跟踪数据以来的时间值,以秒为单位。若要时间字段按“时:分:秒”的格式显示,选择“View”下拉菜单中的“Display Format”,然后选择“Time-of-day”)3) gaia.cs.umass.edu(也就是www-net.cs.umass.edu) 的IP 地址是多少?你的主机的IP地址是多少?2 注:被发往 gaia.cs.umass.edu 服务器的 HTTP GET 报文被封装在一个 TCP 报文段中,该报文段又被封装在一个 IP 数据报中,该 IP 数据报被封装在一个以太网帧中