gpt4 book ai didi

linux -/dev/ppp 和/dev/net/tun 有什么区别?

转载 作者:行者123 更新时间:2023-12-02 16:49:00 31 4
gpt4 key购买 nike

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

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

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

最佳答案

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

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

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

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

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

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

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

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

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

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

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

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

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

它返回到第 2 层, postman 知道他的递送区域内的目的地并将信件交给预定的收件人。这是被包装的数据包解包然后由 L2TP、PPTP 或 TAP 端点处理的地方

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

然后是如何实现它们的尴尬细节。 L2TP 和 PPTP 都是根据 ppp 定义的,这是一种用于在两个端点之间建立直接连接的完善机制,因此为了跨这种系统进行通信,起点和终点都需要说点对点-点协议(protocol)。隧道提供了一个虚拟层,这些 ppp 消息通过该层传输(这个隧道是它们名称中的 T)。

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

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

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

关于linux -/dev/ppp 和/dev/net/tun 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15845087/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com