TAP是一种虚拟网卡,能够很轻松的被用户使用C语言的API使用。直接使用open write read几个操作就可以使用这种网卡;
TAP是一种虚拟口,一般与物理接口配套使用。例如pppoe拨号。使用的是pppoe协议。如果自己去实现的话,物理口可以是以太网卡(真实的),用于收发pppoe报文,然后解开pppoe报文转为以太报文的时候就可以使用tap口这种方式;
使用TAP口前,记得将kernel中选项选中,如果是一般的发行版默认就是选择中的,如果是嵌入式开发,可以在
Device Drivers => Network device support
中找到这个选项选中;一般没事儿就直接*不要去选M了。
使用方式C语言API创建,代码来源于内核头文件,示例:
#include <fcntl.h>
#include <stdio.h>
#include <string.h>
#include <sys/socket.h>
#include <sys/ioctl.h>
#include <linux/if.h>
#include <linux/if_tun.h>
#include <sys/types.h>
#include <errno.h>
#include <net/route.h>
#include <unistd.h>
/** *  创建接口 */
int tun_create(char *dev, int flags)
{  struct ifreq ifr;  int fd, err;  if ((fd = open("/dev/net/tun", O_RDWR)) < 0)  {  printf("Error :%m/n", errno);  return -1;  } memset(&ifr, 0, sizeof(ifr));  ifr.ifr_flags |= flags;  if (*dev != '/0')  {  strncpy(ifr.ifr_name, dev, IFNAMSIZ);  }  if ((err = ioctl(fd, TUNSETIFF, (void *)&ifr)) < 0)   {  printf("Error :%m/n", errno);  close(fd);  return -1;  }  //strcpy(dev, ifr.ifr_name);  return fd;
}
int tap_fd = tun_create("testtap",IFF_TAP|IFF_NO_PI);
close(tap_fd);
上面的这个FD可以当作普通的socket方式去使用;
更高级的使用方式,其实一般用不着,这种tap口,创建后可以通过ifconfig查看得到。fd关闭后接口路由自动消失;可以通过设置参数设置为持久模式,但是个人感觉用不着。。。

创建自己的虚拟网卡TAP口相关推荐

  1. linux上使用tun/tap设备模拟一个虚拟网卡,并将该虚拟网卡连接到新创建的网桥上

    目录 linux上使用tun/tap设备模拟一个虚拟网卡,并将该虚拟网卡连接到新创建的网桥上 一.tun/tap设备简介 二.在linux上使用tun/tap设备模拟一个虚拟网卡 三. 创建网桥连接到 ...

  2. Centos7添加虚拟网卡

    Centos7添加虚拟网卡 一.确认内核是否支持tun/tap 二. 加载内核模块 三. 安装tunctl命令 四. 创建和配置虚拟网卡 较高版本的linux大都自带了tun/tap 驱动程序用以实现 ...

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

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

  4. linux虚拟网卡tun,Centos7 创建虚拟网卡(tun/tap)

    创建网卡.创建网桥并建立桥接 [root@kolla ~]# cat create.sh create_br(){ tunctl -t storage -u root brctl addbr virb ...

  5. 虚拟网卡 TUN/TAP 驱动程序设计原理

    简介 虚拟网卡Tun/tap驱动是一个开源项目,支持很多的类UNIX平台,OpenVPN和Vtun都是基于它实现隧道包封装.本文将介绍tun/tap驱动的使用并分析虚拟网卡tun/tap驱动程序在li ...

  6. centos下创建虚拟网卡

    虚拟网卡 Tun/Tap 较高版本的linux大都自带了tun/tap 驱动程序用以实现虚拟网卡的功能,tun表示虚拟的是点对点设备,tap表示虚拟的是以太网设备,这两种设备针对网络包实施不同的封装. ...

  7. linux创建虚拟网卡vnet,Qemu之Network Device全虚拟方案二:虚拟网卡的创建

    当命令行传入nic相关参数时,Qemu就会解析网络相关的参数后进入虚拟网卡的创建流 程.而在上文中提到对于所有-net类型的设备,都视作一个net client来对待.而在net client的建立之 ...

  8. linux下使用tun/tap虚拟网卡

    tun/tap虚拟网卡介绍 tun是一种虚拟网络设备,tun设备一端连接着用户程序,一端连接着内核协议栈,任何时候从协议栈发到tun网卡的数据都能从用户程序中读到,而从用户程序写入/dev/net/t ...

  9. Openwrt下WHR G300NV2 创建虚拟网卡失败可能原因

    G300NV2可以刷G301N的Openwrt固件,这个确实无疑.而且经过1天的使用,没发现什么问题. 开始刷的Openwrt的核心是3.2.5,联网装macvlan,结果是ip link add l ...

最新文章

  1. 万字干货 | 一文揭秘Presto在腾讯资讯业务中的应用
  2. 远程连接Oracle 数据库连接报错ORA-12638身份检索失败
  3. mysql 当前timestamp_MySQL表结构使用timestamp以自动获取当前时间
  4. VGG16与SSD算法Tensorflow代码实现对比
  5. 保险条款精解(二) 丢车——如何将损失降到最低点?
  6. java catch自定义异常_java异常类-java自定义异常-嗨客网
  7. 用eclipse建立简单WebService客户端,使用WSDL,用于短信接口发送
  8. python 函数注释出现 :expected an indented block
  9. 唐朝义成公主的悲惨命运是怎样的?
  10. 学习制作横版游戏——2
  11. 十位语言大师给你的英语学习建议
  12. 使用C++实现FC红白机模拟器 Cartridge 与 Mapper(原理篇)
  13. Win11里面【应用或关闭Windows功能】在哪
  14. 程序猿要知道的:如何精心打造产品的“开始一公里”
  15. 【FICO系列】SAP FICO模块-财务账期的打开和关闭
  16. spring Boot Configuration Annotation Processor not fount in classpath
  17. 备忘录 | 阅读而已,用得着这么认真么?
  18. 07 AVR单片机ATmega8工业总线项目的通信处理以及实现
  19. 学习笔记:上网认证5 设置wifi(AP)通过FreeRadius认证
  20. mac日常使用小技巧

热门文章

  1. 使用火蜘蛛采集器Firespider采集天猫商品数据并上传到微店
  2. android高仿路口APP,路口app
  3. LVS的Net模式、DR模式、TUN模型理解及LVS、Keepalived搭建
  4. Mac上的全局手势多功能软件--BetterAndBetter(1)
  5. 华为无线二层网络配置案例(直接转发)
  6. 光伏企业赛拉弗:每条生产线削减员工80%
  7. java GUI开发中关于卡片式布局详细步骤讲解
  8. 什么是比特币之简单直白解释
  9. 关于LR12录制脚本时浏览器反馈无法连接网络的问题及解决
  10. android 3D 游戏实现之First Step