SOCK5代理服务器透明穿透技术
一、目标(Target)
在尽量不改变现有代码的情况下,透明穿越socks 5代理。
二、技术分析(Technology Analyse)
2.1 sock 5 代理分析
由于目前socks规范中,socks4不支持UDP,只有socks5才支持,而目前视频应用中,码流传输采用的是UDP,所以如果客户端只支持SOCK4代理,则视频应用将受到限制。从市场分析来看,大部分代理都实现了sock5代理协议,所以我们在实现上假设已经实现SOCK5.
SOCK5协议规定了代理通信的逻辑,为了保证数据不会在第一级丢失,该协议必须首先通过TCP方式进行通信。然后进行协议协商,如果验证通过则可以进行通过。否则拒绝。
关于sock5的协商过程参考RFC1928.
下面简要分析一下TCP和UDP客户如何穿越代理的协议处理过程。
2.1.1 基于TCP协议的客户端处理过程(Procedure for TCP-based clients)
当一个基于TCP协议的客户端希望与目标建立连接,它必须先建立一个与SOCKS服务器上SOCKS端口的TCP连接。通常这个TCP端口是1080(
用户可以自定义)。当连接建立后,客户端进入协议的“握手(negotiation)”过程:认证方式的选择,根据选中的方式进行认证,然后发送转发的要求。SOCKS服务器检查这个要求,根据结果,或建立合适的连接,或拒绝。
当客户端连到服务器后,然后就发送请求来协商版本和认证方法:
+----+----------+----------+
|VER | NMETHODS | METHODS |
+----+----------+----------+
| 1 | 1 | 1 to 255 |
+----+----------+----------+
字段说明:VER:协议生版本号:0x05
NMETHODS: 该字段包含了在METHODS字段中出现的方法标示的数目(以字节为单位)。
METHODS:认证方法1-255.
服务器端从METHODS所给出的方法中选一个,并发送一个方法选中消息(METHOD selection message)给客户端。
+----+--------+
|VER | METHOD |