MAC地址規(guī)則及算法介紹

概述

·MAC地址(MAC Address)

·MAC(Medium/Media Access Control)地址,用來(lái)表示互聯(lián)網(wǎng)上每一個(gè)站點(diǎn)的標(biāo)識(shí)符,采用十六進(jìn)制數(shù)表示,共六個(gè)字節(jié)(48位)。其中,前三個(gè)字節(jié)是由IEEE的注冊(cè)管理機(jī)構(gòu)RA負(fù)責(zé)給不同廠家分配的代碼(高位24位),也稱(chēng)為“編制上唯一的標(biāo)識(shí)符”(Organizationally Unique Identifier),后三個(gè)字節(jié)(低位24位)由各廠家自行指派給生產(chǎn)的適配器接口,稱(chēng)為擴(kuò)展標(biāo)識(shí)符(唯一性)。一個(gè)地址塊可以生成224個(gè)不同的地址。MAC地址實(shí)際上就是適配器地址或適配器標(biāo)識(shí)符EUI-48。

解釋

·MAC(Media Access Control,介質(zhì)訪問(wèn)控制)地址,也叫硬件地址,長(zhǎng)度是48比特(6字節(jié)),由16進(jìn)制的數(shù)字組成,分為前24位和后24位:

·前24位叫做組織唯一標(biāo)志符(Organizationally Unique Identifier,即OUI),是由IEEE的注冊(cè)管理機(jī)構(gòu)給不同廠家分配的代碼,區(qū)分了不同的廠家。
·后24位是由廠家自己分配的,稱(chēng)為擴(kuò)展標(biāo)識(shí)符。同一個(gè)廠家生產(chǎn)的網(wǎng)卡中MAC地址后24位是不同的。

·MAC地址對(duì)應(yīng)于OSI參考模型的第二層數(shù)據(jù)鏈路層,工作在數(shù)據(jù)鏈路層的交換機(jī)維護(hù)著計(jì)算機(jī)MAC地址和自身端口的數(shù)據(jù)庫(kù),交換機(jī)根據(jù)收到的數(shù)據(jù)幀中的“目的MAC地址”字段來(lái)轉(zhuǎn)發(fā)數(shù)據(jù)幀。

·其中第1字節(jié)的第8Bit(如圖中00-50-BA-...對(duì)應(yīng)的00000000-01010000-10111010-...,加粗字體的Bit)標(biāo)識(shí)這個(gè)地址是組播地址還是單播地址。這是由以太網(wǎng)的傳輸協(xié)議高字節(jié)先傳,但每一字節(jié)內(nèi)低位先傳的特性所決定的,見(jiàn)IEEE 802.3 3.2.3 Address fields: “The first bit (LSB) shall be used in the Destination Address field as an address type designation bit to identify the Destination Address either as an individual or as a group address. If this bit is 0, it shall indicate that the address field contains an individual address. If this bit is 1, it shall indicate that the address field contains a group address that identifies none, one or more, or all of the stations connected to the LAN. In the Source Address field, the first bit is reserved and set to 0.”。事實(shí)上這傳輸?shù)捻樞驗(yàn)?strong>000000000000101001011101...“The first bit (LSB)”即是前言的第8Bit。

·網(wǎng)卡的物理地址通常是由網(wǎng)卡生產(chǎn)廠家燒入網(wǎng)卡的EPROM(一種閃存芯片,通常可以通過(guò)程序擦寫(xiě)),它存儲(chǔ)的是傳輸數(shù)據(jù)時(shí)真正賴以標(biāo)識(shí)發(fā)出數(shù)據(jù)的電腦和接收數(shù)據(jù)的主機(jī)的地址。

·也就是說(shuō),在網(wǎng)絡(luò)底層的物理傳輸過(guò)程中,是通過(guò)物理地址來(lái)識(shí)別主機(jī)的,它一定是全球唯一的。比如,著名的以太網(wǎng)卡,其物理地址是48bit(比特位)的整數(shù),如:44-45-53-54-00-00,以機(jī)器可讀的方式存入主機(jī)接口中。以太網(wǎng)地址管理機(jī)構(gòu)(除了管這個(gè)外還管別的)(IEEE)(IEEE:電氣和電子工程師協(xié)會(huì))將以太網(wǎng)地址,也就是48比特的不同組合,分為若干獨(dú)立的連續(xù)地址組,生產(chǎn)以太網(wǎng)網(wǎng)卡的廠家就購(gòu)買(mǎi)其中一組,具體生產(chǎn)時(shí),逐個(gè)將唯一地址賦予以太網(wǎng)卡。
形象地說(shuō),MAC地址就如同我們身份證上的身份證號(hào)碼,具有全球唯一性。

算法

-- lua實(shí)現(xiàn) By:Wiger
-- 獲取隨機(jī)MAC地址
function getRandomAddress()
    local adrArray = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F" }
    local adrStr = ""

    math.randomseed(tostring(os.time()):reverse():sub(1, 6))
    for i = 1, 12 do
        local index = 0
        if i ~= 2 then
            index = math.random(1, 16)
        else
            -- 第二位只能是偶數(shù)
            local indexArray    = { 1, 3, 5, 7, 9, 11, 13, 15 }
            index               = indexArray[math.random(1, 8)]
        end
        
        adrStr = adrStr .. adrArray[index]
    end

    return adrStr
end

參考文獻(xiàn):http://baike.baidu.com/view/69334.htm

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容