当前位置:文档之家› 小朱老师-EIGRP抓包详解

小朱老师-EIGRP抓包详解

小朱老师-EIGRP抓包详解
小朱老师-EIGRP抓包详解

EIGRP基础

首先我们先来了解下CISCO开发EIGRP的背景。CISCO在开发EIGRP之前有个叫IGRP的协议,这个协议的开发主要是针对RIPv1的,也是个有类的协议。后来RIPv2出来后,CISCO就想,我要是还是个有类的肯定活不长,所以必须得改,但他并不是像RIP那样增加了那么些个特性就完事了,关键是这个时候OSPF已经诞生了,鉴于OSPF的强大与变态,若是小改那肯定也是干不过他的,所以CISCO干脆就大改,整个能跟OSPF相抗衡的东西出来,EIGRP vs OSPF,于是乎EIGRP就出来了,而不是IGRPv2什么的。当然,EIGRP也不是完全没用IGRP 的东西,像IGRP的composite mertic(符合度量值)这样的好特性EIGRP还是继承下来了,不然也不会叫增强型内部网关路由协议。

接下来,让我们来看看EIGRP到底有哪些子值得称道的特性。

一、Fast Convergence(快收敛)。相对于RIP的30/180和IGRP的90/270而言,EIGRP 的Hello和Dead时间是5s/15s(这里想不考虑多点链路小于T1的情况)。那这就很不得了了,收敛时间非常之快,也就更能满足现在网络对于路由性能的要求。

二、Loop Free(无环)。其实,对于这个特性并没有什么好值得炫耀的,因为对于路由协议来讲,你有环那你还是路由协议吗,谁敢用你,但这里说的无环是指他引入了一些比较好的机制来保障他的无环,而不是像RIP那样通过各种“补丁”技术来保障其无环。三、Simply Configure(配置简单)。这一点是针对OSPF来讲的,玩过OSPF的人都知道,当你要使用OSPF来达到某些特性时他的配置那是无比蛋疼,异常复杂,在那个时候你会觉得EIGRP的配置那真是一个简单,好使。

四、Unequal Loadbalance(非等价负载平衡)。这个特性是EIGRP所特有的,也被CISCO申请了专利,这个特性能让你的网络在保障冗余的同时,有较高的利用率。因为基于DV的协议,从理论上而言是有产生环路的可能,所以在选路时就要选出一条Best的路由,既然你有Best的路由,那么也就可能存在not best的路由,其他的DV协议对于非best的路由当然是不能用的,因为我也不知道这条路到底有没有从我走,要是你从我走那不就出环了吗,所以其他协议做不了。但是EIGRP通过一些机制来克服了这点,所以他能做到非等价的负载平衡。

五、PDM(多协议的模块支撑)。像OSPF这种协议,他对于上层协议支持就不那么给力了,大家都知道OSPF是只能支持IP(OSPFv2),当你是个IPV6的环境,你还得重新弄个在IPV6环境中用的版本。对于这点,EIGRP就不一样,他不管你上层是个什么我都能支持,所以就不存在在不同的协议要专门弄支持这个版本的EIGRP。说到这,要说下两个概念:一个是Routing Protocol;一个叫做Routed Protocol。Routing Protocol指的是路由协议,比如RIP、EIGRP这种了;而Routed Protocol指的是路由协议所支撑的一些个协议,比如IP、IPX 这种。也就是说EIGRP对于Routed Protocol的支持很给力。

六、增量更新。EIGRP发送部分更新而不是定期更新,且路由的路径或度量值发生变化时才发送。更新中只包含已变化的链路的信息,而不是整个路由表。此外,还自动限制这些增量更新的传播,只将其传递给需要的路由器,因此EIGRP消耗的带宽比IGRP少得多。这种行为也不同于链路状态路由协议,后者将更新发送给区域内的所有路由器。

说了EIGRP这么多的好处,那他是通过什么方式来做到的?接下来我们来说说EIGRP是怎么做到的?

大家都知道EIGRP他快。那是什么让他变得这么快呢。那是因为他不再像RIP那样周期了。那为什么就可以不周期了呢,那是他可靠,又是什么让他变得可靠,因为

有了ACK,有了ACK后能怎么样呢,有了ACK就可以维护membership,这是一环套一环的。Fast---->Reliability---->ACK---->Membership

在EIGRP中引入了邻居的概念,而这个邻居与RIP那个邻居又不太一样,他是通过Neighbor Relationship来保障可靠传输(RTP)的,而传输有了可靠保障那就可以通过DUAL算法来计算路由了,然后通过PDM模块来支持上层。

Neighbor Relationship---->RTP---->DUAL---->PDM支持上层

说到邻居关系,那就就得知道谁是邻居,于是就存着个邻居发现(discovery)的问题,EIGRP 作为新一代想和OSPF抗衡的协议要是去广播的话,那也太那个啥了,于是EIGRP就使用224.0.0.10这个组播来发送分组,所有的人都往这个组里加,我就好找谁能成为我的邻居了。(顺便提一下组播地址224.0.0.0到224.0.0.255这一段是保留的,要用的话是要申请的,而EIGRP就是申请到224.0.0.10这么个地址)我要快收敛.那么邻居发现太久那显然也不合适,当然是越快越好(ASAP,as soon as posible国外挺喜欢这么简读的),所以就5s往外丢一个Hello咯。当然,存在邻居也就存在个邻居维护(maintain)的问题,比如你交了个朋友,你要是多年跟他没联系,那么你以后找他帮忙什么的,自己都会觉得不会妥吧,EIGRP也一样,也存在个邻居维护的问题。于是,Dead时间设为3倍的hello,这个计时器是倒计时的,从15s往回数,过了Dead时间没响应我就认为邻居关系没了。

EIGRP要保障可靠性,那为什么不用TCP呢?这是因为TCP出了有可靠性之外,他还是面向连接的(P2P的),我现在就是要去发现邻居,那我TCP面向连接的3次握手我跟谁握去。TCP我指望不上,那UDP呢?UDP你都保障不了我的可靠性,反正现在都是无连接了,我何必要放在UDP里去增加那8个字节的UDP头部呢,干脆就放IP里算了,刚好IP头部也有个字段叫做协议版本号,EIGRP的协议版本号是88。虽然说IP头部有协议号字段,但毕竟有限,不是谁都能往里加的,不过UDP就不一样,他的端口号那可是很多的,所以大家也要注意下这一点。关于什么协议使用TCP什么使用UDP,这个究竟有没有规律,那么,个人觉得吧,只要是多点应用或者是存在多点的可能.那么,一定是使用UDP的,而点到点面向连接又需要保障可靠的情况一般使用TCP.至于TCP的多点情况这个并不是真正的多点,他是将东西复制之后分别跟每个用户采用点到点的方式连接,还是P2P的。UDP的多点应用是降低了发送者的负担,发送者将信息发送给中间系统,由中间系统来给这个组中有需要的用户进行发送。至于DNS既可以使用TCP又可以使用UDP,那是因为DNS服务器在做查询时使用的是UDP(你都要查了,那肯定是UDP了),而DNS会将一些常用条目放在自己的高速缓存之中,如果用户请求的是这些内容,DNS复制完,使用TCP传回就行了。

EIGRP之所以对上层支持的那么好,是因为他采用了TL V的结构。其实,大家可以发现,但凡是设计的比较好的协议,都是采用TLV的结构,这样当你想支持个什么新的东西,你只需要定义成一种新的Type,然后通过Length来标识有多长,接受者收到后认识这种Type他就读他的value,不认识就通过Length跳过这么长就够了,多给力。

当EIGRP的类型为1描述(parameter)的是Hello分组,其实这个5s/15s也有点类似于keepalive 这种东西,其实在实际的生产中是可以改的,也就是Fast Hello这种东西,你可以将它的Hello 改为300ms左右,然后Dead改个1s,那更快。Hello并不是在邻居关系建立以后就不发送了,他还是要发送的,因为他要维护他的邻居关系。另外,5s/15s是一般链路的默认情况,在多点访问链路的情况下,如果你的速度小于等于T1这个时间是60/180。这个可以通过show ip protocol来查看的。

EIGRP在建立邻居关系要看哪些个东西呢?系总不能瞎起,也就是他要看哪些字段。首先,就是AS号,这个AS并不是我们所说的自治系统,而是类似于进程这种东西,我想EIGRP把这个叫AS,是不是在设计之初,野心较大,不仅想把IGP这块给弄了,还想去整点EGP的东西,只不过后来没弄成。这个AS不具有本地意义,也就是说,他必须

