網絡卡位址和多點播送(組播)及廣播 轉

2021-04-24 10:21:04 字數 3025 閱讀 3805

乙太網的位址為48位,由ieee統一分配給網絡卡製造商,每個網絡卡的位址都必須是全球唯一的。共6個位元組的長度 位元組

5432

10位47。。40

39。。32

31。。24

23。。16

15。。8

7。。0

例子08

0009

a04a

b1

位47。。41

4039。。24

23。。0

製造廠商標識

組播標誌位

製造廠商標識

系列號

共6個位元組,其中前面3個位元組(除了第40位),組成製造廠商的標識,每個製造廠商的前3個位元組是不同的,如果兩個網絡卡的前面3個位元組是一樣的,那麼這個卡是同乙個公司製造的。同時通過該3個位元組就可以反過來知道這個卡是哪個廠製造的。後面3個位元組為系列號,由製造廠商給自己生產的網絡卡分配乙個號碼,不同網絡卡的號碼必須不同, 網絡卡位址的製造廠商的3個位元組的標識中,例如上面的08:00:09 ,080009 是惠普公司的標識,表示這個卡是惠普公司製造的。3個位元組的第乙個位元組,必須為偶數,上面的08是乙個偶數,是因為第32位,就是第乙個位元組的最低位是組播標識,必須為0。

以下x0:xx:xx:xx:xx:xx

x2:xx:xx:xx:xx:xx

x4:xx:xx:xx:xx:xx

x6:xx:xx:xx:xx:xx

x8:xx:xx:xx:xx:xx

xa:xx:xx:xx:xx:xx

xc:xx:xx:xx:xx:xx

xe:xx:xx:xx:xx:xx

為合法的乙太網網絡卡位址。上面的x代表0-f中的任乙個。如果你不是購買網絡卡,而是自己購買晶元製造,那麼位址怎麼辦?可以自己使用乙個還沒有被ieee分配的廠商編號就可以了。就算是使用已經分配的廠商編號也沒有不可,只要你能保證在你使用的區域網內,任何兩個網絡卡的位址不一樣就可以了。

位址 ff:ff:ff:ff:ff:ff 為廣播位址,只能用在目的位址段,不能作為源位址段。目的位址為廣播位址的資料報,可以被乙個區域網內的所有網絡卡接收到。

位址 x1:xx:xx:xx:xx:xx

x3:xx:xx:xx:xx:xx

x5:xx:xx:xx:xx:xx

x7:xx:xx:xx:xx:xx

x9:xx:xx:xx:xx:xx

xb:xx:xx:xx:xx:xx

xd:xx:xx:xx:xx:xx

xf:xx:xx:xx:xx:xx

其他組播位址跟tcp/ip無關,不做介紹。

網絡卡可以接收以下3種位址的資料報:

第一種 目的位址跟自己的網絡卡位址是一樣的資料報

第二種 目的位址為ff:ff:ff:ff:ff:ff廣播位址的資料報

第三種 目的位址為跟自己的組播位址範圍相同的資料報

那麼在乙太網的應用當中,如果你希望你的資料報只發給乙個網絡卡,目的位址用對方的網絡卡位址

如果你想把資料報發給所有的網絡卡,目的位址用廣播位址

如果你想把資料報發給一組網絡卡,目的位址用組播位址。

rtl8019跟網絡卡位址有關的暫存器:

實體地址暫存器,位於page1,共6個位元組,這就是網絡卡的位址,復位之後該6個暫存器的值是不定的。

要由使用者將網絡卡位址寫入到該6個暫存器中,以後網絡卡接收到的資料報,會將資料報的目的位址跟這6個暫存器的值進行比較,結果相同的資料報被接收下來。上電復位時從93c46讀入的網絡卡位址不會自動寫入到這裡,而是放在rtl8019as的記憶體位址0000h,0002h,0004h,0006h,0008h,000ah,0000ch裡。你的程式要從這6個記憶體位址裡讀出網絡卡位址,寫入到par0-5 共6個暫存器位址裡。如果你的系統沒有使用93c46來儲存該網絡卡位址,那麼要由你的軟體自行產生或分配乙個網絡卡位址,寫入到6個暫存器裡(比如你可以把網絡卡位址儲存在微控制器的flash rom裡,儲存在24c02的eeprom裡等)。

跟組播位址有關的暫存器:

為8個暫存器,提供對組播位址的過濾。跟crc的邏輯有關。我對於該8個暫存器跟組播位址的關係不是很清楚,也沒有找到相關的資料。將該8個暫存器全部寫入0ffh,可以接收所有的組播位址地資料報。全部寫入0,將不接收任何組播位址的資料報。在windows 98作業系統裡,作業系統寫入到這8個暫存器的值為:

mar0 :00h

mar1 :41h

mar2 :00h

mar3 :80h

mar4 :00h

mar5 :00h

mar6 :00h

mar7 :00h

寫入的這8個值跟具體的組播位址是什麼關係?我也不知道。lphard的方案是寫入8個0xff 。

那麼在嵌入式應用中應該如何處理?建議為全部寫入0xff。如果不想支援組播,可以不用理這8個暫存器,或全部寫入0。

跟網絡卡位址有關的標誌位:

其中的第3位atd,0為正常操作,1為由組播位址控制(用作流控)。我們把這個位設定為0。

我們不需要使用流控,因為流控的標準不被所有的網絡卡支援,有些網絡卡支援,有些不支援。

其中的pro,am,ab跟位址有關:

pro為1時,將接收所有的資料報,不管任何位址, 統統收下來。通常用在一些網橋,或一些用來監視網路的電腦裡。sniffer軟體就是利用這個特性,將乙太網上所有資料報都收下來進行分析,以統計乙太網裡的資料傳輸率,衝突,出錯情況,網絡卡位址情況,ip資料報等情況。

pro為0時,接收跟自己的位址一樣的資料報,其他目的位址的被丟棄(不包括廣播和組播包)。我們設定為0就可以了。

am=1時,接收組播位址的資料報,am=0時,不接收組播位址的資料報。 將該位根據你的情況設定為1或0,推薦設定為1。

ab=1時,接收廣播位址的資料報,ab=0時,不接收廣播位址ff:ff:ff:ff:ff:ff的資料報。該位要設定為1,才能實現tcp/ip協議。

phy跟位址有關:

為接收的情況報告。

二、組播位址

七 網絡卡位址和多點播送(組播)及廣播

乙太網的位址為48位,由ieee統一分配給網絡卡製造商,每個網絡卡的位址都必須是全球唯一的。共6個位元組的長度位元組5 4321 0位 47。40 39。32 31。24 23。16 15。8 7。0 例子08 0009 a04ab1 位 47。33 3231。24 23。0 製造廠商標識 組播標誌...

Linux網絡卡驅動中對於組播MAC位址的獲取

對於2.6的核心,net device內部存在乙個結構體指標,struct dev mc list dev mc list通過對它的訪問,可以迴圈獲取所有的組播mac位址。但是,在新的核心中 至少在3.10中 發生了變化,取而代之的是 struct netdev hw addr list mc 我們...

MAC位址解析 廣播位址 組播位址和單播位址的特徵

mac位址分成三類,分別是廣播位址 組播位址和單播位址。首先,ff ff ff ff ff ff毫無疑問是廣播位址。每個網絡卡出廠時被分配唯一乙個單播位址,頭24位是裝置製造廠商的編號,由ieee 電氣與電子工程師協會 分配,後24位是裝置廠商為網絡卡制定的唯一編號。例如08 00 20 0a 8c...