1. 程式人生 > >組播及igmp/mld協議詳解(一)

組播及igmp/mld協議詳解(一)

組播和IGMP的作用---------------------------------所謂組播,與單播和廣播相對,是指將網路主機將一次將資料發給多個屬於同一組的目標主機。主要使用了IGMP協議。IGMP,就是Internet Group Management Protocol的意思。該協議用來ip主機和與其直接相鄰的組播路由器之間建立、維護組播組成員關係,但不包括組播路由器之間的組成員關係資訊的傳播與維護,這部分工作由各組播路由協議完成。所有參與組播的主機必須實現IGMP。組播的報文----------------------------------組播使用了D類IP地址,IP地址的分類如下所示,可見D類地址範圍在224.0.0.0到239.255.255.255。

注意,多播地址224.0.0.1被稱為所有主機組地址,即所有具有組播能力的主機均會加入該組。IGMP作為TCP/IP第三層的協議,被封裝在IP資料包中進行傳輸。IGMP的報文格式是固定的,共8個位元組,如下圖所示。
其中的IGMP型別分兩種:1表示該報文是組播路由器發出的查詢報文,2表示是IP主機發出的報告。後面的4個位元組則是組播地址。組播的過程-----------------------------------一個典型的過程是這樣的:1. IP主機的一個程序可隨時加入和離開主機介面的一個組播組,該主機需要維護介面的一張表,該表包含了有那些組以及這些組中的程序數量。此時主機需要傳送一個IGMP報告2. 路由器會定時傳送IGMP查詢報文,此時報文中的組地址為03. IP主機迴應路由器的IGMP查詢報文,對於一個主機,如果它加入了多個組,則需要為每個組返回一個IGMP報告。4. 路由器根據這些資訊,會對每個介面維護一張表,表中說明了該介面的組。這個過程中的報文,可見下圖
IGMP 版本說明

 目前有三個版本:

        IGMP v1,支援host membership query 和host membership report。

        IGMP v2,支援membership query,membership report,Leave Group message 。

        IGMP v3,支援membership report membershipquery

其中MembershipQuery分為三種:General Query,用於查詢介面下所有多播成員資訊;Group-Specific Query,用於查詢介面下指定組的成員資訊; Group-and-Source-Specific Query,該型別為IGMPv3中新增加的,用於查詢介面下是否有成員需要接收指定源列表中的源所發出的特定組的多播流。

區別是:

        IGMPv1 :主機可以加入組播組。沒有離開資訊(leave messages)。路由器使用基於超時的機制去發現其成員不關注的組。 

        IGMPv2:該協議包含了離開資訊,允許迅速向路由協議報告組成員終止情況,這對高頻寬組播組或易變型組播組成員而言是非常重要的。 

        IGMPv3:與以上兩種協議相比,該協議的主要改動為:允許主機指定它要接收通訊流量的主機物件。來自網路中其它主機的流量是被隔離的。 IGMPv3 也支援主機阻止那些來自於非要求的主機發送的網路資料包。

        簡而言之:IGMP 各版本區別v1無離開資訊,v2有離開資訊,v3允許主機指定它要接收通訊流量的主機物件。IGMPSnooping(窺探)監聽IGMP協議包,形成組播成員關係表;IGMP Proxy(代理)是靠截用路由器IGMP報文建立組播表。

組播及igmp/mld協議詳解(二)