要所有人的AS一样才能起邻居关系。(到IE的MPLS VPN时大家就知道了,这个AS也算是AS). 再个就是KEY值,默认是看key1(bandwidth带宽)和key3(delay延迟)若是有其他当然也要看,EIGRP对于符合度量值的计算考虑的有带宽(bandwidth)、延迟(delay)、可信度(reliablity)、负载(load)、MTU。至于有时你通过抓包软件可以看到有个Key6,这是因为EIGRP也可以考虑跳数,当然这与IOS的版本有很大关系,另外,其实这个也是可以理解的,当时设计的情况是考虑这几点,这么多年了他可能觉得加入一些新的考虑因素会更加合理也不是不可以,这个东西没必要纠结,知道就知道,不知道也没多大关系,不过以后我们还是说他有5个key值。最后就是,如果有验证,验证还要一样。值得注意的一点是,EIGRP并不看你的Dead时间15s是否匹配。而且,EIGRP的Hello间隔被修改后,保持时间并不会相应的被调整,因此,修改Hello间隔后,必须手工调整保持时间。

关于EIGRP的邻居建立过程,这块暂时不写.因为这玩意CISCO他自己也不说,然后通过各种情况的抓包发现与我们最先设想的情况又不太一样,个人都搞不定的岂敢乱说,最后,参考书上说的也不对,所以,我们只能大概对他的工作流程进行下描述(这块大家参考下就行,仅仅是帮助理解,至于具体的情况还是大家自己抓包去分析,我仅仅是根据个人的分析和自己的揣度给出参考)。现在有两台路由器R1和R2,假如R1先起了EIGRP,他会往224.0.0.10上发Hello,如果这时R2还没起EIGRP,R1是得不到回应的,所以他会周期往外发Hello,抓包你会看见前面有几个Hello包,若这时R2起了EIGRP,他会对R1做出回应,他也回Hello同时带上Update(这是个人其中一次抓包显示的现象,而且Wireshark上显示这两个包的时间是一模一样的),这个Update是单播并且里面没有携带key等信息,也就是说是个空的,大概大家刚认识相互了解下对方的情况这个意思,然后Wireshark上显示R1又给R2发了个Hello同时也发了个Update,这个Update也是单播空的,礼尚往来嘛,不过,对于这个Hello可能有点难于理解,搞不清楚到底是周期呢还是跟这个Update有关联,因为他们俩的时间是一致的,所以不太好分析。然后看见R2又发Hello,之后就有单播携带信息的Update了,这个Hello我估计应该是周期,而这个Update携带了信息,当然就是用来交互协商了,再就是R1也会单播Update携带东西出去,在他们俩的交互过程中会有序列号和ack的变化,不过双方序列号都是从0开始的,大概跟OSPF那个协商主从关系时大家都说自己是Master的情况有点类似,ack是用来做隐性确认的,至于是像TCP那样确认对方的序列号还是什么你也不知道,因为人家TCP好歹是三次,双方都确认,而他只有两次,后来ack又为0了,也就是双方协商好了,然后大家都往外发组播更新。我这是以个人的抓包为基础给出的分析,至于具体是怎么回事,大家自己去研究研究,因为后来个人又抓了一次情况又不太一样。说到隐性确认,这里想跟大家说一下。其实EIGRP除了这里的隐性确认之外他也有显式确认,就是有种单独的类型的报文叫ACK,是用来确认更新、查询和应答。显式确认就好比你跟你对象说:“诶,今晚我请你吃饭,好吗?”ta回答:“好。”或者是:“不好。”这就显式的接受或者拒绝你的请求。而隐性确认就好比ta说:“去哪吃?”或者“我晚上有事。”这种含蓄的表达。虽然ta没直接回答你,但你还是能知道ta今晚到底跟不跟你一起吃饭。TCP就是采用这种隐性确认的方法,双方分别给出一个sequence number(给了就不改了),比如A给的是100,B收到A的序列号后回个ACK101就是在A的序列号100的基础上加隐性的表示我收到了,同时给出自己的序列号200,而A在收到后给B回复个201这样双方都隐性的确认了对方,连接就建立起来了。对于,邻居关系建立,也可以举个例子说明。比如,你亲戚给你介绍一对象,然后帮你们约好了地点去见一面,到了地方,你跟别人见面总得打个招呼吧,只不过呢,你不是看见ta后再打招呼,而是你先到了,然后你就跟个神经病似的隔5s就来个Hello,人家路过的人不认识你的或者听不懂你说什么的肯定不会理你,就像别人没起EIGRP进程或者跟你不是同一个进程,完了之后,你对象来了,ta听见你在给ta打招呼,ta肯定会给你礼貌的回一句Hello,ta跟你是一个进程也听得懂你说什么,

ta说完Hello肯定要说我是那个谁谁谁介绍的,就像那单播的Update一样,只不过ta这时还没跟你说ta的具体跟你俩谈对象有关的信息,所以这Update是空的,然后你说,哦,我也是那个谁谁谁介绍的那个人,你也跟ta来个单播空Update,不过这期间你俩都跟神经病似的,5s跟对方来句Hello,因为你俩还不熟嘛,都有点小害羞,但你俩总不能一直傻不拉几的在哪Hello吧,总得说点自己的具体情况让对方知道的情况才能决定跟不跟你搞对象嘛,于是你们俩就分别说说自己的情况,你说你的情况,ta说哦,原来是这样,相当于对你发出的东西给了确认,你也对ta的情况进行了确认,等你俩搞清楚对方的情况之后,你们都想,嗯,这人不错,适合跟我搞对象,于是你们之间的情侣关系就建立起来了,然后你们都告诉自己的亲朋好友,你跟那个谁谁谁搞上对象了,也就是组播往外发Update,但情侣关系建立起来后还得维护啊,于是乎,你就周期性的跟ta发短信,如果ta过了Dead时间不给你回,你就想,ta肯定跟别人跑了,于是你俩的情侣关系就down掉了,你再往外发更新告诉别人你俩分手了,如果ta总是在Dead时间之内能给你回,那你俩的关系就能维持下去,当遇到一些问题你会向ta发查询,然后ta也会给你应答,当你碰到什么开心事你也会发更新给ta让ta也知道。大概也就这么个情况吧。

我们都知道,如果没有多路访问,我们的网络将变得非常简单(但是我们很多人也会因此而失业)。正是有了多路访问,我们的网络才变得非常复杂。由于有了多路访问,当我发送一个更新出去,就会有人收的快有人收的慢,假如我同时给1和2发送更新,1收的快些,而2收的慢些,1收到后很快就给了我回复,那么我还得等2给我回复,他不回的话我就不知道他收没收到。假如2出了问题他不给我回复,我总不能一直等下去吧,因此,我们由邻居表对应出一张重传表。通过show ip eigrp neighbors 你会看见几个计时器。EIGRP在建立邻居时回根据往返时间得出一个平均往返时间(SRTT),SRTT*6=RTO,然后6倍SRTT得出一个重传超时时间(RTO),当接受者过了RTO我就给他重传,如果我给他重传16次他还不给我响应我就会删除我和他的邻居关系。这个RTO是有个最大值的是5000ms。关于Q是队列计数(queue count),就是在队列中等待发送的EIGRP分组(更新、查询、应答)数。如果该值经常大于0,则可能存在拥塞问题。0表示队列中没有EIGRP分组。实验中也看见debug过后,显示一直在retry,但该值很久才改成1,又过了很久才改为2。通过show ip eigrp interface你会看见有个Multicast Flow Timer,叫做多播流计时器,他是根据RTO 得到的,就是我多播出去,有一个超时我就单播再单独给他发一个。另外,现在我们都有NSF(non-stopped forwarding不间断转发),当我出问题后我会主动跟别人GoodBye,让别人把邻居关系给断掉,所以,像重传一直超时这种玩意也不会太多。抓包分析R1和R2之间的邻居关系建立。使用192.168.12.0/24,R2和R3使用192.168.23.0/24,具体地址对于自己的设备编号。然后我在R1先起eigrp,R2上接着也起eigrp,R3最后起的。配置如下:

R1:

interface Serial0/0

ip address 192.168.12.1 255.255.255.0

no keepalive

clock rate 2000000

router eigrp 100

network 192.168.12.0

no auto-summary

no cdp run

R2:

interface FastEthernet0/0

ip address 192.168.23.2 255.255.255.0 duplex auto

speed auto

no keepalive

interface Serial0/0

ip address 192.168.12.2 255.255.255.0 no keepalive

clock rate 2000000

router eigrp 100

network 192.168.12.0

network 192.168.23.0

no auto-summary

no cdp run

R3:

interface FastEthernet0/0

ip address 192.168.23.3 255.255.255.0 duplex auto

speed auto

no keepalive

router eigrp 100

network 192.168.23.0

no auto-summary

no cdp run

R1与R2之间这段链路的抓包如下:

通过上图大家可以看到前11个包都是R1通过s0/0号口往外组播224.0.0.10发送Hello,这是因为我先起的R1的EIGRP进程,这个时候,这段链路只有R1一个人起了,所以看见R1一个人往外发Hello。

第45.926000s,也就是第12个包是R2向组播发送的Hello,这说明这时R2的EIGRP进程也起来了,也开始往外发送Hello。

