获取以太网卡的MAC地址
如何查看电脑网卡的MAC地址

如何查看电脑网卡的MAC地址电脑网卡的MAC地址是硬件设备的唯一标识符,用于在局域网中识别和连接设备。
在一些情况下,您可能需要查看电脑的网卡MAC地址,以便进行网络配置或故障排除。
在本文中,我们将介绍几种不同的方法来查看电脑网卡的MAC地址。
1. 使用命令提示符(Windows)-打开“命令提示符”应用程序。
您可以在开始菜单中“命令提示符”。
- 输入“ipconfig /all”并按下回车键。
此命令将显示计算机上的所有网络适配器的详细信息。
-查找以太网适配器或无线局域网适配器的“物理地址”项。
该项旁边的数值就是MAC地址。
2. 使用PowerShell(Windows)- 打开“PowerShell”应用程序。
您可以在开始菜单中“PowerShell”。
- 输入“Get-NetAdapter”并按下回车键。
这会显示计算机上的所有网络适配器的列表。
- 查找以太网适配器或无线局域网适配器的“MacAddress”项。
该项的值是MAC地址。
3. 使用系统偏好设置(Mac)-点击屏幕上方的“苹果”图标,并选择“系统偏好设置”。
-在系统偏好设置窗口中,点击“网络”。
-在网络设置窗口中,选择左侧的网络适配器(例如以太网或Wi-Fi)。
-点击右侧的“高级”按钮。
-在高级设置窗口的“硬件”选项卡中,您可以找到“MAC地址”。
该项的数值就是MAC地址。
4. 使用ifconfig命令(Linux)- 打开终端应用程序。
在大多数Linux发行版中,您可以在应用菜单中找到终端。
- 输入“ifconfig”并按下回车键。
该命令会显示所有网络接口的详细信息。
- 查找以太网适配器或无线局域网适配器的“HWaddr”项。
该项后的数值就是MAC地址。
5. 使用ip命令(Linux)-打开终端应用程序。
- 输入“ip link show”并按下回车键。
该命令将显示计算机上的所有网络接口的信息。
- 查找以太网适配器或无线局域网适配器的“link/ether”项。
MAC地址查询

各操作系统查询网卡MAC地址方法MAC地址是网卡的物理地址,例如:00-19-21-C4-BA-DB。
MAC地址就是网卡的身份证号码,具有全球唯一性。
Windows XP系统查询MAC地址方法:点击桌面左下角的“开始”按钮——“运行”——输入cmd后点击“确定”(如图1)弹出一个窗口,输入ipconfig/all,然后回车(如图2)。
有线网卡MAC:“Ethernet adapter 本地连接”中的“Physical Address”,Physical Address后面的内容就是有线网卡的MAC地址,例如图2中的MAC地址是00-19-21-C4-BA-DB;无线网卡MAC:“Ethernet adapter无线网络连接”中的“Physical Address”,Physical Address后面的内容就是无线网卡的MAC地址。
图1图2Windows VISTA、Windows 7系统查询MAC地址方法:点击桌面左下角的“开始”按钮——在“所有程序”下有一个文本框,在里面输入cmd,然后按回车键打开一个窗口,在此窗口中输入ipconfig/all,按回车键,找到“以太网适配器本地连接”中的“物理地址”,物理地址后面是有线网卡的MAC地址;找到“无线局域网适配器无线网络连接”中的“物理地址”,物理地址后面就是无线网卡的MAC地址。
苹果系统查询MAC地址方法点击桌面左上角的“苹果”图标,选择“系统偏好设置”,这时会打开一个窗口,点击“网络”,在打开的窗口中点击“以太网”——“高级”——“以太网”,找到“以太网ID”,以太网ID后面的内容就是有线网卡的MAC地址。
点击取消回到之前的窗口,点击“Airport”——“高级”——“AirPort ID”,AirPort ID后面就是无线网卡的MAC地址。
获取IP地址与MAC地址的对应关系报告

