一、什么是物理网卡和虚拟网卡?

图示如下:红色部分包含VMWare的为虚拟网卡。

通常,我们部署VMWare虚拟机、VMSphere虚拟集群、XenCenter虚拟集群是都会涉及虚拟网卡。

二、辨别物理网卡和虚拟网卡的应用场景

场景一:一般部署虚拟集群的时候会用到。
场景二:通过抓包分析数据请求来源是物理网卡发出的数据包,还是虚拟网卡地址发出的包时候会用到。辨识都是通过mac地址区分的。
场景三:其他需要区分网卡的场景。

三、 如何区分物理网卡和虚拟网卡呢?

方法一:老套且仅适用于windows操作系统。

原理大致如:
先由 GetAdaptersInfo 获取所有网卡的基本信息。然后利用网卡名去注册表中查找对应的硬件信息。若是物理网卡,其硬件信息中通常会包含 PCI 。
例如,某个网卡的名为 {ACA306D0-1D69-4116-BC2B-919B428AD084}。
他在注册表中的信息所在位置为:
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Network/{4D36E972-E325-11CE-BFC1-08002BE10318}/{ACA306D0-1D69-4116-BC2B-919B428AD084}/Connection
若PnpInstanceID的值以PCI开头,说明是物理网卡,MediaSubType为01则是常见网卡,02为无线网卡。

常见08年早期博客实现:
http://blog.csdn.net/chief1985/article/details/3311168

该方法仅适用于windows操作系统,不具备普遍通用性。

方法二:综合stackoverflow和github得出(2016年10月8日)。

1、包含以下MAC地址的前8个字节(前3段)是虚拟网卡:

"00:05:69"; //vmware1
"00:0C:29"; //vmware2
"00:50:56"; //vmware3
"00:1c:14"; //vmware4
"00:1C:42"; //parallels1
"00:03:FF"; //microsoft virtual pc
"00:0F:4B"; //virtual iron 4
"00:16:3E"; //red hat xen , oracle vm , xen source, novell xen
"08:00:27"; //virtualbox

举例以下的网卡地址中:

Line 34: PhysicalAddress: 00:FF:C4:73:16:0D
Line 110: PhysicalAddress: 8C:89:A5:BD:1A:6A
Line 215: PhysicalAddress: 00:50:56:C0:00:01
Line 316: PhysicalAddress: 00:50:56:C0:00:08

后两个以00:50:56 开头的都是VMWare虚拟网卡地址。

基于此:实现也就非常简单,思路如下
获取网卡地址后,判定前8个字节,循环变量上面的列表,如果前8个字节相同,终止程序,即为虚拟网卡地址;否则为物理网卡地址。

2、以下链接进行了虚拟网卡类别区分探讨:

http://stackoverflow.com/questions/3062594/differentiate-vmware-network-adapter-from-physical-network-adapters-or-detect

3、以下链接给出了虚拟网卡全分类的接口实现:

https://github.com/LeMaker/android-actions/blob/6960890188f877ee2cd5d6dbf52b7de25be64085/android/external/chromium_org/chrome/browser/prefs/tracked/pref_hash_calculator_helper_win.cc

4、可能疑问?

1)如果包含的不全是不是会不准确。
是的,需要集思广益,多搜集资料,使得尽量全面。

四:小结

刚入职的时候分析数据包,架构师一眼就能区分出哪些是VMWare机器发送的,现在才知道是基于Mac地址的前几位得出的结论。
而我知道这个原理比架构师足足晚了2年,这,或许就是差距和值得努力的地方!

2016年10月8日 23:59 思于家中床前

作者:铭毅天下
转载请标明出处,原文地址:
http://blog.csdn.net/laoyang360/article/details/52761892
如果感觉本文对您有帮助,请点击‘顶’支持一下,您的支持是我坚持写作最大的动力,谢谢!