第45.956000s,也就是第13个包是R3向组播发送的Hello,而上一次R1向组播发送Hello 也就是第11个包的时间是45.786000s,第11和第13个包之间的时间间隔跟EIGRP的Hello 周期间隔5s比起来实在小很多,所以,完全可以排除第13个包是刚好到了Hello周期的情况。而且,大家可以看到第12个包(也就是R2向组播发送的第一个Hello)与第15个包(也就是R2向组播发送的第二个Hello)之间的时间间隔跟R1的这两个包(11和13)一样时间间隔也相当短,而且从第28个包往后看Hello间隔也是大概5s都是正常的,所以更加证明第13个包和第15个包不是由于Hello周期到了而发送的。至于这两个突发的Hello具体是什么意义,这个就只有思科自己知道了,大家可以根据自己的理解去看他,打开第11个包(正常Hello周期的包)和第13个包(突发的Hello包)大家可以看到,他们里面的内容一

模一样:

这里我是这样理解的,前面11个周期性的Hello就好比是R1在周期性地喊:“谁想跟我处对象?”这时由于链路上没人,所以没人理他。第12个包时,R2也起EIGRP了,这时R2并没有听到R1在喊话,而且他自己也开始周期性地喊:“谁想跟我处对象?”这时R1听到了R2的喊话,于是赶紧跟R2打招呼,也就是第13个包,我觉得这个才有点像打招呼的意味。

第14个包是R1向R2发送的单播的Update,其内容如下:

通过上图可以看到他的Flags里的Init位被设置了为True,也就是1,大家可以再看看上面的Hello分组里这一位未被设置,是False,也就是0,书上说这一位被设置以指出这是初始化,这说的非常不明确,我们都知道Initial的意思是初始化,这一位被设置当然是做初始化了,这不是废话吗,但是这也怪不了写书的人,还是得怪思科太小心眼了,我们只能猜。我

们打开第17个和第19个包看看,也就是R1发给R2的第二个Update和第三个Update。

通过这三个包的对比,大家可以发现,首先就是三个包的Checksum不一样,这个好理解,因为包里的内容不一样嘛,所以得出的校验和也不一样;第二就是除了第14个包的Init位为1外,其他两个都是0,这说明了第四个包确实只是用来做初始化用的,里面应该不包含路由信息。第三点就是大家可以发现第14个包的sequence是1,第17个包的sequence是2,第十七个包的sequence是3,而R1在发送初始化这个包(第14个包)之前的Hello里sequence全是0,而且第19个包(最后一个Update)之后的R1的包的sequence也全是0(这里指在这段链路稳定,R1没有收到其他更新查询报文的情况下,碰到这种情况相当于前面的过程又要重复了),包括R1回给R2的显式ACK报文。从这点可以说明,R1在向R2发送Update时会用sequence作为自己的计数器,记录自己给他发了那些Update,sequence 为1表示初始化,该Update里并不携带路由信息(我自己的猜测,萌爷也是这么认为的,其实待会我可以证明我的猜测,至少我自己是这么认为的);第四点是大家可以发现第14、17、19三个包的Acknowledge的值也不一样。至于sequence和Acknowledge的值为什么不一样这不能仅从R1一方面看,要结合R1和R2双方面来看。我们从R1发送第一个Update

开始看起

只看他们的sequence和Acknowledge是不是感觉想起点什?这跟TCP的三次握手实在太像了!R1先给R2发送Update(第14个包),所以他开始计数,自己给个sequence,只不过这个sequence是从1开始的,而TCP是个随机值,由于这是第一个Update,所以不需要对谁进行确实,所以Acknowledge为0,而当R2收到R1的Update后,R2也开始发送Update (第16个包),这个Update里sequence也为1,用于表示自己的第一个Update,而

Acknowledge为1,这个1是用来告诉R1我收到了你的第一个Update了,他是跟R1的sequence相同的,这样第一次握手完成;R1再发Update,sequence为2,Acknowledge为1,sequence表示自己发的第二个Update,Acknowledge用于确认R2的sequence,同理,R2回sequence2,Acknowledge2,第二次握手完成;R1再发sequence3,Acknowledge2,R2再回sequence3,Acknowledge3,至此,三次握手完成,两边协商完成,表明两边可以开始发数据了。至于为什么我没给第15个包,道理很简单,还是回到上面那个例子,当R1听到R2在喊:“谁想跟我处对象?”(12)的时候主动更R2打招呼(13,突发性Hello),该Hello 好像是在问R2:“是你在喊‘谁想跟我处对象’吗?”,然后R1怕R2认为自己有什么不良企图,不等R2说话赶紧跟R2说:“我愿意跟你处对象,不过我们得商量下以后谁当家的问题,我认为应该男的当家(sequence为1,由于R2还没说话所以不用对R2的话进行回复Acknowledge为0)”(14)。R2看见有人说愿意跟她处对象赶紧回复说:“你好,是我在喊”(15,突发Hello),然后R2想不行,她得当家,于是她对R1说:“你认为男的应该当家?(Acknowledge为1)但我认为女的应该当家(sequence为1)。”R1想这不行,要是让她当家那我多没面子啊,于是对R2说:“你说女的应该当家(Acknowledge为1),但是你没我赚的钱多啊(sequence为2)。”R2想这也是的,但让他当家我得管钱,于是对R1说:“我是没你赚的钱多(Acknowledge为2),但若你愿意让我管钱我就让你当家(sequence为2)。”R1心想,这个让她管钱也可以嘛,免得我大手大脚的乱花,于是对R2说:“好吧,让你管钱(Acknowledge为2),那就这么说定了我当家了(sequence=3)。”R2这下也满意,于是对R1说:“好,以后就你当家(Acknowledge为3),那也说好了我管钱了。”于是乎,两人就谈妥了,就去派出所领证了(显式ACK),就开始把自己的好东西拿出来俩人共享(就相当于包含路由的Update了)。那么为什么在给出的抓包中没有显示包含有路由信息的Update 呢,这是因为R1上我只配了个跟R2相连的s0/0的地址,没有配置其他网段,所以没看到,不过大家可以看到,当R2获得R3的路由信息后就给R1发送了携带路由信息的Update了,也就是第26个包:

第27个包就是R1对于这个Update的显式确认。

关于DUAL算法

前面讲了EIGRP的邻居形成和可靠传输。路由器动态地发现邻居后,将向他发送一个更新(Update),其中包含有关自己知道的路由信息,同时也将从邻居那里收到这样的Update。收到这些Update之后,路由器将把他们放在自己的拓扑表里。拓扑表里包含邻接路由器通告的所有目标网络,也就是说,每台路由器都将其邻居的路由表存储在自己的拓扑表里。如果邻居通告给我一条路由,则说明他正在使用该路由来转发分组,这条规则是所有距离矢量路由协议都必须严格遵守的规则,大家要记住这点!这里要补充说明的一点是EIGRP为其支持每种网络协议(IP、IPx、IPv6、Apple Talk)维护一个邻居表,同样也分别维护一个拓扑表。有了拓扑表之后路由器会进行DUAL的计算,从而得到好的路由条目存放进路由表里去。

也就是Neighbor Relationship(Neighbor Table)---->RTP(Topology Table)---->DUAL (Route Table)这么个顺序。

那么这个DUAL是个什么情况呢,他具体是怎么根据拓扑表得出路由表呢,这里要介绍下下面几个概念。

首先是FD和AD。FD是可行距离,也就是我自己到目标网络去的距离,当然这个也不是真正的距离,而是metric。AD是通告距离,也就是通告给我到目标网络去的邻居

他到目标网络去的metric。假如如下:

用R3模拟一个与R2相连的网络,R2到网络R3的开销就叫AD,R1到网络R3的开销叫FD。这里要特别注意一点,很多书上都说FD是当前路由器到下一跳路由器的开销加上下一跳路由器到目的网络的开销,这种说法其实并不科学,这里并不是个单纯的加法,这要从路由器对于metric的计算上说起。

