计算机网络实践 网络协议分析实验报告

计算机网络技术实践

实验报告

实验名称网络协议分析

姓名____________ _实验日期: 2010年5月11日学号______ ___ _实验报告日期: 2010年5月12日

实验环境

两台PC机PC1、 PC2

PC1:

操作系统:Windows7

PC2:

操作系统:Windows XP

使用软件:wireshark

IP地址:

PC1:

PC2:

实验目的

练习并熟练掌握使用抓包软件进行网络抓包的方法;

学习并掌握ARP地址解析协议的工作原理,并能根据抓包结果对ARP协议进行分析;

学习并掌握ICMP地址解析协议的工作原理,并能根据抓包结果对ICMP协议进行分析;

通过对同一网络和不同网络中的两台主机的数据收发流程进行分析,并理解ARP和ICMP的工作机制。

实验内容及步骤

实验内容

实验6.1:ARP协议分析

关于arp缓存表项的生存期(有效时间)的观察和验证;

无偿ARP和重复的IP地址检测。

实验6.2:ICMP协议分析

分析回送或回送响应;

分析超时报文;

分析目标主机不可达报文。

实验6.3:数据包收发的整个流程分析

分析两台同一网络中PC机之间的数据包收发过程

分析两台不同局域网中PC机之间数据收发的过程

3、分析HTTP代理工作过程

实验步骤

实验6.1:ARP协议分析

arp –d删除所有表项;

PC1ping PC2的ip地址,触发arp过程;用ethereal观察arp过程;arp –a 观察mac地址。

用ethereal观察arp分组。

在一台PC1上设置IP,然后在另一个PC2上设置相同的IP,用ethereal抓arp包,会发现pc2在设置完IP后,会首先发送一个无偿arp请求,pc1收到后,会向pc2回复,在重复这样三次后,就可以确定网络内具有与之相同的ip主机,pc2就无法初始化其tcp/ip协议栈了。

实验6.2:ICMP协议分析

分析ping命令中的ICMP分组;

用ping命令探测网络上较远的结点,但把TTL设置较小(如本例中的3),如:ping –i 3 59.66.110.1,察看返回信息,并用ethereal看59.66.110.1返回的ICMP超时信息,看ICMP分组内容。

再ping其它的主机,实现不可达的返回消息。

实验6.3:数据包收发的整个流程分析

两台同一网络中PC机之间的数据包收发过程

两台不同局域网中PC机之间数据收发的过程

实验结果及分析

本实验主要分析ARP协议和ICMP协议,主要在PC1和PC2之间使用ping 命令,触发协议的工作,以便使用抓包软件进行抓包,并进行协议分析。

实验6.1:ARP协议分析

PC1ping PC2的ip地址

由上图可以看出,当清除arp表项后,ping与源主机在同一网络中的另一台主机(59.64.156.166),然后再次查看源主机的arp表,发现多了一条目的主机的arp表项。

分析:

当一台主机要发送数据包时,首先它会将数据包中的目的地址与自己的子网掩码相“与”,判断结果是不是与自己在同一个网络中。如果在同一个网络,则主机查询自己的arp表,看该目的ip有没有相应的arp表项,即与该ip 对等的mac地址。如果没有,则向该网络中广播一个arp request包,在

该arp request包封装源主机的ip地址以及对应的mac地址,同时携带目的主机的ip地址。当其他主机收到该arp request包后首先与自己的ip 地址比较,如果不相等则直接丢弃该包;如果相等,则目的主机接收arp request包后将源主机的ip地址和对应的mac地址加入自己的arp表项,然后将自己的mac地址封装到一个arp reply包中发回给源主机。源主机收到arp reply包后将目的主机的ip地址与mac地址对应表项加入自己的arp表中。

如果判断目的主机与自己不在同一个网络时,源主机首先查询自己的arp表,看看表中有没有默认网关的mac地址,如果没有则进行网关的arp 解析,过程与上一段描述基本相同。当然如果源主机所发数据包的下一跳mac 地址在arp表中能查到时,则直接根据mac地址找到下一跳的设备将数据包发给他。

wireshark观察arp分组

ARP

C.抓取PC2(59.64.156.166)的响应包:

从图中看以看到两个arp包的硬件类型均为以太网;协议类型为IP;硬件地址长度为6;协议长度为4;操作类型第一个是request,第二个是reply;第一个包的源主机mac和ip是主机PC1的地址,由于是request包,所以目的地址只有主机PC2的ip地址,而mac地址默认为0。第二个包reply 包,由于PC2会将自己的mac地址封入其中返回给PC1,所以我们看到reply 包的源ip与mac地址是PC2的地址,目的ip与mac地址是PC1的地址。

arp –a观察mac地址

原理:

动态arp缓存表项有有限的生存时间,在pc上ping某ip后,获得该ip的mac地址后,Arp –a观察动态arp缓存的生存时间;观察在2分钟内未使用该arp表项的话,该表项会被自动删除,如果在2分钟内使用了该表项,会从使用之时起,该表项的生存时间再延长2分钟。

无偿ARP和重复的IP地址检测实验

将主机A的ip地址改为主机B的ip,启动wireshark抓包软件后点击“确定”。

抓包结果如下所示:

对于PC1(WIN7下):

这里却没有无偿ARP包抓取的结果,原因是win7下系统直接报错,阻止了发送无偿ARP包的request,所以wireshark无法获取相应的包。

这里出现的问题:我本机改成对方ip后,导致了对方不能正常上网,是由于对方pc没有设置局域网arp防护。

但是另一台PC的ip设为我本机的ip时,我的360安全卫士直接提示arp攻击,并拦截。同时我本机可以正常上网。

对于PC2:(XP环境下)的无偿ARP包抓取情况为:

如果把PC2的ip地址也设为59.64.159.248,则在配置结束后,将发起一次无偿arp请求,使用wireshark截获该无偿arp内容如下图:

首先我们看到[isgratuitous:True]说明这是一个无偿arp的过程,另外我们可以发现send ip addr和target ip addr是一致的,这也说明这是一个无偿arp请求。

但是出现了没有无偿arp reply包的情况,原因正是PC1的360截获ARP攻击后阻止了与它的进一步通信,导致PC2的wireshark无法抓取无偿arp reply包。

6.2:ICMP协议分析

分析ping命令中的ICMP分组

由上面一组图片可以看出,类型域值为8的icmp包是回送消息,而类型域值为0的icmp包是回送响应消息;两种类型的包的代码字段都是0;随后是校验和字段,根据所学知识,校验和字段的产生完全是根据ip包头计算得出的,即它能够让目的端检验收到的该ip包头是否正确,有上图可以看出,两个icmp包的校验和均正确;再接下来是icmp包的ID域,不同的操作系统、路由器发出的ICMP报文ID是不一样的;从截获的icmp包我们看到其有两个sequence number,经上网查阅资料发现,第一个sequence number 是大端格式的表达,第二个sequence number是小端格式的表达,具体的功能就是为icmp包提供一个编号。

截获ping的TTL超时包

把TTL设置为3

类型:11

代码:0 = 传送超时

由于icmp request包在上一个问题中已经分析过了,所以这一部分只分析ICMP超时包。首先超时包的类型域值为11,即TTL超时信息;代码段依然为0;接下来是校验和;下面的字段展现了icmp超时包的最大不同,我们看到超时包的data字段是与它对应的icmp request包中的ip包,这是ICMP 超时包特有的结构,即在ICMP包数据部分封装之前TTL超时的ip包。外层的ip包的源地址为10.1.1.1,这是一个内网ip地址。

截获ping的主机不可达包

类型:3

代码:3 = 端口不可达;

实验6.3:数据包收发的整个流程分析

(1)两台同一网络中PC机之间的数据包收发过程

首先清空主机A的arp表,然后在ping主机B,在命令行窗口下我们看到了4个icmp request包对应的reply包。通过wireshark软件可以看到此次通信过程两主机数据包的收发状况。简单概括为首先主机A查自己的arp表,发现主机B的信息不在表中,所以随后进行arp解析;当A获得B的arp表项后,双方完成通信。详细分析过程在1(1)D中给出,这里不做赘述。(2)两台不同局域网中PC机之间数据收发的过程

A.无域名解析:

从上图可以看出,当直接ping一个ip地址时,首先主机A判断目的地址与自己不在同一个网络中,然后会解析默认网关的arp地址,再把数据包发给网关。目的地收到ping request包后向目的主机回复reply包。详细分析过程在1(1)D中给出,这里不做赘述。

B.有域名解析:

