SOCKS 协议提供一个框架,为在 TCP 和 UDP 域中的客户机/服务器应用程序能更方便安全地使用网络防火墙所提供的服务。这个协议从概念上来讲是介于应用层和传输层之间的中介层(shim-layer),因而不提供如传递 ICMP 信息之类的网络层网关服务。
利用网络防火墙将组织内部的网络结构与外部网络如 INTERNET 中有效地隔离开来,这种方法正变得逐渐流行起来。这些防火墙系统通常以应用层网关的形式工作在网络之间,提供受控的 TELNET、FTP、SMTP 等的接入。SOCKS 提供一个通用框架来使这些协议安全透明地穿过防火墙。
SOCKSv5 为这些协议穿越提供了有力的认证方案,而 SOCKSv4 为 TELNET、FTP、HTTP、WAIS 和 GOPHER 等基于 TCP 协议的客户/服务器程序仅仅提供了一个不安全防火墙穿越。新的协议 SOCKS v5 在 SOCKSV4 基础上作了进一步扩展,从而可以支持 UDP,并对其框架规定作了扩展,以支持安全认证方案。同时它还采用地址解析方案(addressing scheme)以支持域名和 IPV6 地址。
为了实现这个 SOCKS 协议,通常需要重新编译或者重新链接基于 TCP 的客户端应用程序以使用 SOCKS 库中相应的封装程序。
协议结构
OCKS v5 具有以下一些不同格式的信息:
版本标识符/信息选择方法:
| 1 byte | 1 byte | 1-255 byte |
| Version | NMethods | Methods |
SOCKS 请求信息:
| 1 byte | 1 byte | Value of 0 | 1 byte | Variable | 2 bytes |
| Version | CMD | Rsv | ATYP | DST Addr | DST Port |
信息选择方法:
| 1 byte | 1 byte |
| Version | Method |
答复信息:
| 1 byte | 1 byte | Value of 0 | 1 byte | Variable | 2 bytes |
| Version | REP | RSV | ATYP | BND Addr | BND Port |
UDP 请求头:
| 2byte | 1 byte | 1 byte | Variable | 2 | Variable |
| RSV | FRAG | ATYP | DST Addr | DST Port | Data |
相关协议:TCP、UDP、ICMP、HTTP、Gopher、Telnet、FTP
组织来源:SOCKS 由 IETF (www.ietf.org) 定义在 RFC 1928中。
相关链接:http://www.javvin.com/protocol/rfc1928.pdf:SOCKS Protocol Version 5.


