⑴ 被稱為網卡的物理地址是什麼
所謂網卡的物理地址就是網卡的MAC地址,這個地址是不能更改,而且不重復的,每一個網卡的MAC地址都不一樣,在用路由的情況下可以用這個地址設定哪台機器可以上網,哪台機器不能上網。
⑵ 什麼是ip地址什麼是物理地址簡要說明兩者之間的區別與聯系
聯系:IP地址可以和MAC地址進行綁定以此來確定網路上的唯一的一台電腦。現在計算機都是通過先組建區域網,然後通過交換機和網路連接的。
這就需要IP地址可以和MAC地址兩者的配合使用。每個用戶先分配固定的IP地址,再使用MAC地址來標志用戶,這可以更好的保護電腦上的相應信息。
區別:
一、定義不同
1、IP地址:IP地址(Internet Protocol Address)是指互聯網協議地址,又譯為網際協議地址。
2、物理地址:網卡物理地址存儲器中存儲單元對應實際地址稱物理地址,與邏輯地址相對應。網卡的物理地址通常是由網卡生產廠家寫入網卡的EPROM(一種快閃記憶體晶元,通常可以通過程序擦寫),它存儲的是傳輸數據時真正賴以標識發出數據的電腦和接收數據的主機的地址。
二、協議不同
1、IP地址:IP協議是為計算機網路相互連接進行通信而設計的協議。在網際網路中,它是能使連接到網上的所有計算機網路實現相互通信的一套規則,規定了計算機在網際網路上進行通信時應當遵守的規則。任何廠家生產的計算機系統,只要遵守IP協議就可以與網際網路互連互通。
2、物理地址:區域網通過為網卡分配一個硬體地址來標識一個聯網的計算機或其他設備.所謂物理地址是指固化在網卡EPROM中的地址,這個地址應該保證在全網是唯一的。IEEE注冊委員會為每一個生產廠商分配物理地址的前三位元組,即公司標識。
後面三位元組由廠商自行分配,一個廠商獲得一個前三位元組的地址可以生產的網卡數量是16777216塊。而一塊網卡對應一個物理地址。
三、用途不同
1、IP地址:IP地址被用來給Internet上的電腦一個編號每台聯網的PC上都需要有IP地址,才能正常通信。可以把「個人電腦」比作「一台電話」,那麼「IP地址」就相當於「電話號碼」,而Internet中的路由器,就相當於電信局的「程式控制式交換機」。
IP地址是一個32位的二進制數,通常被分割為4個「8位二進制數」(也就是4個位元組)。IP地址通常用「點分十進制」表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之間的十進制整數。
例:點分十進IP地址100.4.5.6,實際上是32位二進制01100100.00000100.00000101.00000110。
2、物理地址:在網路底層的物理傳輸過程中,是通過物理地址來識別主機的,它一般也是全球唯一的。比如,著名的乙太網卡,其物理地址大小是48bit(比特位),前24位是廠商編號,後24位為網卡編號,如:44-45-53-54-00-00,以機器可讀的方式存入主機介面中。
⑶ 什麼是網卡mac地址
MAC(Media Access Control, 介質訪問控制)MAC地址是燒錄在Network Interface Card(網卡,NIC)里的.MAC地址,也叫硬體地址,是由48比特長(6位元組),16進制的數字組成.0-23位是由廠家自己分配.24-47位,叫做組織唯一標志符(organizationally unique ,是識別LAN(區域網)節點的標識。其中第40位是組播地址標志位。網卡的物理地址通常是由網卡生產廠家燒入網卡的EPROM(一種快閃記憶體晶元,通常可以通過程序擦寫),它存儲的是傳輸數據時真正賴以標識發出數據的電腦和接收數據的主機的地址。
也就是說,在網路底層的物理傳輸過程中,是通過物理地址來識別主機的,它一般也是全球唯一的。比如,著名的乙太網卡,其物理地址是48bit(比特位)的整數,如:44-45-53-54-00-00,以機器可讀的方式存入主機介面中。乙太網地址管理機構(除了管這個外還管別的)(IEEE)(IEEEE:電氣和電子工程師協會)將乙太網地址,也就是48比特的不同組合,分為若干獨立的連續地址組,生產乙太網網卡的廠家就購買其中一組,具體生產時,逐個將唯一地址賦予乙太網卡。
形象的說,MAC地址就如同我們身份證上的身份證號碼,具有全球唯一性
⑷ 網卡的物理地址是什麼
物理地址概念:物理地址又稱mac地址,是鏈路層定址用的地址
相關地址概念:IP地址是IP層(層3)定址時用的地址,mac地址過去在出廠時燒錄,但現在往往也可以更改
⑸ 什麼是網卡的物理地址
也就是說,在網路底層的物理傳輸過程中,是通過物理地址來識別主機的,它一般也是全球唯一的。比如,著名的乙太網卡,其物理地址是48比特的整數,以機器可讀的方式存入主機介面中。乙太網地址管理機構(IEEE)將乙太網地址,也就是48比特的不同組合,分為若干獨立的連續地址組,生產乙太網介面板的廠家就購買其中一組,具體生產時,逐個將唯一地址賦予介面板(乙太網卡)。 因此,網卡物理地址對應於實際的信號傳輸過程。
⑹ 網卡的物理地址是什麼東西
物理地址概念:物理地址又稱mac地址,是鏈路層定址用的地址
相關地址概念:IP地址是IP層(層3)定址時用的地址,mac地址過去在出廠時燒錄,但現在往往也可以更改
⑺ 計算機網路技術 物理地址一般用什麼表示
Mac地址就是在媒體接入層上使用的地址,通俗點說就是網卡的物理地址,現在的Mac地址一般都採用6位元組48bit(在早期還有2位元組16bit的Mac地址)。
對於MAC地址,由於我們不直接和它接觸,所以大家不一定很熟悉。在OSI(Open System Interconnection,開放系統互連)7層網路協議(物理層,數據鏈路層,網路層,傳輸層,會話層,表示層,應用層)參考模型中,第二層為數據鏈路層(Data Link)。它包含兩個子層,上一層是邏輯鏈路控制(LLC:Logical Link Control),下一層即是我們前面所提到的MAC(Media Access Control)層,即介質訪問控制層。所謂介質(Media),是指傳輸信號所通過的多種物理環境。常用網路介質包括電纜(如:雙絞線,同軸電纜,光纖),還有微波、激光、紅外線等,有時也稱介質為物理介質。MAC地址也叫物理地址、硬體地址或鏈路地址,由網路設備製造商生產時寫在硬體內部。這個地址與網路無關,也即無論將帶有這個地址的硬體(如網卡、集線器、路由器等)接入到網路的何處,它都有相同的MAC地址,MAC地址一般不可改變,不能由用戶自己設定。
MAC地址前24位是由生產廠家向IEEE申請的廠商地址。後24位就由生產廠家自行定擬了。(早期的2位元組的卻不用申請)
一:IP地址和Mac地址有什麼聯系和區別
對於IP地址,相信大家都很熟悉,即指使用TCP/IP協議指定給主機的32位地址。IP地址由用點分隔開的4個8八位組構成,如192.168.0.1就是一個IP地址,這種寫法叫點分十進制格式。IP地址由網路地址和主機地址兩部分組成,分配給這兩部分的位數隨地址類(A類、B類、C類等)的不同而不同。網路地址用於路由選擇,而主機地址用於在網路或子網內部尋找一個單獨的主機。一個IP地址使得將來自源地址的數據通過路由而傳送到目的地址變為可能。
現在有很多計算機都是通過先組建區域網,然後通過交換機和Internet連接的。然後給每個用戶分配固定的IP地址,由管理中心統一管理,這樣為了管理方便就需要使用Mac地址來標志用戶,防止發生混亂,明確責任(比如網路犯罪)。另外IP地址和Mac地址是有區別的,雖然他們在區域網中是一一對應的關系。IP地址是跟據現在的IPv4標准指定的,不受硬體限制比較容易記憶的地址,而Mac地址卻是用網卡的物理地址,多少與硬體有關系,比較難於記憶。
MAC地址的長度為48位(6個位元組),通常表示為12個16進制數,每2個16進制數之間用冒號隔開,如:08:00:20:0A:8C:6D就是一個MAC地址,其中前6位16進制數08:00:20代表網路硬體製造商的編號,它由IEEE(Istitute of Electrical and Electronics Engineers,電氣與電子工程師協會)分配,而後3位16進制數0A:8C:6D代表該製造商所製造的某個網路產品(如網卡)的系列號。每個網路製造商必須確保它所製造的每個乙太網設備都具有相同的前三個位元組以及不同的後三個位元組。這樣就可保證世界上每個乙太網設備都具有唯一的MAC地址。
既然每個乙太網設備在出廠時都有一個唯一的MAC地址了,那為什麼還需要為每台主機再分配一個IP地址呢?或者說為什麼每台主機都分配唯一的IP地址了,為什麼還要在網路設備(如網卡,集線器,路由器等)生產時內嵌一個唯一的MAC地址呢?主要原因有以下幾點:(1)IP地址的分配是根據網路的拓樸結構,而不是根據誰製造了網路設置。若將高效的路由選擇方案建立在設備製造商的基礎上而不是網路所處的拓樸位置基礎上,這種方案是不可行的。(2)當存在一個附加層的地址定址時,設備更易於移動和維修。例如,如果一個乙太網卡壞了,可以被更換,而無須取得一個新的IP地址。如果一個IP主機從一個網路移到另一個網路,可以給它一個新的IP地址,而無須換一個新的網卡。(3)無論是區域網,還是廣域網中的計算機之間的通信,最終都表現為將數據包從某種形式的鏈路上的初始節點出發,從一個節點傳遞到另一個節點,最終傳送到目的節點。數據包在這些節點之間的移動都是由ARP(Address Resolution Protocol:地址解析協議)負責將IP地址映射到MAC地址上來完成的。
⑻ 網卡地址 MAC格式是什麼樣的
MAC(Media Access Control, 介質訪問控制)地址是識別LAN(區域網)節點的標識。網卡的物理地址通常是由網卡生產廠家燒入網卡的EPROM(一種快閃記憶體晶元,通常可以通過程序擦寫),它存儲的是傳輸數據時真正賴以標識發出數據的電腦和接收數據的主機的地址。
也就是說,在網路底層的物理傳輸過程中,是通過物理地址來識別主機的,它一般也是全球唯一的。比如,著名的乙太網卡,其物理地址是48bit(比特位)的整數,如:44-45-53-54-00-00,以機器可讀的方式存入主機介面中。乙太網地址管理機構(IEEE)將乙太網地址,也就是48比特的不同組合,分為若干獨立的連續地址組,生產乙太網網卡的廠家就購買其中一組,具體生產時,逐個將唯一地址賦予乙太網卡。
第一種方法使用Microsoft的Netbios API。 這是一套通過Winsock提供底層網路支持的命令。使用Netbios的最大缺點是您必須在系統中安裝了Netbios服務(如果您在windows網路中啟用了文件共享的話,這就不是問題了)。除此此外,這種方法又快又准確。
Netbios API只包括了一個函數,就叫做Netbios。這個函數使用網路控制塊(network control block)結構作為參數,這個結構告訴函數要做什麼。結構的定義如下:
typedef struct _NCB {
UCHAR ncb_command;
UCHAR ncb_retcode;
UCHAR ncb_lsn;
UCHAR ncb_num;
PUCHAR ncb_buffer;
WORD ncb_length;
UCHAR ncb_callname[NCBNAMSZ];
UCHAR ncb_name[NCBNAMSZ];
UCHAR ncb_rto;
UCHAR ncb_sto;
void (CALLBACK *ncb_post) (struct _NCB *);
UCHAR ncb_lana_num;
UCHAR ncb_cmd_cplt;
#ifdef _WIN64
UCHAR ncb_reserve[18];
#else
UCHAR ncb_reserve[10];
#endif
HANDLE ncb_event;
} NCB, *PNCB;
重點在於ncb_command 成員。這個成員告訴Netbios該作什麼。我們使用三個命令來探測MAC地址。他們在MSDN的定義如下:
命令描述:
NCBENUM Windows NT/2000: 列舉系統中網卡的數量。使用此命令後,ncb_buffer成員指向由LANA_ENUM結構填充的緩沖區。
NCBENUM 不是標準的 NetBIOS 3.0 命令。
NCBRESET 重置網卡。網卡在接受新的NCB命令之前必須重置。
NCBASTAT 接受本地或遠程介面卡的狀態。使用此命令後,ncb_buffer成員指向由ADAPTER_STATUS結構填充的緩沖區,隨後是NAME_BUFFER結構的數組。
下面就是取得您系統MAC地址的步驟:
1》列舉所有的介面卡。
2》重置每塊卡以取得它的正確信息。
3》查詢介面卡,取得MAC地址並生成標準的冒號分隔格式。
下面就是實例源程序。
netbios.cpp
#include <windows.h>
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
#include <string>
using namespace std;
#define bzero(thing,sz) memset(thing,0,sz)
bool GetAdapterInfo(int adapter_num, string &mac_addr)
{
// 重置網卡,以便我們可以查詢
NCB Ncb;
memset(&Ncb, 0, sizeof(Ncb));
Ncb.ncb_command = NCBRESET;
Ncb.ncb_lana_num = adapter_num;
if (Netbios(&Ncb) != NRC_GOODRET) {
mac_addr = "bad (NCBRESET): ";
mac_addr += string(Ncb.ncb_retcode);
return false;
}
// 准備取得介面卡的狀態塊
bzero(&Ncb,sizeof(Ncb);
Ncb.ncb_command = NCBASTAT;
Ncb.ncb_lana_num = adapter_num;
strcpy((char *) Ncb.ncb_callname, "*");
struct ASTAT
{
ADAPTER_STATUS adapt;
NAME_BUFFER NameBuff[30];
} Adapter;
bzero(&Adapter,sizeof(Adapter));
Ncb.ncb_buffer = (unsigned char *)&Adapter;
Ncb.ncb_length = sizeof(Adapter);
// 取得網卡的信息,並且如果網卡正常工作的話,返回標準的冒號分隔格式。
if (Netbios(&Ncb) == 0)
{
char acMAC[18];
sprintf(acMAC, "%02X:%02X:%02X:%02X:%02X:%02X",
int (Adapter.adapt.adapter_address[0]),
int (Adapter.adapt.adapter_address[1]),
int (Adapter.adapt.adapter_address[2]),
int (Adapter.adapt.adapter_address[3]),
int (Adapter.adapt.adapter_address[4]),
int (Adapter.adapt.adapter_address[5]));
mac_addr = acMAC;
return true;
}
else
{
mac_addr = "bad (NCBASTAT): ";
mac_addr += string(Ncb.ncb_retcode);
return false;
}
}
int main()
{
// 取得網卡列表
LANA_ENUM AdapterList;
NCB Ncb;
memset(&Ncb, 0, sizeof(NCB));
Ncb.ncb_command = NCBENUM;
Ncb.ncb_buffer = (unsigned char *)&AdapterList;
Ncb.ncb_length = sizeof(AdapterList);
Netbios(&Ncb);
// 取得本地乙太網卡的地址
string mac_addr;
for (int i = 0; i < AdapterList.length - 1; ++i)
{
if (GetAdapterInfo(AdapterList.lana[i], mac_addr))
{
cout << "Adapter " << int (AdapterList.lana[i]) <<
"'s MAC is " << mac_addr << endl;
}
else
{
cerr << "Failed to get MAC address! Do you" << endl;
cerr << "have the NetBIOS protocol installed?" << endl;
break;
}
}
return 0;
}
file://---------------------------------------------------------------------------
第二種方法-使用COM GUID API
這種方法使用COM API創建一個GUID(全局唯一標識符)並從那裡繼承MAC地址。GUID通常用來標識COM組件以及系統中的其他對象。它們是由MAC地址(結合其他東西)計算得來的,表面上MAC地址就包含在其中。我說表面上是因為事實上並沒有包含。
我提供這種方法更多的是為了作為反面教材。您也許用這種方法能夠得到MAC地址,但有時候您只會得到隨機的十六進制數值。
下面的例子十分簡單,無需多講。我們使用CoCreateGuid創建GUID,並將最後六個位元組放入字元串中。它們可能是MAC地址,但並不是必然的。
uuid.cpp
#include <windows.h>
#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
cout << "MAC address is: ";
// 向COM要求一個UUID。如果機器中有乙太網卡,
// UUID最後的六個位元組(Data4的2-7位元組)應該是本地乙太網卡的MAC地址。
GUID uuid;
CoCreateGuid(&uuid);
// Spit the address out
char mac_addr[18];
sprintf(mac_addr,"%02X:%02X:%02X:%02X:%02X:%02X",
uuid.Data4[2],uuid.Data4[3],uuid.Data4[4],
uuid.Data4[5],uuid.Data4[6],uuid.Data4[7]);
cout << mac_addr << endl;
getch();
return 0;
}
第三種方法- 使用SNMP擴展API
我要討論的第三種方法是使用Windows的SNMP(簡單網路管理協議)擴展來取得MAC地址。在我的經驗里,這個協議很簡單。代碼也是直勾勾的向前的。基本步驟和Netbios相同:
1》取得網卡列表
2》查詢每塊卡的類型和MAC地址
3》保存當前網卡
我個人對SNMP了解不多,但如我剛剛所言,代碼十分清楚。
snmp.cpp
#include <snmp.h>
#include <conio.h>
#include <stdio.h>
typedef bool(WINAPI * pSnmpExtensionInit) (
IN DWORD dwTimeZeroReference,
OUT HANDLE * hPollForTrapEvent,
OUT AsnObjectIdentifier * supportedView);
typedef bool(WINAPI * pSnmpExtensionTrap) (
OUT AsnObjectIdentifier * enterprise,
OUT AsnInteger * genericTrap,
OUT AsnInteger * specificTrap,
OUT AsnTimeticks * timeStamp,
OUT RFC1157VarBindList * variableBindings);
typedef bool(WINAPI * pSnmpExtensionQuery) (
IN BYTE requestType,
IN OUT RFC1157VarBindList * variableBindings,
OUT AsnInteger * errorStatus,
OUT AsnInteger * errorIndex);
typedef bool(WINAPI * pSnmpExtensionInitEx) (
OUT AsnObjectIdentifier * supportedView);
void main()
{
HINSTANCE m_hInst;
pSnmpExtensionInit m_Init;
pSnmpExtensionInitEx m_InitEx;
pSnmpExtensionQuery m_Query;
pSnmpExtensionTrap m_Trap;
HANDLE PollForTrapEvent;
AsnObjectIdentifier SupportedView;
UINT OID_ifEntryType[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 3};
UINT OID_ifEntryNum[] = {1, 3, 6, 1, 2, 1, 2, 1};
UINT OID_ipMACEntAddr[] = {1, 3, 6, 1, 2, 1, 2, 2, 1, 6};
AsnObjectIdentifier MIB_ifMACEntAddr =
{ sizeof(OID_ipMACEntAddr) sizeof(UINT), OID_ipMACEntAddr };
AsnObjectIdentifier MIB_ifEntryType =
{sizeof(OID_ifEntryType) sizeof(UINT), OID_ifEntryType};
AsnObjectIdentifier MIB_ifEntryNum =
{sizeof(OID_ifEntryNum) sizeof(UINT), OID_ifEntryNum};
RFC1157VarBindList varBindList;
RFC1157VarBind varBind[2];
AsnInteger errorStatus;
AsnInteger errorIndex;
AsnObjectIdentifier MIB_NULL = {0, 0};
int ret;
int dtmp;
int i = 0, j = 0;
bool found = false;
char TempEthernet[13];
m_Init = NULL;
m_InitEx = NULL;
m_Query = NULL;
m_Trap = NULL;
/* 載入SNMP DLL並取得實例句柄 */
m_hInst = LoadLibrary("inetmib1.dll");
if (m_hInst < (HINSTANCE) HINSTANCE_ERROR)
{
m_hInst = NULL;
return;
}
m_Init =
(pSnmpExtensionInit) GetProcAddress(m_hInst, "SnmpExtensionInit");
m_InitEx =
(pSnmpExtensionInitEx) GetProcAddress(m_hInst,
"SnmpExtensionInitEx");
m_Query =
(pSnmpExtensionQuery) GetProcAddress(m_hInst,
"SnmpExtensionQuery");
m_Trap =
(pSnmpExtensionTrap) GetProcAddress(m_hInst, "SnmpExtensionTrap");
m_Init(GetTickCount(), &PollForTrapEvent, &SupportedView);
/* 初始化用來接收m_Query查詢結果的變數列表 */
varBindList.list = varBind;
varBind[0].name = MIB_NULL;
varBind[1].name = MIB_NULL;
/* 在OID中拷貝並查找介面表中的入口數量 */
varBindList.len = 1; /* Only retrieving one item */
SNMP_oidcpy(&varBind[0].name, &MIB_ifEntryNum);
ret =
m_Query(ASN_RFC1157_GETNEXTREQUEST, &varBindList, &errorStatus,
&errorIndex);
printf("# of adapters in this system : %in",
varBind[0].value.asnValue.number);
varBindList.len = 2;
/* 拷貝OID的ifType-介面類型 */
SNMP_oidcpy(&varBind[0].name, &MIB_ifEntryType);
/* 拷貝OID的ifPhysAddress-物理地址 */
SNMP_oidcpy(&varBind[1].name, &MIB_ifMACEntAddr);
do
{
/* 提交查詢,結果將載入 varBindList。
可以預料這個循環調用的次數和系統中的介面卡數量相等 */
ret =
m_Query(ASN_RFC1157_GETNEXTREQUEST, &varBindList, &errorStatus,
&errorIndex);
if (!ret)
ret = 1;
else
/* 確認正確的返回類型 */
ret =
SNMP_oidncmp(&varBind[0].name, &MIB_ifEntryType,
MIB_ifEntryType.idLength); if (!ret) {
j++;
dtmp = varBind[0].value.asnValue.number;
printf("Interface #%i type : %in", j, dtmp);
/* Type 6 describes ethernet interfaces */
if (dtmp == 6)
{
/* 確認我們已經在此取得地址 */
ret =
SNMP_oidncmp(&varBind[1].name, &MIB_ifMACEntAddr,
MIB_ifMACEntAddr.idLength);
if ((!ret) && (varBind[1].value.asnValue.address.stream != NULL))
{
if((varBind[1].value.asnValue.address.stream[0] == 0x44)
&& (varBind[1].value.asnValue.address.stream[1] == 0x45)
&& (varBind[1].value.asnValue.address.stream[2] == 0x53)
&& (varBind[1].value.asnValue.address.stream[3] == 0x54)
&& (varBind[1].value.asnValue.address.stream[4] == 0x00))
{
/* 忽略所有的撥號網路介面卡 */
printf("Interface #%i is a DUN adaptern", j);
continue;
}
if ((varBind[1].value.asnValue.address.stream[0] == 0x00)
&& (varBind[1].value.asnValue.address.stream[1] == 0x00)
&& (varBind[1].value.asnValue.address.stream[2] == 0x00)
&& (varBind[1].value.asnValue.address.stream[3] == 0x00)
&& (varBind[1].value.asnValue.address.stream[4] == 0x00)
&& (varBind[1].value.asnValue.address.stream[5] == 0x00))
{
/* 忽略由其他的網路介面卡返回的NULL地址 */
printf("Interface #%i is a NULL addressn", j);
continue;
}
sprintf(TempEthernet, "%02x%02x%02x%02x%02x%02x",
varBind[1].value.asnValue.address.stream[0],
varBind[1].value.asnValue.address.stream[1],
varBind[1].value.asnValue.address.stream[2],
varBind[1].value.asnValue.address.stream[3],
varBind[1].value.asnValue.address.stream[4],
varBind[1].value.asnValue.address.stream[5]);
printf("MAC Address of interface #%i: %sn", j,
TempEthernet);}
}
}
} while (!ret); /* 發生錯誤終止。 */
getch();
FreeLibrary(m_hInst);
/* 解除綁定 */
SNMP_FreeVarBind(&varBind[0]);
SNMP_FreeVarBind(&varBind[1]);
}
⑼ 電腦網路物理地址
設置路由器或其他上網設備的時候,一般需要用到綁定物理地址,我們就需要知道網卡的物理地址是什麼,今天我來告訴大家怎麼看網卡物理地址;
首先右鍵點擊桌面右下角的網路圖標,選擇【打開網路和Internet設置】,打開【網路和共享中心】;
計算機網路中的物理地址也稱為:mac地址
在計算機科學中,物理地址(英語:physical address),也叫實地址(real address)、二進制地址(binary address),它是在地址匯流排上,以電子形式存在的,使得數據匯流排可以訪問主存的某個特定存儲單元的內存地址。
MAC(Media Access Control或者Medium Access Control)地址,意譯為媒體訪問控制,或稱為物理地址、硬體地址,用來定義網路設備的位置。在OSI模型中,第三層網路層負責 IP地址,第二層數據鏈路層則負責 MAC地址。因此一個主機會有一個MAC地址,而每個網路位置會有一個專屬於它的IP地址