【計算機網絡】廣播和多播

   IP地址由三類:單播地址(目的端爲單個主機),廣播地址(目的端爲給定網絡上的全部主機)以及多播地址(目的端爲同一組內的全部主機)。服務器

   廣播和多播僅應用於UDP,它們須要將報文同時傳往多個接收者的應用十分重要。TCP是一個面向鏈接的協議,它意味着分別運行於兩主機(由IP地址肯定)內的兩進程(由端口號肯定)間存在一條鏈接。  網絡

  考慮包含多個主機的共享信道網絡如以太網。每一個以太網幀包含源主機和目的主機的以太網地址(48bit)。一般每一個以太網幀僅發往單個目的主機,目的地址指明單個接收接口,於是稱爲單播(unicast)。在這種方式下,任意兩個主機的通訊不會干擾網內的其餘主機(可能引發爭奪共享信道的狀況除外)。
spa

  然而,有時一個主機要向網上的全部其餘主機發送幀,這就是廣播經過ARP和RARP能夠看到這一過程。多播(multicast)處於單播和廣播之間:幀僅傳送給屬於多播組的多個主機。
對象

  爲了弄清廣播和多播,須要瞭解主機對由信道傳送過來的幀的過濾過程。下圖說明了這一點。
blog

  

                                                     協議棧各層對收到的幀的過濾過程

接口

  首先,網卡查看由信道傳送過來的幀,肯定是否接收該幀,若接收後就將它傳往設備驅動程序。一般網卡僅接收那些目的地址爲網卡物理地址或廣播地址的幀。另外,多數接口均被設爲混雜模式,這種模式能接收每一個幀的一個複製。進程

  目前,大多數的網卡通過配置都能接收目的地址爲多播地址或某些子網多播地址的幀。對於以太網,當地址中以最高字節的最低位設置爲1時表示該地址是一個多播地址,用十六進制表示爲01:00:00:00:00:00(以太網廣播地址 ff:ff:ff:ff:ff:ff可看做是以太網多播地址的特例)。路由

  若是網卡收到一個幀,這個幀將被傳送給設備驅動程序(若是幀檢驗和錯誤,網卡就丟棄該幀)。設備驅動程序將進行另外的幀過濾。首先,幀類型中必須制定要用的協議(IP、ARP等等)。其次,進行多播過濾來檢測該主機是否屬於多播地址說明的多播組)。it

  設備驅動程序隨後將該數據幀傳送給下一層,好比,當幀類型指定爲IP數據報時,就傳往IP層。IP根據IP地址中的源地址和目的地址進行更多的過濾。若是正常,就將數據報傳送給下一層(如TCP或UDP)。
ast

  每次UDP收到由IP傳來的數據報,就根據目的端口號,還有源端口號進行數據報過濾。若是當前沒有進程使用該目的端口號,就丟棄該數據報併產生一個ICMP不可達報文(TCP根據它的端口號作類似的過濾).若是UDP數據報存在檢驗和錯誤,將被丟棄。

  使用廣播的問題在於它增長了對廣播數據不感興趣主機的處理負荷拿一個使用UDP廣播報文應用做爲例子。若是網內有50個主機,但僅僅有20個參與該應用,每次這20個主機中的一個發送UDP廣播數據時,其他30個主機不得不處理這些廣播數據報。一直到UDP層,收到的UDP廣播數據報纔會被丟棄。這30個主機丟棄UDP廣播數據報是由於這些主機沒有使用這個目的端口。

  多播的出現減小了對應用不感興趣主機的處理負荷。使用多播,主機可加入一個或多個多播組。這樣,網卡將獲悉該主機屬於哪一個多播組,而後僅接收主機躲在多播組的多播幀。

 

廣播

  廣播有四種類型:受限的廣播,指向網絡的廣播,指向子網的廣播,指向全部子網的廣播。

 

受限的廣播

  受限的廣播地址是255.255.255.255。該地址用於主機配置過程當中IP數據報的目的地址,此時,主機可能還不知道它所在的網絡的網絡掩碼,甚至連它的IP地址也不知道。

  在任何狀況下,路由器都不轉發目的地址爲受限的廣播地址的數據報,這樣的數據僅僅出如今本地網絡中。這就是爲何稱爲受限的網絡地址。這種廣播類型接收對象爲局域網中包括髮送主機在內的全部主機。

  一個未解的問題是:若是一個是多接口的,當一個進程向本網廣播地址發送數據報時,爲實現廣播,是否應該將數據報發送到每一個相連的接口上?若是是這樣,想對主機全部接口廣播的應用必須肯定主機中支持廣播的全部接口,而後向每一個接口發送一個數據報複製。

 

指向網絡的廣播

  指向網絡的廣播地址是主機號全1的地址。A類網絡廣播地址爲netid.255.255.255,其中netid爲A類網絡的網絡號。

  一個路由器必須轉發指向網絡的廣播,但它也必須有一個不進行轉發的選擇。

 

