单播、组播、广播

单播(unicast): 是指封包在计算机网络的传输中,目的地址为单一目标的一种传输方式。它是现今网络应用最为广泛,通常所使用的网络协议或服务大多采用单播传输,例如一切基于TCP的协议。

组播(multicast): 也叫多播, 多点广播或群播。 指把信息同时传递给一组目的地址。它使用策略是最高效的,因为消息在每条网络链路上只需传递一次,而且只有在链路分叉的时候,消息才会被复制。

广播(broadcast):是指封包在计算机网络中传输时,目的地址为网络中所有设备的一种传输方式。实际上,这里所说的“所有设备”也是限定在一个范围之中,称为“广播域”。

 

       

        IANA(internet assigned number authority)把D类地址空间分配给IP组播,其范围是从224.0.0.0到239.255.255.255。

        以太网传输单播ip报文的时候,目的mac地址使用的是接收者的mac地址。但是在传输组播报文时,传输目的不再是一个具体的接收者,而是一个成员不确定的组,所以使用的是组播mac地址。

        组播mac地址是和组播ip地址对应的。iana(internet assigned number authority)规定,组播mac地址的高24bit为0x01005e,mac 地址的低23bit为组播ip地址的低23bit。 
        由于ip组播地址的后28位中只有23位被映射到mac地址,这样就会有32个ip组播地址映射到同一mac地址上。

 

组成员机制

        要将组播数据准确发送给组成员,必须先确定哪些网络的哪些主机是组成员,只有先确定了成员的位置,才能正确转发组播。当组成员不再需要接收组播的时候,就应该停止向成员发送组播,要确定组成员不再需要接收组播,就必须在成员退出时明确通告发送者。要确定组成员,有两种方式:查询和报告。

        查询,就是一台路由器向网络中发出查询消息,查询是否有主机要加入组,如果有主机应答,那么路由器就可以请求上游路由器把组播流量前转到这个子网中,如果没有主机应答,则请求上游路由器停止向其前转组播流量。

        报告,主机也可以不必等待路由器的查询,可以主动向路由器请求加入某个组,退出时也要向路由器发送退出消息,让路由器停止向其前转组播流量。

        在网络中,要确定组成员,需要使用一种协议,这种协议就是IGMP (Internet Group Management Protocol)因特网组管理协议,IGMP运行在路由器和主机之间,因为当组播发送者和组成员在不同网络时,需要路由器为组播数据提供转发,那么路由器就必须确认自己直连的网络中是否存在组成员,可以使用查询和报告来发现组成员,IGMP就可以完成这样的工作。

参考:http://www.china-ccie.com/ccie/lilun/Multicast/Multicast.html 

组播数据包的生存时间

将消息发送到多播组时,该主机和端口的所有预定接收者都将接收到消息(在数据包的生存时间范围内,请参阅下文)。套接字不必成为多播组的成员即可向其发送消息。

多数多播包的TTL比较低: 所有的IP包都有一个“生存时间”(time-to-live),或者叫TTL。和DNS记录不一样,组播TTL指定一个包到达目的地之前跳过网络的最大次数。单播包通常被允许穿越30个网络(比如,被路由或”跳“过29个路由),穿过网络通常小于15次”跳越“,所以30的限制经常用于当网络配置的很烂时把数据包杀掉。但是许多程序发多播时把TTL设为一个很低的值,通常为0(这样消息不会离开自身的设备)。

设置为1表示只能发到本地网络的计算机,设置为2 表示只能穿过一个路由。很少有应用想把多播发给整个校园网络的未知设备,更不会发给整个网络。

诸多路由都设置了很高的TTL阈值:很多网络路由器,特别是WAN路由和internet网关路由都有很高的TTL阈值,这样它们就不会发送这些低TTL(如15)的多播包。这样可以防止多播从本地网络泄漏。

路由器一般配置成完全不发送多播,或只发一些特定的地址,或配置成阻塞多播包。

每当多播路由器转发多播数据包时,数据包中的TTL值都会被减1,若数据包的TTL减少到0,则路由器将抛弃该数据包。TTL的值是多少,多播数据便最多能经过多少个多播路由器。例如,TTL值为0,则多播只能在本地主机的多个套接字间传播,而不能传播到“网线”上;TTL值为1(默认值),则多播数据遇到第一个路由器,便会被它“无情”地丢弃,不允许传出本地网络之外,即只有同一个网络内的多播组成员才能收到多播数据。

Java文档中这部分参考:http://udn.yyuap.com/doc/jdk6-api-zh/java/net/MulticastSocket.html

转自 :https://www.cnblogs.com/ghj1976/p/5276452.html#undefined

 

### 单播广播的区别及应用场景 #### 定义与特点 单播是指网络中的一个节点向另一个特定节点发送数据的方式。这种方式的特点在于一对一的通信模式,适用于大多数日常网络活动,例如收发电子邮件或访问网站[^1]。 是一种一对多的通信形式,它允许一台设备向一预先定义好的主机发送数据包。相比于单播能够显著提高数据传输效率;相对于广播而言,则可以有效减少不必要的网络流量占用[^3]。为了支持这种高效的通信机制,在接收端需要部署专门的客户端软件来处理数据流。 广播则是指单一源节点将其消息传送给整个局域网内的所有其他节点的行为。其主要特征是没有目标地址的选择性——即所有的联网装置都会接收到该信息副本。 #### 技术实现差异 从技术角度来看,三种方法各有侧重: - **单播**依赖于TCP/IP协议栈的标准路由过程完成点到点的信息交换; - ****则通过IGMP(Internet Group Management Protocol)以及特殊的路由器配置来识别并转发给感兴趣的成员群体; - 而对于**广播**, 数据帧会被复制成多个拷贝分发至每一个可能的目的地MAC地址上. 这些不同的工作机制决定了它们各自适合哪些类型的业务需求和服务环境. #### 应用场景分析 以下是每种通讯手段典型的应用实例: - **单播**: Web浏览, FTP文件下载上传操作, VoIP通话服务等都需要精确控制目的地从而采用此方式. - ****: IPTV直频道切换时利用了这一特性; 远程教育平台也可能运用视频会议系统来进行大规模实时授课互动; - **广播**: ARP(Address Resolution Protocol)请求用来发现未知物理层对应关系的时候会采取这样的策略; DHCP(Dynamic Host Configuration Protocol)分配动态IP地址过程中也会涉及此类动作. ```python # Python伪代码展示如何模拟简单的单播行为 def send_unicast_message(source_ip, destination_ip, message): print(f"Sending '{message}' from {source_ip} to {destination_ip}") send_unicast_message('192.168.0.1', '192.168.0.2', 'Hello Unicast') ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值