App Proxy Provider和Packet Tunnel Provider的区别



我正在阅读应用代理提供商和包隧道提供商的文档,我有点困惑。

文档说明包隧道提供商发送和接收来自/到系统的数据包,而应用代理提供商发送/接收来自/到系统的流。

数据包隧道提供程序文档中令人困惑的地方:

包隧道提供程序可以以目的IP模式或源应用模式运行。后者是单应用VPN的一种形式(另一种形式是应用代理提供商)。

但是在NETunnelProvider类中它说:

默认为NETunnelProviderRoutingMethodDestinationIP。

所以默认情况下,包隧道提供商实际上是一个应用代理提供商?我错过了什么?有人能解释一下它们的区别吗?

AppProxy和PacketTunnel是实现VPN的选项。

AppProxy与所谓的Flow对象一起工作,每个Flow都由某个应用程序启动。AppProxy接收流并将其转发到某处。

PacketTunnel与数据包一起工作。它接收到数据包,并可以在它进入网络之前对它做一些事情(比如,修改)。

现在,文档部分可能会给您带来麻烦:AppProxy和PacketTunnel接收

的流/数据包究竟是什么?AppProxy:

NEAppProxyProvider类提供对网络数据流的访问以NEAppProxyFlow对象的形式。每个NEAppProxyFlow对象对应于匹配应用规则的应用打开的套接字

这意味着,你将有所有流匹配你的规则先去你的类方法,然后路由到一些新的地址。

PacketTunnel:

包隧道提供程序可以以目的IP模式或源码应用模式。

这意味着,你可以设置这样的规则:"每个数据包都要到达ip地址列表","我希望你先通过我的类方法,然后进入隧道";-这将是目的IP模式。

或者你可以设置这样的规则:"所有来自bundle id为com.my.app的包现在先去我的类方法,然后再进入隧道";这是源应用程序模式。

这(PacketTunnelProvider的源应用模式)是一种基于应用的VPN形式,因为它专注于产生流量的应用。

AppProxy也专注于产生流量的应用,所以它是另一种形式的应用VPN,但它会给你应用产生的流对象,而不是带有ip和tcp/udp报头的数据包。

最新更新