知识点一 IP地址的运用
三台路由器串联,如何只配置IP地址,让三台路由器之间可以直接互通;
|
解析:不需要路由,可通过配置高低掩码就能使它们能互相ping通,对于掩码
的配置,答案不唯一,例如对于R2两个接口掩码的配置,也可以一边/24 一边/23,只要它属于/16包含的网段内就行
知识点二 RIPv1 和 RIPv2的区别
注意RIPv1 和RIPv2 都不支持CIDR
因为敲配置的时候提示:summary mask must be greater or equal to major net
意思也就是说,手动汇总的掩码必须大于等于主类路由的掩码,所以证明RIP不支持CIDR
知识点三 RIP的报文分析
RIP(Routing Information Protocol)路由协议:
1.RIP特点:
距离矢量路由协议,传言路由;
广播或者组播更新路由信息;
周期更新、触发更新;
多个计时器;
RIPv1有类路由协议;
RIPv2无类路由协议;
2.RIP的工作过程:
启用RIP后,发送request包,邻居收到后回复update包,收到update包将更新自己路由表并将更改的路由信息继续传播;
报文格式:
RIPv1的抓包分析:
|
通过抓包可以看出,RIPv1的报文携带的东西很少,具体如下
RIP V1报文格式:
1.命令(command):命令字段为1 表示请求,2 表示应答。还有两个舍弃不用的命令(3 和4),
两个非正式的命令:轮询(5)和轮询表项(6)。请求表示要求其他系统发送其全部或部分路由表。应答则包含发送者全部或部分路由表。
2. 版本(version):版本字段通常为1,而第2 版RIP 将此字段设置为2。
3.地址族标识:标识RIP是使用IPv4地址协议簇的
RIP 报文类型
RIP 使用两种报文类型:请求和响应
1、请求报文:
当路由器刚刚接入到网络上,或路由器有一些超时的项目,它就发送请求报文,请求报文可以询问整个路由表的信息或某个具体的路由信息
对于特定的路由表信息的请求:
对于所有的路由表信息的请求:
2、响应报文
响应可以是询问的或非询问的,询问的响应仅在回答请求时才发送出来。它包含了在对应的请求中指明的终点的信息,而非询问的响应则是定期发送,如每隔30s 或当路由表中有变化时,这种响应有时叫做更新分组(即非询问的响应)
RIPv2 报文格式
设计 RIPv2 版本是为了克服RIPv1 版本的某些缺点,RIPv2 的设计者没有增大每一个项目的报文长度,他们只是把RIPv1 中的对TCP/IP 协议填入0 的那些字段改为一些新的字段。对其基础上增加了一些扩展特性,以适用于现代网络的路由选择环境,这些扩展我包括:
无类别路由协议:RIPv2 的每一个路由条目都携带子网掩码,因此RIPv2 支VLSM。
多播方式(即组播)路由更新:RIPv1 使用广播方式把RIP 报文发送给每一个邻居,RIPv2 使用多播的方式向其他使用RIPv2 的路由器发出更新报文,使用的多播地址是224.0.0.9。采用多播方式的好处在于,本地网络上和RIP 路由选择无关的设备不需要花费时间解析路由器广播的更新报文。与 RIPv1 一样,RIPv2 操作使用的端口号为UDP520,并且数据报文最大不超过512字节。
抓包分析:
|
通过抓包可以发现RIPv2携带的内容比RIPv1多很多,具体分析如下
1.命令(Command)——只取值1 或2,1 表示该消息是请求消息,2 表示该消息是响应消息。其他的取值都不被使用或保留用作私有用途。
2.版本号(Version)——对于RIPv2,该字段的值设为2,如果设置为0 或者虽设置为1 但消息是无效的RIPv1 格式,那么这个消息将被丢弃。RIPv2 处理无效的RIPv1 消息。
3. 地址族标识(Address Family Identifier,AFI)------对于IP 该项设置为2。只有一个例外的情况,该消息是路由器(或主机)整个路由选择表的请求。
4. 路由标记(Route Tag)——提供这个字段用来标记外部路由或重分配到RIPv2协议中的路由。默认的情况是使用这个16 位的字段来携带从外部路由选择协议注入到RIP 中的路由的自治系统号。虽然RIP 协议自己并不使用这个字段,但是再多个地点和某个RIP 域相连的外部路由,可能需要使用这个路由标记字段通过RIP域来交换路由信息。这个字段也可以用来把外部路由编成“组”,以便在RIP 域中更容易的控制这些路由。
5.IP 地址(IP Address)——路由的目的地址。这一项可以是主网络地址,子网地址或者主机路由地址。
6.子网掩码(Subnet Mask)——是一个确认IP 地址的网络和子网部分的32 位的掩码。
7. 下一跳(Next Hop)——如果存在的话,它标识一个比通告路由器的地址更好的下一跳地址。换句话说,它指出的下一跳地址,其度量值比在同一个子网上的通告路由器更靠近目的地。如果这个字段设置位全0(0.0.0.0),说明通告路由器的地址是最好的下一跳地址。
8. 度量(Metric)—— Metric 在RIP 里面指的就是跳数。该字段的取值范围是1~16之间。
知识点四 RIP的选路原则
RIPv1:
1、发送路由更新的原则:将路由更新从一个接口发送出去时,要执行一个判断:
① 路由更新条目和该接口是不是同一个主类,如果是,则必须和该接口掩码长度一样才能发送出去;
② 如果不是,则进行有类边界的自动汇总,汇总成主类再发出去。这也是为什么有类路由协议不支持VLSM的原因;
2、接收路由更新的原则:
① 如果接收的条目和自己所在接口不是同一主类,则认为所接收的条目就是主类的路由,
② 如果和自己接口是同一主类,则认为所收条目和自己接口是同一样的掩码长度,
③此时如果主机位不是全为零,则认为是主机路由,则掩码为32位。
小实验:R1-(172.16.1.1/22)------(172.16.1.2/23)-R2(10.1.1.1/24 172.16.26.1/23 172.16.80.1/22 172.16.40.1/23)
问题:根据RIPV1的发送规则和接收规则R1能学到哪些路由条目
根据RIPV1路由的发送规则和接收规则
R1最终的路由表为:
|
注意:对于以上讨论的发送规则和接收规则是相对于RIPV1来说的
知识点五:RIP的汇总
手动汇总和自动汇总;
--RIPV1是没有手动汇总的,并且自动汇总无法关闭(命令可以敲进去,但只对v2有效);
--RIPV2是支持手动汇总的,在路由条目传递的出接口进行手动汇总:不支持CIDR;
--RIPV2的自动汇总是可以手动关闭的,IE考试中,如果没有明确说明不让关闭自动汇总,否则都要关闭自动汇总,防止因为自动汇总产生环路(什么情况下自动汇总可以产生环路);
问题一:RIPV2自动汇总开启的情况下
则R2在将路由更新发送给R1时,遵守RIPV1的部分发送规则,即
①如果和我出接口的主类一样,则路由条目掩码不管是多少位都可以携带上自己的掩码被发送出去
②如果和我出接口的主类不一样,则将该路由条目汇总之后再发送出去
而没有关闭自动汇总的RIPV2没有什么特别的接收规则
所以此时R1的路由表为:
|
|
问题二:RIPV2自动汇总功能关闭的情况下
则R2在向R1发送路由更新时将携带自己的掩码一起将路由条目传给邻居,则R1的路由表变为:
|
抓包可以看到R1收到R2传来的所有明细的路由条目
|
现象分析:RIPv2自动汇总关闭的情况下,R2再向R1发送路由更新时,所有的路由条目都将携带掩码,以明细路由条目的形式被发送出去。
知识点六 RIPv1不支持不连续子网
|
现象分析:因为RIPv1 不支持不连续子网,并且在网络边界会将路由汇总成主类路由后再发送出来,所以路由条目传递到R4的时候,会发现R4同时收到两条相同的汇总后的路由条目,这是就出现负载均衡现象,使得R4在回包的时候不知道该给哪边回包,所以R1和R2之间发送的数据包在R4时就被丢弃了,所以会出现双方都ping不通的现象
知识点七 关于no ip classless命令:
R1上配置默认路由ip route 0.0.0.0 0.0.0.0后,默认情况下是可以ping通172.16.1.1和2.1的;
|
|
当R1上配置命令no ip classless后,发现ping不通了
R1(config)#no ip classless
注意此时查看路由表发现路由条目还是存在的,但是就是ping不通。
|
|
原因:默认情况下路由器是无类的,一旦配置命令no ip classless后,变为有类的,所谓有类,是指路由器只要知道一个主类当中任何一个子网的路由,它就认为自己知道了去往这个主类所有网段的路由。也就是说因为R1环回口的路由条目是172.16.1.1 属于172.16.0.0主类的路由,所以配置了no ip classless后,对于去往R2环回口的路由172.16.2.1,对于R1而言,R1路由器就会认为它1已经知道了去往主类为172.16.0.0的所有子网的路由,那么我R1就就算路由表中还存在路由条目,但是R1去往R2环回口目的地址172.16.2.1,我R1还是不会走路由表中原来写的路由条目。
注意:对于环回口比较特殊,它会使环回转发,即发往环回口的路由又发回R1,
因为环回口有路由环回的功能,所以还会
|
但是对于其他不是和它同一主类的路由,它还是不会将配置的路由条目删除的,比如在R2在增添一个环回口的地址为2.2.2.2/24,在R1上写一条到达2.2.2.2的默认路由
知识点八 RIP的认证:
RIP支持明文认证和MD5认证,RIP的认证是在接口下配置的,收钱是在全局下定义key-chain,然后在接口下声明认证类型和调用定义好的key-chain;
明文认证时,被认证方发送key chian时,发送最低ID值的key,并且不携带ID;认证方接收到key后,和自己key chain的全部key进行比较,只要有一个key匹配就通过对被认证方的认证。
MD5认证时,被认证方发送key时,发送最低ID值的key,并且携带了ID;认证方接收到key后,首先在自己key chain中查找是否具有相同ID的key,①如果有相同ID的key并且key相同就通过最近ID的key;如果没有往后的ID,认证失败。
注意:RIPv1不支持认证功能
认证:
RIP版本1不支持认证。如果接收和发送的是版本2包,接口能进行RIP认证。密钥链路决定了能用于接口的一连串密钥。如果不配设置密钥链路,接口就不能进行认证,甚至不能进行缺省认证。下面就让我们看一下配置RIP认证的步骤:
一、实验拓扑如图:
认证,key值不同就不通过认证。②如果没有相同ID的key,就查找该ID往后的
二、明文验证
R1上配置为:
全局下:
key chain sovand //配置一个key chain 起个名字
key 1 //配置第一个key
key-string ccxx //配置密钥
接口下:
interface FastEthernet0/0
ip address 172.16.1.1 255.255.255.0
ip rip authentication mode text //指出接口下使用明文认证
ip rip authentication key-chain rip-key //接口下调用
R2的配置同理R1
测试一:R2的配置中key ID和密钥和R1的一致
发现认证成功,两边都能学到对方的路由条目
|
抓包分析
|
|
综上抓包现象分析:通过抓包我们可以看出,双方在发送认证信息的过程中没有携带key ID 也没有携带key chain的名称,所以对于明文认证,就算双方的认证的key chain名称和key ID不一样,只要双方的认证密钥一样就可以认证成功。
测试二:当R1只有一个key为ccxx,R2有两个key,第一个为ccxx01,第二个为ccxx
|
|
综上抓包分析:可以看出R1只有一个密钥,便直接把它的密钥ccxx发给了R2,但是R2有两个密钥,分别为ccxx01 和ccxx,而R2的 key ID最小的密钥是ccxx01,所以它将最小的key ID对应的密钥ccxx01发给了R1
这时。。。我们来看它们的路由表
R1:
|
R2:
|
综上路由表和测试二的抓包抓包分析,我们可以看出R1发给R2的密钥ccxx,虽然密钥对应的key ID不一样,在R2这边因为R2有两个密钥,所以认证协商成功了,但是R2发给R1的密钥时,发送的是key ID最小的对应的密钥,即ccxx01,而这个密钥在R1这边没有找到相同的密钥,所以认证协商失败了
结论
明文认证时,被认证方发送key chian时,发送最低ID值的key,并且不携带ID;认证方接收到key后,和自己key chain的全部key进行比较,只要有一个key匹配就通过对被认证方的认证。
三、密文认证
R1上配置为:
全局下:
key chain sovand
key 1
key-string ccxx02
接口下:
interface FastEthernet0/0
ip address 172.16.1.1 255.255.255.0
ip rip authentication mode md5
ip rip authentication key-chain sovand
R2上配置同理R1
测试一:
两边配置key ID和密钥都一样
|
|
查看路由表也发现两边都有学到对方的条目
R1: R2: |
综上实验现象分析:通过抓包我们可以看到,R1和R2之间在通过用MD5密文的形式进行相互认证的时候,会将key ID和密钥加密后一起发送过去,因为两边的key ID和配置的密钥都一致,所以认证成功了,也互相学到了对方的条目
测试二:
如果密钥一致,key ID不一样
|
|
现象分析:因为R1和R2两边的key ID不一样,所以认证不成功,两边都学不到对方的路由
测试三:
R1的key 1为ccxx,R2的key 1为ccxx02,key 2为ccxx
|
|
综上实验现象分析:此时因为对于R1发给R2的认证信息key 1=ccxx,而R2的key1=ccxx02,因为key ID相同,但是密钥不同,所以R1给R2 发的认证信息认证不成功,所以R1 的条目不能传给R2;对于R2,R2会将最小的key ID对应的密钥发给R1,即将key 1=ccxx02发给R1,同理,在R1这边认证也不成功,所以R2的条目也不能传给R1,所以两边双方认证都失败了,所以都不能将路由条目传给对方,因此互相都ping不通
4、结论
1、被认证方发送key时,发送最低ID值的key,并且携带了ID;
2、认证方接收到key后,首先在自己key chain中查找是否具有相同ID的key
如果有相同ID的key并且key相同就通过认证,key值不同就不通过认证。
如果没有相同ID的key,就查找该ID往后的最近ID的key;如果没有往后的ID,认证失败。
知识点九 被动接口:
在路由进程下通过命令passive-interface 接口名 就可以把相应接口配置成被动接口,这时这个接口就不再发送组播或者广播的更新数据包,但是会接收更新,这时为了让邻居接收到自己的更新,需要指定单播邻居,即还可以发送单播包;
将R2的f0/1接口设置为被动接口后,观察路由器R2和R3之间数据包的更新,通过抓包可以看到,只有R3(172.16.2.3)一直地在发Request请求包,但是R2并没有向R3发送UPdate更新包
|
这也就说明了RIP的接口设置为被动接口后,能正常接收数据包,不会更新广播或组播包,但是可以发送单播包,往后继续看验证
对于RIP,因为它没有邻居的概念,所以单播指邻居的时候,只需要单方向指就可以了
R2(config)#router rip
R2(config-router)#neighbor 172.16.2.3
|
|
综上实验现象分析:在配置被动接口的情况下,通过单播指邻居后,通过观察抓包可以看出R2的数据包以单播包的方式更新出去,R3这时也学到了R2传过来的路由条目,这也验证了RIP的被动接口只是不将广播和组播包更新出去,但是单播包还是可以更新出去的
知识点十:RIP的路由环路
什么情况下RIP会产生环路,RIP用什么机制来防止环路的发生?
此时R1路由表:
|
此时R2路由表:
|
抓包分析
|
|
综上实验现象分析:当RIPv2自动汇总开启的情况下,此时R1和R2都是能学到对方传过来的汇总的路由条目
对于环路实验验证不知道怎么观察出有环路的现象,但是对于RIPv2没有关闭自动汇总可能产生的环路,可以这么解释:对于R1和R2两边都有属于172.16.0.0这一主类的条目,那么在自动汇总开启的情况下,比如要去往一个目的地为172.16.3.0网段的路由,那么对于R1,它只能走172.16.0.0的路由条目去到达目标网段172.16.3.0,所以它根据R2传过来的172.16.0.0路由条目,将数据包传给R2,而对于R2它要去往172.16.3.0网段,也根据R1传过来的172.16.0.0路由条目将数据包丢给R1。这样对于去往172.16.3.0网段的数据包会在R1和R2之间传来传去,这就会产生了路由环路。
知识点十一 关于默认路由的分发:
方式一:通过让RIP自动下发默认路由
R3(config)#router rip
R3(config-router)#default-information originate
|
方式二:通过network命令把直连的默认路由通告进来;
R3(config)#router rip
R2(config-router)#network 0.0.0.0
|
方式三:
把默认路由重分发进来
R3(config)#router rip
R2(config-router)#redistribute static metric 2
|
知识点十二:静态路由出接口和下一跳的区别:
前提条件是,在以太网环境当中,我的出接口以太网口,即是f口,这两者之间才有差别,如果是在点到点环境当中,即我的出接口是s口,这两者之间是没有什么区别的
Show arp 可以查看ARP的缓存表
R1上:
① 写出接口时:
|
|
现象分析:写出接口时,对于未知的目的IP地址对应的MAC地址,将进行多次ARP,R1的ARP缓存表将出现多条目的IP地址和其对应的MAC地址,但是每个目的IP地址对应的MAC地址都是同一个MAC地址,即都是下一跳R2的入接口IP地址对应的MAC地址。即抓包发现每ping一次目标IP地址都会进行一起ARP请求和ARP代理的过程,所以写下一跳会进行多次ARP请求和ARP代理,将浪费很多的网络带宽资源。
② 写下一跳时:
|
|
现象分析:写下一跳时,可以看出去往多个下一跳只需要进行一次ARP请求,只需要请求到下一跳R2入接口IP地址所对应的MAC地址便可,不管目标IP地址有多少个,只需要将数据包发给下一跳,即R2便可。即抓包发现,无论目标地址有多少个,只有第一次ping会进行ARP请求和ARP代理,后再去ping其他目标地址的时候都不会再进行ARP请求和ARP代理。所以写下一跳可以减少ARP的请求次数,有利于减少带宽的浪费。
上述总结:指出接口的时候,我不知道你的下一跳IP地址是什么,我没办法去ARP请求你下一跳IP地址对应的MAC地址,我就只能去ARP请求你的目标IP地址,并发生ARP代理功能。所以当我知道你的下一跳IP地址了,我只要知道你下一跳IP地址对应的Mac地址是多少就可以了,因为我去访问你那4台PC机,我都要把我的数据包丢给我的下一跳,我并不需关心你四台PC机的mac地址是多少,我只需要关心你的下一跳IP地址对应的mac地址是多少。
所以第一种配置方法,每ping一次将进行一次ARP请求与一次ARP代理,并且ARP缓存表中将增加一条ARP的映射表,而第二种配置方法只是第一次ARP请求下一跳IP地址对应的MAC地址是多少,下面继续往这个方向走的数据包,将不会再进行ARP请求了,ARP缓存表也不会再出现更多的条目。
知识点十三 浮动静态路由:
浮动静态路由:是一种特殊的静态路由,通过配置比主路由的管理距离更大的静态路由,保证网络中主路由失效的情况下,能提供备份路由。但在主路由存在的情况下它不会出现在路由表中。浮动静态路由主要用于拨号备份,浮动静态路由的管理距离可变
知识点十四 路由递归:
我们静态路由配置到目标IP地址的时候,可以不写下一跳的IP地址,可以写下下一跳的IP地址也可以,前提条件是下下一跳的这个IP地址路由是可达的就行,这就是路由递归
查找路由,本质上就是要找到一个接口出去,所以去往目的地的路由,只要能递归到一个正确的出接口就可以使数据包正常转发,就能通。
你要去PING的IP地址,并且有路由,并且这条路由能够递归到一个出接口或者下一跳(网关,它来给目的MAC)。来回的路由都有,就能通。
知识点十五 路由协议的分类
===关于路由:
1.什么是路由:
名词:去往某一网段的路径;
动词:路由设备将数据包在不同网段之间的转发;
单播路由,组播路由;
2.单播路由协议的分类:
静态路由;
动态路由:内部网关路由协议,外部网关路由协议;
3.学习路由——学会归纳总结:
—>路由信息的收集(直连、静态、动态)
—>路由信息的筛选(管理距离或者优先级、度量值=>负载均衡:逐包,逐流)
—>路由表的维护(直连和静态根据出接口的状态,动态根据邻居状态)
===概念理解:IGP:内部网关路由协议
1.什么是内部网关路由协议?
在一个AS(在统一管理下一系列路由器,一定程度上等同于一个局域网)内部使用的路由协议,用于解决局域网内的IP路径选择;
2.IGP路由协议有哪些?
RIPv1 v2, EIGRP ,OSPF , IS-IS
3.IGP又分为哪几类:
有类路由协议,无类路由协议;(传递路由条目时,是否传递网络掩码)
距离矢量路由协议,链路状态路由协议;(本质区别:对网络的认知不同)
*路径矢量路由协议——BGP;
4.IE考核路由的哪些内容?
--路由相关概念、分类,一般是在笔试中考核;
--路由协议的基础配置;
--路由协议在VRF中的配置;MPLS-VPN
--路由协议的特性:被动接口、手动汇总、自动汇总、认证;
--路由协议的条目控制:路由策略;
--不同路由协议之间的重分发和过滤、汇总;
--路由协议的排错;不通:无路由,单向路由,路由环路,数据包过滤;
--环路的防止;
===静态路由:(默认路由)
1.静态路由的优势;开销小,路径好控制;
2.静态路由的配置命令;
3.静态路由的默认路由;
4.浮动静态路由、静态路由的递归;
5.静态路由的排错:不通?ping traceroute
===课后作业:
回答下列问题并实验验证:
1.简述路由协议的分类;
2.什么是AS?
3.距离矢量路由协议和链路状态路由协议的区别?
4.有类路由协议和无类路由协议的区别?
5.解释浮动静态路由和静态路由的递归,实验演示;
6.RIPv1 和 RIPv2的区别,实验验证;
7.说明RIP的工作过程,解释各种消息类型的格式字段,抓包验证;
8.RIPv1是有类的路由协议,它是如何进行路由更新的,实验验证;
9.no ip classless命令有什么作用,实验演示;
10.什么情况下RIP会产生环路,RIP用什么机制来防止环路的发生?
11.阐述RIPv1 RIPv2的手动汇总和自动汇总,实验验证;
12.RIP的认证是如何配置的,要注意什么,实验验证;
13.阐述RIP被动接口的作用,为什么需要被动接口,实验验证;
14.RIP路由协议如何通告默认路由,有几种方法,实验验证;
15.RIP网络总出现某个网络不通的现象,请说说你的思路。
RIP&静态路由笔记