来源公众号:帅地玩编程
作者:帅地
对于广播,我相信在现实生活中我们时常都能接触到,例如学校一言不合就响起了校歌,搞的全校的人都能够听到,想假装没听到都不行。
假如我们把学校比作一个局域网的话,某台主机发起了一个广播,意味着局域网内的其他所有主机都会收到这个广播,那发起广播的主机是如何选择路径来给其他主机发送广播分组的呢?考虑下面由几个节点组成的网络:
![dc40c90431d206aa68cd3b7b24688c6b.png](https://img-blog.csdnimg.cn/img_convert/dc40c90431d206aa68cd3b7b24688c6b.png)
假如节点 R1 要做一个广播给 R2, R3, R4发广播分组,显然,一种很简单的方法就是R1给 R2, R3, R4三个节点分别发一次广播分组,这意味着R1一共要发送三次同样的广播分组。
![6887461e6352ce4e8a2c6706eeccbcce.png](https://img-blog.csdnimg.cn/img_convert/6887461e6352ce4e8a2c6706eeccbcce.png)
大家想一个问题:这种发送方式你觉得合理吗?
是的,这种发送方式在实现上很简单,源节点(R1)每次带上目的节点的地址,然后发送给它就行了。
不过这种方式在效率上是极低的,例如,R1发送的这三个广播分组都会经过同一段链路(R1-R2这段链路),而且R2要是再连接上n个节点的话,代表着这R1需要再发送n次广播分组,这n个报文也会经过同一段链路。
解决方法
为了解决这个问题,我们或许可以这样做:就是R1把广播分组发给他的邻居节点R2,然后R1就不管了,R2再把报文发送给他的所有邻居节点R3, R4(除了从其接收该分组的那个邻居R1)