找回密码
 注册
搜索
查看: 5433|回复: 1

[收藏]socks 5 协议 介绍

[复制链接]
发表于 2005-2-27 13:36:07 | 显示全部楼层 |阅读模式
  如果您的机器具有一个合法的 Internet IP 地址, 或者您利用自己机器
: w- U. a6 x3 r; J+ o: o/ Q上的调制解调器拨号上网, 可以自由和 Internet 上任何主机沟通, 那么您
  l. B; t  p) H* t# |! p通常不必关心 SOCKS5 协议。
9 e( S/ B2 R) L0 V* _
1 Y: M) l. {# B+ z( z# G6 x1 DSOCKS5 协议对于处在内部网络中的机器, 需要透过网络中某些可以联通 + ^" J8 F! n5 }, E
外部 Internet 的机器访问外部时,有用。
. v# D8 E* S+ l, v0 a
; e* B) C7 i) F" ]* D; oSOCKS5 是一个代理协议,它在使用 TCP/IP协议通讯的前端机器和服务器
4 T5 q# ~/ f, g+ [机器之间扮演一个中介角色,使得内部网中的前端机器变得能够访问Internet
* N6 @! X8 e  b5 f  T6 c) r网中的服务器,或者使通讯更加安全。 ( a" ~. M. B/ Z# K
) [' w" z! d1 E
SOCKS5 服务器通过将前端发来的请求转发给真正的目标服务器, 模拟了
- ?$ O5 E1 ], g1 e; w4 i一个前端的行为。在这里,前端和SOCKS5之间也是通过TCP/IP协议进行通讯,
3 J3 c: a" A; m+ a前端将原本要发送给真正服务器的请求发送给SOCKS5服务器,然后SOCKS5服务
' ]. _6 C; V- T3 \5 w) V5 {* e器将请求转发给真正的服务器。SOCKS5服务器在将通讯请求发送给真正服务器 7 h3 l) p  e7 Q; M4 I& }! A$ T
的过程中,对于请求数据包本身不加任何改变。SOCKS5服务器接收到真正服务 9 m) W, ~" ?6 ?. g  k8 L% u
器的响应后,也原样转发给前端。 * r: p) E3 `( b( U

' a5 `+ D' I4 B9 K因此,SOCKS5 协议是一种代理协议,对于各种基于 TCP/IP的应用层协议
8 B1 K/ W" [: c" y: k都能够适应,几乎是万能的。它虽然不能理解自己转发的数据的内部结构,但
  {1 k6 _7 e/ I" {6 N" r是它能够忠实地转发通讯包,完成协议本来要完成的功能。
0 V+ p8 m0 s' }( a; \: s) N+ M3 s* \* e% }
与SOCKS5协议不同,HTTP代理是通过HTTP协议进行的,HTTP代理服务器软 - y$ h% }6 n$ f- I) i* y4 B
件了解通讯包的内部结构,在转发过程中还要对通讯进行某种程序的修改和转 & Z0 \- |) c6 z; N, L
换。和HTTP代理协议不同,SOCKS5实际上是一个传输层的代理协议。 + r  Y' U  @2 a* n. `7 f
8 j- u8 D& o5 i/ t2 r) D; ?
我们可以想象,如果每个具体的应用层协议都要设计对应的代理协议表达 6 N/ f2 m/ [9 s' h, z, ~* D3 v& Y% O- Z
办法,一个特定的代理服务器无论如何也支持不过来那么多新出现的协议。因
4 S" q& ~" W  y9 x1 C& F) K$ l! A此,可以说SOCKS5的出现缓解了各种具体协议需要专门设计代理协议的困难局 6 B0 `: }# i& f4 F  F0 w
面。
  h" F: A8 o+ o
. G+ i" G" m6 B% Z9 P9 R" F不过,并不是凡是使用基于TCP/IP协议的应用协议的软件,都可以无条件 6 T+ W. G; S- k. ?: p4 h
地透过SOCKS5服务器进行通讯,还要求前端软件本身具有SOCKS5的接口,才能
8 |8 B% e; U! P' p/ D: y利用SOCKS5代理服务器。
" h# d! u  w# `: U% }
3 H9 F# U) O- h) Z( ]一个支持SOCKS5协议的前端,通常具有两种运行状态:
) p$ b# F1 e) K0 o1)直接通讯状态,不使用SOCKS5接口。这时的通讯是针对最终服务器进行
. v5 A# o2 F) ^/ ~% r% z3 p" a+ G2 y的。
$ r. }: {( g2 ?; }
1 P8 q' \/ |) }. [" v2)SOCKS5 状态。 使用 SOCKS5 接口将本来要发送给最终服务器的请求发 ' j5 D5 z2 h5 Z% @3 ]
送给 SOCKS5 服务器。在前端和 SOCKS5 服务器进行初始化会话的时候,前端 * R- k2 B! A7 c( _% {2 Q1 M
告诉了 SOCKS5 服务器关于最终服务器的 IP 地址和端口信息,所以 SOCKS5
; |; U: I0 A2 O# o( }: f服务器能够忠实按照前端的要求启动和最终服务器的通讯过程。
 楼主| 发表于 2005-2-27 13:36:18 | 显示全部楼层
SOCKS 5
  p8 T- L+ x0 }0 R0 e2 x& }, ZSOCKS 5和SOCKS4相比有所不同,具体流程如下: 8 B  I4 k# {+ H
