速讀原著-TCP/IP(廣播和多播)
- 2020 年 3 月 9 日
- 筆記
第12章 廣播和多播
12.1 引言
在第1章中我們提到有三種 I P地址:單播地址、廣播地址和多播地址。本章將更詳細地介紹廣播和多播。
廣播和多播僅應用於 U D P,它們對需將報文同時傳往多個接收者的應用來說十分重要。T C P是一個面向連接的協議,它意味著分別運行於兩主機(由 I P地址確定)內的兩進程(由埠號確定)間存在一條連接。
考慮包含多個主機的共享信道網路如乙太網。每個乙太網幀包含源主機和目的主機的乙太網地址(4 8 b i t)。通常每個乙太網幀僅發往單個目的主機,目的地址指明單個接收介面,因而稱為單播( u n i c a s t )。在這種方式下,任意兩個主機的通訊不會干擾網內其他主機(可能引起爭奪共享信道的情況除外)。
然而,有時一個主機要向網上的所有其他主機發送幀,這就是廣播。通過 A R P和R A R P可以看到這一過程。多播(multicast) 處於單播和廣播之間:幀僅傳送給屬於多播組的多個主機。
為了弄清廣播和多播,需要了解主機對由信道傳送過來幀的過濾過程。圖1 2 – 1說明了這一過程。首先,網卡查看由信道傳送過來的幀,確定是否接收該幀,若接收後就將它傳往設備驅動程式。通常網卡僅接收那些目的地址為網卡物理地址或廣播地址的幀。另外,多數介面均被設置為混合模式,這種模式能接收每個幀的一個複製。作為一個例子, t c p d u m p使用這種模式。
目前,大多數的網卡經過配置都能接收目的地址為多播地址或某些子網多播地址的幀。對於乙太網,當地址中最高位元組的最低位設置為 1時表示該地址是一個多播地址,用十六進位可表示為 0 1 : 0 0 : 0 0 : 0 0 : 0 0 : 0 0(乙太網廣播地址ff : ff : ff : ff : ff : ff可看作是乙太網多播地址的特例)。
如果網卡收到一個幀,這個幀將被傳送給設備驅動程式(如果幀檢驗和錯,網卡將丟棄該幀)。設備驅動程式將進行另外的幀過濾。首先,幀類型中必須指定要使用的協議( I P、A R P等等)。其次,進行多播過濾來檢測該主機是否屬於多播地址說明的多播組。
設備驅動程式隨後將數據幀傳送給下一層,比如,當幀類型指定為 I P數據報時,就傳往I P層。I P根據I P地址中的源地址和目的地址進行更多的過濾檢測。如果正常,就將數據報傳送給下一層(如T C P或U D P)。

每次U D P收到由I P傳送來的數據報,就根據目的埠號,有時還有源埠號進行數據報過濾。如果當前沒有進程使用該目的埠號,就丟棄該數據報併產生一個 I C M P不可達報文(T C P根據它的埠號作相似的過濾)。如果U D P數據報存在檢驗和錯,將被丟棄。
使用廣播的問題在於它增加了對廣播數據不感興趣主機的處理負荷。拿一個使用 U D P廣播應用作為例子。如果網內有 5 0個主機,但僅有 2 0個參與該應用,每次這 2 0個主機中的一個發送U D P廣播數據時,其餘 3 0個主機不得不處理這些廣播數據報。一直到 U D P層,收到的U D P廣播數據報才會被丟棄。這 3 0個主機丟棄U D P廣播數據報是因為這些主機沒有使用這個目的埠。
多播的出現減少了對應用不感興趣主機的處理負荷。使用多播,主機可加入一個或多個多播組。這樣,網卡將獲悉該主機屬於哪個多播組,然後僅接收主機所在多播組的那些多播幀。