TCP/IP詳解讀書筆記(第12章 廣播和多播)
我們曾提到有三種IP地址:單播地址、廣播地址和多播地址。本章將更詳細地介紹廣播和多播。說明:
單播地址:目的為單個主機
廣播地址:目的端為給定網絡上的所有主機
多播地址:目的端為同一組內的所有主機
廣播和多播僅應用于UDP,因為它們需將報文同時傳往多個接收者。而TCP是一個面向連接的協議,它意味著分別運行于兩主機(由IP地址確定)內的兩進程(由端口號確定)間存在一條連接。
為了弄清廣播和多播,需要了解主機對由信道傳送過來幀的過濾過程。圖1說明了這一過程。

圖1:協議棧各層對收到幀的過濾過程
首先,網卡查看由信道傳送過來的幀,確定是否接收該幀,若接收后就將它傳往設備驅動程序。通常網卡僅接收那些目的地址為網卡物理地址或廣播地址的幀。然而,多數接口均有被設置為混合模式的選項,這種模式能接收每個幀的一個復制。
設備驅動程序將進行另外的幀過濾。首先,幀類型中必須指定要使用的協議( IP、ARP等等)。其次,進行多播過濾來檢測該主機是否屬于多播地址說明的多播組。
設備驅動程序隨后將數據幀傳送給下一層,比如,當幀類型指定為I P數據報時,就傳往IP層。IP根據IP地址中的源地址和目的地址進行更多的過濾檢測。如果正常,就將數據報傳送給下一層(如TCP或UDP)。
每次UDP收到由IP傳送來的數據報,就根據目的端口號,有時還有源端口號進行數據報過濾。如果當前沒有進程使用該目的端口號,就丟棄該數據報并產生一個ICMP不可達報文(TCP根據它的端口號作相似的過濾)。如果UDP數據報存在檢驗和錯,將被丟棄。
使用廣播的問題在于它增加了對廣播數據不感興趣主機的處理負荷。拿一個使用UDP廣播應用作為例子。如果網內有50個主機,但僅有20個參與該應用,每次這20個主機中的一個發送UDP廣播數據時,其余30個主機不得不處理這些廣播數據報。一直到UDP層,收到的UDP廣播數據報才會被丟棄。這30個主機丟棄UDP廣播數據報是因為這些主機沒有使用這個目的端口。
多播的出現減少了對應用不感興趣主機的處理負荷。使用多播,主機可加入一個或多個多播組。這樣,網卡將獲悉該主機屬于哪個多播組,然后僅接收主機所在多播組的那些多播幀。
廣播
四種IP廣播地址:
受限的廣播
受限的廣播地址是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) 客戶對服務器的請求。例如,無盤工作站需要確定啟動引導服務器。目前,這項服務是通過廣播來提供的(正如BOOTP),但是使用多播可降低不提供這項服務主機的負擔。
多播組地址
圖2顯示了D類IP地址的格式。

圖2:D類IP地址格式
多播組地址包括為1110的最高4 bit和多播組號。它們通常可表示為點分十進制數,范圍
從224.0.0.0到239.255.255.255。
能夠接收發往一個特定多播組地址數據的主機集合稱為主機組(host group)。一個主機組可跨越多個網絡。主機組中成員可隨時加入或離開主機組。主機組中對主機的數量沒有限制,同時不屬于某一主機組的主機可以向該組發送信息。
一些多播組地址被IANA確定為知名地址。它們也被當作永久主機組,這和TCP及UDP中的熟知端口相似。例如,224.0.0.1代表“該子網內的所有系統組”, 224.0.0.2代表“該子網內的所有路由器組”。多播地址224.0.1.1用作網絡時間協議NTP,224.0.0.9用作RIP-2,224.0.1.2用作SGI公司的dogfight應用。
多播組地址到以太網地址的轉換
IANA擁有一個以太網地址塊,即高位24 bit為00:0 0:5e,這意味著該地址塊所擁有的地址范圍從00:0 0:5e: 00:0 0:00到00:0 0:5e:ff:ff:ff。IANA將其中的一半分配為多播地址。為了指明一個多播地址,任何一個以太網地址的首字節必須是01,這意味著與IP多播相對應的以太網地址范圍從01:0 0:5e: 00:0 0:00到01:0 0:5e:7f:ff:ff。
這種地址分配將使以太網多播地址中的23 bit與IP多播組號對應起來,通過將多播組號中的低位23 bit映射到以太網地址中的低位23 bit實現,這個過程如圖3所示。

圖3 D類IP地址到以太網多播地址的映射
由于多播組號中的最高5 bit在映射過程中被忽略,因此每個以太網多播地址對應的多播組是不唯一的。32個不同的多播組號被映射為一個以太網地址。例如,多播地址224.128.64.32(十六進制e0.80.40.20)和224,0.64.32(十六進制e0.00.40.20)都映射為同一以太網地址01.00.53.00.40.20。
既然地址映射是不唯一的,那么設備驅動程序或IP層(見圖1)就必須對數據報進行過濾。因為網卡可能接收到主機不想接收的多播數據幀。另外,如果網卡不提供足夠的多播數據幀過濾功能,設備驅動程序就必須接收所有多播數據幀,然后對它們進行過濾。
單個物理網絡的多播是簡單的。多播進程將目的IP地址指明為多播地址,設備驅動程序將它轉換為相應的以太網地址,然后把數據發送出去。這些接收進程必須通知它們的IP層,它們想接收的發往給定多播地址的數據報,并且設備驅動程序必須能夠接收這些多播幀。這個過程就是“加入一個多播組”(在同一主機或多個主機上存在多個接收者,這也是為什么要首先使用多播的原因)。當一個主機收到多播數據報時,它必須向屬于那個多播組的每個進程均傳送一個復制。這和單個進程收到單播UDP數據報的UDP不同。使用多播,一個主機上可能存在多個屬于同一多播組的進程。
當把多播擴展到單個物理網絡以外需要通過路由器轉發多播數據時,復雜性就增加了。需要有一個協議讓多播路由器了解確定網絡中屬于確定多播組的任何一個主機。這個協議就是Internet組管理協議(IGMP)
FDDI和令牌環網絡中的多播
FDDI網絡使用相同的D類IP地址到48 bit FDDI地址的映射過程。令牌環網絡通常使用不同的地址映射方法,這是因為大多數令牌控制中的限制。
posted on 2008-08-28 11:07
水 閱讀(3675)
評論(2) 編輯 收藏 引用 所屬分類:
tcp/ip