walkor/php-socks5

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

RainUUU opened this issue · 6 comments

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

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

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

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

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

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

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

对,握手的时候buffer不大。

好的,了解了。谢谢