多播(組播)原理分析

為什么要使用多播:
??????? 網 卡從網絡上接收到目標物理地址對應的所有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.0239.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 的分組(封包)時,它將被分發給該網段上的所有計算機。

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/254226.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/254226.shtml
英文地址,請注明出處:http://en.pswp.cn/news/254226.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

iftop

在類Unix系統中可以使用top查看系統資源、進程、內存占用等信息。查看網絡狀態可以使用netstat、nmap等工具。若要查看實時的網絡流量,監控TCP/IP連接等,則可以使用iftop。一、iftop是什么?iftop是類似于top的實時流量監控工具。官方網站&…

sql 日記

--4.選擇雇用時間在1998-02-01到1998-05-01之間的員工姓名,job_id和雇用時間select last_name,job_id,hire_datefrom employeeswhere to_char(hire_date,yyyy-mm-dd) between 1998-02-01 and 1998-05-01 --5.選擇在20或50號部門工作的員工姓名和部門號select last_n…

CSS3中的變形處理

變形分類 縮放 使用scale方法來實現文字或圖像的縮放,在參數中指定縮放倍率。例如“scale(0.5)”,表示縮小50 傾斜 使用skew方法來實現文字或圖像的縮放,在參數中指定水平方向的傾斜角度與垂直方向的傾斜角度&#xf…

linux基本知識學習

LINUX黑洞 /dev/null 這是一個虛設的設備,俗稱“LINUX 黑洞”,任何對/dev/null的寫入都會成功, 但是數據會消失得無影無蹤,沒有任何反饋。所以經常把不想在屏幕 顯示的信息全部送到/dev/null,在shell腳本中用得較多。 …

日志OLAP:在SQL中使用UDF, lambda函數使用案例

場景 日志服務內置了20類SQL函數。面對用戶復雜的業務場景,例如使用json來沉淀業務數據,普通的SQL函數可能就無法滿足需求,需要一些用戶自定義處理邏輯。為了處理json類的業務數據,我們可以采用把json展開成多行的形式進行統計分析…

瓶子個數計數halcon

