本文主要是介绍TUN设备和TAP设备,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- TUN/TAP 的发展历史
- TUN/TAP设备数据流
- outter flow
- inner flow
- outter flow 与 inner flow 的应用场景
- TAP设备
- TAP设备实现 VLAN
- qemu 实例
- TAP设备实现VLAN时的数据流
- TAP设备实现 VPN
- 实例
- TAP设备实现VPN时的数据流
- TUN设备
- TUN设备实现 VPN
- 实例
- TUN设备实现VPN时的数据流
TUN/TAP 的发展历史
TODO
TUN/TAP设备数据流
outter flow
虚拟机应用程序(Guest App):在虚拟机中,Guest App生成要发送的数据。虚拟机操作系统(Guest OS):Guest OS包含了网络协议栈,Guest App通过Guest OS的网络协议栈将数据传送到虚拟机内的虚拟网卡(如E1000、Virtio等)。虚拟网卡(Guest Virtual NIC):虚拟机内部的虚拟网卡模拟了物理网卡,它将数据包封装并发送到宿主操作系统的TAP设备。---------
虚拟机应用程序(Host App):虚拟机内的TAP设备通过Host App生成数据包,这些数据包是从虚拟机到宿主操作系统的数据流。
---------
宿主操作系统(Host OS):Host OS包含了网络协议栈,Host App通过Host OS的网络协议栈将数据包发送到TAP设备。TAP设备(Host TAP):宿主操作系统内部的TAP设备接收来自Host App的数据包,并将其传输到宿主操作系统的物理网络接口。物理网络接口(Physical NIC):数据包从Host TAP设备通过宿主操作系统的物理网络接口(通常是物理以太网适配器)传输到物理网络。物理网络(Physical Network):数据包最终通过物理网络传输到目的地,可以是其他计算机、服务器或互联网。
inner flow
发送侧:Guest App:虚拟机内的Guest App生成要发送的数据。
Guest OS(包括网络协议栈):Guest OS包括网络协议栈,负责处理Guest App生成的数据。
虚拟机内的虚拟网卡:虚拟机内部的虚拟网卡接收和处理Guest OS传递的数据。
虚拟机应用程序(例如QEMU):虚拟机应用程序(例如QEMU)运行在虚拟机内,它模拟虚拟硬件,包括虚拟网卡,并生成数据以供发送。接收侧:Host侧的TAP设备:TAP设备位于宿主操作系统上,它与虚拟机内的虚拟网卡相关联,并负责虚拟机应用程序生成的数据的传输。
Host OS(包括网络协议栈):Host OS包括网络协议栈,它负责处理来自TAP设备的数据包。
Host App:宿主操作系统内的Host App接收并处理从TAP设备传入的数据包。
outter flow 与 inner flow 的应用场景
两种数据流向(outter inner)
两种应用场景(vpn vlan)
两种设备(tap tun)tun设备 作用于三层,支持vpn和inner flow , 不支持vlan 和 outter flow虽然tun设备可以支持第一种数据流向(outter flow),但没意义(???)因为tun设备这一层无法解析mac地址(???TODO),所以不支持vlan
tap设备 作用于二层,都支持(vpn vlan)和两种数据流向,可以做第三层tun做的事情(vpn)因为第三层做不了第二层做的事情。是因为数据种类
越底层数据种类(每层的头和数据)越完全。你可以在底层解码整个世界
tap一般和虚拟机组网有关
tun一般和 app vpn有关
TAP设备
TAP设备实现 VLAN
qemu 实例
- A.qemu 网络设备虚拟化
- B.qemu 关于net 的选项
- C.qemu 在ubuntu2204 实现桥接
我在A 中叙述了 qemu网络设备虚拟化发展历史
我在B 中描述了 qemu 网络的配置选项
我在C 中描述了 如何利用tap设备基于qemu完成网络桥接说一点,即使是最开始的网络虚拟技术("全模拟/传统模拟") , 也是需要tap设备的 . 之后更新的每一种技术,也都需要基于tap设备.这些更新都没有更新他的基石 : tap 设备
不管 B 的选项中是否描述了 tap 设备,他都有tap设备(可能是隐式指定了)
C 中的实例,就是 基于 tap设备+虚拟网桥 实现了 效果 : 类似vmware的桥接当然我们还可以 基于 tap设备+NAT虚拟设备 实现 效果 : 类似vmware的NAT当然我们还可以 基于 tap设备 实现 效果 : 类似vmware 的 host only
TAP设备实现VLAN时的数据流
-
tap设备+虚拟网桥 : outter flow
-
tap设备+NAT虚拟设备 : outter flow & inner flow
-
tap设备 : inner flow
TAP设备实现 VPN
实例
一般没有,一般用TUN做
但是也可以做!
TAP设备实现VPN时的数据流
- inner flow
TUN设备
TUN设备实现 VPN
实例
TODO
TUN设备实现VPN时的数据流
- inner flow
这篇关于TUN设备和TAP设备的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!