1、实验4:利用Wireshark进行协议分析1、实验目的熟悉并掌握Wireshark的基本操作,了解网络协议实体间进行交互以及报文交换的情况。2、实验环境Windows9x/NT/2000/XP/2003与因特网连接的计算机网络系统分组分析器Wireshark:要深入理解网络协议,需要仔细观察协议实体之间交换的报文序列。为探究协议操作细节,可使协议实体执行某些动作,观察这些动作及其影响。这些任务可以在仿真环境下或在如因特网这样的真实网络环境中完成。观察在正在运行协议实体间交换报文的基本工具被称为分组嗅探器(packet sniffer)。顾名思义,一个分组嗅探器俘获(嗅探)计算机发送和接收的报文
2、。一般情况下,分组嗅探器将存储和显示出被俘获报文的各协议头部字段的内容。图 4-1 为一个分组嗅探器的结构。图4-1分组嗅探器的结构图 4-1 右边是计算机上正常运行的协议(在这里是因特网协议)和应用程序(如:web 浏览器和 ftp 客户端)。分组嗅探器(虚线框中的部分)是附加计算机普通软件上的,主要有两部分组成。分组俘获库(packetcapture library)接收计算机发送和接收的每一个链路层帧的拷贝。高层协议(如:HTTP、FTP、TCP、UDP、DNS、IP 等)交换的报文都被封装在链路层帧中,并沿着物理媒体(如以太网的电缆)传输。图 1 假设所使用的物理媒体是以太网,上层协议
3、的报文最终封装在以太网帧中。分组嗅探器的第二个组成部分是分析器。分析器用来显示协议报文所有字段的内容。为此,分析器必须能够理解协议所交换的所有报文的结构。例如:我们要显示图 4-1 中 HTTP 协议所交换的报文的各个字段。分组分析器理解以太网帧格式,能够识别包含在帧中的 IP 数据报。分组分析器也要理解 IP 数据报的格式,并能从 IP 数据报中提取出 TCP 报文段。然后,它需要理解 TCP 报文段,并能够从中提取出 HTTP 消息。最后,它需要理解 HTTP 消息。Wireshark是一种可以运行在Windows,UNIX,Linux等操作系统上的分组分析器。运行Wireshark程序时
4、,其图形用户界面如图4-2所示。图4-3Wireshark的用户界面图4-2Wireshark初始用户界面最初,各窗口中并无数据显示。在用户选择接口,点击开始抓包按钮之后,Wireshark的用户界面会变成如图4-3所示。此时Wireshark的用户界面主要有5部分组成,如图4-3所示。命令菜单(commandmenus):命令菜单位于窗口的最顶部,是标准的下拉式菜单。最常用菜单命令有两个:File、Capture。File菜单允许你保存俘获的分组数据或打开一个已被保存的俘获分组数据文件或退出Wireshark程序。Capture菜单允许你开始俘获分组。俘获分组列表(listingofcapt
5、uredpackets):按行显示已被俘获的分组内容,其中包括:Wireshark赋予的分组序号、俘获时间、分组的源地址和目的地址、协议类型、分组中所包含的协议说明信息。单击某一列的列名,可以使分组按指定列进行排序。在该列表中,所显示的协议类型是发送或接收分组的最高层协议的类型。分组头部明细(detailsofselectedpacketheader):显示俘获分组列表窗口中被选中分组的头部详细信息。包括:与以太网帧有关的信息,与包含在该分组中的IP数据报有关的信息。单击以太网帧或IP数据报所在行左边的向右或向下的箭头可以展开或最小化相关信息。另外,如果利用TCP或UDP承载分组,Wiresh
6、ark也会显示TCP或UDP协议头部信息。最后,分组最高层协议的头部字段也会显示在此窗口中。分组内容窗口(packetcontent):以ASCII码和十六进制两种格式显示被俘获帧的完整内容。显示筛选规则(displayfilterspecification):在该字段中,可以填写协议的名称或其他信息,根据此内容可以对分组列表窗口中的分组进行过滤。3、实验过程1)学习Wireshark的使用启动主机上的web浏览器。启动Wireshark。你会看到如图4-2所示的窗口,只是窗口中没有任何分组列表。开始分组俘获:选择“capture”下拉菜单中的“CaptureOptions”命令,会出现如图4
7、-3所示的“Wireshark:CaptureOptions”窗口,可以设置分组俘获的选项。图4-4Wireshark的CaptureOption在实验中,可以使用窗口中显示的默认值。在“Wireshark:CaptureOptions”窗口(如图4-4所示)的最上面有一个“InterfaceList”下拉菜单,其中显示计算机所具有的网络接口(即网卡)。当计算机具有多个活动网卡时,需要选择其中一个用来发送或接收分组的网络接口(如某个有线接口)。随后,单击“Start”开始进行分组俘获,所有由选定网卡发送和接收的分组都将被俘获。开始分组俘获后,会出现如图4-5所示的窗口。该窗口统计显示各类已俘获
8、数据包。在该窗口的工具栏中有一个“stop”按钮,可以停止分组的俘获。但此时你最好不要停止俘获分组。在运行分组俘获的同时,在浏览器地址栏中输入某网页的URL,如:。为显示该网页,浏览器需要连接的服务器,并与之交换HTTP消息,以下载该网页。包含这些HTTP报文的以太网帧将被Wireshark俘获。当完整的页面下载完成后,单击Wireshark菜单栏中的stop按钮,停止分组俘获。Wireshark主窗口显示已俘获的你的计算机与其他网络实体交换的所有协议报文,其中一部分就是与服务器交换的HTTP报文。此时主窗口与图4-3相似。在显示筛选规则中输入“http”,单击“回车”,分组列表窗口将只显示H
9、TTP协议报文。图4-5Wireshark的抓包界面选择分组列表窗口中的第一条http报文。它应该是你的计算机发向服务器的HTTPGET报文。当你选择该报文后,以太网帧、IP数据报、TCP报文段、以及HTTP报文首部信息都将显示在分组首部子窗口中。单击分组首部详细信息子窗口中向右和向下箭头,可以最小化帧、以太网、IP、TCP信息显示量,可以最大化HTTP协议相关信息的显示量。2)利用Wireshark分析HTTP协议(1)HTTPGET/response交互启动Webbrowser,然后启动Wireshark分组嗅探器。在窗口的显示过滤说明处输入“http”,分组列表子窗口中将只显示所俘获到的
10、HTTP报文。开始Wireshark分组俘获。在打开的浏览器窗口中输入以下地址:停止分组俘获。根据俘获窗口内容,思考以下问题:你的浏览器运行的是HTTP1.0,还是HTTP1.1?你所访问的服务器所运行HTTP协议的版本号是多少?你的浏览器向服务器指出它能接收何种语言版本的对象?你的计算机的IP地址是多少?服务器的IP地址是多少?从服务器向你的浏览器返回的状态代码是多少?(2)HTTP条件GET/response交互启动浏览器,清空浏览器的缓存(在浏览器中,选择“工具”菜单中的“Internet选项”命令,在出现的对话框中,选择“删除文件”)。启动Wireshark分组俘获器。开始Wiresh
11、ark分组俘获。在浏览器的地址栏中输入以下URL:你的浏览器中重新输入相同的URL或单击浏览器中的“刷新”按钮。停止Wireshark分组俘获,在显示过滤筛选说明处输入“http”,分组列表子窗口中将只显示所俘获到的HTTP报文。根据俘获窗口内容,思考以下问题:分析你的浏览器向服务器发出的第一个HTTPGET请求的内容,在该请求报文中,是否有一行是:IF-MODIFIED-SINCE?分析服务器响应报文的内容,服务器是否明确返回了文件的内容?如何获知?分析你的浏览器向服务器发出的较晚的“HTTPGET”请求,在该请求报文中是否有一行是:IF-MODIFIED-SINCE?如果有,在该首部行后面
12、跟着的信息是什么?服务器对较晚的HTTPGET请求的响应中的HTTP状态代码是多少?服务器是否明确返回了文件的内容?请解释。3)利用Wireshark分析TCP协议注:访问以下网址需要设置代理服务器。如无法访问可与实验TA联系,下载tcp-Wireshark-trace文件,利用该文件进行TCP协议分析。(1)俘获大量的由本地主机到远程服务器的TCP分组A.启动浏览器,打开http:/gaia.cs.umass.edu/Wireshark-labs/alice.txt网页,得到ALICESADVENTURESINWONDERLAND文本,将该文件保存到你的主机上。B.打开http:/gaia.
13、cs.umass.edu/Wireshark-labs/TCP-Wireshark-file1.html,如图4-6所示,窗口如下图所示。在Browse按钮旁的文本框中输入保存在你的主机上的文件ALICESADVENTURESINWONDERLAND的全名(含路径),此时不要按“Upload alice.txtfile”按钮。图4-6Wireshark-labs网页截图C.启动Wireshark,开始分组俘获。D.在浏览器中,单击“Uploadalice.txtfile”按钮,将文件上传到gaia.cs.umass.edu服务器,一旦文件上传完毕,一个简短的贺词信息将显示在你的浏览器窗口中。E
14、.停止俘获。(2)浏览追踪信息在显示筛选规则中输入“tcp”,可以看到在本地主机和服务器之间传输的一系列tcp和http报文,你应该能看到包含SYN报文的三次握手。也可以看到有主机向服务器发送的一个HTTPPOST报文和一系列的“httpcontinuation”报文。根据操作思考以下问题:向gaia.cs.umass.edu服务器传送文件的客户端主机的IP地址和TCP端口号是多少?Gaia.cs.umass.edu服务器的IP地址是多少?对这一连接,它用来发送和接收TCP报文的端口号是多少?(3)TCP基础根据操作思考以下问题:客户服务器之间用于初始化TCP连接的TCPSYN报文段的序号(s
15、equencenumber)是多少?在该报文段中,是用什么来标示该报文段是SYN报文段的?服务器向客户端发送的SYNACK报文段序号是多少?该报文段中,Acknowledgement字段的值是多少?Gaia.cs.umass.edu服务器是如何决定此值的?在该报文段中,是用什么来标示该报文段是SYNACK报文段的?你能从捕获的数据包中分析出tcp三次握手过程吗?包含HTTPPOST命令的TCP报文段的序号是多少?如果将包含HTTPPOST命令的TCP报文段看作是TCP连接上的第一个报文段,那么该TCP连接上的第六个报文段的序号是多少?是何时发送的?该报文段所对应的ACK是何时接收的?前六个TC
16、P报文段的长度各是多少?在整个跟踪过程中,接收端公示的最小的可用缓存空间是多少?限制发送端的传输以后,接收端的缓存是否仍然不够用?在跟踪文件中是否有重传的报文段?进行判断的依据是什么?TCP连接的throughput(bytestransferredperunittime)是多少?请写出你的计算过程。4)利用Wireshark分析IP协议通过分析执行traceroute程序发送和接收到的IP数据包,我们将研究IP数据包的各个字段,并详细研究IP分片。(1)通过执行traceroute执行捕获数据包为了产生一系列IP数据报,我们利用traceroute程序发送具有不同大小的数据包给目的主机X。回
17、顾之前ICMP实验中使用的traceroute程序,源主机发送的第一个数据包的TTL设位1,第二个为2,第三个为3,等等。每当路由器收到一个包,都会将其TTL值减1。这样,当第n个数据包到达了第n个路由器时,第n个路由器发现该数据包的TTL已经过期了。根据IP协议的规则,路由器将该数据包丢弃并将一个ICMP警告消息送回源主机。在Windows自带的tracert命令不允许用户改变由tracert命令发送的ICMPecho请求消息(ping消息)的大小。一个更优秀的traceroute程序是pingplotter,下载并安装pingplotter。ICMPecho请求消息的大小可以通过下面方法在
18、pingplotter中进行设置。Edit-Options-Packet,然后填写PacketSize(inbytes,default=56)域。实验步骤:A. 启动Wireshark并开始数据包捕获B. 启动pingplotter并“AddresstoTraceWindow”域中输入目的地址。在“#oftimestoTrace”域中输入“3”,这样就不过采集过多的数据。Edit-Options-Packet,将PacketSize(inbytes,default=56)域设为56,这样将发送一系列大小为56字节的包。然后按下“Trace”按钮。得到的pingplotter窗口如图4-7所示。
19、图4-7pingplotter窗口A.Edit-Options-Packet,然后将PacketSize(inbytes,default=56)域改为2000,这样将发送一系列大小为2000字节的包。然后按下“Resume”按钮。B. 最后,将PacketSize(inbytes,default=56)域改为3500,发送一系列大小为3500字节的包。然后按下“Resume”按钮。C. 停止Wireshark的分组捕获。(2)对捕获的数据包进行分析图4-8Wrieshark窗口A.在你的捕获窗口中,应该能看到由你的主机发出的一系列ICMP EchoRequest包和中间路由器返回的一系列ICM
20、PTTL-exceeded消息。选择第一个你的主机发出的ICMPEchoRequest消息,在packetdetails窗口展开数据包的InternetProtocol部分,如图4-8所示。思考下列问题:你主机的IP地址是什么?在IP数据包头中,上层协议(upperlayer)字段的值是什么?IP头有多少字节?该IP数据包的净载为多少字节?并解释你是怎样确定该IP数据包的净载大小的?该IP数据包分片了吗?解释你是如何确定该P数据包是否进行了分片B.单击Source列按钮,这样将对捕获的数据包按源IP地址排序。选择第一个你的主机发出的ICMPEchoRequest消息,在packetdetail
21、s窗口展开数据包的InternetProtocol部分。在“listingofcapturedpackets”窗口,你会看到许多后续的ICMP消息(或许还有你主机上运行的其他协议的数据包)思考下列问题:你主机发出的一系列ICMP消息中IP数据报中哪些字段总是发生改变?哪些字段必须保持常量?哪些字段必须改变?为什么?描述你看到的IP数据包Identification字段值的形式。C.找到由最近的路由器(第一跳)返回给你主机的ICMP Time-to-liveexceeded消息。思考下列问题:Identification字段和TTL字段的值是什么?最近的路由器(第一跳)返回给你主机的ICMPTi
22、me-to-liveexceeded消息中这些值是否保持不变?为什么?D.单击Time列按钮,这样将对捕获的数据包按时间排序。找到在将包大小改为2000字节后你的主机发送的第一个ICMPEchoRequest消息。思考下列问题:该消息是否被分解成不止一个IP数据报?观察第一个IP分片,IP头部的哪些信息表明数据包被进行了分片?IP头部的哪些信息表明数据包是第一个而不是最后一个分片?该分片的长度是多少C.找到在将包大小改为3500字节后你的主机发送的第一个ICMPEchoRequest消息。思考下列问题:原始数据包被分成了多少片?这些分片中IP数据报头部哪些字段发生了变化?4、实验过程1)学习W
23、ireshark的使用2)利用Wireshark分析HTTP协议1.HTTP GET/response 交互:IP为172.17.150.171,服务器IP为219.217.227.106TCP头部:HTTP报文:HTTP1.1,zh-CN表明接受中文而服务器的报文中,源IP与目的IP与客户端恰好相反:服务器的协议版本为HTTP1.1,,返回状态代码为200 OK2.HTTP 条件GET/response 交互第一个HTTP-GET请求的内容中,并没有IF-MODIFIED-SINCE第一次回复报文,服务器返回文件内容:第二次发请求时,出现了IF-MODIFIED-SINCE第二次回复报文时,
24、服务器告知浏览器可在缓存中查找文件:3)利用Wireshark分析TCP协议三次握手,可知,客户端主机的IP地址为128.119.245.12,TCP端口号为60;服务器的IP地址是172.17.150.171,用来发送和接受TCP报文的TCP端口号为1514:Seq=0,通过设置TCP头部的flags字段的SYN标志位来标示:SYN ACK报文段序号是0,Acknowledgment字段的值是1(服务器收到客户端发来的SYN报文,此报文消耗1个序列号,因此服务器回复下一个期望得到的序列号为1)。通过标记TCP头的flags字段的SYN标志位来标示的:三次握手过程:含POST 的TCP报文段的序号:接受端公示的最小可用缓存空间大小为:由于窗口大小一直增加,所以缓存够用。TCP链接的throughput为:可知头部为54B,共106个包,故106*54B=5724B由上图可知,总传送数据为:152935B+5724B=158659B初始时间与结束时间间隔约为1.673847s故:158659B/1.673847s=94787B/s94.8KBps4)利用Wireshark分析IP协议主机的IP地址为:172.17.150.171上层协议的字段值为:0118
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100