EIGRP在通告时并不是将一个具体的metric值通告出去,而是将跟链路相关的一些具体参数通告出去的,让收到的路由器自己去比较计算,而这些参数就是跟那几个key 值相关的东西,比如,带宽、延迟、负载、可信度、MTU。默认情况下metric的计算只考虑带宽跟延迟。还是上面那幅图,在默认情况下,R1到网络R3去的metric考虑的带宽是这段链路上最小带宽,而延迟是链路的延迟之和。比如R1跟R2这段的带宽是1M延迟是100微秒,而R2跟R3这段的带宽是2M延迟是50微秒,那么R1在计算到R3去的metric时就取R1跟R2这段的小带宽1M,延迟是两部分之后100+50=150微秒。这里又有一点需要强调的是这个带宽是指自己到目标网络去整段链路上的出向接口的带宽,比如说上图中R1考虑的它的s0/0的带宽和R2的f0/0的带宽,而与R2的s0/0的带宽一点关系都没有,这也很好理解嘛,metric翻译成中文叫做度量标准,我们把它称作开销,也就是所谓的代价,你到目标网络去要花多大的代价,我们当然希望代价越小越好,所以选路时总是选metric小的。既然是代价,我们一般当然是考虑自己的代价,就是我把数据发过去我要花多大的代价,至于别人收数据需不需要花费和花费多大代价那是他要考虑的。就比如你找别人办事,你要跟别人送礼,你买这礼物花多少钱这就是你的代价,你要考虑你花多少钱才合适,你当然是希望他能在帮你把事给办了的基础上花最少的钱,至于他收你礼物要花多大代价那是他要考虑的事情(他得考虑收你这么一礼物给你办这事值不值,他有没有风险什么的),所以这点也要搞清楚。默认情况下EIGRP的metric=(10000000*K1/BW+Delay*K3/10)*256,前面我们也说了metric是代价,既然是代价,那么当然是链路带宽越大代价越小,延迟越小代价也越小,所以带宽跟metric成反比关系,而延迟跟metric成正比关系。至于为什么带宽要用10的7次方去除而延迟要除以10,这是因为EIGRP要综合考虑各种因素对metric的影响,你总不能说带宽由1K变成1000K,metric只由0.1变成0.001,而延迟由10微秒变成8微秒metric 就由10变成8了,这样考虑也太不科学了,显然一个网络从1k变成了1M他的性能提升了很多,传输速率也快了很多,而你就算由延迟10微秒变成了8微秒,你对于数据传送也没起到多大的影响,所以,为了综合和平衡各种因素对metric计算的影响带宽是用10的7次方去除的,而延迟是除以10的,注意公式中带宽的单位是K而延迟的单位是微秒。K1和K3就是对应的带宽和延迟的一个比例系数,大家应该都还记得update报文中K1和K3的值都是1,其实这个也是可以调的,就是说,当你自己觉得将带宽和延迟的比例调成一个什么程度是比较合理的时候你来调的,这里只是思科在项目实验中通过对比觉得一个比较合理的值,一般情况你不要去动他,因为这个值已经是比较OK的啦。那么后面乘以256又是怎么回事呢?这是因为前面括号里面的公式是IGRP关于metric的计算,而IGRP的报文格式中metric字段是24的bit,在EIGRP中,这部分被改成了32位,增加了8位也就是2的8次方,刚好256,所以这里要乘以256,关键是用于兼容IGRP。关于EIGRP在非默认情况下metric的计算大家就自己去找资料看吧。

说了这么一大堆关于K值计算的问题,我们回到前面一个问题,就是上面为什么我说对于FD的计算不是单纯的加法。还是上面那幅图,R2在计算自己到网络R3去的metric 时他考虑的是自己到网络R3这段链路的带宽和延迟,而R1在计算到网络R3去的的metric 时他同样考虑的是R1自己到网络R3这段链路的带宽和延迟,而R2到网络R3去的带宽是2M,延迟50微秒,R1到网络R3去的带宽是自己到R2的1M与R2到网络R3的2M中较小的带宽和延迟之和,如果只是按照书上的说法是加法的话,那你这个地方对于关于带宽对metric的计算就成了10的7次方先除以1M再加上10的7次方除以2M之和后乘以256,这显然与我们所说的只算小带宽相矛盾,但是,由于关于延迟的计算是加法关系的,所以我说关于metric的计算不是单纯的加法关系。有些人可能就会想既然R1和R2在带宽的取舍上不同,那会不会出现R1的FD大于他的AD的情况呢?其实你还是看下他们的取舍就知道,肯定不会出现这种情况,因为,R1考虑的是他到网络R3去的这段链路上的最小带宽,那么当然他计算得出的metric值只会比R2大而不会比R2小。也正是由于R1对于带宽的取舍可能会与R2不一样,所以R2在给R1的Update中包含的key值让R1自己去算而不是让R1直接拿R2的metric去相加。这一块应该来说我说的还是很细了,大家可以自己去验证下是不是这么个情况。

对于上次关于EIGRP建邻居那一段,今天我自己抓包分析了一下,这只是我最终根据教材和真实抓包现象得出的结果,也就是我自己的目前为止的最终看法,不能作为权威解释,大家认可的可以借鉴一下,不认可的还是自己再去摸索。我还是使用的上面那个图:R1和R2之间使用192.168.12.0/24,R2和R3使用192.168.23.0/24,具体地址对于自己的设备编号。然后我在R1先起eigrp,R2上接着也起eigrp,R3最后起的。配置如下:

R1:

interface Serial0/0

ip address 192.168.12.1 255.255.255.0

no keepalive

clock rate 2000000

router eigrp 100

network 192.168.12.0

no auto-summary

no cdp run

R2:

interface FastEthernet0/0

ip address 192.168.23.2 255.255.255.0

duplex auto

speed auto

no keepalive

interface Serial0/0

ip address 192.168.12.2 255.255.255.0

no keepalive

clock rate 2000000

router eigrp 100

network 192.168.12.0

network 192.168.23.0

no auto-summary

no cdp run

R3:

interface FastEthernet0/0

ip address 192.168.23.3 255.255.255.0

duplex auto

speed auto

no keepalive

router eigrp 100

network 192.168.23.0

no auto-summary

no cdp run

看看路由器怎么计算metric的。

R1#show int s0/0

Serial0/0 is up, line protocol is up

Hardware is GT96K Serial

Internet address is 192.168.12.1/24

MTU 1500 bytes, BW 1544 Kbit/sec, DLY 20000 usec,

reliability 255/255, txload 1/255, rxload 1/255

Encapsulation HDLC, loopback not set

Keepalive not set

CRC checking enabled

R2#show int f0/0

FastEthernet0/0 is up, line protocol is up

Hardware is Gt96k FE, address is c001.00d0.0000 (bia c001.00d0.0000)

Internet address is 192.168.23.2/24

MTU 1500 bytes, BW 10000 Kbit/sec, DLY 1000 usec,

reliability 255/255, txload 1/255, rxload 1/255

Encapsulation ARPA, loopback not set

Keepalive not set

通过show可以看出R1的s0/0的带宽是1544k,延迟是20000微秒,R2的带宽是10000k,延迟是1000微秒,根据带宽选小的,延迟算和,可以得出BW=1544k,Delay=20000+1000=21000微秒,10000000/1544=6476(小数点之后舍去了),6476+2100(除以10之后了)=8576,8576*256=2195456

然后去R1上:

R1#show ip route 192.168.23.0

Routing entry for 192.168.23.0/24

Known via "eigrp 100", distance 90, metric 2195456, type internal

Redistributing via eigrp 100

这也验证了公式的正确性。通过上面的关于metric的计算,路由器能够得到去往目的网段最好的路由,从而将其添加到路由表中去,如果有多条等值路径,会将他们都加入到路由表中,用来做等价负载均衡。但如果这样的话,那么我们说他比RIP也没好到哪里去,因为当链路坏掉你也一样要查,而且同样也是等价负载平衡。这里关键一点就是EIGRP通过AD和FD的概念引出一个后继(successor)与可行后继(feasible successor)的概念。后继(successor)与可行后继(feasible successor)。既然你叫后继与可行后继,那么当然你要知道它们是谁的继承者,这个后继与可行后继是相对于目标网络而言的,目标网络就好比是一皇帝,后继与可行后继都是他的皇子,后继是那些最适合做他接班人的那些皇子,而可行后继就是假设那些最适合做他接班人的皇子都挂了,也是有资格做他接班人的皇子。这里有一点需要强调的是,思科的设备在默认情况下,一般最多为4条路径做等价负载平衡,但也可以通过修改使其最多在16条前往同一目的地的路由间做负载平衡。(这个跟IOS的版本有关,有点可以支持更多,不过这个到无所谓,大家只需要记得思科的设备默认负载平衡是开着的就行,国内一些厂商都是关着的。)既然是4条,那么假如现在一台路由器收到了超过4条等值路径,他会将哪几条假如到路由表中去呢?答案是不知道,这个无从查起,不过我个人认为应该会将先收到的加入到路由表中。另外一点就是,路由器在得出最优的路径将其作为后继之后,并不是在其他的路径中选出一条次优的作为可行后继,而是将所有满足可行后继条件的路径都作为可行后继放在路由表中。那么满足什么样的条件才能成为可行后继呢?这是个问题,因为后继你好想,你总是选择开销最小的,既然是最小的,这个就没可能是路由环路的一部分;但次优路径就不好讲了,你怎么能保证这条次优路径没走你呢,假如你是最优的路径,而次优路径是通过走你得来的,那么你挂了之后,他告诉你他有路那不就环了。如下图:

假设R1到目标网络A去走R2的metric是100,R2到目标网络A去的metric是70;R1到目标网络A去走R3metric是15,R2到目标网络A去的metric是120。那么R1走R3到目标网络A去就满足不了FS的条件,因为R3本身到目标网络A去metric120要大于R1通过R2到目标网络A去的metric,如果R3把这个120告诉给了R1,R1就会怀疑R3是不是可能通过走R1到目标网络去的,所以就不会把通过R3到目标网络A去的这条路作为FS而加入到

