IP基础--4.RIP协定
Routing Information protocol 顾名思义是给封包路由所用的它通常是用於router和router之间的资料交换。
不过在我们讨论这个协定之前先让我们重温一下router的功用。因为IP Routing可以说是internetworking的最重要和最杂的概念了解清晰一点绝对是有利无害的。
重温router
在前面的“网路概论”里面我们已经接触过bridge和router了。我们知道Bridge是工作於Data Link层级的也就是说它在决定是否转送封包的时候是以目的地硬易做图址为依据而这些硬体地址是不能改变的。只要封包前往的区段不是在相同的来源区段就会进行转送。但router则工作於Network层级这带给我们一个非常有用的方便就是可以通过人手来指定网路位址因为这些地址不同硬体地址是可以改变的。在一个连接1000台主机的网路里面bridge可能要追踪1000个节点才能做出决定但使用router只需追踪十来个或更少的地址(或网路地址)就可以了。
而真正令到router更具扩充性的原因是bridge需要检测网路上每一个封包以决定是否需要转送而router只需要在意直接传给自己的封包因为发送端在封包送出之前已经决定好封包是否需要转送了(前面讨论ARP的文章已经为你解释了这个动作)。
由此可见router的确比bridge高效得多。而且bridge会转送所有的广播封包而router则有条件地和有选择性的对广播封包进行转递同时也会丢弃不明地址的封包这样可以大大减少网路的交通流量。
路由表格
其实在每一台机器上面有着各自的一个Routing Table记录着一些路由资讯的如果您在您的Windows98下面输入
C:\>route PRINT
Active Routes:
Network Address Netmask Gateway Address Inte易做图ce Metric
0.0.0.0 0.0.0.0 192.168.0.17 192.168.0.15 1
127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1
192.168.0.0 255.255.255.0 192.168.0.15 192.168.0.15 1
192.168.0.15 255.255.255.255 127.0.0.1 127.0.0.1 1
192.168.0.255 255.255.255.255 192.168.0.15 192.168.0.15 1
224.0.0.0 224.0.0.0 192.168.0.15 192.168.0.15 1
255.255.255.255 255.255.255.255 192.168.0.15 192.168.0.15 1
您就可以看到机器目前所使用的路由表格了。上面记录了有哪些网路它们的netmask和通往该网路的router地址以及使用的网路界面还有一个 Metric号码(这个让我们待会再说)。如果您看不懂哪些网路号码和IP号码在下建议你回卷到前面的IP地址章节里面复习一下否则您会越看越糊涂。而且我也不打算重解释这些号码的含义了。
我们从第一行可以知道该机器的Default Gateway为192.168.0.17因为这行的网路和mask都全部为0也就概指所有网路了也就是说凡是有封包要传给路由表格所不包括的网路其封包就会传给Default Gateway了。另外我们在第三行看到机器所属的网路和其gateway指向自己本身(您可以用winipcfg来查看机器本身的IP来印一下)。这里我们使用gateway这个词其实指的就是router如果要了解这两者的差别前面的“网路概论”也已经说过了。
上面只是一个非常简单的路由表格而已如果机器所连的网路越多安装的界面越多路由表格也越杂。如果您的机器有拨接连线当您成功连上ISP之後您再跑一次 route PRINT你就会发现多了通往ISP网路的路由设定了而且Default Gateway也使用了ISP那边的IP。原因是使用拨接连线内定是会使用Remote Default Gateway的除非您网路本身连得上internet否则您就无法和外面的世界沟通了。不过如果网路本身连得上internet还打去ISP干啥呢
建立起自己的router
让我们先看看router是怎麽工作的
分层级IP的路由
指定一个IP地址
if 我有这个目的地的路由
从路由表中取得下一站的地址
将封包传给下一站
else
决定目的地网路号码
if 我有这个网路的界面
决定我的界面上这个网路的子网路遮罩
else
从这个网路的层级决定它的子网路遮罩
endif
利用遮罩套在目的地位址上取得子网路
if 我有这个子网路的界面
将封包直接送往目的地
else if 我的路由表格包含这个子网路的记录
从路由表格中取得下一站的地址
将封包传给下一站
else if 我的路由表格中有一笔预设路由
从路由表格中取得下一站的地址
将封包传给下一站
else
宣这个目的地无效
endif
endif
不分层级IP的路由
指定一个IP地址
在路由表格中寻找与此地址相符的最长遮罩预定值
从路由表格中取得下一站的地址
将封包传给下一站
if 对比不成功
宣这个目的的无法达到
endif
看上去不分层级的路由比分层级的路由简单得多。而事实上却是相反的这需要您在 router 上进行更杂的设定。
如果您的机器有两片网卡被设定为不同的网路然後它们各连接另外一台或多台机器那麽您自己也可以亲身的验一下router的工作哦很简单只要您在那台机器上面安装一个NT或Linux确定两张网卡都设定好并且同时工作然後在NT上面的网路设定之TCP/IP协定内容里将“路由”之“启用IP转送”打勾够就可以了在Linux上面呢只要你确定IP Forwording被成功的编进Kernel以及被设定为启动状态也就可以了。
下面先让我们看看两个网路之间的路由设定是怎样的
由上图我们可以看到192.168.0.0这个网路的所有机器其gateway都指向192.168.0.254这个IP也就是router上面连接到这个网路的界面。同样192.168.1.0这个网路其gateway则是192.168.1.254。
通常一个router可以同时连接好几个网路只要界面设定好就没问题了。同时许多网路也有超过一个router和其它的网路连接那麽各主机的路由表格就要一一设定好通往各网路的gateway了。如果您还记得“网路概论”里介绍的bridge和router之间的分别的话您应该知道router还可以连接不同形态的网路呢
由上图我们可以看到当有一个封包从网路A经过网路B送到网路C的时候其Software Address(即IP地址)永远不变但Hardware Address(即MAC地址)却随着所经网路而有所不同。如果您对上一章所说的ARP协定没忘记的话应该知道为什麽会如此。要维护这个router的路由资料相信是一个很简单的事情。
如果这两个网路往外也只连接不多的网路各router上面的路由资料也不会很杂这样的情况之下我们可以使用静态路由也就是以手动方式为每台机器设定事先计算好的路由。静态路由的主要好处是它的可预测性而且对router或网路连线做成的负担不多所占频宽较少。
当我们在internet上面routing的时候所经过的router当然会多很多啦下面让我们看看一个简化了的internet路由图示
正如您可能想像的在internet的环境中要保存一份完整的路由表格殊非轻易而且您也不可能尽知道所有网路的路由路径。那麽我们把这些路由资料的更新交给了router本身去管理了这样router和router之间就需要一些协定来交换信息了。
事实上供router使用的协定也有很多种且也分为Exterior Gateway Protocol 和 Interior Gateway Protocol两大类。在Internet上面负责大型网路之间的路由使用的是Exterior协定最常使用的是BGP(Border Gateway Protocol)协定。相对的在比较少的网路之间使用的会是Interior协定其中最普遍的是RIP协定。
路由资料交换
在众多的路由协定中RIP可以说是最简单和最原始的协定了它是一种所谓的距离向量(distance-vector)协定。使用RIP的路由器凡是它知道如何路由的目的地都会被罗列出来同时也列出到达各目的地的距离。至於距离的远近则使用一个metric数值来表示数值越高距离越远。这个metric值通常是以hop数的多寡来定但其它协定或许还会参考一些杂的网路成本计算诸如网路负载频宽延迟等等其它相关因素。当路由器发现有多条路径可以到达目的地的时候就会参考这个metric值了其中最低数字的往往被当成是最佳路径。
正如我们知道路由协定是供路由器和路由器之间交换路由资料用的。当路由器上面的路由资讯改变的时候就会向其相邻的路由器送出更新信息。用RIP协定的路由器通常会每隔30秒就会更新一次其路由表格如果其路由资讯是从别的路由器“学”来的话就会自动的将metric增加一个数值当这个数值达到“无穷”值的时候(通常会被设定为16)就表示这条路径为“unreachable”同时也会将之从路由表中删除。
下面让我们以一个小型路由网路的例子来更好的看看RIP是怎样进行路由表格更新的(我强烈建议您将这图画出来以备後面讨论时参考所需)
当路由器刚设定好并连接上网路的时候各自都有一个“初始路由表”里面只包含与其直接相连的网路的路由信息
Router 1
Router 2
Router 3
Router 4
Router 5
Router 6
Net ID M,G Net ID M,G Net ID M,G Net ID M,G Net ID M,G Net ID M,G
1
3 1,1
1,1 1
2
4 1,2
1,2
1,2 2