Android英文文档翻译系列(5)——VPNService
API14
位于android.net.VpnService
类概述|Class Overview
VpnService is a base class for applications to extend and build their own VPN solutions
//VpnService一个为应用程序扩展和建立自己的VPN解决方案的基类。
In general, it creates a virtual network interface, configures addresses and routing rules, and returns a file descriptor to the application
//通常,它用来创建一个虚拟网联络接口,配置IP地址和路由规则,和返回为应用程序返回一个文件说明符
Each read from the descriptor retrieves an outgoing packet which was routed to the interface.
//逐行读取说明符将可以检索到通向接口的出站数据包,
Each write to the descriptor injects an incoming packet just like it was received from the interface.
//逐行写入说明符插入一个进来的数据包就像它从接口接受一样。
The interface is running on Internet Protocol (IP), so packets are always started with IP headers. T
//这个接口运行在网络协议上,所以数据包总是开始于ip的头部。
The application then completes a VPN connection by processing and exchanging packets with the remote server over a tunnel.
这个应用程序在一个隧道通过处理和交换数据包来完成VPN的连接。位于android.net.VpnService
类概述|Class Overview
VpnService is a base class for applications to extend and build their own VPN solutions
//VpnService一个为应用程序扩展和建立自己的VPN解决方案的基类。
In general, it creates a virtual network interface, configures addresses and routing rules, and returns a file descriptor to the application
//通常,它用来创建一个虚拟网联络接口,配置IP地址和路由规则,和返回为应用程序返回一个文件说明符
Each read from the descriptor retrieves an outgoing packet which was routed to the interface.
//逐行读取说明符将可以检索到通向接口的出站数据包,
Each write to the descriptor injects an incoming packet just like it was received from the interface.
//逐行写入说明符插入一个进来的数据包就像它从接口接受一样。
The interface is running on Internet Protocol (IP), so packets are always started with IP headers. T
//这个接口运行在网络协议上,所以数据包总是开始于ip的头部。
The application then completes a VPN connection by processing and exchanging packets with the remote server over a tunnel.
Letting applications intercept packets raises huge security concerns.
//让应用程序去拦截数据包是会引发很大的安全问题。
A VPN application can easily break the network. Besides, two of them may conflict with each other.
// 一个VPN应用程序可以很轻易的突破网络,但是两个VPN程序将会引起冲突。
The system takes several actions to address these issues. Here are some key points:
// 这个系统将会添加一些动作到地址问题(...翻译不出来),这是几个关键点
- User action is required to create a VPN connection.
- There can be only one VPN connection running at the same time. The existing interface is deactivated when a new one is created.
- A system-managed notification is shown during the lifetime of a VPN connection.
- A system-managed dialog gives the information of the current VPN connection. It also provides a button to disconnect.
- The network is restored automatically when the file descriptor is closed. It also covers the cases when a VPN application is crashed or killed by the system.
There are two primary methods in this class:
prepare(Context)
and establish()
. //在这个类中有两个私有的方法:
prepare(Context)
and establish()
. The former deals with user action and stops the VPN connection created by another application.
//之前的VPN连接将会为其他的VPN应用程序的创建而中止。
The latter creates a VPN interface using the parameters supplied to the
VpnService.Builder
. //后续创建的VPN接口用的参数支持
VpnService.Builder。
An application must call prepare(Context)
to grant the right to use other methods in this class, and the right can be revoked at any e.Here are the general steps to create a VPN connection: //应用程序必须先调用prepare(Context)来允许使用其他的方法,在任何时候调用...
Here are the general steps to create a VPN connection: //连接VPN的通常步骤:
- When the user press the button to connect, call
prepare(Context)
and launch the returned intent.
prepare(Context)
启动返回的Intent.2.When the application becomes prepared, start the service.
第二:当应程序的状态编程prepared的时候,开始启动VPN服务。
3.Create a tunnel to the remote server and negotiate the network parameters for the VPN connection.
第三:为VPN连接创建一个远程服务器的隧道,越过网络参数。
4. Supply those parameters to a
VpnService.Builder
and create a VPN interface by calling establish()
. 第四:为
VpnService.Builder提供参数,
调用establish()创建VPN接口。5.Process and exchange packets between the tunnel and the returned file descriptor.
第五:在隧道和返回的说明符之间处理和交换数据包。
6.When
onRevoke()
is invoked, close the file descriptor and shut down the tunnel gracefully. 第六:当onRevoke()调用的时候,关闭这个说明符和优雅的关闭通道。
Services extended this class need to be declared with appropriate permission and intent filter.
//