拓扑表中去。假如我们把上面的100称为FD1,70称为AD1,150称为FD2,120称为AD2,那么成为FS的条件就是要满足AD2

有了successor之后为什么还要选个FS呢?这是为了当successor 都垮掉的时候,可以做链路的快速切换,successor垮掉之后,路由器会首先查自己有没有FS,如果有就直接拿来用,这样可以做到本地收敛,而避免查询的扩散,这也是EIGRP快的一个原因。拓扑表中的路由处于两种状态之一:主动(active)和被动(passive)。路由器没有重新计算时,路由处于passive状态,被重新计算(即寻找新的后继站)时,路由处于active 状态。也就是说,拓扑表中用来作为S的路由会被置为passive,当S不可用时,如果有FS,就会将FS切换成S,但该路由器到目标网络这条路相当于还存在,所以这条路由还是passive 的,只不过现在的开销会大点,但这并不影响他的路由功能,如果拓扑表中一直存在FS,那么路由器将不可能进入active,也就不会重新计算。但是当successor挂掉,也没有FS,那么路由器会将该路由置为active,并向外发送查询,这一查,如果别人也是走你到目标网络去的,并且他有到该网络的FS,那么他并不会将它的路由置为active,而是将FS直接切换成S,并且他会告诉你他有路,至于你用不用,那就是你自己去比较决定了,如果他也没有FS的话,他也会将它的该路由置为active,然后向外发查询,后面跟着一样。这里还得注意的一点是大家不要将路由的passive状态跟接口的passive搞混了,接口的passive我在后面会讲到的。

Eigrp的Query机制

现在R3、R4、R5三台路由器的拓扑情况如下:

R3:

R4:

R5:

现在假设R2和R4之间的链路出现了故障。

在R4上,由于他没有FS,所以R4将发生下列动作:他将via R2 2 1 S 标记为不可用.

Ethereal -抓包、报文分析工具

