Algorithm 网络上的泛洪算法

Algorithm 网络上的泛洪算法,algorithm,networking,flooding,Algorithm,Networking,Flooding,因此,我不得不为一个课程项目模拟原始的泛洪算法,我想澄清并确认一些想法,因为在互联网上找到我想要的东西似乎真的很困难(所以我一定是做错了什么事) 无论如何,据我所知,泛洪算法是当一个节点想要向目的地发送一系列数据包时,将每个数据包发送到每个连接的节点。然后,这些接收节点通过向除发送原始数据包的节点之外的所有连接节点发送其接收的数据包的副本来重复该过程。以此类推,直到数据包到达目的地。因此,基本上,该算法确保了数据包将在充斥网络的同时到达目的地;这就是名字。 这就是我向教授解释的: 1) 我假设生

因此,我不得不为一个课程项目模拟原始的泛洪算法,我想澄清并确认一些想法,因为在互联网上找到我想要的东西似乎真的很困难(所以我一定是做错了什么事)

无论如何,据我所知,泛洪算法是当一个节点想要向目的地发送一系列数据包时,将每个数据包发送到每个连接的节点。然后,这些接收节点通过向除发送原始数据包的节点之外的所有连接节点发送其接收的数据包的副本来重复该过程。以此类推,直到数据包到达目的地。因此,基本上,该算法确保了数据包将在充斥网络的同时到达目的地;这就是名字。 这就是我向教授解释的:

1) 我假设生成的数据包将有一个跃点计数器,它的值对于每个数据包都是相同的,在每个访问的节点上都会减小,当它达到0时,数据包将被丢弃。我还假设该值将取决于网络的大小,他同意,但没有说明网络的大小如何影响它。你知道它的直径吗?有人能帮我吗

2) 一个节点在自己身上保存一份他们收到的数据包的副本(为什么?如果一个节点没有发送回确认信息就重新发送?),当跃点计数器达到0时,数据包从网络上掉下来,但是当一个数据包到达一个已经有它的副本的节点时,会发生什么?我假设节点删除了它,因为它有一个副本,并且逻辑上已经将它发送给了它的所有邻居,但我不确定。有人能澄清一下吗

3) 所有节点都有其可容纳的最大数据包容量。那么,当一个节点达到最大容量时,它会停止工作,不接受进一步的数据包或以FIFO方式丢弃数据包?我假设第一个,因为项目的目标之一是估计哪些节点将首先被淹没。但实际发生了什么?连接到它的节点不断发送数据包,只是没有得到确认,因为它丢弃数据包或发送一个不再接收任何数据包的信号,并且,我不知道,将路由表中的开销更改为一个值,这意味着没有连接/或无限开销,所以它们不再发送任何东西

4) 我还忘了问,生成数据包的源节点呢?它也保存副本吗?我想是的,但它不是最有可能首先泛洪的节点,因为它会保留生成的每个数据包的副本吗?我可能想得太多了

1) [跃点计数器值]

它需要足够大才能穿过网络。它基本上是数据包在通过网络的最长路径上遇到的中间节点的数量

2) 当一个数据包到达一个已经有它的副本的节点时,是什么 发生了什么

它掉了

3) 所有节点都有其可容纳的最大数据包容量。那么什么时候 节点达到最大容量时“停止”工作且不接受 以先进先出方式进一步分组或丢弃

不接受新数据包。无处放置:它仍然有未处理的数据包排队。这不是先进先出

4) 我还忘了问,生成 小包?它也保存副本吗?我想是的,但不会吧 是最有可能首先泛洪的节点,因为它将保留 每一个数据包的生成时刻?我可能想得太多了 它

如果源节点正在收集确认,它将保留每个数据包,直到它被确认,因此它可以实现重试算法


了解您谈论的是IP、UDP或TCP,还是仅仅是数据链路层会有很大帮助。

对于2):如果数据包已经复制到节点上,并且它接收到相同的数据包,他必须丢弃它。如果没有,这是一个无限循环,你将永远无法离开这里。(我跟你的逻辑思考是一样的)。(这不是很有建设性,但它证实了你一开始的想法)@Depado:不可能有无限循环,因为数据包的跳数有限。不过,这确实缓解了网络的压力。非常感谢。实际上它没有出现,它只是一个用面向对象语言(JAVA)模拟泛洪算法的项目。。。我一般都会想得太多,所以我试着把我要做的事情画得很清楚。。。更可能的是,他说的是TCP,因为它是在那次讲座之后宣布的,我们处理数据包,但他并没有说任何关于确认之类的事情……关于最大容量?节点存储它接收的数据包的副本,然后进行传播,但它什么时候删除它存储的那些副本?@AndreasAndreou当它们被读入应用程序时,它们将从套接字接收缓冲区中删除。