三步握手建立TCP连接====》客户端向服务器询问认证方法====》服务器选择一种返回给客户端====》连接请求====》连接响应。包结构如下: * Y( Q, G4 `, W5 E4 i) p1 u' p$ y
客户端向服务器询问认证方法 ! j1 n3 c1 _, R
----------------------------------- ! ~5 L7 M# y. d- P7 b! g0 R
字节 意义 值
! `9 g) \, R( y. @5 |3 P-----------------------------------
( R  g* y4 @; D1 版本 4或5 ' p# ~2 W2 [1 X% p
2 方法数目 1 |* O: A9 p9 C, f
3-257 方法
1 t* [1 f3 ]" X. |3 S-----------------------------------
% ]& m' _* J8 g& Y6 d' l/ o%方法值说明:00,无需认证;01,GSSAPI;02,需要用户名和PASSWORD;03-7F。IANA赋予的数字;80-FE,保留空间;FF,没有可接受的方法。%
2 ~& y& S# f. ^) n' `5 V3 I: Y2 z- x4 k" n& B  j. f* R; m
服务器选择一种返回给客户端 . x0 n! o1 Q7 K) Z- G! V
-----------------------------------
& e+ [$ k3 A; U! n1 i2 @字节 意义 值
6 f8 \- ~& y! ?/ j" m  o, }-----------------------------------
# H6 L4 c0 B& N+ Z5 f1 版本 5 % d) D$ J& L- O) t1 T# G8 B
2 选择的方法 其中一种,0xFF表示没有可接受的方法
* V- |! t6 d! D4 F0 P7 q1 O----------------------------------- ! U: A, |( _; _% O, e2 I/ L. X
8 f- ~+ ]5 `5 d; G
连接请求
6 i6 R. m* x( N" }2 E" U----------------------------------------------------
. ?2 c6 W; K0 M6 ]9 b. r. Y字节 意义 值
1 Q8 W9 h6 A5 F+ P* }---------------------------------------------------- * P. O1 B# m8 |
1 版本 0   |- B  H. k' f0 T) V5 V
2 命令 1 5 y  L; \4 u' t8 k
3 保留 0 4 o- |% v  ~$ R' x
4 地址类型 1=IPv4,3=DNS,4=IPng
4 [- x+ R1 k' t5 S& i. R5+ IP地址或DNS名  可变 2 H7 G2 a! j+ v! g" |; i
最后2个字节 TCP/UDP端口号    可变
3 H$ H6 x% n0 f) d# i5 f" N- v8 R# F---------------------------------------------------- , C) C& k# A: ^$ a4 K% F, ]/ G

8 \, F4 p" Z5 l% Z连接响应 1 C: P1 q# U+ E7 v  V; L
---------------------------------------------------- 8 \9 p' N5 g+ l( D. m# z5 d! ?0 y
字节 意义 值 $ @3 T- i* n# H+ C
----------------------------------------------------
) S: U2 @. v4 f. y5 c: }; Q1 版本 0
! |* j1 J  i! N7 p; M2 响应 00-08
6 N2 m* q7 ^* T' c4 G3 保留 0
, o8 x7 A; o7 W# u$ P4 地址类型 1=IPv4,3=DNS,4=IPng " B- w% @2 D' \( t0 H7 N! T" x
5+ IP地址或DNS名   可变 + ?! {+ B/ W1 H( z  i
最后2个字节 TCP/UDP端口号   可变 $ z0 c  Q& h+ v2 B) K8 F
----------------------------------------------------
, T# p+ g" T) E9 L; g7 h响应值说明:00,成功;01,SOCKS服务器故障;02,规则不允许连接;03,网络不可访问;04,主机不可访问;05,拒绝连接;06,TTL过期;07,不支持命令;08,不支持地址类型。%
; a! I, W$ ^( A7 x- _" E: D0 }. @- D; ~4 i9 E
SOCKS 5 支持创建UDP代理,但是其原理我也不清楚,请高手补充。下面提供UDP请求包的结构:
6 h; X& g) S1 Y+ R. ]. D---------------------------------------------------- # I4 |  T1 T+ K0 ?: Y
字节 意义 值 2 G8 z/ z2 s0 K+ x% B
---------------------------------------------------- / w# B2 M( q# o7 [: F
1-2 保留 0x0000
8 e; A2 i, D6 R7 _% c( m. c3 分段数目 可变,0表示不分段
4 k4 t( j) M' D/ H4 地址类型 1=IPv4,3=DNS,4=IPng ) Z0 l6 O; r5 d( H/ l, C
5+ IP地址或DNS名  可变
, m& a" Z1 Y  P! t+ N9 V最后2个字节 TCP/UDP端口号  可变
5 P' a9 F$ X" {& g  m. y3 ~, [7 a数据 用户数据 由客户端应用程序决定
' e4 G9 N7 e. k7 y* p" r----------------------------------------------------
! A+ ^- u. W6 Z% f& l" j! U( Q  [1 ?: R. X$ v# m1 k
SOCK 5 有RFC1928定义,有兴趣的可以看看
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|宁德市腾云网络科技有限公司 ( 闽ICP备2022007940号-5|闽公网安备 35092202000206号 )

GMT+8, 2025-5-5 06:22 , Processed in 0.015150 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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