原文地址:http://nanjingfm.blog.51cto.com/2121842/1192041

 

实验目的:

    了解五种报文的格式及工作过程;初步学习,不妥当的地方还请大牛指教!

 

Hello

我们现在R1路由器上面开启EIGRP进程,R2上暂时不开启,然后使用wireshark进行抓包分析:

 

由此可见,当将接口IP所在网段宣告到EIGRP进程中,该接口就会不断的发送hello报文。hello报文是每个5秒钟发一次的(线路速率大于T1,是5秒发一次,小于T160秒一次);先来了解一下EIGRP包头:

 

首先看IP层信息,值得我们注意的是TTLTime to live:2)等于2,表示这个hello包只能在本链路有效,不可跨越路由器;protocolEIGRP88),88表示EIGRP协议号;目标IP是一个组播地址224.0.0.10

 

下面我们看hello包的具体内容:

 

我们主要关注一下参数:

Opcode:hell0/Ack(5)  表示类型为hello;更具体类型如下:

 

Autonomous System20    as号为20此值必须匹配;

K1~K5:分别为10100只在hello报文中存在,用于验证邻居,此值必须匹配;

Hold time15   邻居保持时间为15秒,是hello间隔的3倍;

还包括路由器软件版本及EIGRP的版本号;


 

下面我们开启R2上的EIGRP进程,宣告S1/0所在的网段;

       敲完回车之后,在1秒中内迅速出现11EIGRP分组报文,我们来看看每个都是干什么用的:

 

第一个是,R2向组播地址发送hello报文,开始寻找邻居;

第二个是,R1向组播地址发送hello报文,开始寻找邻居;注:hello报文无须ACK确认

第三个是,R1发送给R2的更新报文,我们看看与hello报文有什么不同;

 

首先update报文要比hello报文简洁的多,只表示标识号为1update);checksum;并且将INIT置位1,表示自己已经是INIT状态了;序列号为5ACK置为0,等待确认;AS号还是20

第五个是,R2发送给R1的更新报文,与第三个类似,不同的是将ACK置为5,表示对第三个报文的确认;

 

第六个是,R1R2发送路由跟新条目,R1将自身的序列号加1变为6,并且确认收到了R2发送的序列号为5EIGRP分组;拓扑信息中包含有10.0.0.0/8的路由条目;延迟为128000;带宽为256

 

第七个是,R2R1发送的路由更新条目,R2将自身的序列号加1变为6,并且确认收到了R2发送的序列号为6EIGRP分组;拓扑信息中包含有172.16.1.4/30的路由条目;延迟为512000;带宽为1657856

 

以此在进行一次交换信息,然后最后一个报文表示了R1确认R2发送的报文:这边操作码为5,且ACK不为零的报文为ACK报文,否则为hello报文;确认之后将自身序列号置为0,表示收敛完毕;

    下面我们来看一下二者的邻居表:

 

再查看路由表: