找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1698|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

IP多播概述

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:107189 發(fā)表于 2016-3-5 23:35 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
除了單播和廣播支持,IP(第4版)還提供一種發(fā)送和接收IP多播流量的機(jī)制。IP多播流量發(fā)送到單個(gè)目標(biāo)IP地址,但是由多個(gè)IP主機(jī)接收和處理,而不管這些主機(jī)在IP互聯(lián)網(wǎng)絡(luò)上所處的位置。一個(gè)主機(jī)偵聽一個(gè)特定的IP多播地址,并接收發(fā)送到該IP地址的所有數(shù)據(jù)包。
對(duì)于一對(duì)多的數(shù)據(jù)傳輸,IP多播要比IP單播和廣播更為高效。與單播不同,多播僅發(fā)送數(shù)據(jù)的一個(gè)副本。與廣播不同,多播流量?jī)H由正在偵聽它的計(jì)算機(jī)進(jìn)行接收和處理。
IP多播的附加元素如下:

?偵聽特定IP多播地址的那一組主機(jī)稱為一個(gè)主機(jī)組。
?主機(jī)組的成員關(guān)系是動(dòng)態(tài)的,主機(jī)可以在任何時(shí)候加入或離開該組。
?主機(jī)組的成員數(shù)量沒有限制。
?主機(jī)組可以跨越多個(gè)網(wǎng)段。這種配置需要IP路由器上的IP多播支持,并要求主機(jī)能夠?qū)⑺鼈儗?duì)接收多播流量的意愿注冊(cè)到該路由器。主機(jī)注冊(cè)是使用“Internet組管理協(xié)議(Internet Group Management Protocol,IGMP)”來(lái)完成的。
?主機(jī)可以向不屬于對(duì)應(yīng)的主機(jī)組的某個(gè)IP多播地址發(fā)送流量。
IP多播地址(也稱為組地址)在224.0.0.0到239.255.255.255的D類地址范圍內(nèi),這是通過(guò)將前四個(gè)高序位設(shè)置為1110來(lái)定義的。在網(wǎng)絡(luò)前綴或無(wú)類別域間路由(Classless Inter-Domain Routing,CIDR)表示法中,IP多播地址縮寫為224.0.0.0/4。 從224.0.0.0到224.0.0.255 (224.0.0.0/24)范圍的多播地址保留用于本地子網(wǎng),而IP報(bào)頭中的生存時(shí)間(Time to Live,TTL)可忽略,它們都不會(huì)被IP路由器轉(zhuǎn)發(fā)。下面是保留IP多播地址的一些例子:

?224.0.0.1 - 該子網(wǎng)上的所有主機(jī)。
?224.0.0.2 - 該子網(wǎng)上的所有路由器。
?224.0.0.5 - 開放最短路徑優(yōu)先(Open Shortest Path First,OSPF)算法第2版,設(shè)計(jì)用于到達(dá)某個(gè)網(wǎng)絡(luò)上的所有OSPF路由器。
?224.0.0.6 - 開放最短路徑優(yōu)先算法第2版,設(shè)計(jì)用于到達(dá)某個(gè)網(wǎng)絡(luò)上的所有OSPF指定的路由器。
?224.0.0.9 - 路由信息協(xié)議(Routing Information Protocol,RIP)第2版。
?224.0.1.1 - 網(wǎng)絡(luò)時(shí)間協(xié)議(Network Time Protocol)。
返回頁(yè)首
將IP多播映射到MAC層多播為了支持IP多播,Internet權(quán)威機(jī)構(gòu)把01-00-5E-00-00-00到01-00-5E-7F-FF-FF范圍的多播地址保留用于以太網(wǎng)和光纖分布式數(shù)據(jù)接口(Fiber Distributed Data Interface,F(xiàn)DDI)媒體訪問(wèn)控制(MAC)地址。為了將一個(gè)IP多播地址映射到一個(gè)MAC層多播地址,IP多播地址的23個(gè)低序位被直接映射到MAC層多播地址23個(gè)低序位。根據(jù)D類地址約定,IP多播地址的前4位是固定的,IP多播地址中有5位沒有映射到MAC層多播地址。 因此,某個(gè)主機(jī)可以接收不是它所屬的組的MAC層多播數(shù)據(jù)包。 然而,一旦確定了目標(biāo)IP地址,這些數(shù)據(jù)包就會(huì)被IP丟棄。
例如,多播地址224.192.16.1將變成01-00-5E-40-10-01。為了使用那23個(gè)低序位,第一個(gè)八位組將不會(huì)被使用,第二個(gè)八位組中僅有最后7位被使用。第三個(gè)和第四個(gè)八位組將直接轉(zhuǎn)換為十六進(jìn)制數(shù)字。對(duì)于第二個(gè)八位組,192的二進(jìn)制表示11000000。如果丟棄高序位,它將變成1000000或64(十進(jìn)制)或0x40(十六進(jìn)制)。對(duì)于下一個(gè)八位組,16的十六進(jìn)制表示0x10。對(duì)于最后一個(gè)八位組,1的十六進(jìn)制表示0x01。因此,對(duì)應(yīng)于224.192.16.1的MAC地址將變成01-00-5E-40-10-01。
令牌環(huán)網(wǎng)使用同樣的方法進(jìn)行MAC層多播尋址。然而,許多令牌環(huán)網(wǎng)絡(luò)適配器并不支持它。因此在默認(rèn)情況下,功能地址0xC0-00-00-04-00-00將用于通過(guò)令牌環(huán)網(wǎng)發(fā)送的所有IP多播流量。 有關(guān)令牌環(huán)網(wǎng)對(duì)IP多播的支持的更多信息,請(qǐng)參見RFC 1469。
返回頁(yè)首
支持IP多播的Intranet在支持IP多播的intranet(企業(yè)內(nèi)聯(lián)網(wǎng))中,任何主機(jī)都能夠向任何組地址發(fā)送IP多播流量,并且任何主機(jī)都能夠接收來(lái)自任何組地址的IP多播流量,而它們的位置可忽略。為了促進(jìn)這個(gè)功能,intranet的主機(jī)和路由器都必須支持IP多播。
主機(jī)的IP多播支持
為了使主機(jī)能夠發(fā)送IP多播包,它必須:

?確定要使用的IP多播地址。
該IP多播地址可由應(yīng)用程序硬編碼,或者通過(guò)一種分配唯一多播地址的機(jī)制來(lái)獲得。
?將IP多播數(shù)據(jù)包放到媒體上。
發(fā)送主機(jī)必須構(gòu)造一個(gè)包含預(yù)期目標(biāo)IP多播地址的IP數(shù)據(jù)包,并將它放到媒介上。對(duì)于諸如以太網(wǎng)、FDDI和令牌環(huán)網(wǎng)這樣的共享訪問(wèn)技術(shù),目標(biāo)MAC地址是根據(jù)先前描述的IP多播地址來(lái)創(chuàng)建的。
為了使主機(jī)能夠接收IP多播數(shù)據(jù)包,其必須:

?通知IP接收多播流量。
為了確定要使用的IP多播地址,應(yīng)用程序必須首先確定是創(chuàng)建一個(gè)新的主機(jī)組,還是使用某個(gè)現(xiàn)有的主機(jī)組。為了加入某個(gè)現(xiàn)有的組,應(yīng)用程序可以使用硬編碼的多播地址,或使用從某個(gè)統(tǒng)一資源定位符(URL)派生而來(lái)的地址。
在確定組地址之后,應(yīng)用程序必須通知IP在某個(gè)指定的目標(biāo)IP多播地址接收多播流量。例如,應(yīng)用程序可以使用Windows Socket(Windows套接字)函數(shù)來(lái)通知IP關(guān)于所加入的多播組的情況。如果多個(gè)應(yīng)用程序使用相同的IP地址,那么IP必須向每個(gè)應(yīng)用程序傳遞多播數(shù)據(jù)包的一個(gè)副本。當(dāng)應(yīng)用程序加入或離開某個(gè)主機(jī)組時(shí),IP必須跟蹤哪個(gè)應(yīng)用程序在使用哪個(gè)多播地址。此外,對(duì)于多宿主主機(jī),IP必須跟蹤每個(gè)子網(wǎng)的主機(jī)組的應(yīng)用程序成員關(guān)系。
?將多播MAC地址注冊(cè)到網(wǎng)絡(luò)適配器。
如果所使用的網(wǎng)絡(luò)技術(shù)支持基于硬件的多播,那么網(wǎng)絡(luò)適配器會(huì)被告知將數(shù)據(jù)包傳遞給特定的多播地址。對(duì)于諸如以太網(wǎng)、FDDI和令牌環(huán)網(wǎng)這樣的共享訪問(wèn)技術(shù),Windows 2000 NdisRequest函數(shù)可用于通知網(wǎng)絡(luò)適配器響應(yīng)對(duì)應(yīng)于某個(gè)IP多播地址的多播MAC地址。
?通知本地路由器。
主機(jī)必須通知本地子網(wǎng)路由器關(guān)于它正在偵聽某個(gè)特定組地址的多播流量的情況。注冊(cè)主機(jī)組信息的協(xié)議是“Internet組管理協(xié)議”。目前使用的IGMP有兩個(gè)版本:IGMP第1版(IGMP v1)和IGMP第2版(IGMP v2)。Windows 2000和Windows XP TCP/IP支持IGMP v2。主機(jī)通過(guò)發(fā)送“IGMP主機(jī)成員關(guān)系報(bào)告”消息,在某個(gè)特定的主機(jī)組中注冊(cè)成員關(guān)系。
路由器的IP多播支持
為了僅向那些存在組成員的子網(wǎng)轉(zhuǎn)發(fā)IP包,IP多播路由器必須能夠:

?接收所有IP多播流量。
?轉(zhuǎn)發(fā)IP多播流量。
?接收和處理“IGMP主機(jī)成員關(guān)系報(bào)告”消息。
?查詢連接的子網(wǎng)以了解主機(jī)成員關(guān)系狀態(tài)。
?將組成員關(guān)系傳達(dá)給其他IP多播路由器。
接收所有IP多播流量
對(duì)于共享訪問(wèn)技術(shù),比如以太網(wǎng)和FDDI,通常的網(wǎng)絡(luò)適配器偵聽模式是單播偵聽模式。偵聽模式是網(wǎng)絡(luò)適配器分析傳入幀的目標(biāo)MAC地址,以決定是否進(jìn)一步處理它們的方式。在單播偵聽模式下,唯一被認(rèn)為需要進(jìn)一步處理的幀在網(wǎng)絡(luò)適配上的一個(gè)感興趣的目標(biāo)MAC地址表中。通常,唯一感興趣的地址是適配器的廣播地址(0xFF-FF-FF-FF-FF-FF)和單播地址,也稱為MAC地址。
然而,為了使IP多播路由器能夠接收所有IP多播流量,它必須將網(wǎng)絡(luò)適配器置于一種稱為混雜模式(promiscuous mode)的特殊偵聽模式。多播混雜模式分析電子和電氣工程師協(xié)會(huì)(IEEE)定義的Individual/Group(單獨(dú)的/組,I/G)位,以確定該幀是否需要進(jìn)一步的處理。以太網(wǎng)和FDDI地址的I/G位是目標(biāo)MAC地址的第一個(gè)字節(jié)的最后一位。
I/G位的值如下:

?如果設(shè)置為0,那么該地址為單播(或單獨(dú)的)地址。
?如果設(shè)置為1,那么該地址為多播(或組)地址。廣播地址也會(huì)設(shè)置多播位。
當(dāng)把網(wǎng)絡(luò)適配器置于多播混雜偵聽模式時(shí),多播位設(shè)置為1的所有幀都會(huì)上傳以作進(jìn)一步的處理。
多播混雜模式不同于混雜模式。在混雜模式下,所有幀(不管目標(biāo)MAC地址如何)都會(huì)上傳以作進(jìn)一步的處理;祀s模式由協(xié)議分析器(也稱為網(wǎng)絡(luò)探測(cè)器)應(yīng)用,比如作為Microsoft Systems Management Server組成部分的完整版本的Microsoft Network Monitor(Microsoft網(wǎng)絡(luò)監(jiān)視器)。主機(jī)的網(wǎng)絡(luò)適配器通常不會(huì)置于多播混雜模式。
轉(zhuǎn)發(fā)IP多播流量
轉(zhuǎn)發(fā)IP多播數(shù)據(jù)包的能力是TCP/IP協(xié)議的一個(gè)功能,Windows 2000所采用的TCP/IP包括了這個(gè)功能。當(dāng)啟用多播轉(zhuǎn)發(fā)(通過(guò)“路由和遠(yuǎn)程訪問(wèn)”服務(wù))時(shí),非本地子網(wǎng)IP多播數(shù)據(jù)包將接受分析以確定該數(shù)據(jù)包是通過(guò)哪個(gè)接口轉(zhuǎn)發(fā)的。分析是通過(guò)將源地址和目標(biāo)組地址與IP多播轉(zhuǎn)發(fā)表中的條目作比較來(lái)完成的。當(dāng)接收到一個(gè)非本地IP多播數(shù)據(jù)包時(shí),IP報(bào)頭中的生存時(shí)間(TTL)將減去1。如果TTL在減去1之后仍大于0,則檢查多播轉(zhuǎn)發(fā)表。如果在多播轉(zhuǎn)發(fā)表中找到一個(gè)與目標(biāo)IP多播地址匹配的條目,該IP多播包將使用新的TTL通過(guò)適當(dāng)?shù)慕涌谵D(zhuǎn)發(fā)。
多播轉(zhuǎn)發(fā)過(guò)程不區(qū)分本地連接的子網(wǎng)上正在接收多播流量的主機(jī),或者跨越該子網(wǎng)上另一個(gè)路由器的本地連接的子網(wǎng)下游網(wǎng)段上的主機(jī)。換句話說(shuō),多播路由器可以轉(zhuǎn)發(fā)其上沒有主機(jī)在偵聽的子網(wǎng)上的多播數(shù)據(jù)包。這樣的多播數(shù)據(jù)包被轉(zhuǎn)發(fā)是因?yàn),該子網(wǎng)上的另一個(gè)路由器指出了在它的方向上有一個(gè)主機(jī)正在接收多播流量。
多播轉(zhuǎn)發(fā)表沒有記錄每個(gè)主機(jī)組成員或主機(jī)組成員的數(shù)量;這只是因?yàn)橐粋(gè)特定的主地址至少有一個(gè)主機(jī)組成員。
接收和處理“IGMP主機(jī)成員關(guān)系報(bào)告”消息
多播路由器從所有本地連接的子網(wǎng)上的所有主機(jī)接收“IGMP主機(jī)成員關(guān)系報(bào)告”消息。這個(gè)信息用于跟蹤主機(jī)組成員關(guān)系,也就是在多播轉(zhuǎn)發(fā)表中放入條目。由于所有多播路由器都在以多播混雜模式偵聽,它們將接收發(fā)送到任何組地址的“IGMP主機(jī)成員關(guān)系報(bào)告”消息。
為了改進(jìn)離開延遲(某個(gè)子網(wǎng)上的最后一臺(tái)主機(jī)離開該組和再?zèng)]有多播流量被轉(zhuǎn)發(fā)到該子網(wǎng)間的時(shí)間),可能是某個(gè)子網(wǎng)上的某個(gè)組的最后一個(gè)成員的主機(jī)將發(fā)送一條“IGMP離開組”消息。在通過(guò)“IGMP離開組”消息向該組發(fā)送特定于多播地址的IGMP查詢之后,路由器就能夠確定該子網(wǎng)上不再有組成員。
查詢連接的子網(wǎng)以了解主機(jī)成員關(guān)系狀態(tài)
在某個(gè)特定的子網(wǎng)上,可能存在IGMP v1和IGMP v2主機(jī)的混合。當(dāng)IGMP v1主機(jī)停止接收某個(gè)特定組地址的IP多播流量(即這個(gè)主機(jī)離開該組)時(shí),它不會(huì)發(fā)送“IGMP離開組”消息來(lái)通知本地路由器。結(jié)果,這個(gè)主機(jī)可能離開該組;如果它是這個(gè)子網(wǎng)的最后一個(gè)成員,那么本地路由器將繼續(xù)向該子網(wǎng)轉(zhuǎn)發(fā)這個(gè)組的多播流量。
為彌補(bǔ)IGMP v1主機(jī)報(bào)告功能的缺乏并避免可能丟失“IGMP主機(jī)成員關(guān)系報(bào)告和離開組”消息,多播路由器定期地向本地子網(wǎng)發(fā)送“IGMP主機(jī)成員關(guān)系”查詢,以獲得主機(jī)成員關(guān)系信息。仍然是某個(gè)多播組成員的主機(jī)將使用一條“IGMP主機(jī)成員關(guān)系報(bào)告”消息來(lái)響應(yīng)該查詢。為了防止某個(gè)特定子網(wǎng)上的多個(gè)主機(jī)發(fā)送相同組的“IGMP主機(jī)成員關(guān)系報(bào)告”消息,主機(jī)使用一個(gè)隨機(jī)響應(yīng)定時(shí)器來(lái)推遲“IGMP主機(jī)成員關(guān)系報(bào)告”消息的傳輸。如果這條消息是該子網(wǎng)上的另一個(gè)主機(jī)在響應(yīng)定時(shí)器過(guò)期之前發(fā)送的,則不會(huì)發(fā)送消息。
對(duì)于Windows 2000 Server“路由和遠(yuǎn)程訪問(wèn)服務(wù)”,接收和處理“IGMP主機(jī)成員關(guān)系報(bào)告”消息以及查詢連接的子網(wǎng)以獲得主機(jī)成員關(guān)系狀態(tài)的能力,是通過(guò)添加路由協(xié)議組件并在一個(gè)接口上啟用IGMP路由器模式來(lái)提供的。
將組成員關(guān)系傳達(dá)給其他IP多播路由器
為了創(chuàng)建支持多播的包含多個(gè)路由器的IP互聯(lián)網(wǎng)絡(luò),多播路由器必須相互傳達(dá)組成員關(guān)系信息,以便組成員能夠接收IP多播流量,而可以忽略它們?cè)谠揑P互聯(lián)網(wǎng)絡(luò)上的位置。
多播路由器使用某種多播路由協(xié)議交換主機(jī)成員關(guān)系信息,比如距離矢量多播路由協(xié)議(Distance Vector Multicast Routing Protocol,DVMRP)、多播開放最短路徑優(yōu)先(MOSPF)或者協(xié)議無(wú)關(guān)多播(PIM)。組成員關(guān)系信息要么顯性地傳遞,即交換組地址和子網(wǎng)信息;要么隱性地傳遞,即通知上游路由器關(guān)于多播流量來(lái)源的下游是否存在組成員的情況。
多播路由協(xié)議的目標(biāo)包括如下:

?從源轉(zhuǎn)發(fā)出流量以防止循環(huán)。
?最小化或消除發(fā)送到不需要該流量的子網(wǎng)的多播流量。
?最小化路由器上的CPU和內(nèi)存負(fù)載以實(shí)現(xiàn)可伸縮性。
?最小化路由協(xié)議的開銷。
?最小化加入延時(shí),即某個(gè)子網(wǎng)上的第一個(gè)主機(jī)成員開始接收組流量所花的時(shí)間。
多播路由要比單播路由更加復(fù)雜。對(duì)于單播路由,單播流量被轉(zhuǎn)發(fā)到一個(gè)全局唯一的目的地。單播路線總結(jié)了全局唯一目的地的范圍。網(wǎng)絡(luò)中的單播路線是相當(dāng)穩(wěn)定的,僅在IP互聯(lián)網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)發(fā)生變化時(shí)才需要更新。
對(duì)于多播路由,多播流量被轉(zhuǎn)發(fā)到某個(gè)不明確的組目的地。組地址表示單獨(dú)的組,并且一般不能在多播轉(zhuǎn)發(fā)表中總結(jié)出來(lái)。組成員的位置是不穩(wěn)定的,每當(dāng)一個(gè)主機(jī)成員加入或離開某個(gè)主機(jī)組,多播路由器的多播轉(zhuǎn)發(fā)表就可能需要更新。
正如單播路由協(xié)議更新單播IP路由表一樣,多播路由協(xié)議將更新IP多播轉(zhuǎn)發(fā)表。 Windows 2000 Server“路由和遠(yuǎn)程訪問(wèn)”服務(wù)沒有包括任何多播路由協(xié)議,盡管它提供了一個(gè)可以運(yùn)行第三方協(xié)議的平臺(tái)。 Windows 2000 Server所提供的能夠更新多播轉(zhuǎn)發(fā)表中的條目的唯一組件是IGMP路由協(xié)議組件。

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表