文章目錄處理要求處理方法一源碼效果方法二源碼效果博主寫作不容易,孩子需要您鼓勵 萬水千山總是情 , 先點個贊行不行 處理要求 查找紙箱內瓶子個數 處理方法一 源碼 dev_clear_window () dev_open_window (0, 0, 640*1.5, 512*1.5, black, WindowHandle…

lightoj1060_組合數學

http://lightoj.com/volume_showproblem.php?problem1060 有一些用尼康托展開http://blog.csdn.net/niushuai666/article/details/6611131,簡單的尼康托,每個字母多個數的還不會 組合數學解看起來比較簡單 給定一個字符串和k,求字符串第k大字…

幾個so經常使用Function

SD_WF_ORDER_REJECT SO拒絕 RV_ORDER_FLOW_INFORMATION 獲得憑證流,支持OBD,SO等 call function RV_ORDER_FLOW_INFORMATION exporting aufbereitung 2 belegtyp C comwa l_comwa…

LIVE555建立RTSP服務記錄

在官網上面 http://www.live555.com/liveMedia/#config-unix下載最新源碼,并進行編譯,同時官網上面告訴了你怎么樣編譯已經不同平臺對應需要修改的內容 一、arm_linux_g下面編譯視頻文件LIVE555 【config.armlinux】 CROSS_COMPILE arm-none…

halcon自動對焦算法

1、介紹 圖像清晰度是衡量圖像質量的一個重要指標,對于相機來說,其一般工作在無參考圖像的模式下,所以在拍照時需要進行對焦的控制。對焦不準確,圖像就會變得比較模糊不清晰。相機對焦時通過一些清晰度評判指標,控制鏡…

HTML學習筆記06-連接

HTML超鏈接 HTML使用標簽<a>來設置文本超鏈接。 超鏈接可以是文字&#xff0c;也可以是圖片&#xff0c;點擊這些內容跳轉到新的文檔或當前文檔的某個部分 代碼類似這樣&#xff1a; <a href"url">連接文本</a> 實例&#xff1a; <!DOCTYPE HTM…

在Xcode中使用Git進行源碼版本控制

在Xcode中使用Git進行源碼版本控制 在應用程序開發過程中&#xff0c;很重要的一部分工作就是如何進行源碼的版本控制。當代碼出現問題時&#xff0c;我們就需要將代碼恢復到原先正常的版本。如果是多個人共同開發一個項目&#xff0c;那么代碼的控制就會非常復雜。幸運的是&am…

Linux環境變量的設置和查看方法

1. 顯示環境變量HOME $ echo $HOME /home/redbooks 2. 設置一個新的環境變量hello $ export HELLO"Hello!" $ echo $HELLO Hello! 3. 使用env命令顯示所有的環境變量 $ env HOSTNAMEredbooks.safe.org PVM_RSH/usr/bin/rsh Shell/bin/bash TERMxterm HISTSIZE1000 ..…

CefSharp試用

Github地址&#xff1a; https://github.com/cefsharp/CefSharp 首先下載所有源代碼下來 然后直接打開Sln 然后就可以直接調試WinForm、Wpf的Example了 注意地方&#xff1a; CefSharp.Core、CefSharp.BrowserSubprocess.Core 這兩個類庫是用C寫的&#xff0c;所以VisualStudio…

ORA-30649: 缺少DIRECTORY關鍵字的問題解決方法

在oracle 里執行該語句時 提示 ORA-30649: 缺少 DIRECTORY 關鍵字把NOT null 放到 default 后面&#xff0c;就是如下寫法&#xff0c;oracle 正常執行alter table PM_INFO ADD sort NUMBER(10,0) DEFAULT (0) NOT NULL;轉載于:https://www.cnblogs.com/person008/p/9234637.ht…

java 解決漢諾塔問題

//漢諾塔問題//HanYang 2016/10/15 import java.util.Scanner; //輸出public class Hanuota { public static void Show(String a,String b){ System.out.print(" " a "->" b " " ); } //從a移到c public static void Fun(int n, Str…

利用VC++實現局域網實時傳輸

本文針對不同的局域網&#xff0c;提出一種通用的實時視頻傳輸的解決方案。在使用Divx編解碼的基礎上&#xff0c;提出了從壓縮、組幀、發送到接收、解壓整個流程的思想&#xff0c;具體實施方案和VC實現核心源代碼以及傳輸控制策略&#xff0c;有效地保證了高質量的實時視頻傳…

ASP.NET Web API之消息[攔截]處理(轉)

出處&#xff1a;http://www.cnblogs.com/Leo_wl/p/3238719.html 標題相當難取&#xff0c;內容也許和您想的不一樣&#xff0c;而且網上已經有很多這方面的資料了&#xff0c;我不過是在實踐過程中作下記錄。廢話少說&#xff0c;直接開始。 Exception 當服務端拋出未處理異常…

無人駕駛遇見人工智能 百度將推有“大腦”的汽車

在日前舉行的中國云計算大會&#xff0c;百度高級副總裁、技術戰略委員會主席王勁表示&#xff0c;百度將在今年下半年推出無人駕駛汽車。不過&#xff0c;百度自己并不會造車&#xff0c;它將與第三方汽車廠商合作制造。據介紹&#xff0c;百度將利用現有的大數據、地圖、人工…

AdlinkMotionCardLibrary函數C++

#include "stdafx.h" #include "AdlinkMotionCardLibrary.h"extern "C" _declspec(dllexport) bool _stdcall MotionCardIni(I32& BoardId_InBits, I32 Mode) { try{//mode0&#xff1a;&#xff1a; 系統指定卡號 mode1&#xff1a;&am…