熟识Socks5的请进!(200分)

  • 主题发起人 主题发起人 Lonelysword
  • 开始时间 开始时间
L

Lonelysword

Unregistered / Unconfirmed
GUEST, unregistred user!
我在设计一个Socks5代理服务器时遇到一个问题:
当收到远程主机的UDP数据后,是否需要对它进行处理后才发送到客户端?
 
SOCKS5 只支持 tcp 吧,怎么支持 udp 了?

如果是 tcp , 不用处理,直接发
 
Socks5有一个新功能,就是UDP Associate,可以处理UDP
 
从道理上说:
服务器不知道连上来的客户端是直接连的还是通过socks5连的,
如果client通过socks5连上服务器,服务器也以为socks5只是
简单的客户,所以服务器发给socks5和发给其他普通的直连
的客户的信息是一样的,所以socks5应该不加变换直接将数据
转给客户端
 
sock5代理的工作程序是:

1。需要代理方向服务器发出请求信息。

2。代理方应答

3。需要代理方接到应答后发送向代理方发送目的ip和端口

4。代理方与目的连接

5。代理方将需要代理方发出的信息传到目的方,将目的方发出的信息传到需要代理方。代理完成

由于网上的信息传输都是运用tcp或udp进行的,所以使用socks5代理可以办到网上所能办到的一切,而且不舆目的方会查到你的ip,既安全又方便

sock5支持UDP和TCP,但两种代理是有区别的,以下分类说明

如何用代理TCP协议

1。向服务器的1080端口建立tcp连接。

2。向服务器发送 05 01 00 (此为16进制码,以下同)

3。如果接到 05 00 则是可以代理

4。发送 05 01 00 01 + 目的地址(4字节) + 目的端口(2字节),目的地址和端口都是16进制码(不是字符串)。
例202.103.190.27 - 7201
则发送的信息为:05 01 00 01 CA 67 BE 1B 1C 21
(CA=202 67=103 BE=190 1B=27 1C21=7201)

5。接受服务器返回的自身地址和端口,连接完成

6。以后操作和直接与目的方进行TCP连接相同。

如何用代理UDP连接

1。向服务器的1080端口建立tcp连接

2。向服务器发送 05 01 00

3。如果接到 05 00 则是可以代理

4。发送 05 03 00 01 00 00 00 00 + 本地UDP端口(2字节)

5。服务器返回 05 00 00 01 +服务器地址+端口

6。断开连接

7。发送UDP数据报:格式变为
00 00 01 +目的地址IP(4字节)+目的端口 +所要发送的信息

8。接受与原来相同


TIMER

2000.1.23

以前写的文章,还算有用吧!
 
注:上面的是匿名连接,需要验证的我还没写:)
 
to:timerri
谢谢你写的文章!能不能给我介绍一些资料,最好有源代码
 
唉呀!上次的资料有错误!!
>7。发送UDP数据报:格式变为
>00 00 01 +目的地址IP(4字节)+目的端口 +所要发送的信息
>8。接受与原来相同

这两条错了
其中00 00 01 +目的地址IP(4字节)+目的端口 +所要发送的信息
应该为:00 00 00 01 +目的地址IP(4字节)+目的端口 +所要发送的信息

而接收到的也是封了包的,封包方式与发出时相同,即00 00 00 01 +来源地址IP(4字节)+来源端口 +接受的信息

请参看rfc1928

那篇文章写得早了一点,错误在所难免,请大家原谅
 
接受答案了.
 
可以给出源代码吗
 
后退
顶部