組播和ICMP

qq_48844607發表於2020-11-29

組播

組播技術的初衷是在IP網路中,以"盡力而為"的形式傳送資訊到某個目標組,這個目標組稱為組播組,這樣在有源主機向多點目標主機傳送資訊需求時,源主機只傳送一份資料,資料的目的地址是組播組地址,這樣,凡是屬於該組的成員,都可以接收到一份原主機傳送的資料的拷貝,此組播方式下,只有真正資訊需要的成員會收到資訊,其他主機不會收到。因此組播方式解決了單播情況下資料的重複拷貝及頻寬的重複佔用,也解決了廣播方式下頻寬資源的浪費。

  組播IP地址用於標識一個IP組播組。IANA(internet assigned number authority)把D類地址空間分配給IP組播,其範圍是從224.0.0.0到239.255.255.255

組播地址

  組播組可以是永久的也可以是臨時的。組播組地址中,有一部分由官方分配的,稱為永久組播組。永久組播組保持不變的是它的ip地址,組中的成員構成可以發生變化。永久組播組中成員的數量都可以是任意的,甚至可以為零。那些沒有保留下來供永久組播組使用的ip組播地址,可以被臨時組播組利用。
  224.0.0.0~224.0.0.255為預留的組播地址(永久組地址),地址224.0.0.0保留不做分配,其它地址供路由協議使用;
  224.0.1.0~224.0.1.255是公用組播地址,可以用於Internet;
  224.0.2.0~238.255.255.255為使用者可用的組播地址(臨時組地址),全網範圍內有效;
  239.0.0.0~239.255.255.255為本地管理組播地址,僅在特定的本地範圍內有效。

組播MAC地址

  組播MAC地址的高24bit為0x01005e,第25bit為0,即高25bit為固定值。MAC地址的低23bit為組播IP地址的低23bit。由於 IP組播地址的前4bit 是1110,代表組播標識,而後28bit 中只有23bit 被對映到MAC 地址,這樣IP 地址中就有5bit 資訊丟失,導致的結果是出現了32 個IP 組播地址對映到同一MAC 地址上。出現這樣的現象的概率為1/32。

ICMP

  Internet 組管理協議稱為IGMP協議(Internet Group Management Protocol),是因特網協議家族中的一個組播協議。該協議執行在主機和組播路由器之間。IGMP協議共有三個版本,即IGMPv1、v2 和v3。
  IGMP規定,當主機要加入一個群組時,必須向本地組播路由器(可以是本地網路中的一個一般的路由器,但支援組播)傳送IGMP報文,其中包含該群組的地址,以宣佈其成員狀態;組播路由器收到報文後,向網際網路上的其他組播路由器傳播該資訊,以建立必要的路由。
  為了適應成員的動態變化,組播路由器週期性地輪詢本地網路上的主機,以確定現在各個群組中有哪些主機。如果經過若干次輪詢後,某個群組中始終沒有主機應答,則組播路由器就認為本地網路 不在有該群組的成員,並停止向其他組播路由器通告該群組的成員資訊。

ICMP組播成員查詢

  IGMP的組成員查詢利用報文中型別欄位0x11來標識。IGMP的組成員查詢包含了兩種子型別:一般組成員查詢(General Query)和特定組成員查詢(Group-Specific Query)。子型別利用報文中的組播組地址(Group Address)欄位來區分:組地址段等於0,表示一般組成員查詢;組地址地段不等於0,則表示特定組成員查詢,用於查詢本地網路中的每個指定組播組的成員,其中組播組的地址由組地址(Group Address)欄位來指定被查詢的組播組。在IGMPv1中只支援一般組成員查詢,IGMPv2支援特定組成員查詢。 [1]

一般組成員查詢

  IGMP約定,本地路由器利用一般組成員查詢方式來週期性地向本網路內的所有主機傳送IGMP組成員查詢報文;本地網路中的主機在接收到IGMP查詢報文時,將會對該報文作出相應,返回一個組成員報告報文,通知路由器本主機所在的組播組的地址。

特定組成員查詢

  正常情況下,IGMP採用一般組播組成員查詢來輪詢本地網路中的組成員資訊。這種查詢並非針對某一個組播組,而是針對本地網路中所有組進行查詢。在某些特定環境中,路由器也需要查詢在本地網路中是否存在某個特定組播組的成員。這時可使用特定組成員查詢。

相關文章