ip位址由三類:單播位址(目的端為單個主機),廣播位址(目的端為給定網路上的所有主機)以及多播位址(目的端為同一組內的所有主機)。
廣播和多播僅應用於udp,它們需要將報文同時傳往多個接收者的應用十分重要。tcp是乙個面向連線的協議,它意味著分別執行於兩主機(由ip位址確定)內的兩程序(由埠號確定)間存在一條連線。
考慮包含多個主機的共享通道網路如乙太網。每個乙太網幀包含源主機和目的主機的乙太網位址(48bit)。通常每個乙太網幀僅發往單個目的主機,目的位址指明單個接收介面,因而稱為單播(unicast)。在這種方式下,任意兩個主機的通訊不會干擾網內的其他主機(可能引起爭奪共享通道的情況除外)。
然而,有時乙個主機要向網上的所有其他主機傳送幀,這就是廣播。通過arp和rarp可以看到這一過程。多播(multicast)處於單播和廣播之間:幀僅傳送給屬於多播組的多個主機。
為了弄清廣播和多播,需要了解主機對由通道傳送過來的幀的過濾過程。下圖說明了這一點。
協議棧各層對收到的幀的過濾過程
首先,網絡卡檢視由通道傳送過來的幀,確定是否接收該幀,若接收後就將它傳往裝置驅動程式。通常網絡卡僅接收那些目的位址為網絡卡實體地址或廣播位址的幀。另外,多數介面均被設為混雜模式,這種模式能接收每個幀的乙個複製。
目前,大多數的網絡卡經過配置都能接收目的位址為多播位址或某些子網多播位址的幀。對於乙太網,當位址中以最高位元組的最低位設定為1時表示該位址是乙個多播位址,用十六進製制表示為01:00:00:00:00:00(乙太網廣播位址 ff:ff:ff:ff:ff:ff可看作是乙太網多播位址的特例)。
如果網絡卡收到乙個幀,這個幀將被傳送給裝置驅動程式(如果幀檢驗和錯誤,網絡卡就丟棄該幀)。裝置驅動程式將進行另外的幀過濾。首先,幀型別中必須制定要用的協議(ip、arp等等)。其次,進行多播過濾來檢測該主機是否屬於多播位址說明的多播組)。
裝置驅動程式隨後將該資料幀傳送給下一層,比如,當幀型別指定為ip資料報時,就傳往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)客戶對伺服器的請求。例如,無盤工作站的需要確定的啟動引導伺服器。目前,這項服務是通過廣播提供的,但是使用多播可降低不提供這項服務的負擔。
多播組位址
多播組位址包括為1110的最高4bit和多播組號。它們通常可表示為點分十進位制數,範圍從224.0.0.0到239.255.255.255。
能夠接收發往乙個特定多播組位址資料的主機集合稱為主機組(host group)。乙個主機組可跨越多個網路。主機組中成員可隨時加入或離開主機組。主機組中對主機的數量沒有限制,同時不屬於某一主機組的主機可以往該組傳送資訊。
一些多播組位址被iana確定為知名位址。它們也被當作永久主機組,這和tcp和udp的熟知埠相似。同樣,這些知名多播位址在rfc最新分配數字中列出。注意這些多播位址所代表的組是永久組,而它們的組成員卻不是永久的。
多播組位址到乙太網位址的轉換
iana擁有乙個乙太網位址塊,即高位24bit為00:00:5e(十六進製制表示),這意味著該位址快所擁有的位址範圍從00:00:5e:00:00:00到00:00:5e:ff:ff:ff。iana將其中的一半分配為多播位址。為了指明乙個多播位址,任何乙個乙太網位址的首位元組必須是01,這意味著與ip多播相對應得到乙太網位址範圍從01:00:5e:00:00:00到01:00:5e:7f:ff:ff.
這種位址分配將使乙太網多播位址中的23bit與ip多播組號對應起來,通過將多播組號中的低位23bit對映到乙太網中位址中的低位23bit實現,這個過程如下圖所示
單個物理網路的多播是簡單的。多播程序將目的ip位址指明為多播位址,裝置驅動程式將它轉換為響應的乙太網位址,然後把資料傳送出去。接收程序必須通知它們的ip層,它們想接收的發往給定多播位址的資料報,並且裝置驅動程式必須能夠接收這些多播幀。這個過程就是「加入乙個多播組」(使用「接收程序」複數形式的原因在於對一確定的多播資訊,在同一主機或多個主機上存在多個接收者,這也是為什麼要首先使用多播的原因)。當乙個主機接收到多播資料報時,它必須向屬於那個多播組的每個程序均傳送乙個複製。這和單個程序收到單播udp資料報的udp不同。使用多播,乙個主機上可能存在多個屬於同一多播組的程序。
當把多播擴充套件到單個物理網路以外需要通過路由器**多播資料報時,複雜性就增加了。需要有乙個協議讓多播路由器了解確定網路中屬於確定多播組的任何乙個主機。這個協議就是internet組管理協議(igmp)。
小結
廣播是將資料報傳送到網路中的所有主機(通常是本地相連的網路),而多播是將資料報傳送到網路的乙個主機組。這兩個概念的基本點在於當收到送往上乙個協議棧的資料幀時採用不同型別的過濾。這個協議層均可以因為不同的理由丟棄資料報。
試圖通過路由器進行廣播而發生的問題,常常是因為路由器不了解目的網路的子網掩碼。結果與多種因素有關:廣播位址型別、配置引數等等。
d類ip位址被稱為多播組位址。通過將其低23 bit對映到相應乙太網位址中便可以實現多播組位址到乙太網位址的轉換。由於位址對映是不唯一的,因此需要其他的協議實現額外的資料報過濾。
參考文獻:
1. 《tcp/ip詳解 卷1:協議》 機械工業出版社
計算機網路 IP多播協議
每種物理網路都有封裝多播分組的方法 幀格式 幀頭部ip頭部 ip payload udp 幀尾對應內容 多播mac位址 多播ip位址 目的埠號 網路中任何一台主機都可以做源主機。所有通過設定多播位址而加入該多播組的主機都是目的主機,稱為組成員 group membership 網路中的路由器負責把多...
計算機網路 衝突域和廣播域
定義 同一時間內只能有一台裝置傳送資訊的範圍。分層 基於osi的第一層物理層 裝置 第二層裝置能隔離衝突域,比如switch。交換機能縮小衝突域的範圍,交換接的每乙個埠就是乙個衝突域。定義 如果站點發出乙個廣播訊號,所有能接收收到這個訊號的裝置範圍稱為乙個廣播域。分層 基於osi的第二層資料鏈路層 ...
計算機網路9 計算機網路效能
1.網路效能的衡量指標 2.速率 3.頻寬 4.延遲 5.丟包率 6.時延頻寬積 7.吞吐率 網路效能的好壞可以由網路的速率 頻寬 延遲 丟包率 網路頻寬積 吞吐率等方面來判斷,下面讓我們一一詳細介紹。速率 資料率 data rate 也稱 資料傳輸速率或位元率 bit rate 指的是 單位時間 ...