tcp/ip詳解讀書筆記(第12章 廣播和多播)
廣播和多播僅應用於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廣播資料報是因為這些主機沒有使用這個目的埠。
多播的出現減少了對應用不感興趣主機的處理負荷。使用多播,主機可加入乙個或多個多播組。這樣,網絡卡將獲悉該主機屬於哪個多播組,然後僅接收主機所在多播組的那些多播幀。
廣播受限的廣播
受限的廣播位址是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位址的格式。
多播組位址包括為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位址的對映過程。令牌環網路通常使用不同的位址對映方法,這是因為大多數令牌控制中的限制。
TCP IP詳解讀書筆記(第12章 廣播和多播)
我們曾提到有三種ip 廣播和多播僅應用於 udp,因為它們需將報文同時傳往多個接收者。而 tcp是乙個面向連線的協議,它意味著分別執行於兩主機 由 ip位址確定 內的兩程序 由埠號確定 間存在一條連線。為了弄清廣播和多播,需要了解主機對由通道傳送過來幀的過濾過程。圖 1說明了這一過程。圖1 協議棧各...
TCP IP詳解讀書筆記
igmp協議 icmp資料報結構 udphdr結構 tcphdr結構 iphdr結構 tcp ip詳解讀書筆記 第13章igmp internet組管理協議 tcp ip詳解讀書筆記 第12章 廣播和多播 tcp ip詳解讀書筆記 第11章 udp 使用者資料報協議 tcp ip詳解讀書筆記 第10...
TCP IP詳解 讀書筆記 四
tcp提供可靠的運輸層。它使用的方法之一就是確認從另一端收到的資料。但資料和確認都有可能會丟失。tcp通過在傳送時設定乙個定時器來解決這種問題。如果當定時器溢位時還沒有收到確認,它就重傳該資料。對任何實現而言,關鍵之處就在於超時和重傳的策略,即怎樣決定超時間隔和如何確定重傳的頻率。首先觀察tcp所使...