廣播和多播與IGMP協議介紹

2022-09-23 18:27:14 字數 3051 閱讀 2032

廣播和多播與igmp協議介紹

1.單播,多播,廣播的介紹

1.1.單播(unicast)

單播是說,對特定的主機進行資料傳送。例如給某乙個主機傳送ip資料報。這時候,資料鏈路層給出的資料頭裡面是非常具體的目的位址,對於乙太網來 說,就是網絡卡的mac位址(不是ff-ff-ff-ff-ff-ff這樣的位址)。現在的具有路由功能的主機應該可以將單播資料定向**,而目的主機的網 絡介面則可以過濾掉和自己mac位址不一致的資料。

1.2.廣播(unicast)

廣播是主機針對某乙個網路上的所有主機傳送資料報。這個網路可能是網路,可能是子網,還可能是所有的子網。如果是網路,例如a類**的廣播就是 netid.255.255.255,如果是子網,則是netid.netid.subnetid.255;如果是所有的子網(b類ip)則是則是 netid.netid.255.255。廣播所用的mac位址ff-ff-ff-ff-ff-ff。網路內所有的主機都會收到這個廣播資料,網絡卡只要把 mac位址為ff-ff-ff-ff-ff-ff的資料交給核心就可以了。一般說來arp,或者路由協議rip應該是以廣播的形式播發的。

1.3.多播(multicast)

可以說廣播是多播的特例,多播就是給一組特定的主機(多播組)傳送資料,這樣,資料的播發範圍會小一些(實際上播發的範圍一點也沒有變小),多播的mac位址是最高位元組的低位為一,例 如01-00-00-00-00-00。多播組的位址是d類ip,規定是224.0.0.0-239.255.255.255。

雖然多播比較特殊,但是究其原理,多播的資料還是要通過資料鏈路層進行mac位址繫結然後進行傳送。所以乙個乙太網卡在繫結了乙個多播ip位址之後,必 定還要繫結乙個多播的mac位址,才能使得其可以像單播那樣工作。這個多播的ip和多播mac位址有乙個對應的演算法,在書的p133到p134之間。可以看到 這個對應不是一一對應的,主機還是要對多播資料進行過濾。

個人的看法:廣播和多播的性質是一樣的,路由器會把資料放到區域網裡面,然後網絡卡對這些資料進行過濾,只拿到自己打算要的資料,比如自己感興趣的多 播資料,自己感興趣的組播資料。當乙個主機執行了乙個處理某乙個多播ip的程序的時候,這個程序會給網絡卡繫結乙個虛擬的多播mac位址,並做出來乙個多播 ip。這樣,網絡卡就會讓帶有這個多播mac位址的資料進來,從而實現通訊,而那些沒有監聽這些資料的主機就會把這些資料過濾掉,換句話說,多播,是讓主機 的核心輕鬆了,而網絡卡,對不起,您就累點吧。

2.一些驗證性實驗

這些實驗並不是很複雜,我們只是要ping一下一般的ip和乙個廣播位址。首先我ping一下自己所在的子網的某一台主機:

reply from 192.168.11.1: bytes=32 time<1ms ttl=255 

reply from 192.168.11.1: bytes=32 time<1ms ttl=255 

reply from 192.168.11.1: bytes=32 time<1ms ttl=255 

reply from 192.168.11.1: bytes=32 time=1ms ttl=255 

可以看到,機器返回的是一台主機的回應結果,進而推測,如果我ping乙個廣播位址呢?結果如下

reply from 192.168.11.9: bytes=32 time=1ms ttl=255 

reply from 192.168.11.174: bytes=32 time<1ms ttl=64 

reply from 192.168.11.174: bytes=32 time<1ms ttl=64 

reply from 192.168.11.174: bytes=32 time<1ms ttl=64 

reply from 192.168.11.218: bytes=32 time<1ms ttl=64 

reply from 192.168.11.174: bytes=32 time<1ms ttl=64

可以看到,ping返回了一些隨機的ip的結果,這些ip都是與主機在同一子網內的ip。我們可以看到,廣播實際上是給處於子網內的所有ip發信。

再來乙個多播的例子,但是要實現這個多播並不容易,因為我不知道網路內有多少個多播組,就只好利用幾個特殊的多播位址來驗證了。

對於多播位址,有幾個特殊的多播位址被占用,他們是

224.0.0.1--該子網內所有的系統組。

224.0.0.2--該子網內所有的路由器。

224.0.1.1--網路實現協議ntp專用ip。

224.0.0.9--ripv2專用ip

所以只要ping這幾個ip,就應該能得到一些結果,比如說我ping 224.0.0.2。

reply from 192.168.11.1: bytes=32 time<1ms ttl=255 

reply from 192.168.11.1: bytes=32 time<1ms ttl=255 

reply from 192.168.11.1: bytes=32 time<1ms ttl=255 

reply from 192.168.11.1: bytes=32 time<1ms ttl=255 

reply from 192.168.11.1: bytes=32 time<1ms ttl=255 

reply from 192.168.11.1: bytes=32 time<1ms ttl=255 

reply from 192.168.11.1: bytes=32 time<1ms ttl=255 

我們可以看到,這回ping只返回了乙個ip的回應。而這個就是我的閘道器的位址,這也驗證了224.0.0.2是所有路由器的多播(組播)位址

3.igmp協議

igmp的作用在於,讓其他所有需要知道自己處於哪個多播組的主機和路由器知道自己的狀態。一般多播路由器根本不需要知道某乙個多播組裡面有多少個主機,而只要知道自己的子網內還有沒有處於某個多播組的主機就可以了。只要某乙個多播組還有一台主機,多播路由器就會把資料傳輸出去,這樣,接受方就會通過網絡卡過濾功能來得到自己想要的資料。為了知道多播組的資訊,多播路由器需要定時的傳送igmp查詢,igmp的格式可以看書,各個多播組裡面的主機要根據查詢來回覆自己的狀態。路由器來決定有幾個多播組,自己要對某乙個多播組傳送什麼樣的資料。

這種查詢回應資料報的ttl一般是1,而且就算是出錯也不產生icmp差錯(沒必要)。

7 廣播和多播,IGMP協議

1.1.單播 unicast 單播是說,對特定的主機進行資料傳送。例如給某乙個主機傳送ip資料報。這時候,資料鏈路層給出的資料頭裡面是非常具體的目的位址,對於乙太網來 說,就是具體網絡卡的mac位址 不是ff ff ff ff ff ff,這是廣播位址 現在的具有路由功能的主機應該可以將單播資料定向...

組播基礎與IGMP協議

常見的通訊形式有 單播 廣播 組播 組播面對 一對多 的場景,當傳送乙個組播報文,只有加入到特定組播組的成員可以收到組播資料。對於源,只用傳送乙份資料,組播網路裝置會根據實際需要 或者拷貝資料。在ipv4空間裡面,d類位址 224.0.0.0 4 被用於組播。又對組播進行了進一步的位址劃分 組播的報...

廣播與多播

廣播和多播僅用於udp。乙個主機要向網上的所有主機傳送幀,這就是廣播 每個乙太網幀僅發住單個目的主機,目的位址指明單個接收介面,因而稱為單播。多播介於單播與廣播之間 幀僅傳送給屬於多播組的多個主機 ip多播提供兩類服務 1 向多個目的位址傳送資料。有許多向多個接收者傳送資訊的應用 例如互動式會議系統...