TUN设备和TAP设备

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 虚拟机网络)
两种设备(tap tun)

tun设备 作用于三层,处理的是IP封包,支持vpn和inner flow , 不支持虚拟机网络 和 outter flow
    虽然tun设备不可以支持第一种数据流向(outter flow),因为tun设备没有发送数据到外部的功能
    	// 没有连接真实网卡的功能
   	也正是因为如此,tun设备不支持虚拟机网络
tap设备 作用于二层,处理的是MAC封包,都支持(vpn 虚拟机网络)和两种数据流向,可以做第三层tun做的事情(vpn)
	// 但一般我们不让其做 vpn 应用,因为tap做起来比tun麻烦,要拆包
	// 所以既然tun做起来更方便,为什么不让tun做呢?
	// 这大概也是除了设计tap, tun 也被设计出来的原因吧!

tap一般和虚拟机组网有关
tun一般和 app vpn有关

TAP设备

TAP设备实现 虚拟机网络

qemu 实例

我在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设备实现虚拟机网络时的数据流

  • tap设备+虚拟网桥 : outter flow

  • tap设备+NAT虚拟设备 : outter flow & inner flow

  • tap设备 : inner flow

TAP设备实现 VPN

实例

一般没有,一般用TUN做
但是也可以做!
使用tun实现vpn的时候,对端不能拿到发起端的mac地址
使用tap实现vpn的时候,对端能拿到发起端的mac地址
但是一般来说  对端不需要拿到发起端的mac地址

TAP设备实现VPN时的数据流

  • inner flow

TUN设备

TUN设备实现 VPN

实例

TODO

TUN设备实现VPN时的数据流

  • inner flow
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值