调用过程:
ServiceSinkhole.start("prepared", this);
onCreate()
ServiceSinkhole中的native对应netguard.c中的方法
三次握手建立连接和四次握手断开连接:
根据关联tcp(udp)数据包信息获取发送数据包应用的信息
1 读取/proc/net/tcp或者/proc/net/udp内容。
2 根据source_ip、source_port、dest_ip、dest_port获取uid
3 根据uid获取ApplicationInfo,即可获取app信息
Selector介绍:
Selector(选择器)是Java NIO中能够检测一到多个NIO通道,
并能够知晓通道是否为诸如读写事件做好准备的组件。
这样,一个单独的线程可以管理多个channel,从而管理多个网络连接。
-----------
步骤:
1 创建Selector:
Selector selector = Selector.open();
2 向Selector注册通道:
//通道必须使用非阻塞模式,FileSelector只能使用阻塞模式,所以通道不能和FileSelector一起使用。套接字通道可以是非阻塞模式。
channel.configureBlocking(false);
SelectionKey key = channel.register(selector,Selectionkey.OP_READ);
ServerSocketChannel
是一个可以监听新进来的TCP连接的通道, 就像标准IO中的ServerSocket一样。
Vpn原理:
VPN的原理
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。