walkor / php-socks5

socks5 proxy written in PHP based on workerman.
205 stars 103 forks source link

socks5协议解析部分是否有改进空间? #7

Closed RainUUU closed 5 years ago

RainUUU commented 5 years ago

该项目解析socks5部分协议是否有改进空间? socks5服务端使用TCP协议监听,在onMessage中监听回调消息,在碰到数据未接收完整的情况下都选择close connection。 例如:parse_socket5_header() if(strlen($buffer) < 10) { echo bin2hex($buffer)."\n"; echo "buffer too short\n"; return false; } 是我考虑多了还是确实有改进空间?

walkor commented 5 years ago

只有在socks5握手的时候才判断buffer长度是否足够,握手完毕后就直接传输了,不会再判断长度。 握手的时候buffer肯定是足够的,不足的话说明是错误的数据,关闭是没问题的

RainUUU commented 5 years ago

再请教一下,“只有在socks5握手的时候才判断buffer长度是否足够” ,这个依据是因为握手时传输的buffer不大的原因吗? 握手阶段的消息也是通过TCP传输的吧?

RainUUU commented 5 years ago

可能是我没表达清楚,我说的是握手阶段,例如请求建立目标代理的消息

VER CMD RSV ATYP DST.ADDR DST.PORT
1 1 0x00 1 动态 2

对应的代码是parse_socket5_header()方法,但是该方法中未获取到指定数据流大小的时候选择close connection

walkor commented 5 years ago

对,握手的时候buffer不大。

RainUUU commented 5 years ago

好的,了解了。谢谢