Panabit Support Board!

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11971|回复: 2

Socks5代理协议简介及其工作程序

[复制链接]
发表于 2007-5-18 12:54:46 | 显示全部楼层 |阅读模式
转自CSDN:

      如果您的机器具有一个合法的 Internet IP 地址, 或者您利用自己机器上的调制解调器拨号上网, 可以自由和 Internet 上任何主机沟通, 那么您通常不必关心 SOCKS5 协议。 SOCKS5 协议对于处在内部网络中的机器, 需要透过网络中某些可以联通外部 Internet 的机器来访问外部时有用。

      SOCKS5 是一个代理协议,它在使用 TCP/IP协议通讯的前端机器和服务器机器之间扮演一个中介角色,使得内部网中的前端机器变得能够访问Internet网中的服务器,或者使通讯更加安全。

      SOCKS5 服务器通过将前端发来的请求转发给真正的目标服务器, 模拟了一个前端的行为。在这里,前端和SOCKS5之间也是通过TCP/IP协议进行通讯,前端将原本要发送给真正服务器的请求发送给SOCKS5服务器,然后SOCKS5服务器将请求转发给真正的服务器。SOCKS5服务器在将通讯请求发送给真正服务器的过程中,对于请求数据包本身不加任何改变。SOCKS5服务器接收到真正服务器的响应后,也原样转发给前端。

      因此,SOCKS5 协议是一种代理协议,对于各种基于 TCP/IP的应用层协议都能够适应,几乎是万能的。它虽然不能理解自己转发的数据的内部结构,但是它能够忠实地转发通讯包,完成协议本来要完成的功能。

      与SOCKS5协议不同,HTTP代理是通过HTTP协议进行的,HTTP代理服务器软件了解通讯包的内部结构,在转发过程中还要对通讯进行某种程序的修改和转换。和HTTP代理协议不同,SOCKS5实际上是一个传输层的代理协议。

      我们可以想象,如果每个具体的应用层协议都要设计对应的代理协议表达办法,一个特定的代理服务器无论如何也支持不过来那么多新出现的协议。因此,可以说SOCKS5的出现缓解了各种具体协议需要专门设计代理协议的困难局面。

  不过,并不是凡是使用基于TCP/IP协议的应用协议的软件,都可以无条件地透过SOCKS5服务器进行通讯,还要求前端软件本身具有SOCKS5的接口,才能利用SOCKS5代理服务器。

  一个支持SOCKS5协议的前端,通常具有两种运行状态:

  1)直接通讯状态,不使用SOCKS5接口。这时的通讯是针对最终服务器进行的。

  2)SOCKS5 状态。 使用 SOCKS5 接口将本来要发送给最终服务器的请求发送给 SOCKS5 服务器。在前端和 SOCKS5 服务器进行初始化会话的时候,前端告诉了 SOCKS5 服务器关于最终服务器的 IP 地址和端口信息,所以 SOCKS5服务器能够忠实按照前端的要求启动和最终服务器的通讯过程。
 楼主| 发表于 2007-5-18 13:14:15 | 显示全部楼层

Socks5的工作程序

1.客户端向Socks5服务器发出请求信息。
2.Socks5应答
3.客户端接到应答后发送向Socks5服务器发送目的服务器的ip和端口
4.Socks5与目的服务器连接
5.Socks5将客户端发出的信息传到目的服务器,将目的服务器发出的信息传到客户端。代理完成。

由于网上的信息传输都是运用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端口建立udp连接
2.向服务器发送 05 01 00
3.如果接到 05 00 则是可以代理
4.发送 05 03 00 01 00 00 00 00 + 本地UDP端口(2字节)
5.服务器返回 05 00 00 01 +服务器地址+端口
6.需要申请方发送 00 00 00 01 +目的地址IP(4字节)+目的端口 +所要发送的信息
7.当有数据报返回时 向需要代理方发出00 00 00 01 +来源地址IP(4字节)+来源端口 +接受的信息

注:此为不需要密码的代理协议,只是socks5的一部分,完整协议请查看RFC1928
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|北京派网软件有限公司 ( ICP备案序号:京ICP备14008283号 )

GMT+8, 2024-11-22 00:53 , Processed in 0.069836 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表