![云计算虚拟化技术与开发](https://wfqqreader-1252317822.image.myqcloud.com/cover/828/31729828/b_31729828.jpg)
上QQ阅读APP看书,第一时间看更新
2.4.2 TUN/TAP设备
TUN设备是一种虚拟网络设备,通过此设备,程序可以方便地模拟网络行为。传统物理网络设备的工作原理如图2-20所示。
![](https://epubservercos.yuewen.com/B669F2/17180254805316706/epubprivate/OEBPS/Images/img00040003.jpg?sign=1738860096-QZPcn9zcQCIcXP4yjLJ21oOx6xki44pn-0-0d43cd55a94037e33df744b006ad3557)
图2-20 物理网络设备的工作原理
所有物理网卡收到的包会交给内核的网络协议栈(Network Stack)处理,然后通过Socket API通知给用户程序。TUN设备的工作原理如图2-21所示。
![](https://epubservercos.yuewen.com/B669F2/17180254805316706/epubprivate/OEBPS/Images/img00040004.jpg?sign=1738860096-7SrTkCqi6w7qVLwLb72K7ffcyRFUMTVa-0-e6984ee94c17d154e999c27edbb79945)
图2-21 TUN设备的工作原理
普通的物理网卡通过网线收发数据包,但是TUN设备通过一个文件收发数据包。所有对这个文件的写操作会通过TUN设备转换成一个数据包送给内核;当内核发送一个数据包给TUN设备时,通过读这个文件可以拿到数据包的内容。
TAP设备与TUN设备工作原理完全相同,区别在于:
(1)TUN设备的/dev/tunX文件收发的是IP层数据包,只能工作在IP层,无法与物理网卡做bridge,但是可以通过三层交换(如ip_forward)与物理网卡连通。
(2)TAP设备的/dev/tapX文件收发的是MAC层数据包,拥有MAC层功能,可以与物理网卡做网桥,支持MAC层广播。