|
如果您的机器具有一个合法的 Internet IP 地址, 或者您利用自己机器
k7 R) s/ Z: I: b, ?上的调制解调器拨号上网, 可以自由和 Internet 上任何主机沟通, 那么您
& I- N1 z- a' Q, }: U通常不必关心 SOCKS5 协议。
5 u7 Q; L+ e+ A+ ~8 z" t a4 Z7 k+ k/ J
& A+ p- O1 ?- u7 OSOCKS5 协议对于处在内部网络中的机器, 需要透过网络中某些可以联通
6 P0 D0 y2 o5 W( s" ~# X外部 Internet 的机器访问外部时,有用。
% ?' u, @8 F! H8 P3 S" f* R$ e8 |, ?: h, \
SOCKS5 是一个代理协议,它在使用 TCP/IP协议通讯的前端机器和服务器 , s4 G5 j, l3 Q& { e4 c+ A
机器之间扮演一个中介角色,使得内部网中的前端机器变得能够访问Internet & o& t8 j, d& y) q% H% H I. e
网中的服务器,或者使通讯更加安全。
% Y* R: D- p; {. P$ {
- N: }4 a- n, ?$ t" C4 WSOCKS5 服务器通过将前端发来的请求转发给真正的目标服务器, 模拟了 0 ~2 R0 e) z: C8 E* R
一个前端的行为。在这里,前端和SOCKS5之间也是通过TCP/IP协议进行通讯,
% I) [+ x1 @" V5 ], |5 h7 t$ j* c前端将原本要发送给真正服务器的请求发送给SOCKS5服务器,然后SOCKS5服务
" V) P( H r4 i; Y器将请求转发给真正的服务器。SOCKS5服务器在将通讯请求发送给真正服务器 |* v9 }* k9 w
的过程中,对于请求数据包本身不加任何改变。SOCKS5服务器接收到真正服务 . q* L4 Q; p6 f5 @4 C: I' b
器的响应后,也原样转发给前端。 ; e, C: d, ?9 Q0 H
' ^4 p2 z; d% b( V& y因此,SOCKS5 协议是一种代理协议,对于各种基于 TCP/IP的应用层协议 ) T$ [% a5 o' D* g; C
都能够适应,几乎是万能的。它虽然不能理解自己转发的数据的内部结构,但 6 o0 k% E4 x0 n' j) \' T9 ~: l
是它能够忠实地转发通讯包,完成协议本来要完成的功能。 ! P7 `( H& \; M- ] Q4 g
# B+ W H: Z' `! H0 H: S! a" d& g; F与SOCKS5协议不同,HTTP代理是通过HTTP协议进行的,HTTP代理服务器软 % b- M! ?5 M1 C% K. z
件了解通讯包的内部结构,在转发过程中还要对通讯进行某种程序的修改和转 * B K: |( I: y0 A
换。和HTTP代理协议不同,SOCKS5实际上是一个传输层的代理协议。 - I7 y0 g& n3 ]- A
- e" f* P5 J' e4 i/ |我们可以想象,如果每个具体的应用层协议都要设计对应的代理协议表达 + z1 N6 ?% v) h( c
办法,一个特定的代理服务器无论如何也支持不过来那么多新出现的协议。因
& q. H2 L5 @6 a0 N此,可以说SOCKS5的出现缓解了各种具体协议需要专门设计代理协议的困难局
& O& f6 W5 k7 d" J8 N- [面。
3 J. _3 K. O& ]: W( _. X
" ^" x. B7 `0 x/ i/ F4 E9 L7 `- g不过,并不是凡是使用基于TCP/IP协议的应用协议的软件,都可以无条件
% d: F) c' V8 b+ I% D, k地透过SOCKS5服务器进行通讯,还要求前端软件本身具有SOCKS5的接口,才能
: {2 V$ U c- j2 r5 ~& f利用SOCKS5代理服务器。
2 t7 c6 x- Z* r0 b7 r. M
% G( x3 q% x: c3 E+ Y一个支持SOCKS5协议的前端,通常具有两种运行状态:
3 ?- t' n7 N" p1)直接通讯状态,不使用SOCKS5接口。这时的通讯是针对最终服务器进行
6 X0 f7 c9 R3 P3 z% M8 v的。 ( A. a/ B0 ^" @
! q( s; }' X( C8 \! b) D
2)SOCKS5 状态。 使用 SOCKS5 接口将本来要发送给最终服务器的请求发
/ Z+ ~( }# _3 F: R6 p送给 SOCKS5 服务器。在前端和 SOCKS5 服务器进行初始化会话的时候,前端
6 q/ s/ z. { z @/ y s告诉了 SOCKS5 服务器关于最终服务器的 IP 地址和端口信息,所以 SOCKS5
. T6 z% `* I5 g- n& c服务器能够忠实按照前端的要求启动和最终服务器的通讯过程。 |
|