Ethereal -抓包、报文分析工具 Ethereal 是一种开放源代码的报文分析工具,适用于当前所有较为流行的计算机系统,包括 Unix、Linux 和 Windows 。 主界面如上图,点“抓包配置”按钮,出现抓包配置界面如下图。 在“Interface”中选择网卡,即用来抓包的接口,如果选择错误就不能抓到报文;“Capture packets in promiscuous mode(混杂模式抓包)”是指捕捉所有的报文,如不选中就只捕捉本机的收发报文;如果选中“Limit each packet to xx bytes(限制每个包的大小)”则只捕捉小于该限制的包;抓包时,数据量比较大,解析起来速度慢,可在“Capture Filter(抓包过滤

设置“Display Options(显示设置)”中建议选中“Update list of packets in realtime(实时更新抓包列表)”、“Automatic scrolling in live capture(自动滚屏)”和“Hide capture info dialog(隐藏抓包信息对话框)”三项。抓包配置好就可以点击“Start”开始抓包了。 抓包结束,按“停止”按钮即可停止。为了快速查看需要的报文,在“Filter”栏中输入过滤条件后按回车键即可对抓到的包进行过滤。 注意“Filter”栏中输入的过滤条件正确则其底色为绿色,错误则其底色为红色。常用

有些报文还可以判断网络的状况,例如输入显示过滤条件tcp.analysis.flags,可以显示丢失、重发等异常情况相关的TCP报文,此类报文的出现频率可以作为评估网络状况的一个标尺。偶尔出现属于正常现象,完全不出现说明网络状态上佳。 tcp.flags.reset==1。SYN是TCP建立的第一步,FIN是TCP连接正常关断的标志,RST是TCP连接强制关断的标志。 统计心跳报文有无丢失。在statistics->conversations里选择UDP,可以看到所有装置的UDP报文统计。一般情况下,相同型号装置的UDP报文的数量应该相等,最多相差1到2个,如果个别装置数量异常,则可能是有心跳报文丢失,可以以该装置的地址为过滤条件进行进一步查找。 抓取的报文可以点击“保存”按钮进行保存,以后就可以点击“打开”按钮查看已保存的报文包。保存报文时首先选择保存目录,再在“Packet Range”里“Captured(保存捕捉到的所有报文)”、“Displayed(保存屏幕显示的报文)”和“All packets(保存所有的数据包)”、“Selected packets only(保存选中的数据包)”、“Marked packets only(保存标记过的数据包)”配合选用,最后填上保存文件名点“OK”即可。

IGMP及抓包分析

IGMP IGMP 是Internet Group Management Protocol(互联网组管理协议)的简称。它是TCP/IP 协议族中负责IP 组播成员管理的协议,用来在IP 主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系。 到目前为止,IGMP 有三个版本: 1、IGMPv1(由RFC 1112 定义) 2、IGMPv2(由RFC 2236 定义) 3、IGMPv3(由RFC 3376定义) 一、IGMPv1 1.1报文格式 1、版本: 版本字段包含IGMP版本标识,因此设置为1。 2、类型: 成员关系查询(0x11) 成员关系报告(0x12) 3、校验和 4、组地址: 当一个成员关系报告正被发送时,组地址字段包含组播地址。 当用于成员关系查询时,本字段为0,并被主机忽略。 1.2组成员加入过程 当一个主机希望接收一个组播组的数据,则发送成员加入报告给组播组。

IGMPv1 join包如下: 1.3查询与响应过程 路由器RTA(IGMP查询器)周期性地(默认60秒)向子网内所有主机(224.0.0.1代表子网内所有主机)发送成员关系查询信息。

所有主机收到IGMPv1成员关系查询信息,一主机首先向组播组发送IGMPv1成员关系报告。 组的其他成员监听到报告后抑制自己的成员关系报告发送。 1.4 抑制机制 当主机收到IGMP成员关系查询时,对它已经加入的每个组播组启动一个倒计数报告计时器。各个报告计时器初始值为从0到最大响应之间一个随机数,默认值是10秒。 计时器到时的主机则主动发送成员关系报告,目的地为该主机所属的组地址。 其它主机收到该成员关系报告,则抑制成员关系报告的发送,并删除计时器。 1.5 组成员离开过程 主机“默不作声”地离开组(不发送报告了)。 路由器发送成员关系查询信息。 路由器没有收到该组的IGMP报告,则再发送成员关系信息(3次查询周期过后)。 组播组超时,剪枝。 二、IGMPv2 2.1报文格式 1、类型 成员关系查询(0x11) 常规查询:用于确定哪些组播组是有活跃的,即该组是否还有成员在使用,常规查询地址由全零表示; 特定组查询:用于查询某具体组播组是否还有组成员。 版本2成员关系报告(0x16) 版本1成员关系报告(0x12) 离开组消息(0x17)

wireshark抓包分析实验报告

Wireshark抓包分析实验 若惜年 一、实验目的: 1.学习安装使用wireshark软件,能在电脑上抓包。 2.对抓出包进行分析,分析得到的报文,并与学习到的知识相互印证。 二、实验内容: 使用抓包软件抓取HTTP协议通信的网络数据和DNS通信的网络数据,分析对应的HTTP、TCP、IP协议和DNS、UDP、IP协议。 三、实验正文: IP报文分析: 从图中可以看出: IP报文版本号为:IPV4 首部长度为:20 bytes 数据包长度为:40 标识符:0xd74b 标志:0x02 比特偏移:0 寿命:48 上层协议:TCP 首部校验和:0x5c12 源IP地址为:119.75.222.18 目的IP为:192.168.1.108

从图中可以看出: 源端口号:1891 目的端口号:8000 udp报文长度为:28 检验和:0x58d7 数据长度:20 bytes UDP协议是一种无需建立连接的协议,它的报文格式很简单。当主机中的DNS 应用程序想要惊醒一次查询时,它构造一个DNS查询报文段并把它给UDP,不需要UDP之间握手,UDP为报文加上首部字段,将报文段交给网络层。

第一次握手: 从图中看出: 源端口号:56770 目的端口号:80 序列号为:0 首部长为: 32 bytes SYN为1表示建立连接成功当fin为1时表示删除连接。

第二次握手: 从图中看出: 源端口号是:80 目的端口号为:56770 序列号为:0 ack为:1 Acknowledgement为1表示包含确认的报文Syn为1表示建立连接。

第三次握手: 从图中看出: 源端口:56770 目的端口:80 序列号为:1 ACK为:1 首部长为:20bytes Acknowledgement为1表示包含确认的报文 所以,看出来这是TCP连接成功了 Tcp是因特网运输层的面向连接的可靠的运输协议,在一个应用进程可以开始向另一个应用进程发送数据前,这两个进程必须先握手,即它们必须相互发送预备文段,建立确保传输的参数。

抓包工具演示

Wireshark抓包软件简单使用 wireshark是一款抓包软件,比较易用,在平常可以利用它抓包,分析协议或者监控网络。 一、抓包使用简单过程: Wireshark启动界面: 看到启动界面后,现在主要会用到这几个按钮:

2.点击“开始”获取抓取结果(抓取到的为未加密数据)

4.显示结果:

加密数据抓取: 抓取结果:

二、捕捉过滤器使用方法: Protocol(协议): 可能的值: ether, fddi, ip, arp, rarp, decnet, lat, sca, moprc, mopdl, tcp and udp. 如果没有特别指明是什么协议,则默认使用所有支持的协议。 Direction(方向): 可能的值: src, dst, src and dst, src or dst 如果没有特别指明来源或目的地,则默认使用“src or dst”作为关键字。 例如,”host 10.2.2.2″与”src or dst host 10.2.2.2″是一样的。 Host(s): 可能的值:net, port, host, portrange. 如果没有指定此值,则默认使用”host”关键字。 例如,”src 10.1.1.1″与”src host 10.1.1.1″相同。 Logical Operations(逻辑运算): 可能的值:not, and, or. 否(“not”)具有最高的优先级。或(“or”)和与(“and”)具有相同的优先级,运算时从左至右进行。 例如,

“not tcp port 3128 and tcp port 23″与”(not tcp port 3128) and tcp port 23″相同。“not tcp port 3128 and tcp port 23″与”not (tcp port 3128 and tcp port 23)”不同。 例子: tcp dst port 3128 //捕捉目的TCP端口为3128的封包。 ip src host 10.1.1.1 //捕捉来源IP地址为10.1.1.1的封包。 host 10.1.2.3 //捕捉目的或来源IP地址为10.1.2.3的封包。 ether host e0-05-c5-44-b1-3c //捕捉目的或来源MAC地址为e0-05-c5-44-b1-3c的封包。如果你想抓本机与所有外网通讯的数据包时,可以将这里的mac地址换成路由的mac 地址即可。 src portrange 2000-2500 //捕捉来源为UDP或TCP,并且端口号在2000至2500范围内的封包。 not imcp //显示除了icmp以外的所有封包。(icmp通常被ping工具使用) src host 10.7.2.12 and not dst net 10.200.0.0/16 //显示来源IP地址为10.7.2.12,但目的地不是10.200.0.0/16的封包。 (src host 10.4.1.12 or src net 10.6.0.0/16) and tcp dst portrange 200-10000 and dst net 10.0.0.0/8 //捕捉来源IP为10.4.1.12或者来源网络为10.6.0.0/16,目的地TCP端口号在200至10000之间,并且目的位于网络10.0.0.0/8内的所有封包。 src net 192.168.0.0/24 src net 192.168.0.0 mask 255.255.255.0 //捕捉源地址为192.168.0.0网络内的所有封包。

wireshark抓包分析了解相关协议工作原理

安徽农业大学 计算机网络原理课程设计 报告题目wireshark抓包分析了解相关协议工作原理 姓名学号 院系信息与计算机学院专业计算机科学与技术 中国·合肥 二零一一年12月

Wireshark抓包分析了解相关协议工作原理 学生:康谦班级:09计算机2班学号:09168168 指导教师:饶元 (安徽农业大学信息与计算机学院合肥) 摘要:本文首先ping同一网段和ping不同网段间的IP地址,通过分析用wireshark抓到的包,了解ARP地址应用于解析同一局域网内IP地址到硬件地址的映射。然后考虑访问https://www.doczj.com/doc/d212415840.html,抓到的包与访问https://www.doczj.com/doc/d212415840.html,抓到的包之间的区别,分析了访问二者网络之间的不同。 关键字:ping 同一网段不同网段 wireshark 协议域名服务器 正文: 一、ping隔壁计算机与ping https://www.doczj.com/doc/d212415840.html,抓到的包有何不同,为什么?(1)、ping隔壁计算机 ARP包:

ping包: (2)ing https://www.doczj.com/doc/d212415840.html, ARP包:

Ping包: (3)考虑如何过滤两种ping过程所交互的arp包、ping包;分析抓到的包有

何不同。 答:ARP地址是解决同一局域网上的主机或路由器的IP地址和硬件地址的映射问题,如果要找的主机和源主机不在同一个局域网上,就会解析出网 关的硬件地址。 二、访问https://www.doczj.com/doc/d212415840.html,,抓取收发到的数据包,分析整个访问过程。(1)、访问https://www.doczj.com/doc/d212415840.html, ARP(网络层): ARP用于解析IP地址与硬件地址的映射,本例中请求的是默认网关的硬件地址。源主机进程在本局域网上广播发送一个ARP请求分组,询问IP地址为192.168.0.10的硬件地址,IP地址为192.168.0.100所在的主机见到自己的IP 地址,于是发送写有自己硬件地址的ARP响应分组。并将源主机的IP地址与硬件地址的映射写入自己ARP高速缓存中。 DNS(应用层): DNS用于将域名解析为IP地址,首先源主机发送请求报文询问https://www.doczj.com/doc/d212415840.html, 的IP地址,DNS服务器210.45.176.18给出https://www.doczj.com/doc/d212415840.html,的IP地址为210.45.176.3

DNS抓包分析

TCP/IP原理与应用课程作业一对DNS域名系统的抓包分析 姓名:XXX 学号:XXXXXXXXXX 学院:计算机科学与工程

一、实验目的 通过网络抓包试验,深刻理解TCP/IP协议簇中DNS域名系统的使用方式与报文具体格式与含义,加强对课程的理解与应用。 二、相关原理 2.1 DNS的定义 DNS 是域名系统(Domain Name System) 的缩写,它是由解析器和域名服务器组成的。域名服务器是指保存有该网络中所有主机的域名和对应IP地址,并具有将域名转换为IP地址功能的服务器。其中域名必须对应一个IP地址,而IP地址不一定有域名。域名系统采用类似目录树的等级结构。域名服务器为客户机/服务器模式中的服务器方,它主要有两种形式:主服务器和转发服务器。将域名映射为IP地址的过程就称为“域名解析”。在Internet上域名与IP地址之间是一对一(或者多对一)的,域名虽然便于人们记忆,但机器之间只能互相认识IP地址,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,DNS就是进行域名解析的服务器。DNS 命名用于Internet 等TCP/IP 网络中,通过用户友好的名称查找计算机和服务。当用户在应用程序中输入DNS 名称时,DNS 服务可以将此名称解析为与之相关的其他信息,如IP 地址。因为,你在上网时输入的网址,是通过域名解析系统解析找到了相对应的IP地址,这样才能上网。其实,域名的最终指向是IP。 2.2 DNS的构成 在IPV4中IP是由32位二进制数组成的,将这32位二进制数分成4组每组8个二进制数,将这8个二进制数转化成十进制数,就是我们看到的IP地址,其范围是在0~255之间。因为,8个二进制数转化为十进制数的最大范围就是0~255。现在已开始试运行、将来必将代替IPv4的IPV6中,将以128位二进制数表示一个IP地址。 2.3 DNS的查询 DNS查询可以有两种解释,一种是指客户端查询指定DNS服务器上的资源记录(如A记录),另一种是指查询FQDN名的解析过程。 一、查询DNS服务器上的资源记录 您可以在Windows平台下,使用命令行工具,输入nslookup,返回的结果包括域名对应的IP地址(A记录)、别名(CNAME记录)等。除了以上方法外,还可以通过一些DNS查询站点如国外的国内的查询域名的DNS信息。 二、FQDN名的解析过程查询 若想跟踪一个FQDN名的解析过程,在Linux Shell下输入dig www +trace,返回的结果包括从跟域开始的递归或迭代过程,一直到权威域名服务器。 2.4 DNS的报文格式 DNS报文的首部:

新浪微博抓包分析

新浪微博抓包分析 摘要:数据包捕获及分析主要实现了对网络上的数据包进行捕获及分析。在包分析功能模块,根据报文协议的格式,把抓到的包进行解析,从而得到网络层和传输层协议的报头内容等信息。本次研究通过对新浪微博的网络数据包进行捕捉,分析数据包的结构,从而掌握数据包捕获和数据包分析的相关知识。 关键词:包分析;协议;数据包 1序言 本实验研究通过技术手段捕获数据包并加以分析。Ether Peek5.1是当前较为流行的图形用户接口的抓包软件,是一个可以用来监视所有在网络上被传送的包,并分析其内容的程序。它通常被用来检查网络工作情况,或是用来发现网络程序的bugs。通过Ether Peek对TCP、SMTP和FTP等常用协议进行分析,非常有助于网络故障修复、分析以及软件和协议开发。计算机网络安全、信息安全已经成为一个国际性的问题,每年全球因计算机网络的安全问题而造成的经济损失高达数百亿美元,且这个数字正在不断增加。网络数据包的捕获与分析对研究计算机网络安全问题有着重要意义。网络安全问题既包括网络系统的安全,又包括网络信息的安全和机密性。 2抓包工具介绍及抓包原理 2.1工具介绍 目前常用的抓包工具有Sniffer,wireshark,WinNetCap,WinSock Expert,EtherPeek等。本次实验研究是在windows XP系统环境下安装EtherPeek进行抓包。EtherPeek是个用来截取网络数据包的工具,主要用监听统计和捕获数据包两种方式进行网络分析。它只能截取同一HUB的包,也就是说假如你的便携装了EtherPeek,那么你的便携必须与你要监控的目的地址和源地址中的一个接在同一HUB上。有了这个工具,如果5250仿真或telnet仿真出了问题,就可以用它来截取数据包,保存下来,再进行分析。 2.2数据包捕获原理 在通常情况下,网络通信的套接字程序只能响应与自己硬件地址相匹配的或

802.11抓包分析

802.11抓包分析 1.实验目的 分析802.11协议,了解802.11的帧格式 2.实验环境及工具 操作系统:ubuntu 实验工具:WireShark 3.实验原理 (1)802.11MAC层数据帧格式: Bytes 2 2 6 6 6 2 0-2312 4 Bits 2 2 4 1 1 1 1 1 1 1 1 Version:表明版本类型,现在所有帧里面这个字段都是0 Type:指明数据帧类型,是管理帧,数据帧还是控制帧,00表示管理帧,01表示控制帧,10表示数据帧 Subtype:指明帧的子类型 ,Data=0000,Data+CF-ACK=0001,Data+CF-Poll=0010, Data+CF-ACK+CF-Poll=0011,Nulldata=0100,CF-ACK=0101, CF-Poll=0110,Data+CF-ACK+CF-Poll=0111,QoS Data=1000, Qos Data+CF-ACK=1001,QoS Data+CF-Poll=1010, QoS Data+CF-ACK+CF-Poll=1011,QoS Null =1100, QoS CF-ACK=1101,QoS CF-Poll=1110,QoS Data+CF-ACK+CF-Poll=1111 To DS/From DS:这两个数据帧表明数据包的发送方向,分四种情况: 若数据包To DS为0,From DS为0,表明该数据包在网络主机间传输 若数据包To DS为0,From DS为1,表明该数据帧来自AP

若数据包To DS为1,From DS为0,表明该数据帧发送往AP 若数据包To DS为1,From DS为1,表明该数据帧是从AP发送往AP

实验一 wireshark抓包工具使用

实验一wireshark抓包工具使用[实验目的] 学习wireshark抓包工具的使用 了解wireshark抓包工具的功能 通过学习,进一步理解协议及网络体系结构思想 [实验原理] Wireshark是网络包分析工具。网络包分析工具的主要作用是尝试捕获网络包,并尝试显示包的尽可能详细的情况。 主要应用: 网络管理员用来解决网络问题 网络安全工程师用来检测安全隐患 开发人员用来测试协议执行情况 用来学习网络协议 [实验内容] 下载WIRESHARK,学习工具的使用和功能。

Wireshark 是网络包分析工具。网络包分析工具的主要作用是尝试捕获网络包,并尝试显示包的尽可能详细的情况。 你可以把网络包分析工具当成是一种用来测量有什么东西从网线上进出的测量工具,就好像使电工用来测量进入电信的电量的电度表一样。(当然比那个更高级) 过去的此类工具要么是过于昂贵,要么是属于某人私有,或者是二者兼顾。 Wireshark出现以后,这种现状得以改变。 Wireshark可能算得上是今天能使用的最好的开元网络分析软件。 工作流程 (1)确定Wireshark的位置。如果没有一个正确的位置,启动Wireshark后会花费很长的时间捕获一些与自己无关的数据。 (2)选择捕获接口。一般都是选择连接到Internet网络的接口,这样才可以捕获到与网络相关的数据。否则,捕获到的其它数据对自己也没有任何帮助。 (3)使用捕获过滤器。通过设置捕获过滤器,可以避免产生过大的捕获文件。这样用户在分析数据时,也不会受其它数据干扰。而且,还可以为用户节约大量的时间。 (4)使用显示过滤器。通常使用捕获过滤器过滤后的数据,往往还是很复杂。为了使过滤的数据包再更细致,此时使用显示过滤器进行过滤。 (5)使用着色规则。通常使用显示过滤器过滤后的数据,都是有用的数据包。如果想更加突出的显示某个会话,可以使用着色规则高亮显示。 (6)构建图表。如果用户想要更明显的看出一个网络中数据的变化情况,使用图表的 形式可以很方便的展现数据分布情况。

以太网常用抓包工具介绍_464713

v1.0 可编辑可修改 i RTUB_105_C1 以太网常用抓包工具介绍 课程目标: 课程目标1:了解常见抓包软件 课程目标2:掌握根据需要选择使用抓包软件并分析报文

v1.0 可编辑可修改 目录 第1章以太网常用抓包工具介绍.............................................................................................................. 1-1 1.1 摘要 ................................................................................................................................................ 1-1 1.2 简介 ................................................................................................................................................ 1-1 1.3 抓包工具介绍 ................................................................................................................................ 1-2 1.4 Sniffer使用教程 .......................................................................................................................... 1-3 1.4.1 概述 ..................................................................................................................................... 1-3 1.4.2 功能简介 ............................................................................................................................. 1-3 1.4.3 报文捕获解析 ..................................................................................................................... 1-4 1.4.4 设置捕获条件 ..................................................................................................................... 1-8 1.4.5 报文放送 ........................................................................................................................... 1-10 1.4.6 网络监视功能 ................................................................................................................... 1-12 1.4.7 数据报文解码详解 ........................................................................................................... 1-14 1.5 ethreal的使用方法 .................................................................................................................... 1-28 1.5.1 ethreal使用-入门 ......................................................................................................... 1-28 1.5.2 ethereal使用-capture选项 ......................................................................................... 1-30 1.5.3 ethereal的抓包过滤器 ................................................................................................... 1-31 1.6 EtherPeekNX ................................................................................................................................ 1-35 1.6.1 过滤条件设置 ................................................................................................................... 1-35 1.6.2 设置多个过滤条件 ........................................................................................................... 1-41 1.6.3 保存数据包 ....................................................................................................................... 1-45 1.6.4 分析数据包 ....................................................................................................................... 1-47 1.6.5 扩展功能 ............................................................................................................................. 1-1 1.6.6 简单分析问题的功能 ......................................................................................................... 1-5 1.6.7 部分解码功能 ..................................................................................................................... 1-9 1.6.8 案例 ..................................................................................................................................... 1-1 1.7 SpyNet ............................................................................................................................................ 1-1 1.7.1 使用简介 ............................................................................................................................. 1-1 1.7.2 使用步骤: ......................................................................................................................... 1-2 i

WIN8系统抓包工具使用介绍

抓包过程简要说明 对于工程上某些需要确认网管下发到设备上的数据或者设备上报给网管的数据正确性,需要对网卡进行数据抓包分析。现将详细的抓包方法进行说明(此版本抓包工具可用于windows server2003、WIN7和windows server2008操作系统上,其他的没试用过) 说明: windows server2008操作系统有两种,一种32位,一种64位。 查看操作系统位数的方法有两种(输入命令后可能会等待5~20s时间): 1、运行---输入“cmd”---在命令提示符窗口中输入“systeminfo”---找到其中的“System type:(系统类型)”对应的就是了。 2、运行DXDIAG就可以查看系统位数了。x86代表32位,X64代表64位! 该抓包工具根据操作系统位数有以下区别,x86为32位操作系统,x64为64位操作系统。本文档以32位操作系统为例进行说明。 步骤一:将附件的netmon_34.rar解压到任何位置,例如D:\ 步骤二:运行D:\netmon_3\ NM34_x86.exe文件,执行安装,步骤中全部选择默认安装即可。安装完成后,桌面会生成Microsoft Network Monitor 3.4的快捷图标。 步骤三:双击运行Microsoft Network Monitor 3.4,在菜单栏选择Tools->Options..可以看到下面的面板,在Faster Parsing上点击右键选择Create->Create From Selected,

步骤四:在Create New Parser Profile面板中可以自己命名Name(本例中命名为fiberhome_set,可自定义), 并选中路径列表中的第2项,然后选择Open Folder,

数据包捕获与解析

数据包捕获与解析课程设计报告 学生姓名:董耀杰 学号:1030430330 指导教师:江珊珊

数据包捕获与分析 摘要本课程设计通过Ethereal捕捉实时网络数据包,并根据网络协议分析流程对数据包在TCP/IP各层协议中进行实际解包分析,让网络研究人员对数据包的认识上升到一个感性的层面,为网络协议分析提供技术手段。最后根据Ethereal的工作原理,用Visual C++编写一个简单的数据包捕获与分析软件。 关键词协议分析;Ethereal;数据包;Visual C++ 1引言 本课程设计通过技术手段捕获数据包并加以分析,追踪数据包在TCP/IP各层的封装过程,对于网络协议的研究具有重要的意义。Ethereal是当前较为流行的图形用户接口的抓包软件,是一个可以用来监视所有在网络上被传送的包,并分析其内容的程序。它通常被用来检查网络工作情况,或是用来发现网络程序的bugs。通过ethereal对TCP、UDP、SMTP、telnet和FTP等常用协议进行分析,非常有助于网络故障修复、分析以及软件和协议开发。,它以开源、免费、操作界面友好等优点广为世界各地网络研究人员使用为网络协议分析搭建了一个良好的研究平台。 1.1课程设计的内容 (1)掌握数据包捕获和数据包分析的相关知识; (2)掌握Ethreal软件的安装、启动,并熟悉用它进行局域网数据捕获和分析的功能; (3)设计一个简单的数据包捕获与分析软件。 1.2课程设计的要求 (1)按要求编写课程设计报告书,能正确阐述设计结果。 (2)通过课程设计培养学生严谨的科学态度,认真的工作作风和团队协作精神。 (3)学会文献检索的基本方法和综合运用文献的能力。 (4)在老师的指导下,要求每个学生独立完成课程设计的全部内容。

数据包抓包分析

数据链路层数据包抓包分析 实验内容 (1)安装Wireshark软件。 (2)掌握抓包软件的使用 (3)掌握通过抓包软件抓取帧并进行分析的办法 实验步骤 (1)常用的抓包软件包括Sniffer、NetXRay、Wireshark (又名EtheReal)。 我们采用免费的Wireshark,可以从https://www.doczj.com/doc/d212415840.html,或其他网站下载。安装完成后,Wireshark的主界面和各模块功能如下: 命令菜单(command menus):最常用菜单命令有两个:File、Capture。File菜单允许你保存捕获的分组数据或打开一个已被保存的捕获分组数据文件。Capture菜单允许你开始捕获分组。 显示筛选规则(display filter specification):在该字段中,可以填写协议的名称或其他信息,根据此内容可以对分组列表窗口中的分组进行过滤。 捕获分组列表(listing of captured packets):按行显示已被捕获的分组内容,其中包括:Wireshark赋予的分组序号、捕获时间、分组的源地址和目的地址、协议类型、分组中所包含的协议说明信息。在该列表中,所显示的协议类型是发送或接收分组的最高层协议的类型。分组首部明细(details of selected packet header):显示捕获分组列表窗口中被选中分组的头部详细信息。包括:与以太网帧有关的信息,与包含在该分组中的IP数据报有关的信息。如果利用TCP或UDP承载分组, Wireshark也会显示TCP或UDP协议头部信息。最后,分组最高层协议的头部字段也会被显示。 分组内容窗口(packet content):以ASCII码和十六进制两种格式显示被捕获帧的完整内容。(2)下面我们进行抓包练习。 在capture菜单中选中options,可以设置抓包选项,如下图所示,这里我们需要选

Wireshark抓包工具计算机网络实验

实验一 Wireshark使用 一、实验目的 1、熟悉并掌握Wireshark的基本使用; 2、了解网络协议实体间进行交互以及报文交换的情况。 二、实验环境 与因特网连接的计算机,操作系统为Windows,安装有Wireshark、IE等软件。三、预备知识 要深入理解网络协议,需要观察它们的工作过程并使用它们,即观察两个协议实体之间交换的报文序列,探究协议操作的细节,使协议实体执行某些动作,观察这些动作及其影响。这种观察可以在仿真环境下或在因特网这样的真实网络环境中完成。 Wireshark是一种可以运行在Windows, UNIX, Linux等操作系统上的分组嗅探器,是一个开源免费软件,可以从https://www.doczj.com/doc/d212415840.html,下载。 运行Wireshark程序时,其图形用户界面如图2所示。最初,各窗口中并无数据显示。Wireshark的界面主要有五个组成部分: 命令和菜单 协议筛选框 捕获分组 列表 选定分组 首部明细 分组内容 左:十六进制 右:ASCII码 图1

●命令菜单(command menus):命令菜单位于窗口的最顶部,是标准的下拉式菜单。 ●协议筛选框(display filter specification):在该处填写某种协议的名称,Wireshark 据此对分组列表窗口中的分组进行过滤,只显示你需要的分组。 ●捕获分组列表(listing of captured packets):按行显示已被捕获的分组内容,其中包括:分组序号、捕获时间、源地址和目的地址、协议类型、协议信息说明。单击某一列的列名,可以使分组列表按指定列排序。其中,协议类型是发送或接收分组的最高层协议的类型。 ●分组首部明细(details of selected packet header):显示捕获分组列表窗口中被选中分组的首部详细信息。包括该分组的各个层次的首部信息,需要查看哪层信息,双击对应层次或单击该层最前面的“+”即可。 ●分组内容窗口(packet content):分别以十六进制(左)和ASCII码(右)两种格式显示被捕获帧的完整内容。 四、实验步骤 1.启动Web浏览器(如IE); 2.启动Wireshark; 3.开始分组捕获:单击工具栏的按钮,出现如图3所示对话框,[options]按钮可以进行系统参数设置,在绝大部分实验中,使用系统的默认设置即可。当计算机具有多个网卡时,选择其中发送或接收分组的网络接口(本例中,第一块网卡为虚拟网卡,第二块为以太网卡)。单击“Start”开始进行分组捕获;

抓包实例分析实验

抓包实例分析 一.实验目的 1.初步掌握Wireshark的使用方法,熟悉其基本设置,尤其是Capture Filter和Display Filter 的使用。 2.通过对Wireshark抓包实例进行分析,进一步加深对各类常用网络协议的理解,如:TCP、UDP、IP、SMTP、POP、FTP、TLS等。 3.进一步培养理论联系实际,知行合一的学术精神。 二.实验原理 1.用Wireshark软件抓取本地PC的数据包,并观察其主要使用了哪些网络协议。 2.查找资料,了解相关网络协议的提出背景,帧格式,主要功能等。 3.根据所获数据包的内容分析相关协议,从而加深对常用网络协议理解。 三.实验环境 1.系统环境:Windows 7 Build 7100 2.浏览器:IE8 四.Wireshark:V :V 实验步骤 1.Wireshark简介 Wireshark(原Ethereal)是一个网络封包分析软件。其主要功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。其使用目的包括:网络管理员检测网络问题,网络安全工程师检查资讯安全相关问题,开发者为新的通讯协定除错,普通使用者学习网络协议的相关知识……当然,有的人也会用它来寻找一些敏感信息。 值得注意的是,Wireshark并不是入侵检测软件(Intrusion Detection Software,IDS)。对于网络上的异常流量行为,Wireshark不会产生警示或是任何提示。然而,仔细分析

Wireshark撷取的封包能够帮助使用者对于网络行为有更清楚的了解。Wireshark不会对网络封包产生内容的修改,它只会反映出目前流通的封包资讯。 Wireshark本身也不会送出封包至网络上。 2.实例 实例1:计算机是如何连接到网络的 一台计算机是如何连接到网络的其间采用了哪些协议Wireshark将用事实告诉我们真相。如图所示: 图一:网络连接时的部分数据包 如图,首先我们看到的是DHCP协议和ARP协议。 DHCP协议是动态主机分配协议 (Dynamic Host Configuration Protocol)。它的前身是BOOTP。BOOTP可以自动地为主机设定TCP/IP环境,但必须事先获得客户端的硬件地址,而且,与其对应的IP地址是静态的。DHCP是 BOOTP 的增强版本,包括服务器端和客户端。所有的IP网络设定数据都由DHCP服务器集中管理,并负责处理客户端的 DHCP 要求;而客户端则会使用从服务器分配下来的IP环境数据。 ARP协议是地址解析协议 (Address Resolution Protocol)。该协议将IP地址变换成物理地址。以以太网环境为例,为了正确地向目的主机传送报文,必须把目的主机的32位IP 地址转换成为48位以太网的地址。这就需要在互连层有一组服务将IP地址转换为相应物理地址,这组协议就是ARP协议。 让我们来看一下数据包的传送过程: 数据包:当 DHCP 客户端(本地PC)第一次登录网络的时候,它会网络发出一个 DHCP DISCOVER 封包。因为客户端还不知道自己属于哪一个网络,所以封包的来源地址会为,而目的地址则,然后再附上 DHCP discover 的信息,向网络进行广播。 数据包:当 DHCP 服务器(本地路由器)监听到客户端发出的 DHCP discover 广播后,它会从那些还没有租出的地址范围内,选择最前面的空置 IP ,连同其它 TCP/IP 设定,响应给客户端一个 DHCP OFFER 封包。 数据包:客户端向网络发送一个 ARP 封包,查询服务器物理地址。 数据包:服务器端返回一个ARP 封包,告诉客户端它的物理地址。 数据包:由于Windows 7 支持IP V6 ,所以DHCP V6协议也开始工作。

相关主题
文本预览
相关文档 最新文档