指向子網的廣播

  指向子網的廣播地址爲主機號全1且有特定子網號的地址。做爲子網直接廣播地址的IP地址須要瞭解子網的掩碼。例如,若是路由器接到發往128.1.2.255的數據報,當B類網絡128.1的子網掩碼爲255.255.255.0時,該地址就是指向子網的廣播地址;但若是該子網的掩碼爲255.255.254.0,該地址就不是指向子網的廣播地址。

 

指向全部子網的廣播

  指向全部子網的廣播也須要了解目的網絡的子網掩碼,以便與指向網絡的廣播地址區分開。指向全部子網的廣播地址的子網號及主機號爲全1.例如,若是目的子網掩碼爲255.255.255.0.那麼IP地址128.1.255.255是一個指向全部子網的廣播地址。然而,若是網絡沒有劃分子網,這就是一個指向網絡的廣播。

 

  

多播

  IP多播提供兩類服務:

  1)向多個目的地址傳送數據。有許多向多個接收者傳送信息的應用:例如交互式會議系統向多個接收者分發郵件或新聞。若是不採用多播,目前這些應用大多采用TCP來完成(向每一個目的地址傳送一個單獨的數據複製)。然而,即便使用多播,某些應用可能繼續採用TCP來保證它的可靠性。

  2) 客戶對服務器的請求。例如,無盤工做站的須要肯定的啓動引導服務器。目前,這項服務是經過廣播提供的,可是使用多播可下降不提供這項服務的負擔。

 

多播組地址

  

  多播組地址包括爲1110的最高4bit和多播組號。它們一般可表示爲點分十進制數,範圍從224.0.0.0到239.255.255.255。

  可以接收發往一個特定多播組地址數據的主機集合稱爲主機組(host group)。一個主機組可跨越多個網絡。主機組中成員可隨時加入或離開主機組。主機組中對主機的數量沒有限制,同時不屬於某一主機組的主機能夠往該組發送信息。

  一些多播組地址被IANA肯定爲知名地址。它們也被看成永久主機組,這和TCP和UDP的熟知端口類似。一樣,這些知名多播地址在RFC最新分配數字中列出。注意這些多播地址所表明的組是永久組,而它們的組成員卻不是永久的。

  

多播組地址到以太網地址的轉換

  IANA擁有一個以太網地址塊,即高位24bit爲00:00:5e(十六進制表示),這意味着該地址快所擁有的地址範圍從00:00:5e:00:00:00到00:00:5e:ff:ff:ff。IANA將其中的一半分配爲多播地址。爲了指明一個多播地址,任何一個以太網地址的首字節必須是01,這意味着與IP多播相對應獲得以太網地址範圍從01:00:5e:00:00:00到01:00:5e:7f:ff:ff.

  這種地址分配將使以太網多播地址中的23bit與IP多播組號對應起來,經過將多播組號中的低位23bit映射到以太網中地址中的低位23bit實現,這個過程以下圖所示

 

 

  單個物理網絡的多播是簡單的。多播進程將目的IP地址指明爲多播地址,設備驅動程序將它轉換爲響應的以太網地址,而後把數據發送出去。接收進程必須通知它們的IP層,它們想接收的發往給定多播地址的數據報,而且設備驅動程序必須可以接收這些多播幀。這個過程就是「加入一個多播組」(使用「接收進程」複數形式的緣由在於對一肯定的多播信息,在同一主機或多個主機上存在多個接收者,這也是爲何要首先使用多播的緣由)。當一個主機接收到多播數據報時,它必須向屬於那個多播組的每一個進程均傳送一個複製。這和單個進程收到單播UDP數據報的UDP不一樣。使用多播,一個主機上可能存在多個屬於同一多播組的進程。

  當把多播擴展到單個物理網絡之外須要經過路由器轉發多播數據報時,複雜性就增長了。須要有一個協議讓多播路由器瞭解肯定網絡中屬於肯定多播組的任何一個主機。這個協議就是Internet組管理協議(IGMP)。

 

小結

  廣播是將數據報發送到網絡中的全部主機(一般是本地相連的網絡),而多播是將數據報發送到網絡的一個主機組。這兩個概念的基本點在於當收到送往上一個協議棧的數據幀時採用不一樣類型的過濾。這個協議層都可以由於不一樣的理由丟棄數據報。

  目前有四種類型的廣播地址:受限的廣播,指向網絡的廣播,指向子網的廣播和指向全部子網的廣播。最經常使用的是指向子網的廣播。受限的廣播一般只在系統初始啓動時纔會用到。

  試圖經過路由器進行廣播而發生的問題,經常是由於路由器不瞭解目的網絡的子網掩碼。結果與多種因素有關:廣播地址類型、配置參數等等。

  D類IP地址被稱爲多播組地址。經過將其低23 bit映射到相應以太網地址中即可以實現多播組地址到以太網地址的轉換。因爲地址映射是不惟一的,所以須要其餘的協議實現額外的數據報過濾。

  

參考文獻:

1. 《TCP/IP詳解 卷1:協議》  機械工業出版社

相關文章
相關標籤/搜索