网络安全 频道

【代理知识】绝对值得珍藏!

3.基于TCP客户机的程序 

  当一台基于TCP的客户机希望和目标主机建立连接时,而这台目标主机只有经过防火墙才能到达(这种情况?一直持续到?它被执行时),它就必须在SOCKS服务器端的适当的SOCKS端口打开一个TCP连结。SOCKS服务按常例来说定位于TCP端口1080。如果连接请求成功,客户机为即将使用的认证方式进行一种协商,对所选的方式进行认证,然后发送一个转发请求。SOCKS服务器对该请求进行评估,并且决定是否建立所请求转发的连接。 

  客户机连接到服务器,发送一个版本标识/方法选择报文: 

  +----+----------+----------+ 

  |VER | NMETHODS | METHODS | 

  +----+----------+----------+ 

  | 1 |   1  | 1 to 255 | 

  +----+----------+----------+ 

  VER(版本)在这个协议版本中被设置为X''05''。NMETHODS(方法选择)中包含在METHODS(方法)中出现的方法标识八位组的数目。 

  服务器从METHODS给出的方法中选出一种,发送一个METHOD selection(方法选择)报文: 

  +----+--------+ 

  |VER | METHOD | 

  +----+--------+ 

  | 1 |  1  | 

  +----+--------+ 

  如果所选择的METHOD的值是X''FF'',则客户机所列出的方法是没有可以被接受的,客户机就必须关闭连接。 

当前被定义的METHOD的值有: 

  >> X''00'' 无验证需求 

  >> X''01'' 通用安全服务应用程序接口(GSSAPI) 

  >> X''02'' 用户名/密码(USERNAME/PASSWORD) 

  >> X''03'' 至 X''7F'' IANA 分配(IANA ASSIGNED) 

  >> X''80'' 至 X''FE'' 私人方法保留(RESERVED FOR PRIVATE METHODS) 

  >> X''FF'' 无可接受方法(NO ACCEPTABLE METHODS) 

***IANA是负责全球INTERNET上的IP地址进行编号分配的机构(译者著)*** 

  于是客户机和服务器进入方法细节的子商议。方法选择子商议另外描述于独立的文档中。 

  欲得到该协议新的METHOD支持的开发者可以和IANA联系以求得到METHOD号。已分配号码的文档需要参考METHOD号码的当前列表和它们的通讯协议。 

  如果想顺利的执行则必须支持GSSAPI和支持用户名/密码(USERNAME/PASSWORD)认证方法。 

4.需求 

  一旦方法选择子商议结束,客户机就发送请求细节。如果商议方法包括了完整性检查的目的和/或机密性封装,则请求必然被封在方法选择的封装中。 

SOCKS请求如下表所示: 

  +----+-----+-------+------+----------+----------+ 

  |VER | CMD | RSV | ATYP | DST.ADDR | DST.PORT | 

  +----+-----+-------+------+----------+----------+ 

  | 1 |  1 | X''00'' |  1 | Variable |   2  | 

  +----+-----+-------+------+----------+----------+ 

其中: 

 o VER protocol version:X''05'' 

 o CMD 

 o CONNECT X''01'' 

 o BIND X''02'' 

 o UDP ASSOCIATE X''03'' 

 o RSV RESERVED 

 o ATYP address type of following address 

 o IP V4 address: X''01'' 

 o DOMAINNAME: X''03'' 

 o IP V6 address: X''04'' 

 o DST.ADDR desired destination address 

 o DST.PORT desired destination port in network octet order 

5.地址 

  在地址域(DST.ADDR,BND.ADDR)中,ATYP域详细说明了包含在该域内部的地址类型: 

    o X''01'' 

  该地址是IPv4地址,长4个八位组。 

    o X''03'' 

  该地址包含一个完全的域名。第一个八位组包含了后面名称的八位组的数目,没有中止的空八位组。 

    o X''04'' 

  该地址是IPv6地址,长16个八位组。 

6.回应 

  到SOCKS服务器的连接一经建立,客户机即发送SOCKS请求信息,并且完成认证商议。服务器评估请求,返回一个回应如下表所示: 

  +----+-----+-------+------+----------+----------+ 

  |VER | REP | RSV | ATYP | BND.ADDR | BND.PORT | 

  +----+-----+-------+------+----------+----------+ 

  | 1 | 1 | X''00'' | 1  | Variable |   2  | 

  +----+-----+-------+------+----------+----------+ 

其中: 

  o VER protocol version: X''05'' 

  o REP Reply field: 

  o X''00'' succeeded 

  o X''01'' general SOCKS server failure 

  o X''02'' connection not allowed by ruleset 

  o X''03'' Network unreachable 

  o X''04'' Host unreachable 

  o X''05'' Connection refused 

  o X''06'' TTL expired 

  o X''07'' Command not supported 

  o X''08'' Address type not supported 

  o X''09'' to X''FF'' unassigned 

  o RSV RESERVED 

  o ATYP address type of following address 

  o IP V4 address: X''01'' 

  o DOMAINNAME: X''03'' 

  o IP V6 address: X''04'' 

o BND.ADDR server bound address 

o BND.PORT server bound port in network octet order 

标志RESERVED(RSV)的地方必须设置为X''00''。 

  如果被选中的方法包括有认证目的封装,完整性和/或机密性的检查,则回应就被封装在方法选择的封装套中。 

CONNECT 

  在CONNECT的回应中,BND.PORT包括了服务器分配的连接到目标主机的端口号,同时BND.ADDR包含了关联的IP地址。此处所提供的BND.ADDR通常情况不同于客户机连接到SOCKS服务器所用的IP地址,因为这些服务器提供的经常都是多址的(muti-homed)。都期望SOCKS主机能使用DST.ADDR和DST.PORT,连接请求评估中的客户端源地址和端口。 

BIND 
0
相关文章