|
如果您的机器具有一个合法的 Internet IP 地址, 或者您利用自己机器 ( g" \" s/ W/ `+ N+ G& h
上的调制解调器拨号上网, 可以自由和 Internet 上任何主机沟通, 那么您 " {6 @6 N; `( m0 Q+ P/ u! f
通常不必关心 SOCKS5 协议。 y' S$ |0 C& y) \
. o0 G) A4 n1 ^7 QSOCKS5 协议对于处在内部网络中的机器, 需要透过网络中某些可以联通
( J. D* k. t5 b6 ~外部 Internet 的机器访问外部时,有用。 : o, @0 g1 |. o1 D; x& s) j
, u; C0 ^+ G) E
SOCKS5 是一个代理协议,它在使用 TCP/IP协议通讯的前端机器和服务器
/ G( o+ Z3 F& `# H, r5 b) T! @1 \机器之间扮演一个中介角色,使得内部网中的前端机器变得能够访问Internet % q$ M& N! j0 ^" w# y5 m8 C( t6 N
网中的服务器,或者使通讯更加安全。
8 b9 @( J/ t4 ?3 o
0 l5 E* D- [6 C) j' W+ t% |1 `2 DSOCKS5 服务器通过将前端发来的请求转发给真正的目标服务器, 模拟了
. K. U$ H+ F' Z* C$ \, B一个前端的行为。在这里,前端和SOCKS5之间也是通过TCP/IP协议进行通讯,
: n! O9 J; W0 X6 ~: t前端将原本要发送给真正服务器的请求发送给SOCKS5服务器,然后SOCKS5服务 # i/ I7 _' ]) C9 L$ U
器将请求转发给真正的服务器。SOCKS5服务器在将通讯请求发送给真正服务器
( h" ]% l; y3 b5 S: N的过程中,对于请求数据包本身不加任何改变。SOCKS5服务器接收到真正服务
, t# h2 B) E6 N器的响应后,也原样转发给前端。
, z: G5 S. } r' m$ }- z
" c" ~9 n# x" n: D* g% c因此,SOCKS5 协议是一种代理协议,对于各种基于 TCP/IP的应用层协议
3 W( u1 Y; f( ~都能够适应,几乎是万能的。它虽然不能理解自己转发的数据的内部结构,但 * n0 D! d2 \# U$ g U: E, R5 k
是它能够忠实地转发通讯包,完成协议本来要完成的功能。
, j/ Q8 w3 b0 u3 v' k
, H& F" S# w" n }与SOCKS5协议不同,HTTP代理是通过HTTP协议进行的,HTTP代理服务器软 & H" d1 z1 ?% N' l& P0 r. ~2 D+ t
件了解通讯包的内部结构,在转发过程中还要对通讯进行某种程序的修改和转 ; }, x# q7 O' v; O
换。和HTTP代理协议不同,SOCKS5实际上是一个传输层的代理协议。 ; [; b, i1 N/ x+ z
- }- S; A4 A( s( p1 f
我们可以想象,如果每个具体的应用层协议都要设计对应的代理协议表达
: B. S0 u) P: o4 f办法,一个特定的代理服务器无论如何也支持不过来那么多新出现的协议。因 3 \- }- ~# z+ G q2 E
此,可以说SOCKS5的出现缓解了各种具体协议需要专门设计代理协议的困难局
6 }8 w, U2 j; t面。
& [6 d9 t! {- ~/ k6 |! N5 T7 T( z8 z# m0 S" h/ X
不过,并不是凡是使用基于TCP/IP协议的应用协议的软件,都可以无条件 , c) d- l, F6 o$ b7 a
地透过SOCKS5服务器进行通讯,还要求前端软件本身具有SOCKS5的接口,才能
; w* N1 T% @& w1 n7 S利用SOCKS5代理服务器。 ; b$ e5 x) L& I8 W
' s( Z/ o) u2 ]; E' u一个支持SOCKS5协议的前端,通常具有两种运行状态:
- ~- n$ B g$ j1)直接通讯状态,不使用SOCKS5接口。这时的通讯是针对最终服务器进行 * _9 b0 X2 H; u/ I7 O
的。 ) P" ?# i2 v8 a, q
5 e7 s7 ]: C& C/ O* Z
2)SOCKS5 状态。 使用 SOCKS5 接口将本来要发送给最终服务器的请求发 & G. [5 w+ `' ]9 H& l5 L
送给 SOCKS5 服务器。在前端和 SOCKS5 服务器进行初始化会话的时候,前端 / x( T- M9 O" M% X
告诉了 SOCKS5 服务器关于最终服务器的 IP 地址和端口信息,所以 SOCKS5 ( j1 {5 x9 T! X/ u( p
服务器能够忠实按照前端的要求启动和最终服务器的通讯过程。 |
|