组播介绍和问题集合

1、概述

组播传输作为IP数据传输的三种方式之一 ,是指接收者的数量和位置在源端主机不知道的情况下,仅由源发出一份组播报文,向目标组播IP地址发送数据的过程。其特点有:

组播实现点到多点的高效数据传输。(通常基于UDP)
组播可以有效节约带宽、降低网络负载。(按需发送,不会和广播一样只会泛洪,减少了对链路带宽的浪费)
组播广泛应用于IPTV、实时数据传送和多媒体会议等。(常常用于直播,视频会议,电视网络等处)
在这里插入图片描述
对比三种IP网络中的传输方式:

单播:
采用单播方式时,网络中传输的信息量与需要该信息的用户量成正比。当需要该信息的用户数量较大时,信息源需要将多份内容相同的信息发送给不同的用户,这对信息源以及网络带宽都将造成巨大的压力。由此可以看出,该传输方式不利于信息的批量发送,只适用于用户稀少的网络。

广播:
采用广播方式时,不需要接收信息的主机也将收到该信息,这样不仅信息的安全性得不到保障,而且会造成同一网段中信息泛滥。由此可见,该传输方式不利于与特定对象进行数据交互,并且还浪费了大量的带宽。

组播相对单播和广播的优势:

相比单播,由于被传递的信息在距信息源尽可能远的网络节点才开始被复制和分发,所以用户的增加不会导致信息源负载的加重以及网络资源消耗的显著增加。
相比广播,由于被传递的信息只会发送给需要该信息的接收者,所以不会造成网络资源的浪费,并能提高信息传输的安全性。

2、基本术语

在这里插入图片描述
组播组:用IP组播地址进行标识的一个集合。任何用户主机(或其他接收设备),加入一个组播组,就成为了该组成员,可以识别并接收发往该组播组的组播数据。
组播源:组播信息的发送者称为“组播源”,即拓扑中的Server。一个组播源可以同时向多个组播组发送数据,多个组播源也可以同时向一个组播组发送报文。组播源通常不需要加入组播组。
组播组成员:所有加入某组播组的主机便成为该组播组的成员,即拓扑中的PC1和PC2。组播组中的成员是动态的,主机可以在任何时刻加入或离开组播组。组播组成员可以广泛地分布在网络中的任何地方。
组播路由器:支持三层组播功能的路由器或三层交换机,即拓扑中的各个Router。组播路由器不仅能够提供组播路由功能,也能够在与用户连接的末梢网段上提供组播组成员的管理功能。(默认路由器的组播功能是关闭的)

可以将一个组播组的组播网络分成三部分,也就是组播源->组播路由器->组播成员。组播就像IP单播一样是一个相对独立的领域,所以涉及的知识非常全面,包括的协议也是非常的多,

使用最多的是PIM和IGMP协议。其中PIM就是运行在组播路由器段的协议,IGMP是运行在组播成员段的协议,而源段只需要发送组播即可,不用运行组播协议。

3、组播服务模型

在这里插入图片描述

4、组播地址

IPv4组播使用,地址范围从224.0.0.0到239.255.255.255

端口号:主要用于定位某一台主机上的具体进程;端口号的数据类型是:unsigned short类型,范围是:0 ~ 65535,其中0 ~ 1024之间的端口由系统占用,因此编程指定端口号时,建议从1025开始使用至少1000以上。

但是有些电脑端是没有这个限制,端口为1000 仍然是可以接收组播。

android 设备对端口有些保留,推送的组播源需要设置端口大一些,比如8080。每个设备可能还有些不一样,最好设置大一点

5、组播问题集合

1)java.net.BindException:绑定失败:EADDRINUSE(地址已在使用中)

原因: 组播地址因为占用而绑定的失败

解决方式:netstat -anp查看端口是否被占用,是的话 修改端口号

2)端口被系统占用会出现bind错误, 提示无权限: java.net.BindException: bind failed: EACCES (Permission denied)

原因:端口为系统端口,普通应用无权限使用。
解决办法:把端口号改为系统保留端口以外的端口,如1024以上的端口

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值