主机 A
主机 X
主机 B
主机 Y
假设在一个以太网中,主机 A 欲获得主机 B 的 IP 地址 Ib 与 MAC 地址 Pb 的映射关系, ARP 协议的工作过程为: ①主机 A 广播发送一个带有主机 B 的 IP 地址 Ib 同时带有本机 IP 地址与 MAC 地址对应 关系的请求信息包,请求主机 B 用它的 IP 地址 Ib 和 MAC 地址 Pb 的映射关系进行响应; ②以太网中的所有主机(包括主机 A 和 B 在内)接收到这个请求信息,并记录下主机 A 的 IP 地址与 MAC 地址之间的对应关系; ③主机 B 识别该请求信息,并向主机 A 发送带有自己的 IP 地址 Ib 和 MAC 地址 Pb 映射 关系的响应信息包; ④主机 A 得到主机 B 的 IP 地址与 MAC 地址之间的对应关系,并且在随后的数据发送过 程中使用该映射关系。 注:可以使用高速缓存技术对 ARP 工作过程进行优化,但是这个实验不要求我们实现。
获取 IP 地址与 MAC 地址的对应关系实验报告
一、实验目的: 在以太网中获取 MAC 地址常常是其他工作的前提。 本实验要求使用系统提供的命令和利 用 WinPcap 编程两种方式获取以太网中主机的 MAC 地址。学习 ARP 的工作过程,深入了解 IP 地址和 MAC 地址的有关概念。 二、实验环境与工具 本实验使用以太网中的主机,以太网既可以是共享式以太网也可以是交换式以太网。 应 用程序开发工具为 Microsoft Visual Studio 2010,MFC 三、实验原理 1、如何获取远程主机 IP 地址与 MAC 地址之间的对应关系(ARP 基本思想) :
址和源 IP 地址要用虚拟的地址(因为此时不知道本机的 MAC 地址是什么) ,本机收到 ARP 请求后马上做出响应; �本机的应用程序捕捉到此 ARP 响应,获取本机的 MAC 地址,从而得到本机 IP 地址与 MAC 地址之间的对应关系。
如何获取网卡的MAC地址

如何获取网卡的MAC地址获取网卡的MAC地址可以通过以下几种方法:1.使用操作系统提供的命令行工具:不同的操作系统提供了不同的命令行工具来获取网卡的MAC地址。
下面分别介绍Windows和Linux操作系统下的方法。
- Windows操作系统:在命令提示符或PowerShell中输入"ipconfig /all"命令,会列出所有网络接口的详细信息,包括MAC地址。
- Linux操作系统:在终端中输入"ifconfig"命令,会列出所有网络接口的详细信息,包括MAC地址。
2.使用编程语言获取:可以使用各种编程语言(如Python、Java、C++等)提供的网络编程库来获取网卡的MAC地址。
下面以Python为例,演示如何通过编程获取网卡的MAC地址:```pythonimport subprocessimport redef get_mac_address(:result = subprocess.run(["ipconfig", "/all"],capture_output=True, text=True)output = result.stdoutmac_pattern = r"Physical Address[ .]*: (.*)"mac_address = re.findall(mac_pattern, output)[0].replace("-", ":")return mac_addressmac = get_mac_addressprint(mac)```这段代码通过执行"ipconfig /all"命令,并使用正则表达式匹配输出中的MAC地址,最终返回网卡的MAC地址。
3.使用网络管理工具:可以使用一些网络管理工具来获取网卡的MAC地址,这些工具通常提供了更丰富的功能和更友好的界面,比如Wireshark、NetCut等。
查看本机和局域网pc的MAC地址的常用方法

