组播

原创 2006年06月02日 16:35:00

最近偶然的研究了一下组播。看到这个词,我脑海里只有广播,以为大同小异,其实大不相同。

广播:发送信息,网内所有用户都接受到信息
组播:发送信息,只有本组内的用户接受到信息

下面只关注IP组播

组播的好处:服务器发送信息,只需要发一份,所有成员都可以收到,减少了服务器端的网络流量
组播的缺点:ip组播使用udp协议,不能保证可靠传输
组播的原理:基于IGMP协议,我的理解是这样的,服务器发送信息到他相邻的机器,那个机器再将信息发送到相邻的组成员。这样发送信息的任务分交到每个组成员,减少了服务器的负担。

组播应用:网络视频点播,不使用组播,服务端无法胜任超大流量,同时对数据丢包可以容忍。p2p我认为也是组播的一种。

组播开发:用java.net.MulticastSocket可以方便实现IP组播功能,但是对于传文件,文件只能切分为小块,通过发送数据包来传输。
http://blog.csdn.net/coolriver/archive/2004/09/13/102420.aspx 这个地址有应用的例子,但没有大文件切分组合。文件切分简单的实现就是每个数据包中都包含文件名,包编号,在客户端,可以首先创建空文件,然后对收到的数据直接写到相应的地址。最后统计收到的包编号判断是否接受文件成功。

经测试,大文件(200M)传输会有明显丢包现象。

数据包的大小:According to "UNIX Network Programming", all TCP/IP implementations must support a minimum IP datagram size of 576 bytes, regardless of the MTU. Assuming a 20 byte IP header and 8 byte UDP header, this leaves 548 bytes as a safe maximum size for UDP messages. The maximum size is 65516 byte
可以看出使用548byte的包大小最安全

IP组播地址和组播组 :IP组播通信必须依赖于IP组播地址,在IPv4中它是一个D类IP地址,范围从224.0.0.0到239.255.255.255,并被划分为局部链接组播地址、预留组播地址和管理权限组播地址三类。其中,局部链接组播地址范围在224.0.0.0~224.0.0.255,这是为路由协议和其它用途保留的地址,路由器并不转发属于此范围的IP包;预留组播地址为224.0.1.0~238.255.255.255,可用于全球范围(如Internet)或网络协议;管理权限组播地址为239.0.0.0~239.255.255.255,可供组织内部使用,类似于私有IP地址,不能用于Internet,可限制组播范围。

加入一个组播组

网络中的一台主机如果希望能够接收到来自网络中其它主机发往某一个组播组的数据报,那么这么主机必须先加入该组播组,然后就可以从组地址接收数据包。在广域网中,还涉及到路由器支持组播路由等,但本文希望以一个最...
  • xbgprogrammer
  • xbgprogrammer
  • 2016年05月12日 12:51
  • 2014

4高并发服务器:UDP局域网服务器(组播)

1 UDP局域网服务器 A 读出每一个客户端发送过来的数据包,然后fork出子进程,由子进程去处理客户端请求。 B 客户端与服务器段交换多个数据报,服务器为每一个客户端连接创建新的socket,在...
  • toto1297488504
  • toto1297488504
  • 2014年09月30日 22:42
  • 2178

组播学习笔记

路由--交换--城域网 组播的优势(视频会议) 减轻服务器和CPU负荷 减少了链路带宽资源的占用 减轻了网络设备的负载  组播是基于UDP 组播最适合一对多通信方式的应用 组播服务器--组播网...
  • samtaoys
  • samtaoys
  • 2016年10月16日 11:11
  • 1301

Linux网络编程 之 UDP 组播实例

一个很简单udp 组播通信的例子,分别为服务器端和客户端的代码。 1、服务器端代码 (multi_udp_server.c) [objc] view plaincopy ...
  • sin0803
  • sin0803
  • 2015年07月09日 11:21
  • 1557

UDP组播的实现

os:花了一周时间实现了UDP协议下的组播程序,上面是网上给出的一般组播实现的架构。2~4是针对socketopt即socket属性的设置;TTL设置超时时间即每次发送数据之间的间隔,必须有,但不一定...
  • gua_MASS
  • gua_MASS
  • 2016年05月07日 17:46
  • 6517

组播(多播)的C程序实战

每个人都有不同的认知规律和习惯, 有的人喜欢搞一套严密的大理论, 论述起来滔滔不绝, 不管自己懂不懂, 反正读者/听者是没搞懂。 有的人喜欢从实践出发, 没看到代码, 不运行一下, 不看到结果, 就不...
  • stpeace
  • stpeace
  • 2015年05月21日 23:25
  • 6369

UDP 组播 实例

http://blog.csdn.net/yanyuanfen2011/article/details/16888801 最近一直在做linux的网络,现在作个总结,陆续贴出来。 在网上搜...
  • cjsycyl
  • cjsycyl
  • 2014年02月22日 10:49
  • 16871

关于UDP 中的组播问题

http://blog.csdn.net/c395565746c/article/details/6016646 根据查询的资料来看,UDP广播只能在内网(同一网段)有效,而组播可以较好实现跨网段群...
  • Leighton_52
  • Leighton_52
  • 2014年03月11日 15:34
  • 2127

linux组播通信

摘要:       本文可做为TCP/IP组播技术的入门材料,文中介绍了组播通 信的概念及原理,以及用于组播应用编程的Linux API的详细资料。为了使读者更加完整的了解Linux 组播的整体概...
  • lhf19891003
  • lhf19891003
  • 2014年02月10日 17:32
  • 1053

单播、多播、广播、组播、泛播概念区分

单播、多播、广播、组播、泛播概念区分 假设X代表所有的机器,Y代表X中的一部分机器,Z代表一组机器,1代表一台机器,那么 1:1 那就是单播; 1:Y 那就是多播; 1:X 那就是广播...
  • wscdylzjy
  • wscdylzjy
  • 2015年04月12日 20:01
  • 2644
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:组播
举报原因:
原因补充:

(最多只允许输入30个字)