socks4

介绍

   主要是想学习Proxy协议,找了一个最简单的socks v4版本的规范,用ACE实现了。

细节

   Proxy的过程就是客户端发送一个连接请求给代理服务器,代理服务器连接远端后告诉客户端是否成功。

以下是从wiki拷贝过来的
客户端发送的数据包的格式:

  • VN是SOCK版本,应该是4;
  • CD是SOCK的命令码,1表示CONNECT请求,2表示BIND请求;
  • DSTPORT表示目的主机的端口;
  • DSTIP指目的主机的IP地址;
  • NULL是0;

代理返回给客户端的格式

  • VN是回应码的版本,应该是0;
  • CD是代理服务器答复,有几种可能:
    1. 90,请求得到允许;
    2. 91,请求被拒绝或失败;
    3. 92,由于SOCKS服务器无法连接到客户端的identd(一个验证身份的进程),请求被拒绝;
    4. 93,由于客户端程序与identd报告的用户身份不同,连接被拒绝。
    5. DSTPORT与DSTIP与请求包中的内容相同,但被忽略。

如果连接成功后,代理服务器只是传送数据,不做其他的修改,所以就比较简单了。

附录:源代码

https://github.com/buaabyl/socksv4