多播與廣播原理分析及區別
1.0 廣播
廣播的用途
- 假定伺服器主機在本地區域網上,但不知道它的單播IP地址時對它進行定位,即進行資源發現。
- 當有多個客戶和單個伺服器通訊時,減少區域網上的資料流量。
使用廣播的因特網應用的例子:
- ARP協議通過鏈路層廣播定位具有指定IP地址的主機的MAC地址(ip----->mac)
- 主機通過廣播向DHCP伺服器申請IP地址 (電腦每次開機執行DHCP ,請求路由器傳送ip)
廣播地址
1、子網廣播地址
- 所有主機號全為1的IP地址是子網廣播地址。
- 向子網廣播地址傳送的資料報,子網內的所有主機都能收到。
- 子網廣播資料報不會被路由器轉發。
2、受限廣播地址
- 255.255.255.255地址為受限廣播地址。
- 路由器不會轉發該地址的IP資料報。
- BOOTP和DHCP伺服器就是利用這個地址為發出IP地址廣播申請的主機分配IP地址 。
3、鏈路層廣播地址
- MAC地址全1的地址,即FF:FF:FF:FF:FF:FF。
- 帶有這樣目的MAC地址的幀經過任何該子網上的主機時,都會被其鏈路層接收。
- ARP就是利用這個地址發出廣播來確定具有指定IP地址對應主機的MAC地址。
2.0 多播
1.0 為什麼要使用多播:
最開始的時候,設計這一技術的目的是彌補“廣播”(Broadcasting)通訊的不足。
多播的用途
- 單播和廣播是兩個極端,要麼一個,要麼全部。
- 多播提供一種折衷方案,多播資料報僅由對該資料報感興趣的介面接收。
- 廣播一般侷限於區域網。
- 而多播既可以用於區域網也可以跨越廣域網
加入多播組
- 主機要接收多播資料必須預先加入多播組。
- IP多播組由特定IP地址來區分。
- 程序通過把UDP套接字(SOCK_DGRAM型別)繫結到一個多播組的IP地址,並設定相應的套接字選項,就可以加入這個多播組。
- 設定套接字選項通知網路介面該多播地址上到來的訊息應該被傳送給這個套接字。
- 如果同一臺機器上有多個程序加入該組,則網路介面會把每個訊息複製給所有這些程序
多播地址
•多播是通過D類地址進行的。
•D類地址的前4位是1110,後面28位是多播的組標識。 1110 +
•多播地址範圍是224.0.0.0 ~ 239.255.255.255。
- 224.0.0.1為全主機組,支援多播的主機必須加入全主機組。
- 224.0.0.2為全路由組,支援多播的由器必須加入全路由組。
•多播組按照多播範圍(多播的訊息會從源開始被傳送多遠)被分為四類:
–鏈路-本地多播地址:224.0.0.0 ~ 224.0.0.255
- 這些地址是給那些在網路拓撲的最底層相連的機器的。
- 多播路由器不會轉發這些地址的多播訊息。
–全域性多播地址:224.0.1.0 ~ 238.255.255.255
該地址範圍內的訊息應該被所有多播路由器傳播。
–管理範圍內的多播地址:239.0.0.0 ~ 239.255.255.255
這些地址用在專門組織內部,並且不應該被傳遞到組織範圍之外。
•多播IP地址與多播MAC地址的轉換
- –多播MAC地址前24位固定為:00000001 00000000 01011110
- –多播MAC地址第25為固定為0
多播MAC地址後23位取多播IP地址後23位
IP地址 11100000 10000000 00000001 00000001
MAC址 00000001 00000000 010111100 0000000 00000001 00000001
01 00 5e
3.0 多播與廣播區別
•廣播與多播的比較
- – 廣播資料報的接收是被動的。
- – 連線到子網上的所有主機都要接收廣播資料報,這會增加網路流量,並且子網上的主機增加額外的負擔。
- –多播資料報的接收是主動的。主機主動加入指定的多播組,才會接收該組的多播資料報。
- –採用多播方式可以只把資料報傳送給對資料報感興趣的主機。
- –傳送廣播資料報,只需要處理髮送端。
- –只要將目的地址設定為網路的廣播地址,設定套接字選項SO_BROADCAST。
- –接收多播資料報,只需要處理接收端。
- –多播資料報D類地址進行傳送,在傳送端不用設定套接字選項,但在接收端需要指出主機加入哪一個多播組。
下面是一些轉載
網絡卡從網路上接收到目標實體地址對應的所有bit位都為1的資料報時,會收到這條訊息並將其上傳給驅動程式,網絡卡的這種工作模式稱為廣播模式,網絡卡的預設工作模式包含直接模式和廣播模式。
利用這一特性,UDP(使用者資料報協議)還提供了向多個目標地址傳送廣播資料包的能力。
廣播資料即資料從一個工作站上發出,只要將資料包的目標實體地址對應的所有bit位都設為1,區域網內的所有工作站網絡卡都會收到這條訊息並將其上傳給驅動程式。這一特徵適用於無連線協議,因為區域網(LAN)上的所有機器都可獲得並處理廣播訊息。
2.0 使用廣播訊息的不利之處是每臺機器都必須對該訊息進行處理。廣播的處理過程:
比如,
- 一使用者在LAN上廣播一條訊息。 ---------->傳送
- 每臺機器上的網絡卡都會收到這條訊息------------->網絡卡接收
- 並把它上傳到網路堆疊(驅動程式完成)-------->上傳網路堆疊
- 然後,堆疊將這條訊息的目標埠號與該主機上執行的所有的網路應用程式中所指定的埠號依次比較,看它們是否相等,
- 從而決定哪個網路應用程式應該接收這條訊息。--------->匹配網路與埠
通常,這個區域網上的多數機器對該訊息都不感興趣,草草地一棄了之。但是,各臺機器在驅動程式中都仍需花時間來處理這個資料包,看是否有應用程式對它感興趣。結果,高廣播通訊流使LAN上的機器陷入困境,因為每個工作站都要檢查這個資料包。
什麼為網絡卡的多播傳送模式?
有一些特殊的實體地址,他們不能作為任何網絡卡的實際實體地址使用,但網絡卡能夠設定為不過濾從網路上接收到的一個以這些實體地址中的一個和若干個作為目的實體地址的幀。這些實體地址稱為多播傳送地址,網絡卡的這種工作模式稱為多播傳送模式。
“多播”亦稱“多點傳送”(multicast),也就是一臺主機發出的包可以同時被其他多個有資格的主機接收,這臺主機和那些有資格的主機就形成了一個組,他們在組內的通訊是廣播式的。
多播的工作原理是,
將一個網路上的某些主機的網絡卡設定成多播傳送工作模式,指定其不過濾以某一個多播傳送地址作為目的實體地址的資料幀,這樣,這些主機的驅動程式中就可以同時接收以該多播傳送地址作為目的實體地址的資料幀,而其他主機的驅動程式卻接收不到,這些主機在邏輯上便形成了一個“多播”組。
採用這種技術,相對廣播而言,可有效減輕網路上“多播”組之外的其他主機的負擔,因為傳送給“多播”組的資料不會被傳送到它們的驅動程式中去處理,避免資源的無謂浪費。最開始的時候,設計這一技術的目的是彌補“廣播”(Broadcasting)通訊的不足。
多播有兩種實現方式:
1.設定網絡卡為混雜模式,然後通過驅動對收到的所有資料包進行過濾,留下指定的多播地址的資料包。
這種方式效率比較低,適合不支援多播模式的網絡卡。(驅動過濾)
2.設定網絡卡為多播模式,網絡卡本身有多播過濾器,網絡卡自己能夠判斷進入的資料包是否屬於多播資料。
由於多播過濾是由硬體完成的,所以效率比較高。(網絡卡過濾)
網絡卡只接收目的地址為網絡卡自身實體地址和多播地址(廣播是多播的一種)的幀。對於乙太網,多播的地址的最高位元組的最低位為1(01:00:00:00:00:00)
對於IP多播,IP多播地址會轉換成乙太網多播地址,一個乙太網多播地址可以對應多個IP多播地址。???
因此,裝置驅動程式或IP層必須對資料報進行過濾,因為網絡卡可能收到主機不想接收的多播資料幀。當網絡卡不提供足夠多播資料幀過濾功能時,就必須把網絡卡設定成“混雜模式”,由驅動檢查收到的資料幀是否為主機需要的。
也就是說多播的兩種實現模式,都需要由驅動程式參與過濾,只不過如果先由網絡卡過濾,可以減輕驅動程式的工作量。
多播地址(multicast address)是一組主機的標示符,它已經加入到一個多播組中。在乙太網中,多播地址是一個48位的標示符,命名了一組應該在這個網路中應用接收到一個分組的站點。在IPv4中,它歷史上被叫做D類地址,一種型別的IP地址,它的範圍從224.0.0.0到239.255.255.255。D類地址用於組播。
Broadcast Address(廣播地址)是專門用於同時向網路中所有工作站進行傳送的一個地址。在使用TCP/IP 協議的網路中,主機標識段host ID 為全1 的IP 地址為廣播地址,廣播的分組傳送給host ID段所涉及的所有計算機。例如,對於10.1.1.0 (255.255.255.0 )網段,其廣播地址為10.1.1.255 (255 即為2 進位制的11111111 ),當發出一個目的地址為10.1.1.255 的分組(封包)時,它將被分發給該網段上的所有計算機。