SOCKS:防火墙安全会话转换协议
(Socks: Protocol for sessions traversal across firewall securely)
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 库中相应的封装程序。
协议结构
| SOCKS v5 具有以下一些不同格式的信息:
版本标识符/信息选择方法: |
| 1 byte |
1 byte |
1-255 byte |
| Version |
NMethods |
Methods |
| 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 |
| 2byte |
1 byte |
1 byte |
Variable |
2 |
Variable |
| RSV |
FRAG |
ATYP |
DST Addr |
DST Port |
Data |