📄 itpub论坛 - rfc 1058 路由信息协议(routing information protocol).htm
字号:
<br />- 表示路径最近有改变的标志。被叫做“路径改变标志(route change flag)”。
<br />
<br />- 路径的有效时间。详见3.3节。
<br />
<br />主机使用与协议无关的信息建立直接连接网络的各项。在RIP中,直接连接网络的尺度永远是1。复杂的尺度可以用来表示一些特殊的网络,如不同的带宽和可靠性。
<br />
<br />也可以允许系统管理员输入额外的路径,这常是因为主机或网络在路由系统范围之外。
<br />
<br />除了在初始状态下的各项外,其他到达目标的项是由下面描述的算法增加和更新的。
<br />
<br />为了建立完整的路由信息,系统中的每个网关都要参与。不是网关的主机不一定需要,但很多实现都允许这些主机接收路由信息来维持路由表。
<br />
<br />3.1. 信息格式
<br />
<br />RIP是基于UDP的协议,使用RIP的主机都有一个路由进程在UDP端口520上发送和接收信息。所有直接发送到其他主机RIP进程的信息都使用目标端口520;所有的路由更新信息使用源端口520。主动路由更新信息的源、目标端口都是520;回应信息的目的端口使用发送者的源端口。特别的查询和调试信息可以不使用源端口520,但目标端口需使用520。
<br />
<br />协议中允许有“沉默”RIP进程。沉默进程是指平常不发送任何信息,但从其他主机接收信息。沉默RIP常被用于不作为网关的主机,它们需要接收路由信息来监视本地网关以维持正确的路由表。(见[5]描述了主机了解网络拓扑的多种方法)当网关只剩下一个网络连接而失去了其他连接的时候,就变的沉默了,因为这时它们已不再是网关。
<br />
<br />当然,在邻居网关需要依赖这些信息来判断失效的网络是否恢复的时候,不应当使用沉默。(伯克莱4使用路由包来监视点对点连接的操作。)
<br />
<br />包格式见图1。
<br />
<br />包格式中包含了网络信息,各域的大小被按字节写成。除非特别指出,域为二进制整数,按重要字节在前的Internet次序。
<br />
<br /> 0 1 2 3 3
<br /> 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
<br /> +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
<br /> | command (1) | version (1) | must be zero (2) |
<br /> +---------------+---------------+-------------------------------+
<br /> | address family identifier (2) | must be zero (2) |
<br /> +-------------------------------+-------------------------------+
<br /> | IP address (4) |
<br /> +---------------------------------------------------------------+
<br /> | must be zero (4) |
<br /> +---------------------------------------------------------------+
<br /> | must be zero (4) |
<br /> +---------------------------------------------------------------+
<br /> | metric (4) |
<br /> +---------------------------------------------------------------+
<br /> .
<br /> .
<br /> .
<br />从地址簇标识到尺度的部分可以被重复25次。IP地址就是4字节的Internet地址。
<br />
<br /> 图1. 包格式
<br />
<br />每个包包含一个命令(command)、版本号(version)和可能的参数。本文档描述的是协议的版本1。细节的版本描述见3.4节。命令域表示包的用途,这里汇总了版本1中的命令:
<br />
<br />1 - 请求(request) 请求被响应者发送其全部或部分路由表。
<br />
<br />2 - 回应(response) 包含发送者的全部或部分路由表;可以是响应请求;或是更新信息。
<br />
<br />3 - 跟踪开(traceon)废止,忽略。
<br />
<br />4 - 跟踪关(traceoff)废止,忽略。
<br />
<br />5 - 保留(reserved) 被Sun系统使用,可以被忽略。后继版本的新命令会从6开始。
<br />
<br />在请求和回应中,包中的其他内容是目标的信息。列表中的每一项都包括了目标网络或主机,以及它们的尺度。这一包格式可以使RIP能够处理多种协议的路由信息。不同的协议使用不同的协议簇号(address family identifier),本文档只描述IP协议,其协议簇号为2。(还没有关于其他类型的地址。)但为了将来,需要忽略不同协议簇号的信息(这些项的大小和IP协议一样)。在过滤掉不支持信息后开始信息处理。IP地址是4字节的,尺度用来说明目标,其值在1到15之间;对不可达的目标,尺度是16。由一个网关发来的路径总将取代同一网关发来的到达同一目标的路径。
<br />
<br />包最大可以有512字节,这只包含前面描述的部分,不包括IP和UDP头。网络信息可以被分为多个包传送,不必须连续,包可以被独立处理而最终得到正确结果。
<br />
<br />3.2. 考虑地址
<br />
<br />就象在第2章所说,距离向量路由可以用来描述独立的主机或网络,RIP协议对此都允许。在请求、回应信息中出现的目标可以是网络、主机或表示默认路径的特殊值。通常何种目标被允许取决于路由策略,很多网络不允许路由独立主机信息。如果给定网络上的每一个主机都可以通过同一个网关到达,也就没有必要使用主机路由。但在点对点连接中,可能需要网关到达特定的主机。是否需要这一功能取决于系统的地址和路由。如果不支持主机路由,将丢弃这一类回应(见3.4.2节)。
<br />
<br />RIP在包格式中不区分各类地址。下面几种都被标为“地址(address)”:
<br />
<br />主机地址
<br />子网地址
<br />网络地址
<br />0,作为默认路径
<br />
<br />每个RIP的实体都使用更精确匹配的信息来转发数据。也就是,当向一个目标转发数据时,先检查是否有相匹配的主机地址;再检查是否匹配已知的子网或网络地址;最后,如果没有匹配,才使用默认路径。
<br />
<br />当RIP接收到主机评估信息时,它将根据是否知道该网络的子网掩码来作出决定。如果知道的话,就可以就此知道地址的含义。如128.6.有着子网掩码255.255.255.0,那么128.6.0.0是网络地址;128.6.4.0是子网地址;128.6.4.1是主机地址。但当不知道子网掩码时,就会产生含糊。如果主机部分为非0的话,将分不清到底是主机还是子网地址。没有子网掩码,子网地址就无法识别,地址会被理解为主机地址。为了避免这样,不能向不知道正确子网掩码的主机发送子网信息。主机一般只知道直接连接网络的子网掩码,所以,除非做了修正,不应当向网络外发送该网络的子网信息。
<br />
<br />这种过滤发生在划分子网网络的边界,这些网关连接两个网络。在被子网化的网络里,每个子网被对待为独立的网络,每个子网的路由项由RIP传送。但边界网关向其他网络仅发送表示该整个网络的一项。也就是说,边界网关向不同的邻居发送不同的信息;对连接在子网化网络中的邻居,发送所有直接相连的子网信息;对其他网络的邻居,仅发送表示整个网络的一项,其尺度一般是该网关连接的子网中最小的尺度。
<br />
<br />同样,边界网关不应向其他网络发送其直接连接网络中的主机路径。这些路径应当被汇总在一条网络路径中发送到其他网络。我们不需要知道“远方”主机的路径(是指不在直接连接网络上的主机)。这些路径指出网络上的一部分主机可达,而另一部分不可达。
<br />
<br />特殊的地址0.0.0.0被用来描述为默认路径。当RIP更新不能包括所有网络的路径,或着一个或多个直接相连的网关被用来处理所有没有列出的网络时可以使用默认路径。网关可以产生地址为0.0.0.0的项,好象有这么一个网络连接一样。如何产生0.0.0.0的项是由实现者决定。通常,系统管理员将为0.0.0.0项指定一个网关,但也有其他方法。如可以认为宣告EGP的网关为默认网关,这允许网络管理员为各项选择尺度。当有多个网关的时候,可以选择一个最好的。 0.0.0.0的项在RIP中被和其他项一样对待,只不过用来转发不匹配路由表中各项的目标。这一实现不是必须的,但被极力推荐。不支持0.0.0.0的实现必须忽略这一项,这些网关不能将这一项加入到自己的RIP更新中。管理员需要注意0.0.0.0的路由没有被传播到不应该的地方。通常,每个自治系统都有自己首选的默认路由,0.0.0.0项不应被传输过自治系统边界。但这不是本文档论述的范围。</font></p>
<p><font face="verdana, arial, helvetica" size="2" ><br>__________________<br>不用告诉问路者最近的路,而要告诉他最好找的路
<br />email : raymon@itpub.net</font></p>
<p></p>
<p align="right"><font face="verdana,arial,helvetica" size="1" >
<a HREF="report.php?s=&postid=142689"><IMG SRC="images/warn.gif" BORDER=0 ALT="向版主反映这个帖子"></A><a href="postings.php?s=&action=getip&postid=142689"><img src="images/ip.gif" border=0 alt="查看马儿快跑 的IP地址"</a></font></p>
</td>
</tr>
<tr>
<td bgcolor="#F1F1F1" width="175" height="16" nowrap><font face="verdana,arial,helvetica" size="1" ><img src="images/off.gif" border="0" alt="马儿快跑 不在线" align="absmiddle"> <img src="images/posticon.gif" border="0" alt="旧帖">
02-04-25 <font color="#666686">13:46</font></font></td>
<td bgcolor="#F1F1F1" width="100%" valign="middle" height="16">
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr valign="bottom">
<td><font face="verdana,arial,helvetica" size="1" >
<a href="member.php?s=&action=getinfo&userid=10" target="_blank"><img src="images/profile.gif" border="0" alt="点这里查看 马儿快跑 的个人资料"></a> <a href="private.php?s=&action=newmessage&userid=10"><img src="images/sendpm.gif" border="0" alt="点这里给 马儿快跑发送一条悄悄话"></a> <a href="search.php?s=&action=finduser&userid=10"><img src="images/find.gif" border="0" alt="查找 马儿快跑 的更多帖子"></a> <a href="member2.php?s=&action=addlist&userlist=buddy&userid=10"><img src="images/buddy.gif" border="0" alt="将 马儿快跑 添加到你的好友列表"></a>
<a href="http://search.tencent.com/cgi-bin/friend/user_show_info?ln=35945104" target=_blank><img src="images/oicq.gif" alt="马儿快跑 的OICQ号码:35945104" border=0></a> <!-- $ post[aimicon] --> <!-- $ post[yahooicon] -->
</font></td>
<td align="right" nowrap><font face="verdana,arial,helvetica" size="1" >
<a href="editpost.php?s=&action=editpost&postid=142689"><img src="images/edit.gif" border="0" alt="编辑/删除"></a>
<a href="newreply.php?s=&action=newreply&postid=142689"><img src="images/quote.gif" border="0" alt="引用/回复"></a>
</font></td>
</tr>
</table>
</td>
</tr>
</table>
</td></tr></table>
<!-- spacer --></td><td width="10"><img width="10" height="1" src="images/space.gif" alt=""></td></tr></table>
<table bgcolor="#FFFFFF" width="100%" cellpadding="0" cellspacing="0" border="0"><tr><td width="10"><img width="10" height="1" src="images/space.gif" alt=""></td><td width="100%"><!-- spacer -->
<table cellpadding="0" cellspacing="0" border="0" bgcolor="#FFFFFF" width="100%" align="center"><tr><td>
<table cellpadding="4" cellspacing="1" border="0" width="100%">
<tr>
<td bgcolor="#DFDFDF" width="175" valign="top" nowrap>
<a name="post142693"></a>
<font face="verdana, arial, helvetica" size="2" >马儿快跑</font><br>
<font face="verdana,arial,helvetica" size="1" >版主</font><br>
<img src="avatar.php?userid=10&dateline=1008034726" border="0" alt=""><p>
<font face="verdana,arial,helvetica" size="1" >注册日期: 2001 Sep<br>
来自: 苏州<br>
发帖数量: 719<br>
<!--论坛积分:--></font></td>
<td bgcolor="#DFDFDF" width="100%" valign="top">
<font face="verdana,arial,helvetica" size="1" > </font>
<p><font face="verdana, arial, helvetica" size="2" >3.3. 记时器
<br />
<br />本节讨论被记时器触发的所有事件。
<br />
<br />每30秒,输出进程向每个邻居网关发送完整的响应。当一个网络上有多个网关时,它们往往会在趋向于在同时发送路由更新,这在进程启动后每30秒发生。但同步发送更新信息有缺点,这会在网络中产生不必要的碰撞和广播。通常有两种预防方法。
<br />
<br />- 用独立的时钟时钟产生30秒的更新,而与系统负载、更新花费的时间无关。
<br />
<br />- 将30秒添加小范围的偏移。
<br />
<br />每个路径都有两个时间相联系,“超时(timeout)”与“垃圾收集时间(garbage-collection time)”。在超时后,路径将无效,但还会在路由表中存在一小段时间,使邻居能够发现路径无效。当垃圾收集时间过后,路径从表中删除。
<br />
<br />当路径建立时,超时记时器开始记时,如有收到该路径的更新信息则重置记时器。如果记时到180秒,说明路径终止,删除进程开始。
<br />
<br />有两个原因可
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -