學到組播這一塊,發現課本上有很多沒有講的細節,對我這種外行來說,只能去查查其他的資料,把這一塊補充完善一下~~
1. 兩個特定的組播地址:224.0.0.1 表示本網段上的所有主機
224.0.0.2 表示本網段上所有的路由器
2. 主機通過組地址和接口來識別一個組播組
主機保留了一個表,此表中包含以組播地址和程序的映射,程序如何實現組播的呢?
OSI七層參考模型
應用層 某個程序需要加入一個組播組 通過某種渠道獲得了組播地址
表示層
會話層
傳輸層 (組播基於UDP 所以組播繼承了UDP的一些缺點)
網絡層 主機存在了此組播組的組播IP(此主機還會存在單播IP和環回地址等
數據鏈路層 根據組播IP生成一個組播MAC(當然也會存在單播MAC等其他MAC)
物理層
3 IGMP運行於IP層 IGMP被當作IP層的一部分
4 在IGMP報文的IP部首中TTL被設置爲1,目的是保證此IGMP報文不被其他路由器轉發到其他網段
5. 組播MAC永遠都不會出現在組播幀的源MAC的位置
組播幀會構建成這樣的:
目的MAC 源MAC 承載數據
生成的組播MAC 網卡接口的單播MAC 略
這就導致了二層交換機學習不到組播MAC的端口映射表項,那麼組播就變成廣播了,背離了組播的初衷,於是出現了IGMP Snooping技術
6. IGMP Snooping技術又出現了一個問題。
在未引入IGMP Snooping技術之前的網絡環境是類似於集線器環境,但是引入IGMP Snooping之後,交換機工作在二層上。這是有區別的。
在集線器這種一層設備環境下,無論是什麼設備發出的報文,所有的主機或者路由器都會收到,那麼爲了防止Membership Report報文在集線器上氾濫,就有了IGMP成員報告抑制機制加以約束,但是運行了IGMP Snooping後的二層交換機就出現問題了。因爲,交換機的轉發是依靠內部的MAC和端口的映射表,如果membership report報文被泛洪,那麼其他端口上的組成員主機就會依據IGMP成員報告抑制機制而沉默,不再發送其自己的membership report報文,導致了交換機無法得知此端口上還有相應的組成員,接下來就會造成報文無法投遞。所以,對於membership report報文,交換機僅僅會在路由器端口轉發,而不會在其他動態成員端口上轉發。