TCP/IP詳解讀書筆記(第13章IGMP:Internet組管理協議)
本章將介紹用于支持主機和路由器進行多播的Internet組管理協議( IGMP)。它讓一個物理網絡上的所有系統知道主機當前所在的多播組。多播路由器需要這些信息以便知道多播數據報應該向哪些接口轉發。
正如ICMP一樣,IGMP也被當作IP層的一部分。IGMP報文通過IP數據報進行傳輸。不像我們已經見到的其他協議, IGMP有固定的報文長度,沒有可選數據。圖1顯示了IGMP報文如何封裝在IP數據報中。

圖1:IGMP報文封裝在IP數據報中
IGMP報文
圖2顯示了長度為8字節的IGMP報文格式。

圖2:IGMP報文的字段格式
IGMP類型為1說明是由多播路由器發出的查詢報文,為2說明是主機發出的報告報文。檢驗和的計算和ICMP協議相同。組地址為D類IP地址。在查詢報文中組地址設置為0,在報告報文中組地址為要參加的組地址。
IGMP協議
加入一個多播組
多播的基礎就是一個進程的概念(操作系統執行的一個程序),該進程在一個主機的給定接口上加入了一個多播組。在一個給定接口上的多播組中的成員是動態的—它隨時因進程加入和離開多播組而變化。
這里所指的進程必須以某種方式在給定的接口上加入某個多播組。進程也能離開先前加入的多播組。
IGMP報告和查詢
多播路由器使用IGMP報文來記錄與該路由器相連網絡中組成員的變化情況。使用規則如下:
1) 當第一個進程加入一個組時,主機就發送一個IGMP報告。如果一個主機的多個進程加入同一組,只發送一個IGMP報告。這個報告被發送到進程加入組所在的同一接口上。
2) 進程離開一個組時,主機不發送IGMP報告,即便是組中的最后一個進程離開。主機知道在確定的組中已不再有組成員后,在隨后收到的IGMP查詢中就不再發送報告報文。
3) 多播路由器定時發送IGMP查詢來了解是否還有任何主機包含有屬于多播組的進程。多播路由器必須向每個接口發送一個IGMP查詢。因為路由器希望主機對它加入的每個多播組均發回一個報告,因此IGMP查詢報文中的組地址被設置為0。
4) 主機通過發送IGMP報告來響應一個IGMP查詢,對每個至少還包含一個進程的組均要發回IGMP報告。
使用這些查詢和報告報文,多播路由器對每個接口保持一個表,表中記錄接口上至少還包含一個主機的多播組。當路由器收到要轉發的多播數據報時,它只將該數據報轉發到(使用相應的多播鏈路層地址)還擁有屬于那個組主機的接口上。
圖3顯示了兩個IGMP報文,一個是主機發送的報告,另一個是路由器發送的查詢。該路由器正在要求那個接口上的每個主機說明它加入的每個多播組。

圖3:IGMP的報告和查詢
所有主機組
目的IP地址224.0.0.1被稱為所有主機組地址。它涉及在一個物理網絡中的所有具備多播能力的主機和路由器。當接口初始化后,所有具備多播能力接口上的主機均自動加入這個多播組。這個組的成員無需發送IGMP報告。
posted on 2008-09-02 21:32
水 閱讀(4705)
評論(0) 編輯 收藏 引用 所屬分類:
tcp/ip