组播(Multicast)传输:

在发送者和每一接收者之间实现点对多点网络连接。

如果一台发送者同时给多个的接收者传输相同的数据,也只需复制一份的相同数据包。它提高了数据传送效率。减少了骨干网络出现拥塞的可能性。

单播、组播、广播的差别可以看下图:

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

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

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

判断网卡是否支持组播

在Linux运行ifconfig, 如果网卡信息中包含UP BROADCAST RUNNING MULTICAST,则支持广播和组播。

参考: http://colobu.com/2014/10/21/udp-and-unicast-multicast-broadcast-anycast

组播IP地址

组播IP地址用于标识一个IP组播组。

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

  • 224.0.0.0~224.0.0.255为预留的组播地址(永久组地址),地址224.0.0.0保留不做分配,其它地址供路由协议使用;
  • 224.0.1.0~224.0.1.255是公用组播地址,可以用于Internet;
  • 224.0.2.0~238.255.255.255为用户可用的组播地址(临时组地址),全网范围内有效;
  • 239.0.0.0~239.255.255.255为本地管理组播地址,仅在特定的本地范围内有效。
    参考:http://baike.baidu.com/view/492256.htm

永久的组播地址:

  • 224.0.0.0 基准地址(保留)
  • 224.0.0.1 所有主机的地址 (包括所有路由器地址)
  • 224.0.0.2 所有组播路由器的地址
  • 224.0.0.3 不分配
  • 224.0.0.4 dvmrp路由器
  • 224.0.0.5 所有ospf路由器
  • 224.0.0.6 ospf DR/BDR
  • 224.0.0.7 st路由器
  • 224.0.0.8 st主机
  • 224.0.0.9 rip-2路由器
  • 224.0.0.10 Eigrp路由器
  • 224.0.0.11 活动代理
  • 224.0.0.12 dhcp 服务器/中继代理
  • 224.0.0.13 所有pim路由器
  • 224.0.0.14 rsvp封装
  • 224.0.0.15 所有cbt路由器
  • 224.0.0.16 指定sbm
  • 224.0.0.17 所有sbms
  • 224.0.0.18 vrrp

以太网传输单播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

Java 组播的例子

MulticastSocket 是一种 (UDP) DatagramSocket,它具有加入 Internet 上其他多播主机的“组”的附加功能。

可以通过首先使用所需端口创建 MulticastSocket,然后调用 joinGroup(InetAddress groupAddr) 方法来加入多播组:

例子代码取自:

http://colobu.com/2014/10/21/udp-and-unicast-multicast-broadcast-anycast/#0-tsina-1-67000-397232819ff9a47a7b7e80a40613cfe1

通过 Wireshark 监控

通过 Wireshark 监控多播的请求,可以用 下面过滤条件

(eth.dst[0]&1) 

转载于:https://www.cnblogs.com/itxdm/p/Unicast_radio_multicast_differences_turn.html

单播、广播、组播的区别(转)相关推荐

  1. 单播 广播 组播_【技术解析】关于组播概念那些你需要知道的~

    点击蓝字关注我 今天,小盟带大家继续学习一下组播知识~ 一.IGMP Message 1.组成员一旦开启IGMP,会自动发送Membership Report消息到叶路由器 2.IGMPv2版本,组成 ...

  2. 单播 广播 组播_组播概念3

    一.IGMP Message 1.组成员一旦开启IGMP,会自动发送Membership Report消息到叶路由器 2.IGMPv2版本,组成员退出组会发送leave消息,IGMPv1不会 3.也就 ...

  3. 单播 广播 组播区别

    一:通信方式分类 在IPv4网络中,主机可采用的通信方式有如下三种: 1.单播:单台主机与单台主机之间的数据通信 带宽端口有多少台就发多少个数据 2.广播:单台主机向网络中所有主机发送数据包的过程 发 ...

  4. HCIA-RS自用笔记(9)数据转发过程、单播/多播/组播

    数据转发过程(7/13,29min) 网关(Gateway) 不同网络的主机需要通讯,首先要把数据转发给网关,网关代表一条缺省路由 查看Windows主机路由表: C:\Users\Admin> ...

  5. 单播,组播,广播的区别

    单播,组播,广播的区别 单播"(Unicast)."多播"(Multicast)和"广播"(Broadcast)这三个术语都是用来描述网络节点之间通讯 ...

  6. 单播、组播、广播三者之间的区别

    单播.组播.广播其实是IPv4定义的三种流量类型 - 单播流量:一个人发送

  7. IP网络通信的单播、组播和广播

    一.判断两台设备是否在同一局域网内 查看两台设备的ip4地址和子网掩码MASK. 若MASK不一样,则不在同一局域网内. 若MASK一样,分别计算IP&MASK.若二者相同,则在同一局域网,否 ...

  8. Java实现单播,组播,广播

    单播.组播.广播介绍:https://blog.csdn.net/ahou2468/article/details/86526509 目录 1.单播.组播.广播关键类说明 2.单播和广播的具体实现 2 ...

  9. 判断mac地址单播还是组播(shell脚本)

    MAC地址是以太网二层使用的一个48bit(6字节十六进制数)的地址,用来标识设备位置.MAC地址分成两部分,前24位是组织唯一标识符(OUI, Organizationally unique ide ...

  10. 【TCP/IP】单播与组播

    [TCP/IP]单播与组播 三种IP地址: 单播地址.广播地址和组播地址 广播和多播仅应用于UDP. TCP是一个面向连接的协议,TCP一定是点对点的,一点是两个主机来建立连接的,TCP肯定是单播.只 ...

最新文章

  1. io分析神器blktrace
  2. apache 增加新网站
  3. petshop4.0 详解之五(PetShop之业务逻辑层设计)[转]
  4. 论文排版怕翻车?这个排版神器赶紧用起来!
  5. tfs 未能在以下位置创建报表文件夹 /TfsReports: 授予的权限不足,无法执行此操作
  6. [转帖]关于win7共享的问题和解答
  7. 认识计算机网络教案小学,初识计算机网络教案
  8. linux 中网卡配置命令 ifconfig简介
  9. java推断字符串是否为乱码
  10. ARP攻击的心得体会
  11. 类似于QQ游戏百万人同时在线的服务器架构实现
  12. 【细节实现题】LeetCode 57. Insert Interval
  13. Tensorflow:print输出控制
  14. 几句话介绍MagicAjax
  15. cad经典工作空间_最实用的CAD界面的设置
  16. 字符串(的基本操作,格式化,方法)
  17. php++redius,【答疑】edius中快进播放的快捷键是什么啊? - 羽兔网问答
  18. Linux之tar命令
  19. IT基础架构规划方案一(网络系统规划)
  20. C语言关系运算和逻辑运算

热门文章

  1. 【数据库】数据库期末考试复习试题与答案
  2. 有关Nodejs的视频教程
  3. 《黑客与画家》读后感之一
  4. 前端配置prettier工具格式化代码
  5. XP IIS之——问题总结
  6. Odoo集成Plausible埋码监控平台
  7. 【蓝凌系统】公式定义:根据某值控制审核人员会审
  8. 计算机怎么转到超级用户,电脑系统管理员权限怎么设置为超级管理员权限
  9. 数据采集—数据库基础及采集
  10. 点亮显示屏的几个重要步骤