
上QQ阅读APP看书,第一时间看更新
2.4.2 TUN/TAP设备
TUN设备是一种虚拟网络设备,通过此设备,程序可以方便地模拟网络行为。传统物理网络设备的工作原理如图2-20所示。

图2-20 物理网络设备的工作原理
所有物理网卡收到的包会交给内核的网络协议栈(Network Stack)处理,然后通过Socket API通知给用户程序。TUN设备的工作原理如图2-21所示。

图2-21 TUN设备的工作原理
普通的物理网卡通过网线收发数据包,但是TUN设备通过一个文件收发数据包。所有对这个文件的写操作会通过TUN设备转换成一个数据包送给内核;当内核发送一个数据包给TUN设备时,通过读这个文件可以拿到数据包的内容。
TAP设备与TUN设备工作原理完全相同,区别在于:
(1)TUN设备的/dev/tunX文件收发的是IP层数据包,只能工作在IP层,无法与物理网卡做bridge,但是可以通过三层交换(如ip_forward)与物理网卡连通。
(2)TAP设备的/dev/tapX文件收发的是MAC层数据包,拥有MAC层功能,可以与物理网卡做网桥,支持MAC层广播。