当ping的不是一个ip地址而是一个域名时,首先会启动DNS解析服务,主机A向DNS服务器发送DNS解析请求,DNS服务器成功解析域名后将结果(域名对应的ip地址)返回给主机A。之后的通信过程与上一部分一致。

(4)分析HTTP代理工作过程

此部分实验我们选用了一款名叫BridgeWAN的网络代理软件:

启动软件后进入命令行下输入ipconfig看到如下信息:

由上图看到,ip 信息中多了一项BridgeWAN 的代理信息,该代理的ip 地址、mac 地址、子网掩码、默认网关等项目信息均不同于原来的信息。打开浏览器访问百度(https://www.360docs.net/doc/468176123.html, ),同时利用wireshark 抓取通信过程中的数据包:

首先进行的是域名解析过程,该过程完毕后开始进行通信。选中其中一个TCP 包查看其详细信息:

其中119.75.217.109是百度的ip地址:

而202.205.15.205是一个国外的网站,这个网站就应该时BridgeWAN软件选定的代理服务器:

下面给出BridgeWAN代理工作的全过程:

首先主机A要和百度通信,得到百度的ip地址后,由于是通过代理访问百度,所以里层的ip包的目的地址是百度的地址。里层的数据包在到达代理

服务器后会被剥离出来,然后通过代理服务器传给百度,里层ip包的源ip 地址是该代理件为主机分配的一个内网地址,这个地址与主机真正的ip地址是绑定在一起的。这应该是该代理软件的一种通信机制,当百度想给主机A返回数据时,通过这个地址找到代理服务器,代理服务器根据这个ip找出对应主机ip,然后把数据包发给主机。形象的通信流程图如下所示:

实验中的问题及心得

实验中所遇到的问题:

在实验6.1中,PC1初次ping PC2操作时,显示无法ping通,但是检查过PC2的网络设置都是正确的,而PC1ping教室内的其它主机时,也可以ping 通。

后来,经过向老师请教,发现是PC2的防火墙没有关闭,导致PC2无法被ping 通。而将防火墙关闭后,PC1便可以正常ping通PC2了,并且可以正常的进行抓包。

在实验6.2中,想要验证不可达消息时,首先要先发送一个不可达的信息。但是最初却找不到这样一个主机。尝试了同在一个网络下,但是没有开机的主机,但是得到的都是超时信息。最后经过了反复的试验,最终找到了一个不可达的主机:23.264.25.1。

在实验6.3中,第一次对ping https://www.360docs.net/doc/468176123.html,进行抓包时,发现并没有arp协议广播网关地址的消息,而只有ICMP协议的交互过程。经过分析和向老师请教,发现是因为在进行ping远程主机之前,没有再一次清空arp表。第二次抓包时,首先将PC2的arp表清空,便可以看到如以上实验分析中出现的arp协议的消息。

实验心得:

通过本次实验,练习并掌握了ARP协议和ICMP协议的工作原理。

通过对ARP协议的分析,了解了在PC进行ping的操作时,源主机首先会发

送广播信息,以寻找拥有其寻找的IP地址的目的主机。而若网络中有这样的目的主机,其将向源主机发送自己的MAC地址。而源主机会将对应的IP 地址和MAC地址添加到自己ARP表中。若ARP表中已经拥有对应MAC地址的IP地址,则源主机不会再发送广播信息。而ARP表项也有固定的生命周期,到达一定时间后,就会将没有活动的表项删除。、

而对于ICMP协议,源主机将会对目标主机发送回送信息ICMP ECHO(Type 8),而若目的主机存活,则会立即发送给源主机一个回送响应信息ICMP ECHO Reply(ICMP type 0);若目的主机处于网络上较远的结点,而把TTL设置较小,则将会产生超时,并且发送回源主机超时消息;而若目的主机不可达,则源主机将会收到不可达的返回消息。

通过对比和分析处于相同网络和不同网络的中两个主机的数据收发流程。我发现,若两个主机在同一网络,则ARP协议会直接在网络内进行广播,寻找目的主机;而若两个主机不在同一网络,则ARP协议会广播寻找PC的默认网关,通过默认网关,再和其他网络中的主机进行数据收发。

总之,通过这次实验,不仅让我更加理解了ARP和ICMP协议原理,也练习了我的抓包操作,以及查阅资料进行自主学习的能力,使我受益匪浅。

实验思考

通过本次实验,我了解了ARP协议和ICMP协议原理,而且还对于ARP协议和ICMP协议的作用和功能进行了学习和思考,也查阅了一些资料。

在局域网中,网络中实际传输的是“帧”,帧里面是有目标主机的MAC地址的。在以太网中,一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC地址。但这个目标MAC地址是如何获得的呢?它就是通过地址解析协议获得的。所谓“地址解析”就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。

ICMP是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。

我们在网络中经常会使用到ICMP协议,只不过我们觉察不到而已。比如我们经常使用的用于检查网络通不通的Ping命令,这个“Ping”的过程实际上就是ICMP协议工作的过程。还有其他的网络命令如跟踪路由的Tracert 命令也是基于ICMP协议的。

1、wireshark抓包过滤与显示过滤

在做无偿arp实验的时候,我曾经企图利用wireshark的抓包过滤功能得到自己想要的包。所有我设置的一个过滤条件是“host 59.64.130.73”,但当我修改主机A的ip地址为主机B的ip地址时,系统给出如下错误提示:

但是在wireshark上没有抓取到任何无偿arp包。经与老师以及另一名同学交流后得知,在更改ip地址的时候,源主机发出的包所用的ip地址还并不是你设置的ip地址,因为此时系统并不知道该ip地址是否在局域网内独一无二,所以此时TCP/IP协议还有没初始化,故如果在抓包时就采用过滤包的方法,不满足条件的包就不会别截获到,最终导致实验失败。正常的做法是在显示过滤窗口下输入相应的过滤条件得到特定的数据包。

六、实验思考

首先通过这次实验,我对网络接口层的arp协议以及网络层的icmp协议有了较为深入的理解。由于网络接口层还没有ip的概念,所以该层的通信只能通过mac地址完成邻机的发现。为了完成ip地址到mac地址的转换,arp 协议应运而生。然而ipv6时代的临近,arp协议将会被icmp的邻机发现机制所取代,两者的区别可以概括成一下3个方面:(1)在IPv6中,只有关心这个机制的邻居节点才会在它们的协议栈中处理RS和RA的公告消息。而在IPv4中,ARP广播使本链路上所有节点把ARP消息发送给IPv4协议栈;(2)在IPv6中,节点在相同的请求中相互交换链路层地址。在IPv4中,需要两个ARP广播消息才能得到相同的结果;(3)验证邻居缓存中IPv6地址和链路层地址的可达性。IPv4的ARP中,表项过期后被删除。这些机制在保留原arp的功能外,在性能与效率上均有较为明显地提升。

实验的第二部分重要是分析网络层的icmp协议。该协议用于在IP主机与路由器之间传递网络是否通畅、主机是否可达、路由是否可用等控制消息。ICMP 的全称是 Internet Control Message Protocol 。从技术角度来说,ICMP 就是一个“错误侦测与回报机制”,其目的就是让我们能够检测网路的连线状况﹐也能确保连线的准确性﹐其功能主要有:侦测远端主机是否存在;建立及维护路由资料;重导资料传送路径;资料流量控制。同样,ipv6时代的到来,也为icmp协议增添了不少“色彩”。在ivp6中,icmp的名字改为icmpv6,其功能主要包括邻机发现,其中包括地址解析、路由器发现、重定向与邻机消失检查等;地址自动配置;组管理和差错报告等功能,较之ipv4中的icmp 协议补充了大量功能。

最后一部分实验内容是数据包收发过程分析与HTTP代理工作过程分析。重点说一下代理的工作过程,由于代理是通过一个代理服务器去访问你所想要访问的主机或服务器,所以整个通信过程好像被肢解了一样,你和你所要访问的主机或服务器只和代理服务器进行通信,代理相当于一个媒介将源和目的地连通。代理在给用户带来上网加速的畅快体验的同时,其安全性也是不容忽视的问题,由于目的主机或服务器并不是直接与源主机进行通信,所以某些欺诈事件一旦发生,你很难追踪到源主机,这大大降低了网络的安全性,所以完善代理服务机制是一个不容忽视的问题。

在查看本机ip(eg:59.64.156.166)的arp分组时设置arp.src.proto_ipv4==59.64.156.166

对方的ip改为我本机后被360拦截,我本机可以正常上网,并截获了ARP 攻击。我本机改成对方ip后,导致了对方不能正常上网。

相关文档
最新文档