mirror of
https://github.com/e1732a364fed/v2ray_simple.git
synced 2025-12-24 13:27:56 +08:00
更新文档,minor improvement
This commit is contained in:
@@ -74,7 +74,7 @@ verysimple 是一个很简单的项目,覆盖协议也没有v2ray全,比如s
|
||||
|
||||
我 实现了 一种独创的 非mux型“隔离信道”方法的 udp over tcp 的fullcone
|
||||
|
||||
测试的话,由于目前 verysimple 客户端只支持socks5入口,可以考虑先用v2ray + Netch或者透明代理 等方法监听本地网卡的所有请求,发送到 verysimple 客户端的socks5端口,然后 verysimple 客户端 再用 vless v1 发送到 v2simple vless v1 + direct 的服务端。
|
||||
测试 fullcone 的话,由于目前 verysimple 客户端只支持socks5入口,可以考虑先用v2ray + Netch或者透明代理 等方法监听本地网卡的所有请求,发送到 verysimple 客户端的socks5端口,然后 verysimple 客户端 再用 vless v1 发送到 v2simple vless v1 + direct 的服务端。
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -119,11 +119,9 @@ func (uc *UserConn) Read(p []byte) (int, error) {
|
||||
|
||||
if uc.version == 0 {
|
||||
|
||||
if !uc.isServerEnd && !uc.isntFirstPacket {
|
||||
if !uc.isUDP {
|
||||
|
||||
if uc.isUDP { //即该连接为udp连接,要在后面处理
|
||||
|
||||
} else {
|
||||
if !uc.isServerEnd && !uc.isntFirstPacket {
|
||||
|
||||
uc.isntFirstPacket = true
|
||||
|
||||
@@ -143,9 +141,6 @@ func (uc *UserConn) Read(p []byte) (int, error) {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if !uc.isUDP {
|
||||
return uc.Conn.Read(p)
|
||||
} else {
|
||||
|
||||
|
||||
11
vless_v1.md
11
vless_v1.md
@@ -4,6 +4,17 @@
|
||||
|
||||
总的来说 vless v1 简化了一些流程, 约定永远使用tls(与trojan相同),并重点考虑 非多路复用的 udp over tcp的 fullcone实现
|
||||
|
||||
vless v0中服务端 的回复也是有数据头的,第一字节版本号,第二字节addon长度;而首先v2ray根本没有addon,所以第二字节总是0,
|
||||
|
||||
而版本号的话,我约定服务端和客户端必须使用相同版本,
|
||||
|
||||
就是说,客户端请求使用v0,服务端不会返回一个v1出来;客户端请求v1,服务端也不会强制告诉客户端必须用v0,而是客户端要什么就是什么,
|
||||
|
||||
因此也不用再包含版本号,这样在v1中 服务端的回复就不必包数据头,可以减少内存操作,比v0更快。
|
||||
|
||||
然后就是v0中udp的数据除了提到的2字节数据头,还有两字节长度,根据上面 discussion的讨论,这个长度也是没必要的,在v1中也被我删除。
|
||||
|
||||
所以v1的 读写特别简单,一旦握手成功,不会有任何数据头产生,没有丝毫额外开销,直接直连
|
||||
|
||||
## 关于udp over tcp 的 vless 的 fullcone
|
||||
|
||||
|
||||
Reference in New Issue
Block a user