廣播和多播僅應(yīng)用于UDP,它們對(duì)需將報(bào)文同時(shí)傳往多個(gè)接收者的應(yīng)用來說十分重要。TCP是一個(gè)面向連接的協(xié)議,它意味著分別運(yùn)行于兩主機(jī)(由IP地址確定)內(nèi)的兩進(jìn)程(由端口號(hào)確定)間存在一條連接。
考慮包含多個(gè)主機(jī)的共享信道網(wǎng)絡(luò)如以太網(wǎng)。每個(gè)以太網(wǎng)幀包含源主機(jī)和目的主機(jī)的以太網(wǎng)地址(48bit)。通常每個(gè)以太網(wǎng)幀僅發(fā)往單個(gè)目的主機(jī),目的地址指明單個(gè)接收接口,因而稱為單播(unicast)。在這種方式下,任意兩個(gè)主機(jī)的通信不會(huì)干擾網(wǎng)內(nèi)其他主機(jī)(可能引起爭(zhēng)奪共享信道的情況除外)。
然而,有時(shí)一個(gè)主機(jī)要向網(wǎng)上的所有其他主機(jī)發(fā)送幀,這就是廣播。通過ARP和RARP可以看到這一過程。多播(multicast)處于單播和廣播之間:幀僅傳送給屬于多播組的多個(gè)主機(jī)。
為了弄清廣播和多播,需要了解主機(jī)對(duì)由信道傳送過來幀的過濾過程。圖12-1說明了這一過程。
首先,網(wǎng)卡查看由信道傳送過來的幀,確定是否接收該幀,若接收后就將它傳往設(shè)備驅(qū)動(dòng)程序。通常網(wǎng)卡僅接收那些目的地址為網(wǎng)卡物理地址或廣播地址的幀。另外,多數(shù)接口均被設(shè)置為混合模式,這種模式能接收每個(gè)幀的一個(gè)復(fù)制。作為一個(gè)例子,tcpdump使用這種模式。
目前,大多數(shù)的網(wǎng)卡經(jīng)過配置都能接收目的地址為多播地址或某些子網(wǎng)多播地址的幀。對(duì)于以太網(wǎng),當(dāng)?shù)刂分凶罡咦止?jié)的最低位設(shè)置為1時(shí)表示該地址是一個(gè)多播地址,下圖協(xié)議棧各層對(duì)收到幀的過濾過程用十六進(jìn)制可表示為01:00:00:00:00:00(以太網(wǎng)廣播地址ff:ff:ff:ff:ff:ff可看作是以太網(wǎng)多播地址的特例)。
如果網(wǎng)卡收到一個(gè)幀,這個(gè)幀將被傳送給設(shè)備驅(qū)動(dòng)程序(如果幀檢驗(yàn)和錯(cuò),網(wǎng)卡將丟棄該幀)。設(shè)備驅(qū)動(dòng)程序?qū)⑦M(jìn)行另外的幀過濾。首先,幀類型中必須指定要使用的協(xié)議(IP、ARP等等)。其次,進(jìn)行多播過濾來檢測(cè)該主機(jī)是否屬于多播地址說明的多播組。
設(shè)備驅(qū)動(dòng)程序隨后將數(shù)據(jù)幀傳送給下一層,比如,當(dāng)幀類型指定為IP數(shù)據(jù)報(bào)時(shí),就傳往IP層。IP根據(jù)IP地址中的源地址和目的地址進(jìn)行更多的過濾檢測(cè)。如果正常,就將數(shù)據(jù)報(bào)傳送給下一層(如TCP或UDP)。
每次UDP收到由IP傳送來的數(shù)據(jù)報(bào),就根據(jù)目的端口號(hào),有時(shí)還有源端口號(hào)進(jìn)行數(shù)據(jù)報(bào)過濾。如果當(dāng)前沒有進(jìn)程使用該目的端口號(hào),就丟棄該數(shù)據(jù)報(bào)并產(chǎn)生一個(gè)ICMP不可達(dá)報(bào)文(TCP根據(jù)它的端口號(hào)作相似的過濾)。如果UDP數(shù)據(jù)報(bào)存在檢驗(yàn)和錯(cuò),將被丟棄。
使用廣播的問題在于它增加了對(duì)廣播數(shù)據(jù)不感興趣主機(jī)的處理負(fù)荷。拿一個(gè)使用UDP廣播應(yīng)用作為例子。如果網(wǎng)內(nèi)有50個(gè)主機(jī),但僅有20個(gè)參與該應(yīng)用,每次這20個(gè)主機(jī)中的一個(gè)發(fā)送UDP廣播數(shù)據(jù)時(shí),其余30個(gè)主機(jī)不得不處理這些廣播數(shù)據(jù)報(bào)。一直到UDP層,收到的UDP廣播數(shù)據(jù)報(bào)才會(huì)被丟棄。這30個(gè)主機(jī)丟棄UDP廣播數(shù)據(jù)報(bào)是因?yàn)檫@些主機(jī)沒有使用這個(gè)目的端口。
多播的出現(xiàn)減少了對(duì)應(yīng)用不感興趣主機(jī)的處理負(fù)荷。使用多播,主機(jī)可加入一個(gè)或多個(gè)多播組。這樣,網(wǎng)卡將獲悉該主機(jī)屬于哪個(gè)多播組,然后僅接收主機(jī)所在多播組的那些多播幀。
眾信咨詢:互聯(lián)網(wǎng)資質(zhì)代理誠(chéng)信品牌