tap/tun 是 Linux 内核 2.4.x 版本之后加入的虚拟网络设备,不同于物理网卡靠硬件网路板卡的实现方式,tap/tun 虚拟网卡完全由内核软件来实现的,是一种让用户态程序向内核协议栈注入数据的设备。tap 工作在二层(数据链路层)而 tun 工作在三层(网络层)。功能和硬件实现完全没有差别,它们都属于网络设备,都可以配置 IP,都归 Linux 网络设备管理模块统一管理。
tap 工作在数据链路层:只能处理二层的以太网数据帧,与其中的以太网(Ethernet)协议对应,所以 tap 有时也称为 “虚拟以太网设备” 。