如何区分虚拟网卡和物理网卡?相关推荐

  1. linux 虚拟网卡与物理网卡关系,Linux Macvlan的虚拟网卡与宿主物理网卡之间的Bridge通信问题...

    周末的时候写了一篇关于Docker底层支撑技术的文章: 以firejail sandbox解析Docker核心原理依赖的四件套 : https://blog.csdn.net/dog250/artic ...

  2. 什么叫有效物理网卡_如何区分虚拟网卡和物理网卡?-阿里云开发者社区

    一.什么是物理网卡和虚拟网卡? 图示如下:红色部分包含VMWare的为虚拟网卡. 通常,我们部署VMWare虚拟机.VMSphere虚拟集群.XenCenter虚拟集群是都会涉及虚拟网卡. 二.辨别物 ...

  3. 什么叫有效物理网卡_如何区分虚拟网卡和物理网卡?

    一.什么是物理网卡和虚拟网卡? 图示如下:红色部分包含VMWare的为虚拟网卡. 通常,我们部署VMWare虚拟机.VMSphere虚拟集群.XenCenter虚拟集群是都会涉及虚拟网卡. 二.辨别物 ...

  4. 判断是本地网卡是物理网卡还是虚拟网卡

    GetAdaptersInfo 可以获得本机所有网卡的信息,然而这些网卡中可能包括虚拟网卡.例如,若安装了 VMWare 或者某些 VPN 客户端软件,则会出现若干虚拟网卡.它们在形式上与物理网卡几乎 ...

  5. 虚拟网卡与物理网卡TCP协议数据传输对比

    先说下配置环境 测试软件:Netperf (Netperf是一种网络性能的测量工具,主要针对基于TCP或UDP的传输.Netperf根据应用的不同,可以进行不同模式的网络性能测试,即批量数据传输(bu ...

  6. MAC地址获取,有线网卡与无线网卡、物理网卡与虚拟网卡的区分

    获取当前活跃状态的网卡MAC地址.物理地址 Wmic命令:Win32_NetworkAdapter和Win32_NetworkAdapterConfiguration. 其中cmd命令行执行: 1. ...

  7. 删除Windows中隐藏的物理网卡和网络虚拟化失败后的虚拟网卡

    Windows环境下,在更换硬件服务器主板和网卡等硬件.恢复操作系统或者网络虚拟化失败后,可能会出现网卡方面的问题.例如,设备管理器中多了不应该存在的网卡:因命名冲突无法重命名当前网络连接:IP地址冲 ...

  8. Linux Macvlan的虚拟网卡与宿主物理网卡之间的Bridge通信问题

    周末的时候写了一篇关于Docker底层支撑技术的文章: 以firejail sandbox解析Docker核心原理依赖的四件套:https://blog.csdn.net/dog250/article ...

  9. 在linux下面虚拟多块网卡,在一块物理网卡上配置多个IP地址

    1.首先,我们来配置多块虚拟网卡 将一个物理网卡,虚拟多个网卡使用方法,在这块网卡上配置同一个段的ip地址: 比如将em2这块物理网卡(该网卡的ip地址192.168.100.10/24)配置成多块网 ...

最新文章

  1. 深入浅出计算机组成原理学习笔记:局部性原理-数据库性能跟不上,加个缓存就好了(第36讲)...
  2. mysql 5.7 初始化数据库_MySQL 5.7 新特性之初始化
  3. 自动化运维之 安装部署 Ansible 服务
  4. Linux02进程内存管理
  5. 代码质量管理工具】——sonar
  6. 解决PowerDesigner中DBMS选项卡为空白
  7. c#上传文件程序在本地测试没问题发布到服务器上就,高分求助!!!C#为什么程序在本地运行没有问题,但布署到服务器上后就不行了呢...
  8. scrapy item.py
  9. 21位美国名校学生领袖在湖北了解中国媒体情况
  10. mave构建docker镜像Dokerfile,上传华为云镜像服务器CCE
  11. puppet详解(七)——cron资源详解
  12. 怎样才能提取图片中的文字
  13. 前端数据可视化D3 ——(案例1)柱状图
  14. 职业生涯规划书-前端
  15. TextView 设置显示省略号
  16. mysql根据经纬度查询附件门店
  17. 使用BAT脚本实现一键配置Mysql服务器和开启远程服务
  18. 财务考PMP有用吗?
  19. 后缀001,002,003等的文件解压
  20. Maven配置中央仓库

热门文章

  1. xmuoj《C++与Python语法入门练习(By郭炜老师)》python参考代码
  2. 晕菜..调试的死机..
  3. 小米4电信4G_2014716_官方线刷包_救砖包_解账户锁
  4. 朋友合作怎么迈过利益这道坎
  5. 关于电力系统保护FC跳闸回路闭锁保护的分析
  6. springboot+JRebel--插件实现热部署
  7. 高德地图1008INVALID_USER_SCODE错误
  8. 基于JAVA的简单迷宫游戏
  9. Formatter(格式化)
  10. table 表格的一些属性