武汉大学-Winsock多播.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
武汉大学-Winsock多播

第十章 网络程序设计实例 组播通信程序设计 10.5.2 组播通信程序设计 多播 亦称 多点传送(Multicasting),是一种让数据从一个成员送出,然后复制给其他多个成员的技术。 采用这种技术,可有效减轻网络通信的负担,避免资源的无谓浪费。 10.5.2 组播通信程序设计 1.什么是组播? 2.多播的含义 3. IP多播 4.IP叶节点 5.IP多播的实施 6.多播与Winsock 6.1 Winsock 1多播 10.5.2 组播通信程序设计 1.什么是组播? 又叫多址广播或多点传送,它也是一种一对多的传输方式,传输发起者通过一次传输就能将信息传送给一组接收者。它与单点传送和广播通信有明显的区别,组播将数据报发送给一个主机组,该主机组由零个或多个用同一个IP目的地址标识的主机集合。 10.5.2 组播通信程序设计 2.多播的含义 多播通信具有两个层面的重要特征:控制层面和数据层面。 控制层面(Control Plane)定义了组成员的组织方式; 数据层面(Data Plane)决定了在不同的成员之间,数据如何传送。 10.5.2 组播通信程序设计 控制层面: 10.5.2 组播通信程序设计 在一个”有根的”控制层面内,存在着一个特殊的多播组成员,叫作c_ root(控制根,或根节点)。而剩下的每个组成员都叫作c_leaf(控制叶,或叶节点)。 大多数情况下,c_ root需负责多播组的建立,其间涉及到建立同任意数量的c_leaf的连接。而在某些特殊情况下, c_leaf 则可在以后的某个时间申请加入一个特定的多播组。 ? 对任何一个具体的组来说,都只能存在一个根节点。ATM协议便是“有根控制层面”的典型例子。 10.5.2 组播通信程序设计 对一个“无根的”控制层面来说,它则允许任何人加入一个组,其间不存在任何例外。在这种情况下,所有组成员均为c_leaf节点(叶节点)。每个成员都有权加入一个多播组。 ? IP多播便是无根控制层面的一个典型例子。 10.5.2 组播通信程序设计 数据层面: 10.5.2 组播通信程序设计 对一个有根数据层面而言,它有一个参与者叫作d_root(数据根,或根节点)。数据传输只能在d_root和多播会话的其他所有成员之间进行。 ? ATM也是“有根数据层面”的一个典型例子。 10.5.2 组播通信程序设计 在一个无根数据层面上,所有组成员都能将数据发给组内的其他所有成员。从一个组成员发出的数据块会投递给其他所有成员,同时所有接收者都能回送数据。至于谁能接收或发送数据,则不存在任何限制。 ?同样地, I P多播采用的是数据层面上的“无根”通信方式。 10.5.2 组播通信程序设计 ? 一句话:ATM多播是在控制及数据层面的一种有根通信方式,而IP多播在两个层面上都是“无根”的。 10.5.2 组播通信程序设计 3 IP多播 IP多播通信需要依赖一个特殊的地址组,名为“多播地址”。 举例:假定五个节点都想通过I P多播,实现彼此间的通信,它们便可加入同一个组地址。全部加入之后,由一个节点发出的任何数据均会一模一样地复制一份,发给组内的每个成员,甚至包括始发数据的那个节点。 10.5.2 组播通信程序设计 多播IP地址是一个D类I P地址,范围在224.0.0.0 到 239.255.255.255 之间。 10.5.2 组播通信程序设计 4. IP叶节点 加入IP多播组的过程非常简单,因为每个节点都是一个“叶”,所以在加入一个组的时候,采取的操作步骤都是一样的: 1)用socket函数创建一个套接字,注意要设为AF_INET地址家族以及SOCK_DGRAM套接字类型。要想初始化一个多播套接字,不必设置任何特殊标志,因为socket函数本身便没有提供什么标志参数。 2)如果想从组内接收数据,请将套接字同一个本地端口绑定到一起。 3)调用setsockopt 函数,同时设置IP_ADD_MEMBERSHIP 选项,指定想加入的那个组的地址结构。 10.5.2 组播通信程序设计 注意: 假如一个应用程序只是打算发送数据,便不必加入一个IP多播组。 向多播组发送数据时,网络中传输的数据包与普通UDP包大致相同,只是目的地址换成了一个特殊的多播地址而已。但假如想接收多播数据,便必须加入一个组。 但无论如何,除了对组成员资格的要求之外, I P多播通信与普通的U D P协议通信并无什么区别:两者都是“无连接”的、“不可靠”的..等等。 5.IP多播的实施 I P多播通信得到了所有 Windows 平台的支持( 2 . 1版之前的Windows CE除外)。

文档评论(0)

xy88118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档