物理地址和邏輯地址
物理地址和邏輯地址
Mac地址就是在媒體接入層上使用的地址,通俗點說就是網(wǎng)卡的物理地址,現(xiàn)在的Mac地址一般都采用6字節(jié)48bit(在早期還有2字節(jié)16bit的Mac地址)。 今天學習啦小編給大家介紹一下物理地址和邏輯地址。供大家參考!
物理地址和邏輯地址
參考如下
MAC地址也叫物理地址、硬件地址或鏈路地址,由網(wǎng)絡設備制造商生產時寫在硬件內部。IP地址與MAC地址在計算機里都是以二進制表示的,IP地址是32位的,而MAC地址則是48位的。MAC地址的長度為48位(6個字節(jié)),通常表示為12個16進制數(shù),每2個16進制數(shù)之間用冒號隔開,
1.MAC地址
網(wǎng)卡MAC地址不是隨便定義的,它的組成結構如圖所示。
1>后3個字節(jié)代表該制造商所制造的某個網(wǎng)絡產品(如網(wǎng)卡)的系列號,前3個字節(jié)表示代表網(wǎng)絡硬件制造商的編號,它由IEEE(電氣與電子工程師協(xié)會)分配
2>以太網(wǎng)的地址為48位,由IEEE統(tǒng)一分配給網(wǎng)卡制造商,每個網(wǎng)卡的地址都必須是全球唯一的。共6個字節(jié)的長度。FF:FF:FF:FF:FF:FF為廣播地址,只能用在目的地址段,不能作為源地址段。目的地址為廣播地址的數(shù)據(jù)包,可以被一個局域網(wǎng)內的所有網(wǎng)卡接收到。合法的以太網(wǎng)地址第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
為合法以太網(wǎng)地址。上面的X代表0-F中的任一個。
地址
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
為組播地址,只能作為目的地址,不能作為源地址。組播地址可以被支持該組播地址的一組網(wǎng)卡接收到。組播地址主要用在視頻廣播,遠程喚醒(通過發(fā)一個特殊的數(shù)據(jù)包使網(wǎng)卡產生一個中斷信號,啟動電腦),游戲(多個人在局域網(wǎng)里聯(lián)機打游戲)里等。
邏輯地址(Logical Address) 是指由程序產生的與段相關的偏移地址部分。例如,你在進行C語言指針編程中,可以讀取指針變量本身值(&操作),實際上這個值就是邏輯地址,它是相對于你當前進程數(shù)據(jù)段的地址,不和絕對物理地址相干。只有在Intel實模式下,邏輯地址才和物理地址相等(因為實模式沒有分段或分頁機制,Cpu不進行自動地址轉換);邏輯也就是在Intel 保護模式下程序執(zhí)行代碼段限長內的偏移地址(假定代碼段、數(shù)據(jù)段如果完全一樣)。應用程序員僅需與邏輯地址打交道,而分段和分頁機制對您來說是完全透明的,僅由系統(tǒng)編程人員涉及。應用程序員雖然自己可以直接操作內存,那也只能在操作系統(tǒng)給你分配的內存段操作。
線性地址(Linear Address) 是邏輯地址到物理地址變換之間的中間層。程序代碼會產生邏輯地址,或者說是段中的偏移地址,加上相應段的基地址就生成了一個線性地址。如果啟用了分頁機制,那么線性地址可以再經變換以產生一個物理地址。若沒有啟用分頁機制,那么線性地址直接就是物理地址。Intel 80386的線性地址空間容量為4G(2的32次方即32根地址總線尋址)。
物理地址(Physical Address) 是指出現(xiàn)在CPU外部地址總線上的尋址物理內存的地址信號,是地址變換的最終結果地址。如果啟用了分頁機制,那么線性地址會使用頁目錄和頁表中的項變換成物理地址。如果沒有啟用分頁機制,那么線性地址就直接成為物理地址了。
虛擬內存(Virtual Memory) 是指計算機呈現(xiàn)出要比實際擁有的內存大得多的內存量。因此它允許程序員編制并運行比實際系統(tǒng)擁有的內存大得多的程序。這使得許多大型項目也能夠在具有有限內存資源的系統(tǒng)上實現(xiàn)。一個很恰當?shù)谋扔魇牵耗悴恍枰荛L的軌道就可以讓一列火車從上海開到北京。你只需要足夠長的鐵軌(比如說3公里)就可以完成這個任務。采取的方法是把后面的鐵軌立刻鋪到火車的前面,只要你的操作足夠快并能滿足要求,列車就能象在一條完整的軌道上運行。這也就是虛擬內存管理需要完成的任務。在Linux 0.11內核中,給每個程序(進程)都劃分了總容量為64MB的虛擬內存空間。因此程序的邏輯地址范圍是0x0000000到0x4000000。
有時我們也把邏輯地址稱為虛擬地址。因為與虛擬內存空間的概念類似,邏輯地址也是與實際物理內存容量無關的。
邏輯地址與物理地址的“差距”是0xC0000000,是由于虛擬地址->線性地址->物理地址映射正好差這個值。這個值是由操作系統(tǒng)指定的。
學習啦小編介紹了物理地址和邏輯地址的相關知識,希望你喜歡。