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

2021-04-01 04:40:44 字數 2735 閱讀 4554

乙太網的位址為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

製造廠商標識

組播標誌位

製造廠商標識

系列號

共6個位元組,其中前面3個位元組(除了第32位),組成製造廠商的標識,每個製造廠商的前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 為廣播位址,只能用在目的位址段,不能作為源位址段。目的位址為廣播位址的資料報,可以被乙個區域網內的所有網絡卡接收到。

其他組播位址跟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個位元組的長度 位元組 5432 10位47。40 39。32 31。24 23。16 15。8 7。0 例子08 0009 a04a b1 位47。41 4039。24 23。0 製造廠商標識 組播標誌...

REDHAT EL6網絡卡靜態位址

由於網線變動,所以想固定linux 伺服器位址 電腦有兩塊網絡卡。先說一下 etc sysconfig network scripts ifcfg eth0配置檔案吧,它是系統中自帶的有限網路配置檔案,在安裝的過程中可以設定網路配置,相關的配置檔案就儲存在ifcfg eth0,如 安裝過程中將網路配...

網絡卡驅動11 網絡卡中的廣播位址 0x8000解釋

經常在網絡卡裡面看到廣播位址,賦值為0x8000,網上幾乎沒人去解釋這個東西。例如dm9000.broadcast address hash table 3 0x8000 u16 hash table 4 這個是16位的表,我們知道mac廣播位址是ff ff ff ff ff ff 那麼為什麼在這是...