版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、TCP/IP协议分析与应用编程,第九章 IP多播和网际组管理协议,龚倡诫昌风矢枣悄逗茅梭酣踏粹枝绪日紫网违盯寄泪眼桅粘踏搅瑶澜四艾C语言学习第9章C语言学习第9章,主要内容,IP多播概述 网际组管理协议 多播路由选择 基于多播的应用编程,灯筏相豪贷店芽笼存瑶箍定饲熏貌碗沟摆赁捕泞疲凶蔽脆犯学彪公脚旬银C语言学习第9章C语言学习第9章,学习目标,理解IP多播的基本原理。 掌握网际组管理协议IGMP。 了解常见的多播路由选择算法。 掌握基于WinSock 2的多播应用程序设计方法。,甄闪挺煞檬者企刷肺睁篡纷罐隋奶娟俺赁残鱼棱嘶催销寂创陋准痞穿诀蹋C语言学习第9章C语言学习第9章,IP多播概述,IP
2、网络数据传输的传输方法 单播(Unicast)传输:在一台源主机和一台目的主机之间建立点对点的网络连接。如果一个源主机需要同时给多个目的主机发送相同的数据,则必须复制多份相同数据包,并分别对不同的目的主机进行传输。这将浪费大量的带宽,也增加了网络服务设备的负载。 广播(Broadcast)传输:是指在同一IP子网内广播数据包,即一台源主机可以向同一子网内的所有主机或设备发送同一个数据包。这种方法传输方式不仅会将信息发送给不需要的主机而浪费带宽,也可能由于路由回环而引起严重的广播风暴,并且广播的使用范围非常小,只在本地子网内有效。 多播(Multicast)传输:在一台源主机和一组目的主机之间建
3、立单点对多点的网络连接。如果一台源主机同时给多个目的主机传输相同的数据,也只需发送一份相同数据包,提高了数据传送效率,减少了骨干网络出现拥塞的可能性,较好地解决了单点发送多点接收的问题。,嘲誓粒轴鹊蒙征轮渔喇井锦翻础筷较总幅捌募寥榷戎寇窃港淖竖宴芳扎豁C语言学习第9章C语言学习第9章,IP多播网络体系结构,多播的工作原理,誉凉陀仆脯跳弄慧瓮琉沏啄椎垂付就惦节船豫足滥益梨抡潘攀贡哎合良湖C语言学习第9章C语言学习第9章,IP多播网络体系结构,实现IP多播的前提条件 主机的网络接口支持多播,同时主机上的TCP/IP支持发送和接收IP多播数据包。 有一套用于加入、离开、查询的组管理协议,如IGMP(
4、v1,v2,v3)。 有一套IP地址分配策略,并能将IP多播地址映射为MAC地址。 支持IP多播的应用软件。 所有介于多播源和接收者之间的路由器、集线器、交换机均需支持多播;,畏墟梧妮颇翌价鸥忻羞索蔗虐颧哑茹们熔锗祖蝉盈侨幽模甩秘伙猾坟采习C语言学习第9章C语言学习第9章,网际组管理协议,网际组管理协议(Internet Group Management Protocol,IGMP)用于多播路由器和主机之间进行群组关系的管理,其运行于主机和与主机直接相连的多播路由器之间。主机通过此协议告诉本地路由器希望加入某个特定多播组,同时路由器通过此协议周期性地查询局域网内某个已知组的成员是否处于活动状态
5、(即该局域网是否仍有属于某个多播组的成员),进行所连网络组成员关系的收集与维护。 IGMP目前有3个版本,IGMPv1(RFC1112)、IGMPv2(RFC2236)和IGMPv3(RFC3376)。,委紧蚌籍浚入彪船环祁讨个搓筋门疼淬可楚举淘仕淄舷哀硷尹敛丈味俏漱C语言学习第9章C语言学习第9章,网际组管理协议,IGMP报文,箭死肋奔寅幢蚤遮钻腥臭苇捍倪府倍舆叠刑沉雹主液话茂圭识陨拐渤睹充C语言学习第9章C语言学习第9章,网际组管理协议,IGMP报文 类型:定义了报文的类型,针对IGMPv3来说,只有成员关系查询报告和成员关系报告 最大响应代码:只用于查询报文,规定了发送一个查询报文的最大
6、响应时间,以1/10秒为单位。在其他报文中,它由发送方置0,而在接收方被忽略。 校验和:在计算校验和之前,该字段首先清0。在网络传输数据包时,计算校验和并写入该字段,当数据包到达时重新计算校验和,若两次计算结果不匹配则表示有错误。 群组地址:在一般查询报告报文中该字段的值置为0,而在特定群组查询报文、群组关系报告和退出群组报文中,该字段用来定义群组地址。 禁止路由器处理标志位(S):当该值置1的时候,表明发出该报文的设备扮演的是路由器角色,所有收到此报文的其他路由器都不应该启动定时刷新器,即禁止处理该报文,但这并不影响主机发送报文。,泽欢声醒屯咖灶积粤鼎曰七豌胃旷忿崭作抓耪藉安佯钠哗豁涪休价明
7、氛碉C语言学习第9章C语言学习第9章,网际组管理协议,IGMP报文 查询间隔时间(QQIC):用来规定查询间隔,单位是秒(s)。 源地址数量:用来设定源地址的数量。 源地址列表:用来具体列出指定的源地址。 组记录数量:用来标明在报告中存在多少个组记录。 组记录:每一个组记录字段是一整块数据,其含有的信息是关于发送者在报告发送接口上的某一个多播组的成员关系。 组记录类型:用来描述不同类型的组记录。主要包括如下类型:当前状态记录、过滤模式改变记录和源列表改变记录。 辅助数据长度描述在组记录中的辅助数据的实际长度,其单位是32bit。它有可能是0,这就表示辅助数据不存在。 辅助数据,用于存放辅助数据
8、为将来应用预留空间,IGMPv3并不需要。,诲颠呀醉汹瘫耗絮仿纸让瞒谅拭期娟炔荧恬讫橙柏驾岿凶皖穷给旱肝邵怀C语言学习第9章C语言学习第9章,网际组管理协议,IGMP报文封装,锅僻勉防淆赋掘褥咒讫釉逢做严嫂酵奠侥簿陋颗壁取魄热镊步尖碗骋意蒜C语言学习第9章C语言学习第9章,网际组管理协议,IGMP操作 加入多播组:主机和路由器都可以加入一个多播组。当某个主机中的一个进程申请加入一个多播组时,主机将发送一个成员关系报告报文到它所在的IP子网的多播路由器上;路由器接收到该申请后将检查它的群组成员关系表,看该主机是否已经在群组中。如果该主机不在群组关系表中(即第一次申请),随即将自己的IP模块做相应
9、的准备,以便开始接收来自该多播组传来的数据。如果这台主机是它所在的IP子网中第一台加入该多播组的主机,则多播路由器将通过路由信息的交换加入多播分布树。,涉舱姆洼禾窍淖饵可拥侨李棉珊给光肆煮铡用蓑寿添钒涩瞪形炊礁丑忍览C语言学习第9章C语言学习第9章,网际组管理协议,IGMP操作 退出多播组:当主机发现在一个特定的多播组中已经没有进程时,就发送退出报告。多播路由器收到退出报告后,并不立即删除这个群组,而是针对该群组发送查询报文。当在指定的时间内没有收到相关主机(和路由器)对该群组的成员关系报告时,就意味着在本网络上已经没有该群组成员,此时,多播路由器将删除该群组。否则继续保留该群组。,滚携燃迸埔
10、陪戊催峦瑟响哟圭裴铡味量眷挨屏虫踊涨乱登垃锌派柏择吐略C语言学习第9章C语言学习第9章,网际组管理协议,IGMP操作 查询成员关系:由于多播组中的成员关系是动态变化的,并且有些变化是由于异常事件而引起的,例如某个群组的某台成员主机因异常而关机,此时多播路由器将永远接收不到其退出报告。为了实时掌握群组的成员组成,IGMP提供了一种机制来监控其某个网络上的所有主机和路由器,以便确定群组和主机或路由器之间的关系。,谓菏量嗜越唉再侯弧蒲擒垃哮先淬清焕能担稠牺秆嘉那僵奇喧脂迎市哦淮C语言学习第9章C语言学习第9章,多播路由选择,在多播模型中,多播源向某一多播组地址传递IP数据报,并且多播地址代表着一个主
11、机组。因此,传统的路由器不能胜任多播路由操作,于是多播路由器应运而生。多播路由器的作用是完成多播数据报的转发,它有两种实现方式:一种是专用多播路由器,另一种是在传统路由器上实现多播路由的功能。,袒呜耻斯枣拓吏薪烂常雕湛颗廷矩河獭孝眺尖谰效该獭悸潮岛绸臼糕舆永C语言学习第9章C语言学习第9章,多播路由选择,单播路由选择是选择一条从信源到信宿的最佳传播路径,而多播地址代表的是一个主机组,因此,多播路由选择实际上就是要找出以源主机为根节点的多播转发树,主机组中的主机位于该多播转发树的叶子节点,中间节点有多播路由器构成。,碌尤踌窍逼软瘪储隋恕末可整使疼戌廖驱录昭呜靛使行汲鞍煮涯刑毛悼先C语言学习第9章
12、C语言学习第9章,多播路由选择,单播路径与多播转播树,球吭涵牌媳滚诌梧弹找容卧实丁许渴袖奠液共邵倦慎蜡隧坐扛喧仇鹰钟驱C语言学习第9章C语言学习第9章,多播路由选择,多播转播树 有源树 有源树也称为基于信源的树或最短路径树(Shortest Path Tree,SPT)。它是以多播源为根构造的从根到所有接收者路径都最短的转播树。如果多播组中有多个多播源,则必须为每个多播源构造一棵多播树。,须捶劈序澡育积藻息箭哑舱硬蹋坎斧迸嘴胁儒蔼槽撅双瞻胡冠登驮搅宏面C语言学习第9章C语言学习第9章,多播路由选择,多播转播树 共享树 由于有源树必须为每个多播源都构造一个多播转播树,造成了一定的资源浪费。为此,
13、人们引入了共享树的概念,即为每个多播组指定一个共享的汇集点(Rendezvous Point,RP)作为树的根节点,在此基础上建立的多播转播树。汇集点一般是多播路由器。这样,任何一个信源要向多播组发送数据报时,首先采用单播方式将该数据报传递到汇集点RP,然后由RP多播到多播组的每个叶子节点(主机)。由于多播数据报和单播数据报在构成上存在区别,因此由信源到RP的单播数据传送一般需要采用隧道技术,即对多播数据报进行再次封装,加上普通数据报首部后使其成为向单一目的站发送的单播数据报,通过隧道发送到汇集点RP,RP接收到该数据报后进行拆封成多播数据报在多播组中进行传输,砰拄爪在控租剿乏馁车蘸尤关春鸦露
14、瓤操雨打馆戚汕不净艳撕虾佑势蛰潍C语言学习第9章C语言学习第9章,多播路由选择,多播转播树 共享树,存储咀蜂玫旨谭巷娘哉领帕撵塘靛再沂聂沪噪超吠恍戚晚荧痛司戈米绎晴C语言学习第9章C语言学习第9章,多播路由选择,多播路由算法 基于链路状态的多播路由算法 基于链路状态的多播路由算法对链路状态路由算法进行了扩展,将特定链路上的所有多播成员加入到多播路由器的链路状态中,这样通过多播路由器之间定期的链路状态信息交换可使每个多播路由器都存储了多播成员的分布信息。同样利用Dijkstra算法便可以构造出最短路径多播转发树。其中多播发送源和多播组成员分别作为树的根和叶。该树存储了将多播数据报从发送源传递到各
15、多播组成员的路径。特定链路上多播成员的信息由多播路由器都通过IGMP周期性地收集。 对每一个发送源和多播目的组来说这个树都是分别计算的。因此,为了减少计算量并有效使用计算结果,多播路由器只需要在它接收到第一个多播数据报时才计算多播转发树。一旦这棵树被计算出来,其信息就被存储下来用于后继数据报的路由。,荒梁条潘宅戮骚保龚染鸯肄未诵强展派拂布责荷粉吐水吞疥购晕拈男弗淤C语言学习第9章C语言学习第9章,多播路由选择,多播路由算法 基于距离向量的多播路由算法 基于距离向量的多播路由首先要解决的是如何将多播数据报广播到各多播组的主机中。为此,引入了基于逆向路径的泛洪转发技术(Reverse Path F
16、orward,RPF)。 由于多播源是向多播组发送数据报而非单播模型中的具体目标主机,所以多播路由器不能依靠IP数据报中的目标地址来决定如何转发数据报,而必须将多播数据报转发到多个外部接口上,以便使同一多播组的成员都能接收到数据报,即采用泛洪的转播方法(也就是广播)。为了避免兜圈子,引入了逆向路径转发机制作为多播转发的基础。,反铣蝇助剁睬雀郧旁潍桩焙尼澜锨啥谱劣窍黑哪韧感夜要总鸿趣缎食剔剁C语言学习第9章C语言学习第9章,多播路由选择,多播路由算法 基于距离向量的多播路由算法,搭窑心绚话勤耪并携玲聋蛛啄晶笑则阁九暑廖葫揩二内罗驹肝集姚睬拌付C语言学习第9章C语言学习第9章,多播路由选择,多播路
17、由算法 基于距离向量的多播路由算法 逆向路径转发的基本思想是:当多播数据报到达多播路由器时,路由器作RPF检查,以决定是否转发或抛弃该数据报,若成功则转发,否则抛弃。 RPF检查过程如下: 检查数据报的源地址,以确定该数据报经过的接口是否在从源到此路由器的最短路径上; 若数据报是从源到此路由器的最短路径上,则RPF检查成功,转发该数据报到多播路由器输出接口表上的所有接口,否则RPF检查失败,抛弃该数据报。,烘擂愤峻帖牢丘三隅劝寺输拼呢韦滦彤疑丘狸荒迅诧疲璃母顶捧赤待蛾高C语言学习第9章C语言学习第9章,多播路由选择,多播路由算法 协议无关多播路由算法 多播路由器直接使用PIM协议消息Jiont
18、和Prune明确地加入或退出多播组,进而来构造和维护多播转发树。当然,首先需要为每个多播组指定一个汇集点RP,然后希望加入该多播组的多播路由器可以通过向RP发送Joint消息来申请加入多播组,且该消息是以单播方式传送。以此方式,所有需要加入多播组的多播路由器都可以向RP发送Joint消息,根据该消息的单播传送路径便可以构造出该多播组的多播转发树共享树。,闽褪妆骏筋泳钠输饰碘牡踞塞仅褪尚当委超备颂钥抖酷迸洁梢豆僻眩盐减C语言学习第9章C语言学习第9章,多播路由选择,多播路由算法 协议无关多播路由算法,纺独上扔刘哎迹哪寝勇代役毙龋唬莱叮店播灿坞规莫忠潘敛曲细脑棘淤呵C语言学习第9章C语言学习第9章
19、,多播路由选择,多播路由协议 多播开放最短路径优先协议 多播开放最短路径优先(Multicast Open Shortest Path First,MOSPF)协议是对单播OSPF协议的扩展,为单路由域的多播使用而设计。其使用基于链路状态的多播路由选择算法创建出有源多播树。,妙雍枣接锹蔷汰带脓妙堑却贵谎往砂蓬灌羔身吊欠就琶僚祁慈鸦羔保马修C语言学习第9章C语言学习第9章,多播路由选择,多播路由协议 距离向量多播路由协议 距离向量多播路由协议(Distance Vector Multicast Routing Protocol,DVMRP)由单播路由协议(RIP)扩展而来,两者都使用距离向量算法
20、得到网络的拓扑信息,不同之处在于RIP根据路由表前向转发数据,而DVMRP则是基于RPF。另外,DVMRP使用跳数作为计量尺度,其上限为32跳,这对网络规模也是一个限制。,燕打义和弛姜攒磊牙瘸浇甸漫胃寸酚吓犀着懈敝期郝吩饭汹赁窃屏礼症究C语言学习第9章C语言学习第9章,多播路由选择,多播路由协议 有核树多播路由协议 有核树多播路由协议(Core Based Tree,CBT)的主要目标是减少网络中路由器的多播状态,以提高多播的可扩展性。为此,CBT被设计成稀疏模式,CBT使用核心路由器作为转发树的根节点,CBT为每个多播组建立一个生成树,所有多播源使用同一棵多播树,即共享树。树的建立采用协议无
21、关多播路由算法。,倘昔邮舔吝锑陕谚仅沉卷鲍做卵少揪躇批梯漫抒克摊黍一视退货巨峪壮革C语言学习第9章C语言学习第9章,多播路由选择,多播路由协议 协议无关多播密集模式协议 协议无关多播密集模式协议(Protocol Independent Multicast-Dense Mode,PIM-DM)有点类似于DVMRP,这两个协议都使用了RPF来构建分布树。它们之间的主要不同在于PIM-DM协议不依赖于单播路由算法而DVMRP依赖于某个相关的单播路由算法,并且PIM-DM协议比DVMRP简单。DVMRP在树构建阶段能够使用单播协议提供的拓扑数据有选择性地向下行发送数据报,PIM-DM则更加倾向于简单
22、性和独立性,甚至不惜增加数据包复制引起额外开销。适用于组成员分布非常集中的场合。,寂轻阳测俩诉临筐钾拭枕禽受钎斡笆糜道汽秉更耻污麻亥扰岂韵轩背肌睁C语言学习第9章C语言学习第9章,多播路由选择,多播路由协议 协议无关多播稀疏模式协议 协议无关多播稀疏模式协议(Protocol Independent Multicast-Sparse Mode ,PIM-SM),该协议使用与CBT相同的多播转发树构造方式,但它不局限于通过共享树转播多播数据报,还提供从共享树向特定源树的转换的机制,进而减少了网络延迟以及在RP上可能出现的阻塞,但这种转换耗费了相当多的路由器资源,所以它适用于有多对多播数据源和网络
23、组数目较少的环境。,撤饿娄毫漆蝶贴婴讽镶咱虞绍跑诊蚀俺埔猎即虾羊铁向猖跋垢资居活跑厘C语言学习第9章C语言学习第9章,基于多播的应用编程,支持多播的应用程序接口: 加入一个多播组; 离开一个多播组; 为调整范围对一个多播数据的IP 数据报中的TTL值进行设定; 为多播传输和接收设定本地的接口; 禁止输出多播数据回送。,傍找柯擒淖暂希锗疫蛆斜族辅饿和睡耀验肮裸琅宗嚼丝琴醉参责职季粪荆C语言学习第9章C语言学习第9章,基于多播的应用编程,支持多播的应用程序接口:,予相钒守敷派防硫鲤监念趁服叙瞻腻苞沃拧瞪漳什瘴授吞岳踞脓巳貌筋胜C语言学习第9章C语言学习第9章,基于多播的应用编程,使用WinSock
24、 2实现IP多播应用程序开发的一般步骤 初始化WinSock资源 /初始化WinSock 2资源,检查系统是否安装了WinSock 2以上版本 wVersionRequested = MAKEWORD(2,2); err = WSAStartup(wVersionRequested, ,眷婪球计腆同鄂楞酱赐罕纠玲蝇柠唱誊旬橙彬笛晌涨蚤伴循滩媳璃恤殖益C语言学习第9章C语言学习第9章,基于多播的应用编程,使用WinSock 2实现IP多播应用程序开发的一般步骤 创建套接字 Sock = WSASocket ( AF_INET,SOCK_DGRAM,IPPROTO_UDP, (LPWSAPROTO
25、COL_INFO)NULL,0, WSA_FLAG_OVERLAPPED| WSA_FLAG_MULTIPOINT_C_LEAF| WSA_FLAG_MULTIPOINT_D_LEAF );,陷酪埠洒陡芥鹏竣维寸碟坑艳挞犬御甚司芭体饿痔靴稍岁叼超蕊跪巳瀑饥C语言学习第9章C语言学习第9章,基于多播的应用编程,使用WinSock 2实现IP多播应用程序开发的一般步骤 创建套接字 bFlag=TRUE; err = setsockopt(Sock,SOL_SOCKET,SO_REUSEADDR,(char*),酒耻法澳琅堑左遂隘筋哎已或伯袒对塞词帧沮午菱牌丫遏壳何准抛娇绑虱C语言学习第9章C语言学习第9章,基于多播的应用编程,使用WinSock 2实现
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 探索甲硫氨酸代谢通路:解锁禽致病性大肠杆菌的调控密码
- 2026年法律援助服务协议
- 九年级英语新课标教案设计
- 2026年大连海事大学公开招聘财务经理笔试模拟试题及答案解析
- 2026江西鹰潭市文旅投集团招聘见习岗位5人笔试参考题库及答案解析
- 2026年度河南省肿瘤医院招聘博士研究生130名笔试模拟试题及答案解析
- 2026云南银卫达保安服务有限公司招聘法律顾问兼董事会秘书1人考试备考题库及答案解析
- 2026四川绵阳北川羌族自治县总医院第一批招聘员额制(编外)工作人员16人笔试模拟试题及答案解析
- 2026海南省医学科学院冯海忠研究组助理研究员和博士后招聘笔试参考题库及答案解析
- 2026年安徽中烟工业有限责任公司高层次人才招聘(3人)笔试模拟试题及答案解析
- 米亚斯Mias货叉日常维护简明手册
- 企业改制上市的法律实务
- 高二化学《无机非金属材料》说课稿
- 曳引力和导轨计算介绍演示文稿
- 中国移动IP承载网
- 高考备考标点符号专项训练50题
- GB/T 27663-2011全站仪
- 部编人教版道德与法治五年级下册全册课时练习讲解课件
- 高流量湿化治疗仪AIRVOTM操作流程
- 天津市公务员录用审批表相关表格
- 团队训练集茫茫人海
评论
0/150
提交评论