利用Ethereal分析HTTPTCP和IP实验报告.docx
- 文档编号:20121189
- 上传时间:2023-04-25
- 格式:DOCX
- 页数:22
- 大小:1.47MB
利用Ethereal分析HTTPTCP和IP实验报告.docx
《利用Ethereal分析HTTPTCP和IP实验报告.docx》由会员分享,可在线阅读,更多相关《利用Ethereal分析HTTPTCP和IP实验报告.docx(22页珍藏版)》请在冰豆网上搜索。
利用Ethereal分析HTTPTCP和IP实验报告
实验四利用Ethereal分析HTTP、TCP和IP
1、实验目的
熟悉并掌握Ethereal的基本操作,了解网络协议实体间进行交互以及报文交换的情况。
2、实验环境:
Windows9x/NT/2000/XP/2003
与因特网连接的计算机网络系统
Ethereal等软件
3、实验内容:
1)学习Ethereal的使用
2)利用Ethereal分析HTTP协议
3)利用Ethereal分析TCP协议
4)利用Ethereal分析IP协议
4、实验方式:
每位同学上机实验,并与指导教师讨论。
5、参考内容:
要深入理解网络协议,需要仔细观察协议实体之间交换的报文序列。
为探究协议操作细节,可使协议实体执行某些动作,观察这些动作及其影响。
这些任务可以在仿真环境下或在如因特网这样的真实网络环境中完成。
观察在正在运行协议实体间交换报文的基本工具被称为分组嗅探器(packetsniffer)。
顾名思义,一个分组嗅探器俘获(嗅探)计算机发送和接收的报文。
一般情况下,分组嗅探器将存储和显示出被俘获报文的各协议头部字段的内容。
图1为一个分组嗅探器的结构。
图1右边是计算机上正常运行的协议(在这里是因特网协议)和应用程序(如:
web浏览器和ftp客户端)。
分组嗅探器(虚线框中的部分)是附加计算机普通软件上的,主要有两部分组成。
分组俘获库(packetcapturelibrary)接收计算机发送和接收的每一个链路层帧的拷贝。
高层协议(如:
HTTP、FTP、TCP、UDP、DNS、IP等)交换的报文都被封装在链路层帧中,并沿着物理媒体(如以太网的电缆)传输。
图1假设所使用的物理媒体是以太网,上层协议的报文最终封装在以太网帧中。
分组嗅探器的第二个组成部分是分析器。
分析器用来显示协议报文所有字段的内容。
为此,分析器必须能够理解协议所交换的所有报文的结构。
例如:
我们要显示图1中HTTP协议所交换的报文的各个字段。
分组分析器理解以太网帧格式,能够识别包含在帧中的IP数据报。
分组分析器也要理解IP数据报的格式,并能从IP数据报中提取出TCP报文段。
然后,它需要理解TCP报文段,并能够从中提取出HTTP消息。
最后,它需要理解HTTP消息。
Ethereal是一种可以运行在Windows,UNIX,Linux等操作系统上的分组分析器。
Ethereal是免费的,可以从Http:
//得到。
运行ethereal程序时,其图形用户界面如图2所示。
最初,各窗口中并无数据显示。
ethereal的界面主要有五个组成部分:
图2Ethereal的用户界面
命令菜单(commandmenus):
命令菜单位于窗口的最顶部,是标准的下拉式菜单。
最常用菜单命令有两个:
File、Capture。
File菜单允许你保存俘获的分组数据或打开一个已被保存的俘获分组数据文件或退出ethereal程序。
Capture菜单允许你开始俘获分组。
俘获分组列表(listingofcapturedpackets):
按行显示已被俘获的分组内容,其中包括:
ethereal赋予的分组序号、俘获时间、分组的源地址和目的地址、协议类型、分组中所包含的协议说明信息。
单击某一列的列名,可以使分组按指定列进行排序。
在该列表中,所显示的协议类型是发送或接收分组的最高层协议的类型。
分组头部明细(detailsofselectedpacketheader):
显示俘获分组列表窗口中被选中分组的头部详细信息。
包括:
与以太网帧有关的信息,与包含在该分组中的IP数据报有关的信息。
单击以太网帧或IP数据报所在行左边的向右或向下的箭头可以展开或最小化相关信息。
另外,如果利用TCP或UDP承载分组,ethereal也会显示TCP或UDP协议头部信息。
最后,分组最高层协议的头部字段也会显示在此窗口中。
分组内容窗口(packetcontent):
以ASCII码和十六进制两种格式显示被俘获帧的完整内容。
显示筛选规则(displayfilterspecification):
在该字段中,可以填写协议的名称或其他信息,根据此内容可以对分组列表窗口中的分组进行过滤。
(一)Ethereal的使用
启动主机上的web浏览器。
启动ethereal。
你会看到如图2所示的窗口,只是窗口中没有任何分组列表。
开始分组俘获:
选择“capture”下拉菜单中的“Start”命令,会出现如图3所示的“Ethereal:
CaptureOptions”窗口,可以设置分组俘获的选项。
在实验中,可以使用窗口中显示的默认值。
在“Ethereal:
CaptureOptions”窗口的最上面有一个“interface”下拉菜单,其中显示计算机所具有的网络接口(即网卡)。
当计算机具有多个活动网卡时,需要选择其中一个用来发送或接收分组的网络接口(如某个有线接口)。
随后,单击“ok”开始进行分组俘获,所有由选定网卡发送和接收的分组都将被俘获。
开始分组俘获后,会出现如图4所示的分组俘获统计窗口。
该窗口统计显示各类已俘获分组的数量。
在该窗口中有一个“stop”按钮,可以停止分组的俘获。
但此时你最好不要停止俘获分组。
在运行分组俘获的同时,在浏览器地址栏中输入某网页的URL,如:
。
为显示该网页,浏览器需要连接的服务器,并与之交换HTTP消息,以下载该网页。
包含这些HTTP报文的以太网帧将被Ethereal俘获。
图3Ethereal的CaptureOption
当完整的页面下载完成后,单击Ethereal俘获窗口中的stop按钮,停止分组俘获。
此时,分组俘获窗口关闭。
Ethereal主窗口显示已俘获的你的计算机与其他网络实体交换的所有协议报文,其中一部分就是与服务器交换的HTTP报文。
此时主窗口与图2相似。
在显示筛选规则中输入“http”,单击“apply”,分组列表窗口将只显示HTTP协议报文。
选择分组列表窗口中的第一条http报文。
它应该是你的计算机发向服务器的HTTPGET报文。
当你选择该报文后,以太网帧、IP数据报、TCP报文段、以及HTTP报文首部信息都将显示在分组首部子窗口中。
单击分组首部详细信息子窗口中向右和向下箭头,可以最小化帧、以太网、IP、TCP信息显示量,可以最大化HTTP协议相关信息的显示量。
图4Ethereal的PacketCaptureWindows
(二)HTTP分析
1)HTTPGET/response交互
⏹首先通过下载一个非常简单的HTML文件(该文件非常短,并且不嵌入任何对象)。
⏹启动Webbrowser,然后启动Ethereal分组嗅探器。
在窗口的显示过滤说明处输入“http”,分组列表子窗口中将只显示所俘获到的HTTP报文。
⏹开始Ethereal分组俘获。
⏹在打开的Webbrowser窗口中输入一下地址(浏览器中将显示一个只有几行文字的非常简单的HTML文件):
停止分组俘获。
根据俘获窗口内容,思考以下问题:
♦你的浏览器运行的是HTTP1.0,还是HTTP1.1?
你所访问的服务器所运行HTTP协议的版本号是多少?
HTTP1.1
♦你的浏览器向服务器指出它能接收何种语言版本的对象?
中文
♦你的计算机的IP地址是多少?
服务器的IP地址是多少?
222.24.79.172117.104.139.199
♦从服务器向你的浏览器返回的状态代码是多少?
200
2)HTTP条件GET/response交互
⏹启动浏览器,清空浏览器的缓存(在浏览器中,选择“工具”菜单中的“Internet选项”命令,在出现的对话框中,选择“删除文件”)。
⏹启动Ethereal分组俘获器。
开始Ethereal分组俘获。
⏹在浏览器的地址栏中输入以下URL:
⏹停止Ethereal分组俘获,在显示过滤筛选说明处输入“http”,分组列表子窗口中将只显示所俘获到的HTTP报文。
根据俘获窗口内容,思考以下问题:
♦分析你的浏览器向服务器发出的第一个HTTPGET请求的内容,在该请求报文中,是否有一行是:
IF-MODIFIED-SINCE?
没有
♦分析服务器响应报文的内容,服务器是否明确返回了文件的内容?
如何获知?
是,通过HypertextTransferProtocol中的line-basedtextdata获知
♦分析你的浏览器向服务器发出的第二个“HTTPGET”请求,在该请求报文中是否有一行是:
IF-MODIFIED-SINCE?
如果有,在该首部行后面跟着的信息是什么?
有,后面跟的是时间信息
♦服务器对第二个HTTPGET请求的响应中的HTTP状态代码是多少?
服务器是否明确返回了文件的内容?
请解释。
304.第二次进行HTTP数据请求时,主机先向缓冲区中去看,如果有,就不向服务器请求,直接调出缓冲中的数据。
(三)TCP分析
注:
访问以下网址需要设置代理服务器。
如无法访问可与实验TA联系,下载tcp-ethereal-trace文件,利用该文件进行TCP协议分析。
A.俘获大量的由本地主机到远程服务器的TCP分组
(1)启动浏览器,打开http:
//gaia.cs.umass.edu/ethereal-labs/alice.txt网页,得到ALICE'SADVENTURESINWONDERLAND文本,将该文件保存到你的主机上。
(2)打开
http:
//gaia.cs.umass.edu/ethereal-labs/TCP-ethereal-file1.html
(3)窗口如下图所示。
在Browse按钮旁的文本框中输入保存在你的主机上
的文件ALICE'SADVENTURESINWONDERLAND的全名(含路径),此时不要按“Uploadalice.txtfile”按钮
(4)启动Ethereal,开始分组俘获。
(5)在浏览器中,单击“Uploadalice.txtfile”按钮,将文件上传到gaia.cs.umass.edu服务器,一旦文件上传完毕,一个简短的贺词信息将显示在你的浏览器窗口中。
(6)停止俘获。
B.浏览追踪信息
(1)在显示筛选规则中输入“tcp”,可以看到在本地主机和服务器之间传输的一系列tcp和http报文,你应该能看到包含SYN报文的三次握手。
也可以看到有主机向服务器发送的一个HTTPPOST报文和一系列的“httpcontinuation”报文。
(2)根据操作思考以下问题:
♦向gaia.cs.umass.edu服务器传送文件的客户端主机的IP地址和TCP端口号是多少?
♦Gaia.cs.umass.edu服务器的IP地址是多少?
对这一连接,它用来发送和接收TCP报文的端口号是多少?
128.119.245.12
端口号:
45273
C.TCP基础
根据操作思考以下问题:
♦客户服务器之间用于初始化TCP连接的TCPSYN报文段的序号(sequencenumber)是多少?
在该报文段中,是用什么来标示该报文段是SYN报文段的?
sequencenumber:
0
用Flags字段中的第七位来表示该报文段是SYN报文段的
♦服务器向客户端发送的SYNACK报文段序号是多少?
该报文段中,Acknowledgement字段的值是多少?
Gaia.cs.umass.edu服务器是如何决定此值的?
在该报文段中,是用什么来标示该报文段是SYNACK报文段的?
Acknowledgement:
1
服务其发送TCP包时,将接受到seqencenumber+1作为ACK号
用Flag字段中的第六位。
♦你能从捕获的数据包中分析出tcp三次握手过程吗?
第一次握手:
A向B申请建立连接,发送TCP请求包。
将SYN号置“1”,随即生成一个seqencenumber:
X。
第二次握手:
B收到请求TCP包时,明白请求,发送应答包。
将SYN置“1”,再将seqencenumber随机生成Y,同时将ACKnumber设置成X+1。
发送。
第三次握手:
A收到来自B的确认包,首先确认是否为ACK包,之后观察ACKnumber是否为X+1,都确认完毕后,将ACK置“1”,SYN置“0”,发送一个确认包——确认连接建立。
♦包含HTTPPOST命令的TCP报文段的序号是多少?
sequencenumber:
1
♦如果将包含HTTPPOST命令的TCP报文段看作是TCP连接上的第一个报文段,那么该TCP连接上的第六个报文段的序号是多少?
是何时发送的?
该报文段所对应的ACK是何时接收的?
是Flag报文段。
♦前六个TCP报文段的长度各是多少?
1:
♦在整个跟踪过程中,接收端公示的最小的可用缓存空间是多少?
限制发送端的传输以后,接收端的缓存是否仍然不够用?
♦在跟踪文件中是否有重传的报文段?
进行判断的依据是什么?
有。
根据Flag报文段中的RESET字段的值来判断是否重传。
♦TCP连接的throughput(bytestransferredperunittime)是多少?
请写出你的计算过程。
(四)IP分析通过分析执行traceroute程序发送和接收到的IP数据包,我们将研究IP数据包的各个字段,并详细研究IP分片。
A.通过执行traceroute执行捕获数据包
为了产生一系列IP数据报,我们利用traceroute程序发送具有不同大小的数据包给目的主机X。
回顾之前ICMP实验中使用的traceroute程序,源主机发送的第一个数据包的TTL设位1,第二个为2,第三个为3,等等。
每当路由器收到一个包,都会将其TTL值减1。
这样,当第n个数据包到达了第n个路由器时,第n个路由器发现该数据包的TTL已经过期了。
根据IP协议的规则,路由器将该数据包丢弃并将一个ICMP警告消息送回源主机。
在Windows自带的tracert命令不允许用户改变由tracert命令发送的ICMPecho请求消息(ping消息)的大小。
一个更优秀的traceroute程序是pingplotter,下载并安装pingplotter。
ICMPecho请求消息的大小可以通过下面方法在pingplotter中进行设置。
Edit->Options->Packet,然后填写PacketSize(inbytes,default=56)域。
实验步骤:
(1)启动Ethereal并开始数据包捕获
(2)启动pingplotter并“AddresstoTraceWindow”域中输入目的地址。
在“#oftimestoTrace”域中输入“3”,这样就不过采集过多的数据。
Edit->Options->Packet,将PacketSize(inbytes,default=56)域设为56,这样将发送一系列大小为56字节的包。
然后按下“Trace”按钮。
得到的pingplotter窗口如下:
(1)Edit->Options->Packet,然后将PacketSize(inbytes,default=56)域改为2000,这样将发送一系列大小为2000字节的包。
然后按下“Resume”按钮。
(2)最后,将PacketSize(inbytes,default=56)域改为3500,发送一系列大小为3500字节的包。
然后按下“Resume”按钮。
(3)停止Ethereal的分组捕获。
注:
如无法访问可与实验TA联系,下载已有的ip-ethereal-trace文件,利用该文件进行IP协议分析
B.对捕获的数据包进行分析
(1)在你的捕获窗口中,应该能看到由你的主机发出的一系列ICMPEchoRequest包和中间路由器返回的一系列ICMPTTL-exceeded消息。
选择第一个你的主机发出的ICMPEchoRequest消息,在packetdetails窗口展开数据包的InternetProtocol部分。
思考下列问题:
♦你主机的IP地址是什么?
222.24.79.172
♦在IP数据包头中,上层协议(upperlayer)字段的值是什么?
2975
♦IP头有多少字节?
该IP数据包的净载为多少字节?
并解释你是怎样确定
IP头有多20节,净载56字节
♦该IP数据包的净载大小的?
♦该IP数据包分片了吗?
解释你是如何确定该P数据包是否进行了分片
没有,TotalLength为1500,而包大小没有这么大
(2)单击Source列按钮,这样将对捕获的数据包按源IP地址排序。
选择第一个你的主机发出的ICMPEchoRequest消息,在packetdetails窗口展开数据包的InternetProtocol部分。
在“listingofcapturedpackets”窗口,你会看到许多后续的ICMP消息(或许还有你主机上运行的其他协议的数据包)
思考下列问题:
♦你主机发出的一系列ICMP消息中IP数据报中哪些字段总是发生改变?
Frame、InternetProtocol一直在改变
♦哪些字段必须保持常量?
哪些字段必须改变?
为什么?
♦描述你看到的IP数据包Identification字段值的形式。
0*77c7(30663)
(3)找到由最近的路由器(第一跳)返回给你主机的ICMPTime-to-liveexceeded消息。
思考下列问题:
♦Identification字段和TTL字段的值是什么?
♦最近的路由器(第一跳)返回给你主机的ICMPTime-to-liveexceeded消息中这些值是否保持不变?
为什么?
(4)单击Time列按钮,这样将对捕获的数据包按时间排序。
找到在将包大小改为2000字节后你的主机发送的第一个ICMPEchoRequest消息。
思考下列问题:
♦该消息是否被分解成不止一个IP数据报?
是
♦观察第一个IP分片,IP头部的哪些信息表明数据包被进行了分片?
IP头部的哪些信息表明数据包是第一个而不是最后一个分片?
该分片的长度是多少
MoreFragments=1标志表明被进行了分片
IP头部的MoreFragments=1表明数据包是第一个而不是最后一个分片
C.找到在将包大小改为3500字节后你的主机发送的第一个ICMPEchoRequest消息。
思考下列问题:
♦原始数据包被分成了多少片?
23片
♦这些分片中IP数据报头部哪些字段发生了变化?
TTL、总长度、片偏移、标志位会改变
6、实验报告
要求学生撰写实验报告对利用Ethereal分析HTTP、TCP和IP的实验过程、发现的问题、得到的结果、对协议的认识等内容进行总结(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 利用 Ethereal 分析 HTTPTCP IP 实验 报告