zoukankan      html  css  js  c++  java
  • <组播随笔>

    <一>、组播的作用

    1.【单播】:
    主机之间一对一的通讯模式,网络中的交换机和路由器对数据只进行转发不进行复制。如果10个客户机需要相同的数据,则服务器需要逐一传送,重复10次相同的工作。但由于其能够针对每个客户的及时响应,所以现在的网页浏览全部都是采用单播模式,具体的说就是IP单播协议。网络中的路由器和交换机根据其目标地址选择传输路径,将IP单播数据传送到其指定的目的地。(下图中一个箭头代表一份报文)


    单播的优点:
    1)服务器及时响应客户机的请求
    2)服务器针对每个客户不通的请求发送不通的数据,容易实现个性化服务

    单播的缺点:
    1)服务器针对每个客户机发送数据流,服务器流量=客户机数量×客户机流量;在客户数量大、每个客户机流量大的流媒体应用中服务器不堪重负。
    2)现有的网络带宽是金字塔结构,城际省际主干带宽仅仅相当于其所有用户带宽之和的5%。如果全部使用单播协议,将造成网络主干不堪重负。现在的P2P应用就已经使主干经常阻塞。而将主干扩展20倍几乎是不可能。

    2.【广播】
    主机之间一对所有的通讯模式,网络对其中每一台主机发出的信号都进行无条件复制并转发,所有主机都可以接收到所有信息(不管你是否需要),由于其不用路径选择,所以其网络成本可以很低廉。有线电视网就是典型的广播型网络,我们的电视机实际上是接受到所有频道的信号,但只将一个频道的信号还原成画面。在数据网络中也允许广播的存在,但其被限制在二层交换机的局域网范围内,禁止广播数据穿过路由器,防止广播数据影响大面积的主机。(下图中一个箭头代表一份报文)


    广播的优点:
    1)网络设备简单,维护简单,布网成本低廉
    2)由于服务器不用向每个客户机单独发送数据,所以服务器流量负载极低。

    广播的缺点:
    1)无法针对每个客户的要求和时间及时提供个性化服务。
    2)网络允许服务器提供数据的带宽有限,客户端的最大带宽=服务总带宽。例如有线电视的客户端的线路支持100个频道(如果采用数字压缩技术,理论上可以提供500个频道),即使服务商有更大的财力配置更多的发送设备、改成光纤主干,也无法超过此极限。也就是说无法向众多客户提供更多样化、更加个性化的服务。
    3)广播禁止允许在Internet宽带网上传输。

    3.【组播】:
    主机之间一对一组的通讯模式,也就是加入了同一个组的主机可以接受到此组内的所有数据,网络中的交换机和路由器只向有需求者复制并转发其所需数据。主机可以向路由器请求加入或退出某个组,网络中的路由器和交换机有选择的复制并传输数据,即只将组内数据传输给那些加入组的主机。这样既能一次将数据传输给多个有需要(加入组)的主机,又能保证不影响其他不需要(未加入组)的主机的其他通讯。(下图中一个箭头代表一份报文)


    组播的优点:
    1)需要相同数据流的客户端加入相同的组共享一条数据流,节省了服务器的负载。具备广播所具备的优点。
    2)由于组播协议是根据接受者的需要对数据流进行复制转发,所以服务端的服务总带宽不受客户接入端带宽的限制。IP协议允许有2亿6千多万个组播,所以其提供的服务可以非常丰富。
    3)此协议和单播协议一样允许在Internet宽带网上传输。

    组播的缺点:
    1)与单播协议相比没有纠错机制,发生丢包错包后难以弥补,但可以通过一定的容错机制和QOS加以弥补。
    2)现行网络虽然都支持组播的传输,但在客户认证、QOS等方面还需要完善,这些缺点在理论上都有成熟的解决方案,只是需要逐步推广应用到现存网络当中

    <二>、组播的样式

    A)地址范围:

    组播IP地址范围:224.0.0.0-239.255.255.255

    组播MAC地址范围:01:00:5E:00:00:00~01:00:5E:7F:FF:FF

    B)地址映射关系:

    组播地址与MAC地址的映射规则:

    <三>、组播的应用场景

    A)在route、switch中的应用(图一为小组网;图二为较大组网同时包含了选举信息)

    route、switch都有IGMP的开关,通过此开关控制是否开启组播功能,而IGMP snooping则通过report、query、leave三种报文进行维护组播成员表项

    其中report为client发给server的加入组播组的报文;query为server向client发送的状态查询报文,如果client未响应并回复server,则将client踢出组播组,client想要重新加入需再次发送report报文;leave为client向server发送的离开报文(下图为query报文查询)

    当server进行query查询时,所有的组播成员响应并发送report报文,为了节省网络带宽,只接受其中一份响应report报文,其他相应report报文进行抑制,不同的igmp版本对抑制的处理不同

    ps:本文部分参考了很多资料,这里不进行一一说明,如有不正确之处,请告知并及时修正,谢谢

  • 相关阅读:
    Go语言实现:【剑指offer】复杂链表的复制
    Go语言实现:【剑指offer】字符串的排列
    Go语言实现:【剑指offer】机器人的运动范围
    Delphi10.3的DBGrid美化(03)
    uniGUI学习之uniButton设置图标+扁平化CSS(34)
    UniGUI学习之hBox布局(33)
    Bug集锦
    ImageNamed、imageWithContentsOfFile、SupportingFiles、Images.xcassess
    MVC设计模式
    [转]iOS开发之视图控制器(UIViewController)
  • 原文地址:https://www.cnblogs.com/balabalala/p/7873893.html
Copyright © 2011-2022 走看看