7

PPP和tun/tap有什么区别?两者似乎都是为了通过用户空间程序实现网络。

使用 PPP,内核创建 ppp%d 以供使用,并让用户空间程序为其提供后端。
使用 tun/tap,内核创建 tun%d 以供使用,并让用户空间程序为其提供后端...

将程序从使用 tun/tap (在我的 Android 设备上似乎不可用)更改为 ppp有多困难?

4

1 回答 1

18

它们都提供某种形式的网络访问,为什么有两种不同的东西似乎做同样的事情?答案是他们不会做同样的事情。

点对点协议 ( ppp) 旨在通过串行链路提供 IP 网络连接。提供串行链接的最常见的东西是调制解调器,这些存在于手机中,并且在几年前当您拨打服务提供商连接到互联网时无处不在。您的ppp连接从您的 PC 连接到接收器,接收器将串行信号转换回通过互联网路由的 IP 数据包。

如今,当您从服务提供商处获得电缆调制解调器或 ADSL 调制解调器时,它会通过以太网或 WiFi 链接提供 IP 网络连接。调制解调器实际上是在为您的服务提供商提供连接,这可以看作与ppp连接相同;只是您的计算机不再进行从 IP 数据包到通过 ADSL 线路或电缆连接的信号的转换工作。单独的调制解调器提供了一层远离与提供商交谈的复杂性,您只是在谈论“简单”的以太网/WiFi。

Tun/Tap 机制允许您访问位于vpn标准网络连接之上一层的虚拟专用网络 ( );因此,例如,如果您通过以太网连接到电缆调制解调器,那么这就是通过以太网连接提供对 vpn 的访问。如果您通过直接插入您的 PC 的调制解调器访问互联网,那么您将访问您的 vpn over ppp。就其本身而言,tun/tap 接口不提供互联网访问,它依赖于预先存在的连接。这是网络分层的一个例子。

询问将程序从使用 tun/tap 网络连接转换为使用 ppp 连接有多困难会误解这两个接口在提供网络访问时的位置 - tun/tap 将位于 ppp 之上。未加密的数据包进入 tun/tap 接口,被加密,然后作为 IP 数据包发送到 ppp 接口,该接口将它们转换为串行信号发送到远程端,将它们转换回 IP 数据包并将它们转发到vpn目标解密它们并通过它自己的专用网络路由它们。

如果您删除了 tun/tap 接口,那么您将不得不修改任何希望通过 vpn 进行通信的应用程序,以便对于它的任何网络通信,您都需要拦截它们;加密它们;转发他们;接收响应并解密它们。通过使用 tun/tap 层,您允许内置 IP 路由获取未加密的数据包并对其进行加密并转发 - 即您无需修改​​任何与专用网络通信的应用程序。

几乎计算机科学中的每一个问题都可以通过添加一层间接来解决。通过添加这些层,我们降低了单个组件的复杂性,但可以构建强大的系统。如果我们没有 ppp 接口,每个程序都需要知道如何进行串口通信,如果我们没有 tun/tap,每个程序都需要知道如何使用 vpn 以及如何进行串口通信.

您可以删除 tun/tap 连接的唯一方法是,如果 ppp 连接是与私有系统建立的。您将不得不使用类似于 GSM 数据的东西(这是 9600 位/秒,这是一个实际的电话呼叫),即使这样您也没有加密,并且您正在通过蜂窝网络,这会打败专用网络的整体意图。

以下是各种隧道协议如何工作的粗略简化,但应该足够详细地解释您应该能够理解为什么不能只将一个交换为另一个。

要了解为什么不同的 vpn 协议使用不同的接口来完成它们的工作,您必须了解它们是如何设计的。TAP、L2TP 和 PPTP 都是第 2 层协议的示例。TUN 是第 3 层协议的一个示例。

为了理解这些差异,我将使用邮政类比。第 2 层(也称为链路层),相当于一个信使。你递给他一封信,他亲自递给收件人。快递员知道他所在地区的所有潜在目的地,任何发往该地区的消息都可以由他处理。

如果我们扩展这个类比,邮箱也可以被视为有效的第 2 层端点。如果你想在全国范围内收到信件,你把它们放在邮箱里。这类似于 L2TP、PPTP 和 TAP 包装它们的数据包以通过网络传输。

第 3 层是信件上的地址 - 它可以用来将信件从邮局转移到邮局,最终到达邮递员的手中。这是包装数据包通过网络路由的地方。

它回到第 2 层,此时邮递员知道其投递区域内的目的地并将信件交给预期的收件人。这是打包的数据包被解包然后由 L2TP、PPTP 或 TAP 端点处理的地方

对于 TUN,这要容易一些。您的信件会直接送到您当地的邮局,然后集体送到您收集它们的目的地邮局。可能会有一些关于将信件送到邮局或从邮局到目的地地址的细节,但这实际上并不是协议的一部分。

然后是如何实现它们的尴尬细节。L2TP 和 PPTP 都被定义为ppp,一种在两个端点之间建立直接连接的成熟机制,因此为了在这种系统上进行通信,起点和终点都需要点对点点协议。隧道提供了一个虚拟层,这些ppp消息可以在其中传播(这个隧道就是T它们名字的来源)。

TAP 接口是根据以太网数据包的隧道定义的- 这些是您会看到通过 WiFi 连接快速传输的数据包。它在通过这些以太网数据包的两个网络之间建立了一个简单的桥接。以太网数据包通常包含 IP 数据包,允许您将它们直接放在目的地的线路上,而无需重新封装它们。

TUN 接口是根据IP数据包的隧道定义的——这些数据包是经过转换之前的数据包,以便它们可以通过以太网/WiFi 等物理连接传输。这意味着您正在计算机和目标网络之间建立路由虚拟 IP 网络。目标由该接口提供的路由定义的 IP 数据包将发送到该接口。

最终产品是他们系统上可以发送 IP 数据包的另一个网络接口。这个接口封装了数据包(对于 PPTP/L2TP 在 ppp 数据包中;对于 TAP 在以太网数据包中;对于 TUN 在另一个 IP 数据包中)。加密可能在包装之前、包装之后或在这两个点都涉及(取决于协议)。理解 L2TP 的程序将精通交谈PPP,但如果不进行重大重写,则无法交谈其他协议。

于 2013-04-06T23:22:47.440 回答