今天本來要聊聊IPv6中的鄰居發現協定(NDP
),以利跟昨天聊到的arp
互相呼應,但NDP好死不死,碰到了一個有趣的東西,稱為Multicast,這是什麼東西呢?
Multicast稱之為多播,在昨天的arp的概念中N00B剛開始要大喊(廣播Broadcast)的原理不同,Multicast可以視為以下概念,我在這條道路上每個人都去申請一個同樣的名牌,這個名牌要符合IPv4或是IPv6對於Multicast所規範的範圍之中,在網路裡,相同的角色(如主機群)會預先申請一個相同的名牌,如IPv6中的FF02::1
,又或者是IPv4中的224.0.0.1
,因此如果在一個網段中,使用ping
去測試FF02::1
的網路位置有沒有人回應,就會收到一大堆在同一個Multicast IP群組中的所有主機的回應。
簡單來說就是一個群組共用同一個IP的概念,除這個IP外,還有擁有自己本來的IP。
使用ip maddr
後可見以下類似的東西(僅節錄inet部分,未節錄link部分)
1: lo
inet 224.0.0.251
inet 224.0.0.1
inet6 ff02::2
inet6 ff02::1
2: eth0
inet 224.0.0.1
inet6 ff02::2
inet6 ff02::1
可以看見這台設備的lo0(loopback)有兩個IPv4的multicast群組,分別是224.0.0.251
以及224.0.0.1
,這兩個Multicast IP都有特殊的意義,224.0.0.1
為所有支援Multicast的主機(All Multicast Hosts)都會加入的群組,224.0.0.251
用於mDNS(這邊僅提及,未來會講解)
而IPv6的群組分別有ff02::2
以及ff02::1
,其中ff02::1
與224.0.0.1
一樣為所有支援Multicast的主機(All Multicast Hosts)都會加入的群組,而ff02::2
則為所有router都會加入的群組。
224.0.0.2
呢?因為IPv4的Multicast通訊協定不具備強制性,不一定需要符合IPv4的RFC中所提及的Multicast相關論述,但IPv6對於Multicast的通訊協定是強制性的所以每間廠商在製作符合IPv6規範的設備時,都會符合相關設定。