如果你读过HowStuffWorks的文章18新利最新登入18新利最新登入路由器的工作原理,那么你知道路由器是用来管理网络流量和找到最好的路线发送数据包。但是你有没有想过如何路由器呢?18新利最新登入路由器需要一些关于网络状态信息,以做出决定关于如何以18luck手机登录及在哪里发送数据包。18新利最新登入但是他们18新利最新登入如何收集这些信息?18luck手机登录
恰恰在这篇文章中,我们会发现信息在确定使用路由器发送一个数据包。18luck手机登录
广告
如果你读过HowStuffWorks的文章18新利最新登入18新利最新登入路由器的工作原理,那么你知道路由器是用来管理网络流量和找到最好的路线发送数据包。但是你有没有想过如何路由器呢?18新利最新登入路由器需要一些关于网络状态信息,以做出决定关于如何以18luck手机登录及在哪里发送数据包。18新利最新登入但是他们18新利最新登入如何收集这些信息?18luck手机登录
恰恰在这篇文章中,我们会发现信息在确定使用路由器发送一个数据包。18luck手机登录
广告
路由器使用路由算法找到目的地的最佳路线。当我们说“最佳路线,“我们考虑参数的数量啤酒花(旅行一个数据包从一个路由器或中间点到另一个网络中的),包传输的延时和通信成本。
基于路由器收集网络18新利最新登入的结构信息和分析信息指定的最佳途径,我18luck手机登录们有两个主要的路由算法:全球路由算法和分散式路由算法。在分散式路由算法,每个路由器的信息路由器直接连接到——它不知道网络中的每一台路由器。18luck手机登录这些算法也被称为DV距离向量路由选择算法。在全球路由算法,每个路由器都有完整的信息对所有其他路由器在网络和交通网络的状态。18luck手机登录这些算法也被称为LS(链接状态)算法。在下一节中我们将讨论LS算法。
广告
在LS算法,每个路由器必须遵循以下步骤:
的迪杰斯特拉算法经过这些步骤:
广告
我们将使用这个算法为例在下一页。
广告
这里我们想找到之间的最佳路径和E(见下文)。你可以看到有六个之间可能的途径和E(安倍王牌,ABDE ACDE, ABDCE, ACDBE),很明显,ABDE是最好的路线,因为它的重量是最低的。但生活并不总是那么容易,还有一些复杂的情况下,我们必须使用算法来找到最好的路线。
最后,E是目的地,所以我们停止在这里。
广告
我们在结束!现在我们必须确定路线。前面的节点的E D,和之前的节点D是B, a和B之前的节点是ABDE所以最好的途径。在这种情况下,总重量是多少4(1 + 2 + 1)。
尽管这个算法是有效的,它是如此复杂,可能需要很长时间的路由器来处理它,和效率的网络失败。另外,如果其他路由器路由器给了错误的信息,所有的路由决策将是无效的。18luck手机登录更好地理解这个算法,这是源程序由C:
#定义MAX_NODES 1024 / *最大数量的节点* / #定义无穷1000000000 / *数量大于每一个最大路径* /整数n, dist [MAX_NODES] [MAX_NODES];/ * dist[我][j]是距离我* /空白shortest_path (int, int, int[]道路){结构状态{/ * * / int前任工作的路径;/ *前一节点* / int长度/ *长度从源到这个节点* / enum{永久性的,试探性的}标签/ *标签状态* /}[MAX_NODES];int I、k、最小值;结构状态* p;(p =状态[0];p <国家[n]; p + +){/ *初始化状态* / p - >前任= 1 p - >长度=无穷大p - >标签=初步;}状态[t] . length = 0;国家[t]。标签=永久;k = t; /*k is the initial working node */ do{ /* is the better path from k? */ for I=0; I < n; I++) /*this graph has n nodes */ if (dist[k][I] !=0 && state[I].label==tentative){ if (state[k].length+dist[k][I] < state[I].length){ state[I].predecessor=k; state[I].length=state[k].length + dist[k][I] } } /* Find the tentatively labeled node with the smallest label. */ k=0;min=INFINITY; for (I=0;I < n;I++) if(state[I].label==tentative && state[I].length < min)=state[I].length; k=I; } state[k].label=permanent }while (k!=s); /*Copy the path into output array*/ I=0;k=0 Do{path[I++]=k;k=state[k].predecessor;} while (k > =0); }
广告
DV算法也被称为bellman路由算法和Ford-Fulkerson路由算法。在这些算法中,每个路由器的路由表显示了它任何目的地的最佳路线。18新利最新登入路由器J的典型图形和路由表显示在页面的顶部。18新利最新登入
如表所示,如果路由器J想要包18新利最新登入路由器D,它应该寄给路由器H .当数据包到达路由器H,它检查自己的表,并决定如何将数据包发送到D。
广告
在DV算法中,每个路由器必须遵循以下步骤:
最重要的一个问题,DV算法被称为“数到无穷大”。让我们来看看这个问题用一个例子:
想象一个网络图如下所示。18新利最新登入当你看到这张图,只有一个一个和网络的其他部分之间的联系。在这里你可以看到所有节点的图和路由表:
现在想象一下,A和B之间的联系被切断。在这个时候,纠正其表。具体的时间后,路由器交换他们的表,所以B接收C的路由表。自C不知道发生了什么事A和B之间的联系,它说它有一个链接到一个2的重量(1 C B,和1 B——它不知道B没有链接),B接收这个表并认为有一个单独的C和之间的联系,所以它纠正了表和变化无穷3 (1 B, C,和2 C, C说)。再次,路由器交换他们的桌子。当C收到B的路由表,它看到B改变了链接的重量从1到3,所以C更新表和链接的重量变化4 (1 C B和3 B, B表示)。
这个过程循环直到所有节点发现链接的权重是无穷。这种情况如下表所示。18新利最新登入通过这种方式,专家说DV算法有一个收敛速度慢。
解决这个问题的一个方法是向邻居路由器只发送信息不专属链接到目的地。18luck手机登录例如,在这种情况下,C B一个不能发送任何信息,因为B是唯一的方法。18luck手机登录
广告
如你所见,在LS和DV算法,每个路由器必须节省一些其他路由器的信息。18luck手机登录当网络规模的增长,网络中路由器的数量增加。因此,路由表的大小增加,,路由器不能有效地处理网络流量。我们使用层次路由为了克服这一问题。让我们检查这个问题用一个例子:
我们使用DV算法节点之间找到最佳路线。在下面的情况描述中,每个节点的网络与17保存路由表记录。这是一个典型的图和路由表:
广告
在分层路由,路由器在团体被称为分类地区。每个路由器只有关于路由器的信息在自己的地区和其他地18luck手机登录区没有路由器的信息。所以路由器只保存一条记录在表其他地区。在这个例子中,我们有我们的网络分为五个地区(见下文)。
如果想发送数据包到任何路由器在区域2 (D、E、F或G),将它们发送到B,等等。正如你所看到的,在这种类型的路由表可以概括,因此提高了网络效率。上面的例子展示了两级分层路由。18新利最新登入我们也可以使用三个或四层分层路由。
在三级层次路由、网络划分为若干集群。每个集群由一个地区,每个地区都包含一个数字或路由器。层次路由广泛用于网络路由和利用几种路由协议。
在路由和相关主题的18luck手机登录更多信息,请查看下一页的链接。
广告
请复制/粘贴以下文本正确引用HowStuffWorks.com的这篇文章:18新利最新登入
广告