Tun 和 Tap 接口都将数据从一台主机传送到另一台主机。主要区别在于您在使用 Tun 或 Tap 时获得的功能(优点/缺点)。
通过 Tap 接口传递的数据在 OSI 堆栈的第 2 层注入,通过 Tun 接口传递的数据在第 3 层注入。这里没有更好/更差的选择 - 每个都适合特定目的。你可以阅读一个很好的解释here。
现在回答你的问题:
为什么这样的隧道涉及到建立网络连接的使用?
无论接口类型如何(tun/tap),您都希望将数据包从一台主机传送到另一台主机。为此,您捕获这些数据包,封装它们,然后您需要将封装的数据发送到远程端。为此,您需要设置网络连接。
隧道两边的程序是否必须在同一台主机上运行,或者它们可以在不同的主机上运行?
您正在两台不同的主机之间创建 VPN 连接,所以是的 - 两台主机上都会运行软件来处理封装/解封装。
网络堆栈是否通过 TCP/UDP 传递 tap 或 tun 包?
TCP/UDP 是 layer4 协议,因此从 TCP/UDP 堆栈的角度来看,数据包是通过 tun 或 tap 接口到达您的主机根本没有关系。
编辑:澄清后续问题:
既然您询问的是 Tun/Tap 适配器,那么让我们退后一步。当您运行 VPN 时,您的计算机 A 的行为就好像它直接连接到网络 N,即使它可能在很远的地方。要做到这一点,您需要运行一个 VPN 软件。您必须在两个地方运行此 VPN 软件 - 一个在计算机 A 中,另一个在连接到网络 N 的计算机(或网络设备)中。在计算机 A 中运行 VPN 软件时,您可以选择创建 Tun 或点击适配器。
Q1:是的 - 交付意味着发送和接收。
Q2:是的——表示VPN连接就像一个管道,两端都有VPN软件在运行。
Q3:当 VPN 软件在计算机 A 中运行时,它会创建一个所谓的虚拟网络适配器。在操作系统看来,这个虚拟网络适配器的行为就像一个普通的网络适配器。它不是通过电线或电波发送数据,而是对数据进行封装、封装并通过系统中的其他适配器发送。