查看本机和局域网pc的MAC地址的常用方法如何查看局域网内其他计算机的MAC地址和IP方法1:首先要知道那个计算机的某个信息。
如果知道计算机名的话,可以PING 计算机名,这样就会知道IP,然后再用 NBTSTAT -a IP,就能知道物理地址。
如果知道IP的话,直接用nbtstat -a IP,就能知道所有的。
方法2:DOS命令批量统计局域网内各台电脑的IP地址和其相对应的MAC地址,这样的好处是可以便捷、准确的控制管理每台电脑,发现某台电脑中毒或者数据流量异常能及时排查、封网。
能实现这种功能的工具在网上有很多,例如:超级网管(SuperLANadmin)等等,喜欢的朋友可以自己搜索一下。
在这里我主要谈的是调用本机DOS命令来实现上述结果,毕竟我们不可能天天把工具带在身边。
地址解析协议(ARP)用于实现IP地址到网络接口硬件地址的映射,该命令只有在安装了 TCP/IP 协议之后才可用。
当某主机要向以太网中另一台主机发送IP数据时,它首先根据目的主机的IP地址在ARP高速缓存中查询相应的以太网地址,ARP高速缓存是主机维护的一个IP地址到相应的以太网地址的映射表。
如果查到匹配的结点,则相应的以太网地址被写入以太网帧首部,数据包被加入到输入到输出列队等待发送。
如果查询失败,ARP会先保留等待发送的IP数据包,然后广播一个询问目的主机硬件地址的ARP报文,等收到回答后再把IP数据包发送出去。
命令如下:运行cmd.exe后执行:arp -a回车,一只烟的功夫就会看到收集好列表。
FOR对一组文件逐一运行一条命令。
该命令可用在批处理文件中,也可命令提示符下直接调用。
语法:FOR在批处理程序中的使用语法如下:FOR %%变量 IN (集合) DO 命令 [命令参数]FOR在命令提示符下的使用语法如下:FOR %变量 IN (集合) DO 命令 [参数:%%变量或%变量代表一个可替换的变量。
FOR命令将用指定的一组文件中的每一个文本字符串来替换%%变量(或%变量),直到此命令(在命令参数中指定的)处理完所有的文件为止。
ARP 绑定的意义

ARP绑定的意义ARP协议是―Address Resolution Protocol‖(地址解析协议)的缩写。
在局域网中,网络中实际传输的是―帧‖,帧里面是有目标主机的MAC地址的。
在以太网中,一个主机和另一个主机进行直接通信,必须要知道目标主机的MAC地址。
但这个目标MAC地址是如何获得的呢?它就是通过地址解析协议获得的。
所谓―地址解析‖就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。
ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。
ARP协议主要负责将局域网中的32位IP地址转换为对应的48位物理地址,即网卡的MAC地址,比如IP地址位192.168.0.1网卡MAC地址为00-03-0F-FD-1D-2B.整个转换过程是一台主机先向目标主机发送包含有IP地址和MAC地址的数据包,通过MAC地址两个主机就可以实现数据传输了.在每台安装有TCP/IP协议的电脑里都有一个ARP缓存表,表里的IP地址与MAC 地址是一一对应的,如附表所示。
附表我们以主机A(192.168.1.5)向主机B(192.168.1.1)发送数据为例。
当发送数据时,主机A会在自己的ARP缓存表中寻找是否有目标IP地址。
如果找到了,也就知道了目标MAC地址,直接把目标MAC地址写入帧里面发送就可以了;如果在ARP缓存表中没有找到相对应的IP地址,主机A就会在网络上发送一个广播,目标MAC地址是―FF.FF.FF.FF.FF.FF‖,这表示向同一网段内的所有主机发出这样的询问:―192.168.1.1的MAC地址是什么?‖网络上其他主机并不响应ARP询问,只有主机B接收到这个帧时,才向主机A做出这样的回应:―192.168.1.1的MAC地址是00-aa-00-62-c6-09‖。
这样,主机A就知道了主机B的MAC地址,它就可以向主机B发送信息了。
同时它还更新了自己的ARP缓存表,下次再向主机B发送信息时,直接从ARP缓存表里查找就可以了。
以太网MAC地址规范

以太⽹MAC地址规范原⽂地址:/skyflying2012/article/details/40322563之前⼀段时间在做⽹卡驱动的⼯作,现在产品量产,利⽤ifconfig eth hw ether在配置mac地址时发现⼀个问题,随机配置⼀个mac地址,发现有的会报出Cannot assign requested address。
错误码是EADDRNOTAVAIL。
driver中实现了专门的set_mac_addr函数,察看该函数,发现原来会检验该mac地址的有效性。
[cpp]<span style="font-size:14px;">static inline int is_valid_ether_addr(const u8 *addr){/* FF:FF:FF:FF:FF:FF is a multicast address so we don't need to* explicitly check for it here. */return !is_multicast_ether_addr(addr) && !is_zero_ether_addr(addr);}</span>检查不是组播地址也不是全0地址。
组播地址就是第⼀个字节最低位为1,问题就是在这⾥。
发现第⼀个字节最低位为1时该函数就会返回0,driver中的set_mac_addr就会返回EADDRNOTAVAIL错误码。
严格来说mac地址对于每块⽹卡是固定的,每块⽹卡被⽣产出来后,都会有⼀个全球唯⼀的编号来标识⾃⼰,不会重复,这个编号就是MAC地址,也就是⽹卡的物理地址。
MAC地址是由48位的⼆进制数组成,即6个字节。
在通信中是⽤16进制表⽰的。
前24位是由⽣产⼚家向IEEE标准组织申请的⼚家代码,是固定的,但是第⼀个字节的最低位⼀定是0,因为⽹卡的物理地址,⼀定是单播地址,在IPv4的环境中,区分单播和组播地址就是校检最低位的⼆进制数字,0代表单播地址,1代表组播地址。
以太网地址(MAC)

以太网地址(MAC)
2010-02-06 2:28
以太网采用介质访问控制(Medh Access Control,MAC)地址进行寻址,MAC地址被烧人每个以太网网卡(Network Interface Card,NIC)中。
MAC地址也叫硬件地址,它采用48位(6字节)的十六进制格式。
组织唯一标识符(OUI)是由IEEE分配给单位组织的,它包含24位(3字节)。
各个单位组织依次被分配一个全局管理地址(24位,或3字节),对于厂家生产的每一块网卡来说,这个地址是唯一的(当然,这不能完全保证)。
请仔细看一看图,高位是individual/Group(VG)位,当它的值为0时,就可以认为这个地址实际上是设备的MAC地址,它可能出现在MAC报头的源地址部分。
当它的值为1时,就可以认为这个地址表示以太网中的广播地址或组播地址,或者表示TR和FDDI中的广播地址或功能地址。
下一位是G/L位(也称为U/L,这里的U表示全局)。
当这一位设置为0时,就表示一个全局管理地址(由IEEE分配),当这一位为1时,就表示一个在管理上统治本地的地址
(就像在DECnet中一样)。
以太网地址的后24位表示本地管理的或厂商分配的代码。
厂家制造的第一块网卡的这一部分地址通常以24个0开头,最后-块网卡则以24个1结束(共有16777216块网卡)。
在实际中可以发现,许多厂商使用同样的6个十六进制数字,作为同一块网卡上序列号的最后6个数字。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
获取以太网卡的MAC地址
【实验目的】
1、通过设计获取以太网卡物理地址的程序,初步掌握在应用层访问底层软硬件接口和属性的方法。
2、设计一个程序,使得能够获取本机安装的以太网卡的物理地址。
3、设计一个简单的应用程序,使得该程序只能在装有指定地址网卡的微机上运行。
【实验性质】
综合与设计性实验
【实验条件】
装有以胎网卡并配置网络协议的微机
【实验导读】
1、MAC地址MAC地址是每一个连接到LAN的端口或设备所需要的规范化的数据链
路层地址。
MAC地址字长6B(注意也有2B的),由IEEE控制。
在数据链路层,数据帧传输的寻址是依照网卡地址进行的。
网卡地址可以采用局部地址或全局地址,以太网使用6B即48位的全局地址。
对于共享型以太网,传输通过广播实现,各个网卡按照自己的物理地址接受属于自己的数据帧。
而在交换式以太网,交换机通过逆向学习方式建立动态的MAC地址--端口映射表,根据该表进行数据帧的转发。
当映射表中没有相应表项时再广播发送到各个端口。
这种传输机制当然要求网卡MAC地址的唯一性。
对一些应用程序来说,获取MAC地址有时是必要的。
【实验内容】
1、Linux编程要点
在Linux下编写获取本机网卡地址的程序,比较简单的方法是利用套接口(socket)和IO接口(ioctl)函数来获取网卡信息,需要引用如下文件:
#include <sys/socket.h>
#include <sys/ioctl.h>
#include <netinet/if_ether.h>
#include <net/if.h>
#include <linux/sockios.h>
socket函数的原型是:
int socket(int domain,int type, int protocol);
本函数有以下3个输入参数:
domain参数:表示所使用的协议族;
type参数:表示套接口的类型;
protocol参数:表示所使用的协议族中某个特定的协议。
如果函数调用成功,套接口的描述符(非负整数)就作为函数的返回值,假如返回值为-1,就表明有错误发生。
利用socket函数来获取网卡MAC信息时,domain参数取值AF_INET,表示采用internet 协议族;type参数指定为SOCK_DGRAM,表示采用数据报类型套接口,protocol参数在这种组合下只有唯一选择,故用0填充。
I/O控制函数ioctl用于对文件进行底层控制,这里的文件包含网卡、终端、磁带机、套接口等软硬件设施,实际的操作来自各个设备自己提供的ioctl接口。
ioctl函数的原型如下:
int ioctl(int d,int request,…)
这里,参数d取值套接口的描述符,第一个request参数指定通过socket传输的I/O类型。
本实验可以取值SIONGIFHWADDR(0x8927),表示取硬件地址。
其他取值及其含义详见/usr/includr/linux/sockios.h。
其后的request参数用于为实现I/O控制所必须传入或传出的参数。
本实验需要用ifr结构传入网卡设备名,并传出6B的MAC地址。
关键的程序段如下:
#include <netinet/if_ether.h>
#include <net/if.h>
char *device=”eth0”; //teh0是网卡设备名
unsigned char macaddr[ETH_ALEN]; //ETH_ALEN(6)是MAC地址长度
int s=socket(AF_INET,SOCK_DGRAM,0); //建立套接口
struct ifreq req;
int err;
strcpy(req.ifr_name,device); //将设备名作为输入参数传入
err=ioctl(s,SIOCGIFHWADDR,&req); //执行取MAC地址操作
close(s);
if(err!= -1)
{ memcpy(addr,req.ifr_hwaddr.sa_data,ETH_ALEN); //取输出的MAC地址
for(i=0;i<ETH_ALEN;i++)
printf(”%3d:”,macaddr[i]);
}
2、C#编程要点
Microsoft提供的WMI(Windows Management Instrumentation)中提供了一个Win32_NetworkAdapterConfiguration的类,定义了获取MAC地址的方法,因此只要构造一个定义为Win32_NetworkAdapter Configuration的WMI类,从中取出MAC地址的值即可。
在C#中管理WMI主要使用ManagementClass类。
编写程序过程要注意以下两个要点。
1)、命名空间的添加
由于System.Management的动态链接库不是C#中默认加载的,所以要添加System.Management的命名空间前要添加System.Management.dll链接库。
依次选择:“项目”→“添加引用”→“.NET”菜单栏,加入System.Management。
确认添加了动态链接库后添加命名空间:
using System.Management;
2)、MAC地址的获取
根据前面的介绍,要构造一个ManagementClass类管理定义为Win32_NetworkAdapter Configuration的WMI类,然后将ManagementClass类中的所有变量的值返回给属于ManagementObjectCollection类的变量,ManagementObjectCollection类用于表示WMI 实例的不同集合,将不同集合中的各个MAC地址读出,就可获得多网卡的MAC地址。
构造ManagementClass,函数原型如下:
public ManagementClass(string path);
参数:path表示WMI的路径。
要返回ManagementClass所有实例的集合,使用GetInstances(),函数原型如下:public ManagementObjectCollection GetInstances();
获得本机上多网卡的MAC地址关键代码段:
ManagementClass mc; //定义一个ManagementClass类
mc=new ManagementClass(” Win32_NetworkAdapterConfiguration”);//将ManagementClass类变量定义为Win32_NetworkAdapter Configuration,以便获得//网络信息
ManagementObjectCollection moc=mc. GetInstances();//使用ManagementObjectCollection 记录mc中的所有信息,包括多个网卡信息
foreach(ManagementObject mo in moc)
{ if(mo[“IPEnabled”].ToString()= =”True”)
Console.WriteLine(”MAC address”+mo[“MacAddress”].ToString());
}//取得ManagementObjectCollection中的不同网卡配置信息,判断如果该网卡可用就//去读取MAC地址。