組播及igmp/mld協議詳解(一)
注意,多播地址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 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報文建立組播表。