原文地址:http://nanjingfm.blog.51cto.com/2121842/1192041
实验目的:
了解五种报文的格式及工作过程;初步学习,不妥当的地方还请大牛指教!
Hello:
我们现在R1路由器上面开启EIGRP进程,R2上暂时不开启,然后使用wireshark进行抓包分析:
由此可见,当将接口IP所在网段宣告到EIGRP进程中,该接口就会不断的发送hello报文。hello报文是每个5秒钟发一次的(线路速率大于T1,是5秒发一次,小于T1是60秒一次);先来了解一下EIGRP包头:
首先看IP层信息,值得我们注意的是TTL值(Time to live:2)等于2,表示这个hello包只能在本链路有效,不可跨越路由器;protocol:EIGRP(88),88表示EIGRP的协议号;目标IP是一个组播地址:224.0.0.10;
下面我们看hello包的具体内容:
我们主要关注一下参数:
Opcode:hell0/Ack(5) 表示类型为hello;更具体类型如下:
Autonomous System:20 as号为20;此值必须匹配;
K1~K5:分别为1,0,1,0,0;只在hello报文中存在,用于验证邻居,此值必须匹配;
Hold time:15 邻居保持时间为15秒,是hello间隔的3倍;
还包括路由器软件版本及EIGRP的版本号;
下面我们开启R2上的EIGRP进程,宣告S1/0所在的网段;
敲完回车之后,在1秒中内迅速出现11个EIGRP分组报文,我们来看看每个都是干什么用的:
第一个是,R2向组播地址发送hello报文,开始寻找邻居;
第二个是,R1向组播地址发送hello报文,开始寻找邻居;注:hello报文无须ACK确认;
第三个是,R1发送给R2的更新报文,我们看看与hello报文有什么不同;
首先update报文要比hello报文简洁的多,只表示标识号为1(update);checksum;并且将INIT置位1,表示自己已经是INIT状态了;序列号为5;ACK置为0,等待确认;AS号还是20;
第五个是,R2发送给R1的更新报文,与第三个类似,不同的是将ACK置为5,表示对第三个报文的确认;
第六个是,R1向R2发送路由跟新条目,R1将自身的序列号加1变为6,并且确认收到了R2发送的序列号为5的EIGRP分组;拓扑信息中包含有10.0.0.0/8的路由条目;延迟为128000;带宽为256;
第七个是,R2向R1发送的路由更新条目,R2将自身的序列号加1变为6,并且确认收到了R2发送的序列号为6的EIGRP分组;拓扑信息中包含有172.16.1.4/30的路由条目;延迟为512000;带宽为1657856;
以此在进行一次交换信息,然后最后一个报文表示了R1确认R2发送的报文:这边操作码为5,且ACK不为零的报文为ACK报文,否则为hello报文;确认之后将自身序列号置为0,表示收敛完毕;
下面我们来看一下二者的邻居表:
再查看路由表: