單播是說,對特定的主機進行數(shù)據(jù)傳送。例如給某一個主機發(fā)送 IP 數(shù)據(jù)包。這時候,數(shù)據(jù)鏈路層給出的數(shù)據(jù)頭里面是非常具體的 目的地址,對于以太網(wǎng)來 說,就是網(wǎng)卡的 MAC 地址(不是 FF-FF-FF-FF-FF-FF 這樣的地址)∽嵫撸現(xiàn)在的具有路由功能的主機應該可以將 單播數(shù)據(jù)定向轉(zhuǎn)發(fā),而目的主機的網(wǎng) 絡接口則可以過濾掉和自己 MAC 地址不一致的數(shù)據(jù)。
廣播是主機針對某一個網(wǎng)絡上的所有主機發(fā)送數(shù)據(jù)包嗅义。這個網(wǎng)絡可能是網(wǎng)絡,可能是子網(wǎng),還可能是所有的子網(wǎng)屏歹。如果是網(wǎng)絡, 例如 A 類網(wǎng)址的廣播就是 netid.255.255.255,如果是子網(wǎng),則是 netid.netid.subnetid.255;如果是所有的子網(wǎng)(B 類 IP)則是則是 netid.netid.255.255。廣播所用的 MAC 地址 FF-FF-FF-FF-FF-FF之碗。網(wǎng)絡內(nèi)所有的主機都會收到這個廣播數(shù)據(jù),網(wǎng)卡只要把 MAC 地址為 FF-FF-FF-FF-FF-FF 的數(shù)據(jù)交給內(nèi)核就可以了蝙眶。一般說來 ARP,或者路由協(xié)議 RIP 應該是以廣播的形式播發(fā)的。
可以說廣播是多播的特例,多播就是給一組特定的主機(多播組)發(fā)送數(shù)據(jù),這樣,數(shù)據(jù)的播發(fā)范圍會小一些(實際上播發(fā)的范圍 一點也沒有變小),多播的 MAC 地址是最高字節(jié)的低位為一,例 如01-00-00-00-00-00褪那。多播組的地址是 D 類 IP,規(guī)定是 224.0.0.0-239.255.255.255幽纷。
雖然多播比較特殊,但是究其原理,多播的數(shù)據(jù)還是要通過數(shù)據(jù)鏈路層進行 MAC 地址綁定然后進行發(fā)送。所以一個以太網(wǎng)卡在 綁定了一個多播 IP 地址之 后,必 定還要綁定一個多播的 MAC 地址,才能使得其可以像單播那樣工作博敬。這個多播的 IP 和多播 MAC 地址有一個對應的算法,在書的 p133到 p134之間友浸。可以 看到 這個對應不是一一對應的,主機還是要對多播數(shù)據(jù)進行過濾偏窝。
個人的看法:廣播和多播的性質(zhì)是一樣的,路由器會把數(shù)據(jù)放到局域網(wǎng)里面,然后網(wǎng)卡對這些數(shù)據(jù)進行過濾,只拿到自己打算要 的數(shù)據(jù),比如自己感興趣的多 播數(shù)據(jù),自己感興趣的組播數(shù)據(jù)收恢。當一個主機運行了一個處理某一個多播 IP 的進程的時候,這個進程 會給網(wǎng)卡綁定一個虛擬的多播 mac 地址,并做出來一個多播 ip武学。這樣,網(wǎng)卡就會讓帶有這個多播 mac 地址的數(shù)據(jù)進來,從而實現(xiàn)通信, 而那些沒有監(jiān)聽這些數(shù)據(jù)的主機就會把這些數(shù)據(jù)過濾掉,換句話說,多播,是讓主機 的內(nèi)核輕松了,而網(wǎng)卡,對不起,您就累點吧。即時通訊定制開發(fā)可以咨詢蔚可云定制
IGMP 的作用在于,讓其他所有需要知道自己處于哪個多播組的主機和路由器知道自己的狀態(tài)伦意。一般多播路由器根本不需要知道 某一個多播組里面有多少個 主機,而只要知道自己的子網(wǎng)內(nèi)還有沒有處于某個多播組的主機就可以了火窒。只要某一個多播組還有一臺主 機,多播路由器就會把數(shù)據(jù)傳輸出去,這樣,接受方就會通 過網(wǎng)卡過濾功能來得到自己想要的數(shù)據(jù)。為了知道多播組的信息,多播路 由器需要定時的發(fā)送 IGMP 查詢,IGMP 的格式可以看書,各個多播組里面的主機要根 據(jù)查詢來回復自己的狀態(tài)驮肉。路由器來決定有幾 個多播組,自己要對某一個多播組發(fā)送什么樣的數(shù)據(jù)沛鸵。
這種查詢回應數(shù)據(jù)報的 TTL 一般是1,而且就算是出錯也不產(chǎn)生 ICMP 差錯(沒必要)。