TUN设备和TAP设备

2023-10-14 23:20
文章标签 设备 tap tun

本文主要是介绍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设备的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/213839

相关文章

如何编写Linux PCIe设备驱动器 之二

如何编写Linux PCIe设备驱动器 之二 功能(capability)集功能(capability)APIs通过pci_bus_read_config完成功能存取功能APIs参数pos常量值PCI功能结构 PCI功能IDMSI功能电源功率管理功能 功能(capability)集 功能(capability)APIs int pcie_capability_read_wo

文章解读与仿真程序复现思路——电力自动化设备EI\CSCD\北大核心《考虑燃料电池和电解槽虚拟惯量支撑的电力系统优化调度方法》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源程序擅长文章解读,论文与完整源程序,等方面的知识,电网论文源程序关注python

全英文地图/天地图和谷歌瓦片地图杂交/设备分布和轨迹回放/无需翻墙离线使用

一、前言说明 随着风云局势的剧烈变化,对我们搞软件开发的人员来说,影响也是越发明显,比如之前对美对欧的软件居多,现在慢慢的变成了对大鹅和中东以及非洲的居多,这两年明显问有没有俄语或者阿拉伯语的输入法的增多,这要是放在2019年以前,一年也遇不到一个人问这种需求场景的。 地图应用这块也是,之前的应用主要在国内,现在慢慢的多了一些外国的应用场景,这就遇到一个大问题,我们平时主要开发用的都是国内的地

驱动(RK3588S)第七课时:单节点设备树

目录 需求一、设备树的概念1、设备树的后缀名:2、设备树的语法格式3、设备树的属性(重要)4、设备树格式举例 二、设备树所用函数1、如何在内核层种获取设备树节点:2、从设备树上获取 gpio 口的属性3、获取节点上的属性只针对于字符串属性的4、函数读取 np 结点中的 propname 属性的值,并将读取到的 u32 类型的值保存在 out_value 指向的内存中,函数的返回值表示读取到的

海鲜加工污水处理设备处理效果高

诸城市鑫淼环保小编带大家了解一下海鲜加工污水处理设备处理效果高   海鲜加工污水处理设备通常采用物理、化学和生物处理相结合的方法,对废水中的污染物进行高xiao去除。设备设计紧凑,占地面积小,操作简便,适用于不同规模的海鲜加工厂。   设备特点   高xiao性:采用先进的处理工艺和技术,确保废水处理效果稳定可靠。   占地面积小:设备设计紧凑,占地面积小,适合在有限的空间内安装。

集运系统需要与哪些硬件设备集成?

随着电商和跨境贸易的不断发展,集运服务越来越受到海外用户的青睐。集运系统作为一种高效的跨境物流管理工具,可以协调各个环节之间的物流流程,提高物流效率和管理水平,被越来越多的集运企业采用。而集运系统作为集运服务的重要组成部分,也需要配套相应的硬件设备才能更好地支持跨境集运业务。下面就来介绍一下集运系统需要哪些硬件设备支持呢? 1.PDA:是一种便携式电子设备,可以轻松地进行数据采集和处理,具有移

3.门锁_STM32_矩阵按键设备实现

概述 需求来源: 门锁肯定是要输入密码,这个门锁提供了两个输入密码的方式:一个是蓝牙输入,一个是按键输入。对于按键输入,采用矩阵按键来实现。矩阵按键是为了模拟触摸屏的按键输入,后续如果项目结束前还有时间就更新为触摸屏按键输入。 矩阵按键开发整体思路: 由于矩阵按键就是GPIO的控制,所以不进行芯片和设备的分层编写,控制写在同一个文件中,最终向应用层提供一个接口。 代码层级关系:

Anroid BLE蓝牙(手机分别作为中心设备和外围设备)

蓝牙是一种短距的无线通讯技术,可实现固定设备、移动设备之间的数据交换。一般将蓝牙3.0之前的BR/EDR蓝牙称为传统蓝牙,而将蓝牙4.0规范下的LE蓝牙称为低功耗蓝牙。  BLE蓝牙模块主要应用领域     1、移动扩展设备     2、汽车电子设备     3、健康医疗用品:心跳带、血压计等     4、定位应用:室内定位、井下定位等     5、近距离数据采集:无线

RS在不同设备间同步文件

参考: 1. Resilio(BtSync)搭建 2. 使用Resilio Sync共享文件【附操作指南】 4. Linux 下挂载新硬盘方法 5. Partition 1 does not start on physical sector boundary. 6. Ubuntu 16.04添加开机启动脚本的方法 7. Ubuntu 16.04以普通用户身份开机启动 8. Ubunt

如何编写Linux PCI设备驱动器 之一

如何编写Linux PCI设备驱动器 之一 PCI寻址PCI驱动器使用的APIpci_register_driver()pci_driver结构pci_device_id结构 如何查找PCI设备存取PCI配置空间读配置空间APIs写配置空间APIswhere的常量值共用部分类型0类型1 PCI总线通过使用比ISA更高的时钟速率来实现更好的性能;它是时钟运行在 25 或 33 M