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

我们。

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

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

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

Petesh:

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

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

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

Tun / Tap机制允许您vpn在标准网络连接上方的一层中访问虚拟专用网络();因此,例如,如果您通过以太网连接到电缆调制解调器,则可以通过以太网连接访问vpn。如果您通过直接插入PC的调制解调器访问Internet,那么您将通过访问VPN ppptun / tap接口本身不提供Internet访问,它依赖于预先存在的连接。这是网络分层的一个示例。

询问将程序从使用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,但是如果不进行大量重写,就无法使用其他协议。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

--save和--save-dev有什么区别?

require和require-dev有什么区别?

/ proc / kmsg和/ dev / kmsg有什么区别?

dev,media和mnt有什么区别?

Linux内核中struct net_device的dev_addr和perm_addr有什么区别

在Linux中,/ dev / uinput和/ dev / input有什么区别?

npm的--dev,--save和--save-dev有什么区别?

/ dev / sda1和/ dev / xvda1有什么区别?

/ dev / tty *和/ dev / bus / usb / 001/002有什么区别?

angular.dev.js和angular.sfx.dev.js有什么区别?

在dd中使用“ of = / dev / sdX”和“ of = / dev / sdXY”有什么区别

/ dev / input / eventX和/ dev / input / jsX有什么区别?

“> / dev / null 2>&1”和“ 2> / dev / null>&2”有什么区别

谁创建/ dev / net / tun

/ dev / null和/ dev / zero之间的区别

“ >> / dev / stderr”(带有空格)和“>&2”之间有什么区别?

/ dev / ppp无法打开

php5和php5-dev有什么区别

composer.json中的require和require-dev部分之间有什么区别?

在 /dev/mapper/ 上分开,Ignore 和 Cancel 有什么区别?

pub依赖和dev_dependencies之间有什么区别?

npm install中的--save和--save-dev有什么区别?

诗歌中的deps和dev-deps有什么区别?

Windows Dev-Center和Microsoft Developer Network页面之间有什么区别?

Turbo C++ 7 和 Dev C++ 在语法上有什么区别?

什么是/ proc / <pid> / net / dev?

`yarn dev`和`yarn run dev`有区别吗?

/ dev / hdc,/ dev / sr0,/ dev / cdrom有什么区别

VM Ubuntu:什么是/ dev / mapper和/ dev / sd1?