SOCKS


SOCKS (正體)

SOCKS是一种网络协议,主要用于客户端与外网服务器之间通讯的中间传递。SOCKS是"SOCKetS"的缩写[1]

防火墙后的客户端要访问外部的服务器时,就跟SOCKS代理服务器连接。这个代理服务器控制客户端访问外网的资格,允许的话,就将客户端的请求发往外部的服务器。

这个协议最初由Devid Koblas开发,而后由NEC的Ying-Da Lee将其扩展到版本4。最新协议是版本5,与前一版本相比,增加支持UDP、验证,以及IPv6

根据OSI模型,SOCKS是位于应用层传输层之间的中间层。

目录

SOCKS 4 协议

下面是客户端向SOCKS 4代理服务器,发送的连接请求包的格式(以字节为单位):

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

代理服务器而后发送回应包(以字节为单位):

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

如果请求被拒绝,SOCKS服务器马上与客户端断开连接;如果请求被允许,代理服务器就充当客户端与目的主机之间进行双向传递,对客户端而言,就如同直接在与目的主机相连。

SOCKS 服务器

部分SOCKS服务器软件:

SOCKS 客户端

有不少客户端的socksify[2]软件,本地软件从而可以通过SOCKS来与外网相连。

客户端 许可证 版本 发布日期 平台 支持协议
Dante client BSD/CMU 1.1.18 09/2005 Linux v4, v5
FreeCap GPL 3.18 02/2005 Windows -
Hummingbird socks - - - Windows -
ProxyCap - 2.03 - Windows -
SocksCap Non-Comercial home use - - - v5
tsocks GPL 1.8 10/2002 - -
nylon - - 06/2003 OpenBSD -

注脚

  1. ^  详见:http://www.hummingbird.com/products/nc/socks/faq.html#stand
  2. ^ sockify定义请见:http://mindprod.com/jgloss/socksify.html

参见

外部链接


! __







Why are we here?
All text is available under the terms of the GNU Free Documentation License
This page is cache of Wikipedia. History