TCP/IP學習筆記之十 --- IGMP:Internet組管理協議

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

1.       概述

介紹用於支持主機和路由器進行多播的Internet組管理協議(IGMP)。它讓一個物理網絡上的所有系統知道主機當前所在的多播組。

ICMP類似,IGMP也被當作IP層的一部分,通過IP數據報進行傳輸。

2.       IGMP報文

IGMP是有固定長度的報文。IGMP報文通過IP首部中協議字段值爲2來指明。下圖顯示了長度爲8字節的IGMP報文格式:

 

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />

以上爲版本爲1IGMP報文格式。IGMP類型爲1說明是由多播路由器發出的查詢報文,爲2說明是主機發出的報告報文。

組地址爲DIP地址。在查詢報文中組地址設置爲0,在報告報文中組地址爲要參加的組地址。

3.       IGMP協議

1)、加入一個多播組。

多播組的基礎是一個進程的概念,該進程在一個主機的給定接口上加入了一個多播組。在一個給定接口上的多播組中的成員是動態的——它隨時因進程加入和離開多播租而變化。

一個主機通過組地址和接口來識別一個多播組。主機必須保留一個表,此表中包含所有至少含有一個進程的多播組以及多播組中的進程數量。

 

2)、IGMP報告和查詢。

多播路由器使用IGMP報文來記錄與路由器相連網絡中組成成員的變化情況。使用規則如下:

a、當第一個進程加入一個組時,主機就發送一個IGMP報告。如果一個主機的多個進程加入同一組,只發送一個IGMP報告。這個報告被髮送到進程加入組所在的同一接口上。

b、進程離開一個組時,主機不發送IGMP報告,即便是組中的最後一個進程離開。主機知道在確定的組中已不再有組成員後,在隨後收到的IGMP查詢中就不再發送報告報文。

c、多播路由器定時發送IGMP查詢來了解是否還有任何主機包含有屬於多播組的進程。多播路由器必須向每個接口發送一個IGMP查詢。因爲路由器希望主機對它加入的每個多播組均發回一個報告,因此IGMP查詢報文中的組地址被設置爲0

d、主機通過發送IGMP報告來響應一個IGMP查詢,對每個至少還包含一個進程的組均要發回IGMP報告。

使用這些查詢和報告報文,多播路由器對每個接口保持一個表,表中記錄接口上至少還包含一個主機的多播組。當路由器收到要轉發的多播數據報時,它只將該數據報轉發到(使用相應的多播鏈路層地址)還擁有屬於那個組主機的接口上。

 

    3)、實現細節

      首先,當一個主機首次發送IGMP報告(當第一個進程加入一個多播組)時,並不保證該報告被可靠接收(因爲使用的是IP交付服務)。下一個報告將在間隔一段時間後發送。這個時間間隔由主機在0~10秒的範圍內隨機選擇。

其次,當一個主機收到一個從路由器發出的查詢後,並不立即響應,而是經過一定的時間間隔後才發出一些響應(該主機必須對它參加的每個組均發送一個響應)。在一個物理網絡中的所有主機將收到同組其他主機發送的所有報告。

如果一個主機在等待發送報告的過程中,卻收到了發自其他主機的相同報告,則該主機的響應就可以不必發送了。因爲多播路由器並不關心有多少主機屬於該組,而只關心該組是否還至少擁有一個主機。

4)、生存時間字段(TTL

一個初始TTL0的多播數據報將被限制在同一主機。在默認情況下,待傳多播數據報的TTL被設置爲1,這將使多播數據報僅侷限在同一子網內傳送。

224.0.0.0224.0.0.255的特殊地址空間是打算用於多播範圍不超過1跳的應用。不管TTL值是多少,多播路由器均不轉發目的地址爲這些地址中的任何一個地址的數據報。

5)、所有主機組

地址224.0.0.1被稱爲所有主機組地址,它涉及在一個物理網絡中的所有具備多播能力的主機和路由器。當接口初始化後,所有具備多播能力接口上的主機均自動加入這個多播組。這個組的成員無需發送IGMP報告。

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章