TCPIP下的组播编程基础.docVIP

  • 1
  • 0
  • 约9.58千字
  • 约 13页
  • 2017-02-13 发布于江苏
  • 举报
TCPIP下的组播编程基础

本文讨论基于TCP/IP下的组播编程基础。所有的例子都可以Windows下台运行。 本文不会涉及到组播协议的实现,只是讨论组播编程需要的环境及API函数。关于组播的实现和需要的协议笔者将会另写文章讨论。 组播描述   组播(Multicast)是网络一种点对多(one to many)的通信方式,通过报文复制完成网络中一台server对应多台接收者的高效数据传送。对其形象的比喻就是类似于广播电台和电视台节目的发送。电台或电视台向特定频道发送他们的节目,而接收者可以根据自己的喜好选择频道来收听或收看节目。 ???????传统网络的通信方式单播(Unicast)在许多场合下并不合适,如果强行采于单播方式只是会增加网络上传送的报文,还会影响server端的运行效率,如网络游戏,网络视频会议等。这些场合下由于接收者需要的是同样的数据,如果有N个接收者,那么server就需要把这份数据做成N个报文分别发送给接收者,这样当接收者增多的情况下,server端发送的报文也同样需要增多,server端承受这样的通信量肯定有一个极值,当接收者到一定程度的时候,不单单是网络流量增大的问题了,server面临的只有当机。   组播在这种场合下就有了用武之地了。Server端需要做的就是向特写的Group发送一个报文,当网络的多个接收者对这个报文感兴趣的时候,他们可以自由复制得到这个报文。这样的情况下,无论接收者增加多少人,Server需要做的只是发送一个报文,而网络上传送的是只是一份报文。 ?单播图例: ? ? 多播图例: ? ? 组播相关 组播地址   32位的IP地址被分成了A, B, C, D, E五种类型,前三种是我们日常生活常见的,由一个权威部分统一分配。而D类地址我们需要的多播地址,前三种地址我们可以形象的认为是一个点,而一个D类多播地址可以认为是一个频道。这样对多播的理解可以形象一点。 ???????关于IP地址的图例就免了,请查阅相关IP分类的相关资料,只要记住多播地址是从-55就行了。224开头的为保留地址,239开头的为实验用地址。这些地址不能随便使用,它们也是有权威部门(IANA)管理,类似于TCP,UDP的保留端口。 ???????常见多播保留地址 地址 用途 介绍 本网段所有的主机(All Hosts) [RFC 1112, JBP] 相邻的所有的路由器(All Multicast Routers) [JBP] 传送OSPF协议用(OSPF Routers) [RFC 1583, JXM1] OSPF Designated Routers [RFC 1583, JXM1] RIP2 Routers [RFC 1723, SM11] 2 DHCP Server/Relay Agent [RFC 1884] 3 All PIM Routers [Farinacci] ?   实验:可在主机上执行ping ,看看有多少主机有回应。J IP组播地址到链路层地址的转换 ???????IP多播地址的有效位为28位,是不是可以把这28位都可以影射到链路层地址,如以太网,FDDI,Token ring(我们常见的为以太网地址,就是大部分计算机上的Rj45接口的网卡所拥有的地址)。以太网地址为48位,IANA组织把00- 00- 5e开始的地址分配了用于多播的地址,以太网多播地址的最高二位必须为01,也就变成了01- 00- 5e,以太网用于多播地址的范围也就变成了?01- 00 – 5e – 00 – 00 - 00?到?01 – 00 – 5e – ff – ff – ff。 也就是剩下了24位地址,这24位最高位必须为1,只剩下了23位(L不知道为什么要这么麻烦)。 ???????问题出现了,IP多播地址的28位有效位如何影射到以太网的23位L,现在解决的方法是只影射IP多播地址的后23位,也就是IP剩下了5位不太影射,所以出现了多个IP多播地址(最多32个)影射一个以太网地址的情况。好像有点跑题了L 组播主机需要的环境 ???????如果要在一台主机上运行多播程序,这台主机支持IGMP协议。此协议用于加入一个多播组,离开一个多播组等而向路由器发送命令。现在的IGMP协议最高版本为v3(rfc3376),现在有很少数的UNIX实现了,WindowXp己实现。大部分主机,路由器实现的版本为v2(rfc2236),而v1版本(rfc1112)的运行是从v2中可以实现。V2与v1的区别就是把V1版本中的4位版本字段跟4位操作类型字段合并成了8位操作类型,在V1中不用使用的8位字段在V2中被称之为最大响应时间。用C写V2的IGMP结构即为: struct igmp { ????u_char igmp_type;

文档评论(0)

1亿VIP精品文档

相关文档