SOCKS
维基百科,自由的百科全书
SOCKS是一种网络协议,主要用于客户端与外网服务器之间通讯的中间传递。SOCKS是"SOCKetS"的缩写 。
当防火墙后的客户端要访问外部的服务器时,就跟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服务器软件:
- Dante Socks Server,http://www.inet.no/dante
- Java Socks Server,http://jsocks.sourceforge.net
- Socks4 Server,http://www.alhem.net/project/socks4
- SS5 Socks Server,http://digilander.libero.it/matteo.ricchetti
[编辑] SOCKS 客户端
有不少客户端的socksify
软件,本地软件从而可以通过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 | - |
[编辑] 注脚
- ^ 详见:http://www.hummingbird.com/products/nc/socks/faq.html#stand
- ^ sockify定义请见:http://mindprod.com/jgloss/socksify.html
[编辑] 参见
[编辑] 外部链接
- RFC 3089 - A SOCKS-based IPv6/IPv4 Gateway Mechanism
- RFC 1961 - GSS-API Authentication Method for SOCKS Version 5
- RFC 1929 - Username/Password Authentication for SOCKS V5
- RFC 1928 - SOCKS Protocol Version 5
- http://archive.socks.permeo.com/protocol/socks4.protocol - SOCKS Protocol Version 4
- http://www.socks.permeo.com/AboutSOCKS/SOCKSOverview.asp