1. 程式人生 > >TCP/IP詳解卷1:協議(八)【廣播和多播,ICMP:Internet組管理協議】

TCP/IP詳解卷1:協議(八)【廣播和多播,ICMP:Internet組管理協議】

廣播是將資料報傳送到網路中的所有主機(通常是本地相連的網路),而多播是將資料報傳送到網路的一個主機組。

廣播和多播僅應用於UDP。

使用廣播的問題在於它增加了對廣播資料不感興趣主機的處理負荷。多播的出現減少了對應用不感興趣主機的處理負荷。使用多播,主機可加入一個或多個多播組。

12.2 廣播

四種廣播地址

  1. 受限的廣播, 255.255.255.255,該地址用於主機配置過程中IP資料報的目的地址。在任何情況下,路由器都不轉發目的地址為受限的廣播地址的資料報,這樣的資料報僅出現在本地網路中。
  2. 指向網路的廣播,指向網路的廣播地址是主機號為全1的地址。A類網路廣播的士為netid.255.255.255。一個路由器必須轉發指向網路的廣播,但它也有一個不轉發的選擇。
  3. 指向子網的廣播,地址為主機號為全 1且有特定子網號的地址。
  4. 指向所有子網的廣播,需要了解目的網路的子網掩碼,以便與指向網路的廣播地址區分開。指向所有子網的廣播地址的子網號及主機號為全1。

廣播是怎樣傳送的?路由器及主機又如何處理廣播?這些問題有賴於廣播的型別、應用的型別、TCP/IP實現以及有關路由器的配置。

12.4 多播

多播組地址包括為1110的最高4bit和多播組號。它們通常可表示為點分十進位制數,範圍從224.0.0.0到239.255.255.255 。一個主機組可以跨越多個網路。

這裡寫圖片描述

通過將其低位 23bit對映到相應乙太網地址中便可實現多播組地址到乙太網地址的轉換。由於地址對映是不唯一的,因此需要其他的協議實現額外的資料報過濾。

支援主機和路由器進行多播的Internet組管理協議(IGMP)。它讓一個物理網路上的所有系統知道主機當前所在的多播組。

IGMP也被當作IP層的一部分。IGMP報文通過IP資料報進行傳輸。IGMP有固定的報文長度,沒有可選資料。

IGMP報文

這裡寫圖片描述

IGMP協議

多播的基礎就是一個程序的概念,該程序在一個主機的給定介面上加入了一個多播組。在一個給定介面上的多播組中的成員是動態的 —-它隨時因程序加入和離開多播組而變化。

多播路由器使用IGMP報文來記錄與該路由器相連網路中組成員的變化情況。使用規則如下:

1) 當第一個程序加入一個組時,主機就傳送一個IGMP報告。如果一個主機的多個程序加入同一組,只發送一個IGMP報告。這個報告被髮送到程序加入組所在的同一介面上。

2) 程序離開一個組時,主機不傳送IGMP報告,即便是組中的最後一個程序離開。主機知道在確定的組中已不再有組成員後,在隨後收到的IGMP查詢中就不再發送報告報文。

3) 多播路由器定時傳送 IGMP查詢來了解是否還有任何主機包含有屬於多播組的程序。多播路由器必須向每個介面傳送一個 IGMP查詢。因為路由器希望主機對它加入的每個多播組均發回一個報告,因此 IGMP查詢報文中的組地址被設定為 0。

4) 主機通過傳送 IGMP報告來響應一個IGMP查詢,對每個至少還包含一個程序的組均要發回 IGMP報告。

使用這些查詢和報告報文,多播路由器對每個介面保持一個表,表中記錄介面上至少還包含一個主機的多播組。當路由器收到要轉發的多播資料報時,它只將該資料報轉發到(使用相應的多播鏈路層地址)還擁有屬於那個組主機的介面上。