多播(組播)原理分析


首先說明一點,要想在不同網段收到多播信息,得把網關的多播功能開發才可行!
為什么要使用多播:
        網卡從網絡上接收到目標物理地址對應的所有bit位都為1的數據報時,會收到這條消息並將其上傳給驅動程序,網卡的這種工作模式稱為廣播模式,網卡的缺省工作模式包含直接模式和廣播模式。利用這一特性,UDP(用戶數據報協議)還提供了向多個目標地址發送廣播數據包的能力。廣播數據即數據從一個工作站上發出,只要將數據包的目標物理地址對應的所有bit位都設為1,局域網內的所有工作站網卡都會收到這條消息並將其上傳給驅動程序。這一特征適用於無連接協議,因為局域網(LAN)上的所有機器都可獲得並處理廣播消息。使用廣播消息的不利之處是每台機器都必須對該消息進行處理。比如,一用戶在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 的分組(封包)時,它將被分發給該網段上的所有計算機。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM