資源描述:
《實(shí)驗(yàn)十三組播通信》由會(huì)員上傳分享,免費(fèi)在線(xiàn)閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)。
1、實(shí)驗(yàn)十三組播通信§1.1實(shí)驗(yàn)?zāi)康睦斫饨M播通信的概念及原理,比較組播通信方式和通常的單播通倍方式有何不同。理解組播通信的實(shí)現(xiàn),通過(guò)編制簡(jiǎn)單的利用組播方式通信的應(yīng)用程序來(lái)加深對(duì)組播的理解。§1.2實(shí)驗(yàn)原理1.組播介紹IP紐播(組播)技術(shù),是一種允許一臺(tái)或多臺(tái)主機(jī)(纟R播源)發(fā)送單一數(shù)據(jù)包到多臺(tái)主機(jī)的TCP/IP網(wǎng)絡(luò)技術(shù)。組播作為一點(diǎn)對(duì)多點(diǎn)的通倍,是節(jié)省網(wǎng)絡(luò)帶寬的有效方法之一。在網(wǎng)絡(luò)音頻/視頻廣播的應(yīng)用屮,當(dāng)需要將一個(gè)節(jié)點(diǎn)的信號(hào)傳送到多個(gè)節(jié)點(diǎn)吋,無(wú)論是釆用重復(fù)點(diǎn)對(duì)點(diǎn)通信方式,還是采用廣播方式,都會(huì)嚴(yán)重浪費(fèi)網(wǎng)絡(luò)帶寬,只有組播才是最好的選擇。紐播能使一個(gè)或多個(gè)紐播源只把數(shù)據(jù)包發(fā)送
2、給特定的紐播紐,而只有加入該紐播紐的主機(jī)才能接收到數(shù)據(jù)包。2.組播地址IP組播通信必須依賴(lài)于組播地址,在IPv4屮它是一個(gè)D類(lèi)IP地址,范用從224.0.0.0到239.255.255.255,并被劃分為局部鏈接組播地址、預(yù)留組播地址和管理權(quán)限組播地址三類(lèi)。其中,局部鏈接組播地址范圍在2240().0?224.().0.255,這是為路由協(xié)議和其它用途保簾的地址,路由器并不轉(zhuǎn)發(fā)屬于此范圍的IP包;預(yù)留組播地址為224.0.1.0?238.255.255.255,可用于全球范圍(如Internet)或網(wǎng)絡(luò)協(xié)議;管理權(quán)限組播地址為239.0.0.0?239.255.255.
3、255,可供組織內(nèi)部使用,類(lèi)似于私有1P地址,不能用于Internet,可限制組播范圍。使川同一個(gè)1P組播地址接收組播數(shù)據(jù)包的所冇主機(jī)構(gòu)成了一個(gè)主機(jī)組,也稱(chēng)為組播組。一個(gè)組播組的成員是隨時(shí)變動(dòng)的,一臺(tái)上機(jī)可以隨時(shí)加入或離開(kāi)組播組,纟F1播紐?成員的數(shù)目和所在的地理位置也不受限制,一臺(tái)主機(jī)也可以屬于兒個(gè)組播組。此外,不屬于某一個(gè)組播組的主機(jī)也可以向該組播組發(fā)送數(shù)據(jù)包。3.組播的工作過(guò)程在局域網(wǎng)內(nèi),主機(jī)的網(wǎng)絡(luò)接口將到口的主機(jī)的數(shù)據(jù)包發(fā)送到高層,這些數(shù)據(jù)包屮的目的地址是物理接口地址或廣播地址。如果主機(jī)己經(jīng)加入到一個(gè)組播組中,主機(jī)的網(wǎng)絡(luò)接口就會(huì)識(shí)別出發(fā)送到該組成員的數(shù)據(jù)包。因此
4、,如果主機(jī)接口的物理地址為80:C0:F6:A0:4A:Bl,其加入的組播組為224.0.1.10,則發(fā)送給主機(jī)的數(shù)據(jù)包中的目的地址必是下面三種類(lèi)型之一:接口地址:80:C0:F6:A0:4A:Bl廣播地址:FF:FF:FF:FF:FF:FF:FF:FF組播地址:01:00:5E:00:01:0A(組播地址如何映射到MAC層地址可以參見(jiàn)RFC1112。)廣域網(wǎng)小,路由器必須支持組播路由。當(dāng)主機(jī)屮運(yùn)行的進(jìn)程加入到某個(gè)組播組小時(shí),主機(jī)向子網(wǎng)中的所有組播路山器發(fā)送IGMP(Internet分組管理I辦議)報(bào)文,告訴路山器凡是發(fā)送到這個(gè)組播組的組播報(bào)文都必須發(fā)送到木地的了網(wǎng)中,
5、這樣主機(jī)的進(jìn)程就口J以接收到報(bào)文了。子網(wǎng)中的路由器再通知其它的路由器,這些路由器就知道該將組播報(bào)文轉(zhuǎn)發(fā)到哪些子網(wǎng)中去。子網(wǎng)中的路由器也向224.0.0」發(fā)送一個(gè)IGMP報(bào)文(22400」代表組中的全部主機(jī)),要求組中的主機(jī)提供組的相關(guān)信息。組中的主機(jī)收到這個(gè)報(bào)文后,都各將計(jì)數(shù)辭的值設(shè)為隨機(jī)值,當(dāng)計(jì)數(shù)器遞減為0時(shí)再向路由器發(fā)送應(yīng)答。這樣就防止了組中所冇的主機(jī)同時(shí)向路由器發(fā)送應(yīng)答,造成網(wǎng)絡(luò)擁塞。主機(jī)向組播地址發(fā)送一個(gè)報(bào)文做為對(duì)路由器的應(yīng)答,組中的其它主機(jī)一旦看到這個(gè)應(yīng)答報(bào)文,就不再發(fā)送應(yīng)答報(bào)文了,因?yàn)榻M中的主機(jī)向路山器提供的都是相同的信息,所以子網(wǎng)路由器只需得到組中一個(gè)主機(jī)
6、提供的信息就可以了。如果組屮的主機(jī)都退出了,路由器就收不到應(yīng)答,因此路由器認(rèn)為該纟R目前沒(méi)有主機(jī)加入,遂停止到該子網(wǎng)報(bào)文的路由。IGMPv2的解決方案是:組小的主機(jī)在退出時(shí)向224.0.0.2發(fā)送報(bào)文通知組播路由器。1.應(yīng)用編程接口(API)如果你有套接字編程的經(jīng)驗(yàn),就會(huì)發(fā)現(xiàn),對(duì)紐播選項(xiàng)所進(jìn)行的操作只需五個(gè)新的套接字操作。函數(shù)setsockoptO及getsockopt()ffl來(lái)建立和讀取這五個(gè)選項(xiàng)的值。下表屮列岀了組播的可選項(xiàng),并列出其數(shù)據(jù)類(lèi)型和描述:描述加入到組播組中從組播組中退出指定提交組播報(bào)文的接口指定提交組播報(bào)文的TTL使組播報(bào)文環(huán)路有效或無(wú)效IPv4選項(xiàng)數(shù)
7、據(jù)類(lèi)型IP_ADD_MEMBERSHIPstructip_mieqIP_ROP_MEMBERSHIPstructip_mreqIP_MULTICAST_IFstructip_mreqIP_MULTICAST_TTLu_charIP_MULTICAST_LOOPu_char在<linux/in.h>頭文件中定義了ip_mreq結(jié)構(gòu):structip_mreq{structin_addrimr_multiaddr;/*IPmulticastaddressofgroup*/structinaddrimrinterface;/*localIPad