mightofcode / android-vpnservice-example

a android vpnservice example, use blocking io
Apache License 2.0
185 stars 59 forks source link

膜拜大佬请教一些问题 #9

Open xujimu opened 1 year ago

xujimu commented 1 year ago

我看了一天源码了,大概了解了一些流程,启动vpn后系统会把所有数据报传入app服务,读取原始的字节流然后转换成实体类Packet,并添加到队列中,再启动一个线程不断去读取这个队列的数据报进行处理,然后这里我就看不懂了,大概我能明白是通过分析数据报然后自己实现了tcp协议,TcpPipe是tcp的对象里面包含了tcp的握手状态等信息,然后用了一个Map<String, TcpPipe>保存所有的tcp链接,然后我就懵逼了,这个数据报是怎么发出去的,我能理解的是 系统流量转发到vpn服务 vpn服务转发给真正的目标服务器 目标服务器返回给vpn服务 vpn服务再返回给系统