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

圖1:IGMP報文封裝在IP數(shù)據(jù)報中
IGMP報文
圖2顯示了長度為8字節(jié)的IGMP報文格式。

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

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