TCP/IP學習筆記(11)——廣播和多播

1、引言

廣播和多播僅應用於 UDP,它們對需將報文同時傳往多個接收者的應用來說十分重要。TCP是一個面向連接的協議,它意味着分別運行於兩主機(由 IP地址確定)內的兩進程(由端口號確定)間存在一條連接。
考慮包含多個主機的共享信道網絡如以太網。每個以太網幀包含源主機和目的主機的以太網地址(48bit)。通常每個以太網幀僅發往單個目的主機,目的地址指明單個接收接口,因而稱爲單播( unicast )。在這種方式下,任意兩個主機的通信不會干擾網內其他主機(可能引起爭奪共享信道的情況除外)。然而,有時一個主機要向網上的所有其他主機發送幀,這就是廣播。通過ARP和RARP可以看到這一過程。多播(multicast) 處於單播和廣播之間:幀僅傳送給屬於多播組的多個主機。
我們需要了解主機對由信道傳送過來的幀的過濾過程。如下圖所示。
這裏寫圖片描述
首先,網卡查看由信道傳送過來的幀,確定是否接收該幀,若接收後就將它傳往設備驅動程序。通常網卡僅接收那些目的地址爲網卡物理地址或廣播地址的幀。另外,多數接口均被設置爲混合模式,這種模式能接收每個幀的一個複製。作爲一個例子,tcpdump使用這種模式。
目前,大多數的網卡經過配置都能接收目的地址爲多播地址或某些子網多播地址的幀。對於以太網,當地址中最高字節的最低位設置爲 1時表示該地址是一個多播地址,用十六進制可表示爲01:00:00:00:00:00(以太網廣播地址ff:ff:ff:ff:ff:ff可看作是以太網多播地址的特例)。
如果網卡收到一個幀,這個幀將被傳送給設備驅動程序(如果幀檢驗和錯,網卡將丟棄該幀)。設備驅動程序將進行另外的幀過濾。首先,幀類型中必須指定要使用的協議(IP、ARP等等)。其次,進行多播過濾來檢測該主機是否屬於多播地址說明的多播組。
設備驅動程序隨後將數據幀傳送給下一層,比如,當幀類型指定爲IP數據報時,就傳往IP層。IP根據I P地址中的源地址和目的地址進行更多的過濾檢測。如果正常,就將數據報傳送給下一層(如TCP或UDP)。
每次UDP收到由IP傳送來的數據報,就根據目的端口號,有時還有源端口號進行數據報過濾。如果當前沒有進程使用該目的端口號,就丟棄該數據報併產生一個ICMP不可達報文(T C P根據它的端口號作相似的過濾)。如果U D P數據報存在檢驗和錯,將被丟棄。
使用廣播的問題在於它增加了對廣播數據不感興趣主機的處理負荷。拿一個使用UDP廣播應用作爲例子。如果網內有50個主機,但僅有20個參與該應用,每次這20個主機中的一個發送UDP廣播數據時,其餘30個主機不得不處理這些廣播數據報。一直到UDP層,收到的UDP廣播數據報纔會被丟棄。這30個主機丟棄UDP廣播數據報是因爲這些主機沒有使用這個目的端口。
多播的出現減少了對應用不感興趣主機的處理負荷。使用多播,主機可加入一個或多個多播組。這樣,網卡將獲悉該主機屬於哪個多播組,然後僅接收主機所在多播組的那些多播幀。


2、廣播

1)受限的廣播
受限的廣播地址是255.255.255.255。該地址用於主機配置過程中IP數據報的目的地址,此時,主機可能還不知道它所在網絡的網絡掩碼,甚至連它的 IP地址也不知道。在任何情況下,路由器都不轉發目的地址爲受限的廣播地址的數據報,這樣的數據報僅出現在本地網絡中。
2)指向網絡的廣播
指向網絡的廣播地址是主機號爲全1的地址。A類網絡廣播地址爲netid.255.255.255,其中netid爲A類網絡的網絡號。一個路由器必須轉發指向網絡的廣播,但它也必須有一個不進行轉發的選擇。
3)指向子網的廣播
指向子網的廣播地址爲主機號爲全 1且有特定子網號的地址。作爲子網直接廣播地址的IP地址需要了解子網的掩碼。例如,如果路由器收到發往128.1.2.255的數據報,當 B類網絡128.1的子網掩碼爲255.255.255.0時,該地址就是指向子網的廣播地址;但如果該子網的掩碼爲255.255.254.0,該地址就不是指向子網的廣播地址。
4)指向所有子網的廣播
指向所有子網的廣播也需要了解目的網絡的子網掩碼,以便與指向網絡的廣播地址區分開。指向所有子網的廣播地址的子網號及主機號爲全1。例如,如果目的子網掩碼爲255.255.255.0,那麼I P地址128.1.255.255是一個指向所有子網的廣播地址。然而,如果網絡沒有劃分子網,這就是一個指向網絡的廣播。


3、多播

IP多播提供兩類服務:
1) 向多個目的地址傳送數據。有許多向多個接收者傳送信息的應用:例如交互式會議系統和向多個接收者分發郵件或新聞。如果不採用多播,目前這些應用大多采用TCP來完成(向每個目的地址傳送一個單獨的數據複製)。然而,即使使用多播,某些應用可能繼續採用TCP來保證它的可靠性。
2) 客戶對服務器的請求。例如,無盤工作站需要確定啓動引導服務器。目前,這項服務是通過廣播來提供的,但是使用多播可降低不提供這項服務主機的負擔。
多播組地址包括爲1110的最高4 bit和多播組號。它們通常可表示爲點分十進制數,範圍從224.0.0.0到239.255.255.255。能夠接收發往一個特定多播組地址數據的主機集合稱爲主機組 (host group)。一個主機組可跨越多個網絡。主機組中成員可隨時加入或離開主機組。主機組中對主機的數量沒有限制,同時不屬於某一主機組的主機可以向該組發送信息。
一些多播組地址被IANA確定爲知名地址。它們也被當作永久主機組,這和 TCP及UDP中的熟知端口相似。同樣,這些知名多播地址在RFC最新分配數字中列出。注意這些多播地址所代表的組是永久組,而它們的組成員卻不是永久的。


4、小結

廣播是將數據報發送到網絡中的所有主機(通常是本地相連的網絡),而多播是將數據報發送到網絡的一個主機組。這兩個概念的基本點在於當收到送往上一個協議棧的數據幀時採用不同類型的過濾。每個協議層均可以因爲不同的理由丟棄數據報。
目前有四種類型的廣播地址:受限的廣播、指向網絡的廣播、指向子網的廣播和指向所有子網的廣播。最常用的是指向子網的廣播。受限的廣播通常只在系統初始啓動時纔會用到。試圖通過路由器進行廣播而發生的問題,常常是因爲路由器不瞭解目的網絡的子網掩碼。結果與多種因素有關:廣播地址類型、配置參數等等。
D類IP地址被稱爲多播組地址。通過將其低位23 bit映射到相應以太網地址中便可實現多播組地址到以太網地址的轉換。由於地址映射是不唯一的,因此需要其他的協議實現額外的數據報過濾。

發佈了33 篇原創文章 · 獲贊 11 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章