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

图示如下:红色部分包含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年早期博客实现:

该方法仅适用于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、以下链接进行了虚拟网卡类别区分探讨:

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

4、可能疑问?

1)如果包含的不全是不是会不准确。

是的,需要集思广益,多搜集资料,使得尽量全面。

四:小结

刚入职的时候分析数据包,架构师一眼就能区分出哪些是VMWare机器发送的,现在才知道是基于Mac地址的前几位得出的结论。

而我知道这个原理比架构师足足晚了2年,这,或许就是差距和值得努力的地方!

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

  1. mysql 轨迹数据存储_基于Tablestore实现海量运动轨迹数据存储-阿里云开发者社区...

    前言 现在越来越多的人都开始关心自己的运动数据,比如每日的计步.跑步里程.骑行里程等.运动APP与运动类的穿戴设备借助传感器.地图.GPS定位等技术,收集好运动数据以后,通过与互联网社交功能结合,产生 ...

  2. python语言打小数点_如何在python中打小数点-问答-阿里云开发者社区-阿里云

    python提供了三种浮点值:内置的float与complex类型,以及标准库的decimal.Decimal类型. float类型存放双精度的浮点数,具体取值范围依赖于构建python的c编译器,由 ...

  3. liunx导出mysql慢查询日志查看_查看 MySQL 慢查询日志文件-问答-阿里云开发者社区-阿里云...

    查看 MySQL 是否启用了慢 SQL 查询: 查看慢 SQL 日志是否启用. mysql> show variables like 'log_slow_queries'; +--------- ...

  4. vue 移动端头像裁剪_使用vue-cropper裁剪正方形上传头像-阿里云开发者社区

    引用方式 在组件内使用 import { VueCropper } from 'vue-cropper' components: { VueCropper, }, main.js里面使用 import ...

  5. 阿里云 ecs mysql搭建_使用ECS和mysql搭建mysql服务器-阿里云开发者社区

    一.首先得在阿里云等云主机上申请两台主机 二.现在连上去安装mysql 1.通过安装源将mysql下载下来 [root@iz2ze2llim71y07x3numlbz ~]# wget 'https: ...

  6. python创建虚拟环境打包_用虚拟环境保存库文件--Python打包-阿里云开发者社区

    用虚拟环境保存库文件 如果你同时负责多个 Python 项目,或者想要轻松打包某个项目及其关联的库文件,再 或者你担心已安装的库之间可能有冲突,那么你可以安装一个 Python 虚拟环境来分而 治之. ...

  7. qgraphicsview鼠标移动图片_交互式QGraphicsView(平移/缩放/旋转)-阿里云开发者社区...

    简述 Graphics View提供了一个平台用于大量自定义 2D 图元的管理与交互框架包括一个事件传播架构支持场景 Scene 中的图元 Item 进行精确的双精度交互功能.Item 可以处理键盘事 ...

  8. mysql跨平台迁移复制_手工 XTTS CPT 迁移-跨平台迁移数据库-阿里云开发者社区

    -- xtts 跨平台迁移数据库 -- 步骤: 1.初始化参数设置: 2.将源端数据文件传输到目标系统: 3.转换数据文件为目标系统的字节序: 4.在源端创建增量备份,并传输到目标端: 5.在目标端恢 ...

  9. python中引入sql的优点_引用sql-和引用sql相关的内容-阿里云开发者社区

    bboss持久层改进支持模块sql配置文件引用其它模块sql配置文件中sql语句 bboss持久层改进支持模块sql配置文件引用其它模块sql配置文件中sql语句. 具体使用方法如下: <pro ...

  10. mysql blackhole缺点_【MySql】 BlackHole :黑洞引擎-阿里云开发者社区

    BlackHole :黑洞引擎,写入的任何数据都会消失,用于记录binlog做复制的中继存储! 如何安装: 在安装MySQL时使用带有--with-blackhole-storage-engine选项 ...

最新文章

  1. python操作系统-Python_操作系统的发展史
  2. 使用字符流 创建文件 写入文件 复制文件
  3. Tableau系列之使用日期
  4. python(numpy,pandas5)——numpy中copy 和 deep copy
  5. OceanBase数据库实践入门——性能测试建议
  6. SELinux系列(十二)安全上下文的修改和设置(chcon和restorecon命令)
  7. python fileinput处理多文件
  8. C#资源文件的使用方法
  9. 关于单例模式中,饿汉式和懒汉式有什么区别?
  10. 百度云 图片搜索(JavaAipImageSearch)
  11. 押注AI大装置,商汤的“月亮与六便士”
  12. mysql为什么不用b树_MySQL用B+树(而不是B树)做索引的原因
  13. ping: unknown host www.baidu.com 解决办法
  14. 红米10x android11,红米10X 5G版刷机包MIUI11
  15. 2020-08-13 图像处理入门软件应该怎么选?Opencv matlab 和Python
  16. C语言 用switch语句算工资
  17. SpringMVC后缀
  18. 【RDMA】RoCE网络QoS|应用层设置PFC等级|Tos|Priority|TC
  19. 4399 面试笔试题
  20. 爬虫摸索中~~(PS:小小爬虫,何惧哉?且到明日,再看今朝。)

热门文章

  1. 【进出理论】投入与收益
  2. Zabbix监控(十六):分布式监控-Zabbix Proxy
  3. Universal-Image-Loader解析(二)——DisplayImageOptions的详细配置与简单的图片加载...
  4. 使用jquery的blockui插件显示弹出层
  5. 咨询的真相8:咨询业的“前世今生”
  6. MMN实用架构过程概览
  7. arima 预测模型_预测未来:学习使用Arima模型进行预测
  8. 怎么样用System.out.println在控制台打印出颜色
  9. leetcode 724. 寻找数组的中心索引
  10. leetcode91. 解码方法