「乾貨」IGMPv1協議閒聊

本期與大家聊聊IGMPv1(因特網組管理協議),分享我個人見解,以及梳理一下IGMPv1相關知識點。


它是幹嘛用的?

我們學一個協議時,首先,最想知道的就是它是幹嘛用的?什麼時候才需要它?部署場景?


1、它是幹嘛的?

IGMP(Internet Group Mangment Protocl)因特網組管理協議,開發該協議,主要是用於組播流接收主機和相鄰組播路由器之間維護組播組成員關係的。


說白了,主機通過它來表達自己想加入哪個組播組。組播路由器通過它可以清楚瞭解連接主機子網內有哪些組播組成員。


2、什麼時候才需要它? 部署場景?


當部署組播時候,有主機需要加入組播組時就需要它。


部署場景:

「乾貨」IGMPv1協議閒聊


IGMP協議、原理介紹


1、協議發展:

「乾貨」IGMPv1協議閒聊


2、協議具體介紹

IGMP協議運行於主機和 與主機相鄰的組播路由器(最後一跳路由器)之間。


IGMP工作機制,龍哥就從兩個維度來說把,就是主機路由器


「乾貨」IGMPv1協議閒聊


「乾貨」IGMPv1協議閒聊


3、IGMP工作機制


「乾貨」IGMPv1協議閒聊


聊IGMP工作機制前,我個人還是偏向先了解一下報文格式,如果有報文格式讀透了,然後再去研究原理,就容易理解一些。


「乾貨」IGMPv1協議閒聊

IGMPv1報文格式


版本:即=1‘

類型:0x11= ’成員關係查詢報文;0x12=成員加入報告報文。

組播地址:

如果是成員關係查詢報文,即等於0.0.0.0

如果是成員加入報告報文,即等於想要加入的組播地址。


結合上述格式,龍哥再抓個包給大家看,就會更加深刻了。

「乾貨」IGMPv1協議閒聊


紅色部分,我們可知,IGMP是基於IP之上進行封裝的,協議號為2

在這,大家是不是能想到ICMP,也是基於IP之上的,協議號為1。不過與ICMP不同的是,IGMP消息僅侷限於本地數據鏈路,為啥呢? 看圖說話,TTL=1。


4、IGMPv1成員加入

「乾貨」IGMPv1協議閒聊


例如,PC1想加入239.1.1.1這個組播組,就會發送IGMPv1的成員報告報文,目的IP地址為想要加入的組。路由器收到後,就會了解到該網段有組播組239.1.1.1的成員,為其生成組播轉發表項(*,239.1.1.1) , *表示任意組播源。


路由器沒收到 成員報告 :


「乾貨」IGMPv1協議閒聊


當PC1 發送 成員報告報文,表示想加入239.1.1.1時,成員報告報文如下:

「乾貨」IGMPv1協議閒聊

「乾貨」IGMPv1協議閒聊


從報文,我們一下就知道了:

IGMPv1的成員報告報文類型為:0x12

報文的目的IP為 所要加入組的組播IP地址。


5、IGMPv1 成員維護。


值得一提的是,IGMPv1 裡沒有查詢器這個東西,是依賴組播協議PIM選擇產生的。


「乾貨」IGMPv1協議閒聊


下面,我們通過配一下PIM來看看是否就有查詢器了?


「乾貨」IGMPv1協議閒聊


「乾貨」IGMPv1協議閒聊

這樣,IGMP 查詢器就產生了,就可以看到路由器週期發送查詢報文。


「乾貨」IGMPv1協議閒聊


「乾貨」IGMPv1協議閒聊

路由器缺省每隔60s發送一次查詢報文,向224.0.0.1發生查詢報文:問問大家,這個組還有成員嗎?

(224.0.0.1 代表組內所有主機系統)

該網段的所有主機都能收到這個查詢報文,同時會啟動一個延時定時器,值為0到10s之間,隨機取一個。誰先到期,就由誰來發送響應報文。這樣做的好處,避免重複的響應報文。


「乾貨」IGMPv1協議閒聊


PC1先到期,然後就會發生響應報文。


「乾貨」IGMPv1協議閒聊


其他PC也會收到PC1的響應報文,就會清除延時定時器,同時他們不會發響應報文的。


如果130s內沒有響應路由器,路由器就將該組對應的轉發表項刪除了。


6、IGMPv1 成員離開。


「乾貨」IGMPv1協議閒聊

IGMPv1 沒有定義離開報文,所以PC離開時,不會發任何報文,路由器無法感知到,只能通過繼續週期查詢,如果查了3次還是沒有人響應,則認為該組沒有成員了。


分享到:


相關文章: