2024年6月2日发(作者:)

维普资讯

第¨卷 第2期 重庆邮电学院学报 2002年6月 

Vo】.14 No.2 Jourhal of Chongqing University of Posts and Te[ecomrnunlcatlons Jun.2002 

基于SOCKS5的IPv4和IPv6通信方案 

段晓东,凌晓峰,沈金龙 

(南京邮电学院计算机科学与技术系,江苏南京210003) 

摘要:随=}}Internet的不断发展,当前的IPv4已经日益暴露出它的诬陷。向下一代的IP技术IPv6过渡 

已经成为一种迫切的需要 论述了一种通过SOCKSS代理进行IPv6和IPv4网碧通信的方素一最后龋述丁 

支特理协议SoCKss代理服务嚣软件的实现和应用。 

关键词;IPv4.IPv6.SOCKS5,代理 

中国分类号 TN919.21文献标识码:A文章编号:1004—5694(2002)02一OO46—05 

O引 言 

在过去几年里,以TP技术为代表的网络互联技 

lPv6的发展非常迅速,IPv6的试验网络6bone已经 

在许多国家中建立起节点,Cisco和Nokia等厂商 

也开始推出试验产品,。很多实验网络已经建立起来 

了。虽然IPv6有明显的优势,但是如何从现在IPv4 

术给传统的通信网络和计算机网络带来很大的冲 

击。目前使用的IP协议是IPv4,但是随着网络技术 

的飞速发展,现行的IPv4协议存在着很多问题,地 

网络过渡到将来的IPv6网络是一个涉及到整个互 

联网的问题。目前的过渡方案有很多种。本文提出 

了一种通过SOCKS5代理来实现lPv4和IPv6网 

络之间通信的方案。 

址短缺、设计上的性能安全性,配置复杂性和不支持 

移动网络等各种问题日益突出。尤其是地址短缺问 

题成为突出的矛盾,由此产生了下一代的IP协议。 

IPv6是下一代因特网想采用的协议。与现行的IPv4 

相比,IPv6在很多方面作了改进,扩大了地址空间, 

提高了处理速度,增强了安全保密性等。 

1 S0CKS5代理 

随着企业网络对安全性要求的提高和网络中防 

火墙的普遍使用,与外界相对隔离的企业Intranet 

也日益增多。内部网络要访问外部网络则需通过代 

IPv6协议的应用越来越引起各方的关注。目前 

收稿日期 2001一l1 l6 

作者简介 段晓东(1977-).男,山东临沂人,南京邮电学院99级硕士研究生.研究方向为计算机遇信与网问互联技术 

凌小峰(1976-).江苏昊江^,硕士生;沈尘龙,教授 

・46・ 

维普资讯

段晓东.等:基于SOCKS5的]Pv4和IPv6通信方案 

理服务器。除了有一般针对各种应用服务的代理服 

务器外,还有SOCKS5这样一种通用代理协议,它 

可以支持各种基于TCP和UDP的应用。 

D。当A、B、c需要访问]nternet时便向D机发出请 

求,由D机和外部主机建立连接,转发请求 

... 

sOCKS5协议本身基于TCP。SOCKS5代理服务器 

般的代理服务器,比如HHTP代理、FTP代 

开设一个端口(缺省是1080)作为监听,等候客户请 

求。客户机要访问受防火墙限制的外部站点,就要先 

和SOCKS服务器建立TCP连接,通过认证后,发 

出请求命令,然后SOCKS服务器和目的站点建立 

连接,转发传送的内容。图l中的虚线表示了主机A 

经过SOCKS服务器和外界建立连接时的数据流的 

走向。 

理、Telnet代理等都是应用层级别上的代理软件, 

是和某种应用层协议密切相关的。SOCKS代理与 

应用层代理、HTTP层代理不同,也是一种工作在 

传输层的代理,并和传输层的TCP,UDP协议密切 

相关。sOCKS代理只是简单地传递数据包,而不必 

关心上层是何种应用协议。所以,SOCKS代理服务 

器比应用层代理服务器要快得多 

SOCKS是David Koblas在1 990年开发的。此 

2 SOCKS5的IPv4和IPv6互联方案 

斋 

嚣~ 

后,就一直作为RFC中的开放标准。最新的功能版 

利用sOCKS5代理服务器建立IPv4和IPv6 

本SOCKS5协议由RFC1928定义。SOCKS作为一 

主机通信的一种方式是将代理服务器配置成支持 

种开放标准,与Winsock不同的是,SOCKS具有平 

4、6双协议栈的连接主机。我们可以利用SOCKS协 

台无关性,也就是说应用程序不一定要遵循特定的 

议使访问4 6两个网络的服务器进行两者的通信。 

操作系统平台。目前在各种操作系统上面都有 

2.1 SOCKS5代理基本过程 

SOCKS服务器的实现。也有很多的应用程序支持 

当客户需要通过SOCKS5代理访问外部时,要 

SOCKS代理。 

向代理发送连接请求。首先是客户连上来之后的认 

SOCKS5是SOCKS协议的最额版本,它在 

证方法协商过程。客户连上sOCKS5服务器后,进 

sOCKS4的基础上增加了支持UDP,有效认证,以 

人认证方法协商 由客户端先发一个版本标志/方式 

及支持域名等新功能。SOCKS5支持IPv6协议栈, 

选择消息,格式如下。 

这对我们开发的转换网关是一个非常有利的因素。 

图1给出了一种SOCKS5代理常见的应用结构。其 

其中的方法列表是客户提供的各种供选择的方法。 

然后服务器选择一种客户给出的方法,返回一个应 

答消息,格式如下。 

如果返回的方法为xFF,则表示客户所列出的 

方法服务器一种也不支持,客户必须关闭连接。 

SOCKS所支持的方法常用的如表l所示 

圈1典型的SOCKS5代理阻务器应用连接田 

寰1 SOCKS支持的备种方法刊寰 

Fig 1 Diagram of application connection oI typical SOCKS5 proxy 

Tab.1 List ol different wa…upported by SOCKS 

中用防火墙对内网和外部Internet进行屏蔽。在A、 

B、c、D这4个主机中只有充当代理服务器的主机 

D是可以和外界直接聪通的。以A、B、c主机为任何 

源地址或目的地址为A、B的1P包都被防火墙挡 

认证协商结束后.客户发送请求消息包,格式如 

表2所示。 

住。A、B、c想要和外界通信必须经过代理服务器 

・47・ 

维普资讯

2002年第2期 

囊2窖户请求消息结构 

Tab.2 Message from clients structure 

重庆邮电学院学报 

对于一般的TCP连接要求,客户端只要发一个 

CMD为CONNECT的请求报文就行了。对客户软 

件来说,它会根据自已的需要在请求报文里填上目 

的主机的1P或域名。可以从上面的连通过程中看到 

sOCKS5对IPv6协议的支持。在请求消息结构和应 

答消息结构中都已经定义了ATYPE为x04即 

IPv6地址这种地址类型。而且其后的地址字段已经 

其中CMD字段为请求命令,如表3所示。 

囊3 CMD请求命令宇段 

Tab 3 Byte of CMD request 

为IPv6地址预留了空间。对于IPv6的地址可以同 

等对待。 

基于上述的基本过程,我们利用SOCKS5协议 

可以设计一种IPv6一IPv4双协议支持sock5代理服 

务器互联方案。 

ATYPE字段标识了地址类型,它的值表示了 

其后所含内容为下列之一: 

x01 IPv4地址,长度4个字节; 

2.2 IPv6一IPv4的代理服务器通信方案的设计 

运行sOCKS5代理的服务器必须支持IPv4/ 

IPv6双协议,也就是说服务器的协议栈中必须带有 

IPv4和IPv6的协议支持,可以同时访问IPv6子网 

和IPv4子网。只有这样它才能在内外网的IPv4与 

x03域名,后面字段第一个字节为域名长度, 

然后是域名字符串,无需以0结尾; 

x04 IPV6地址,长度16个字节。 

IPv6之间转化。我们设计的通信网关同样要符合考 

虑SOCKS5协议的协商机制。 

客户和代理服务器之间首先是一个认证的过 

SOCKS5服务器收到请求后进行处理,然后返 

回一个应答消息,格式如表4所示。 

囊4履务应善消息结构 

Tab.4 Structure of message reply by s…efs 

程,这个过程和一般的sOCK5代理没有什么区别 

认证协商之后,客户就要发送请求数据包。这个时候 

就要考虑到IPv4和IPv6地址的问题了。客户首先 

要把目的站点的地址和端口发给SoCKS5服务器 

这里考虑2种情况。 

(1)发送域名和端口。域名解析过程由SOCKS 

代理服务器完成,对于客户机来说,并不知道目的站 

其中最关键的是REP字段,它是服务器返回给用户 

点是IPv4站点还是IPv6站点,sOCKS代理要根据 

域名解析情况来判断。如果是IPv6地址,则通过 

的状态信息。只有在返回值为x00时候才表示请求 

处理成功。其它字段分别表示不同的返回错误。用 

16进制表示的意义如下: 

x01 一般性SOCKS服务失败 

IPv6协议栈和目的机器建立连接;如果是IPv4地 

址,则通过v4协议栈和目的机器建立连接。这也就 

是为什么要双协议栈支持的原因。 

(2)直接发送IP地址和端口。SOCKS代理可 

x02 

x03 

x04 

x05 

x06 

连接被规则禁止 

网络不可达 

主机不可达 

连接拒绝 

TTI 超出 

以根据请求中的地址格式,判断地址类型,然后和上 

面一样通过不同协议栈和目的机器建立连接。 

可以定义SOCKS5代理的几种方式工作,比 

如,只对IPv6节点提供代理服务,即只以IPv6协议 

栈作监听,接受连接,也可以双向工作,同时为IPv6 

节点和IPv4节点提供服务,作为IPv6节点和IPv4 

节点通信的桥梁。这时SOCKS代理服务器可以作 

x07 命令不支持 

x08 地址类型不支持 

保留值 x09一xFF 

・48・ 

维普资讯

段晓东.等:基于SOCKS5的lPv4和IPv6通信方案 

为一台双穴主机,同时加上防火墙的地址过滤、授权 进行处理,再经过不同的对象发送出去。SOCKS代 

访问、安全记录日志等功能。 

理服务器工作流程如图3所示。 

全面考虑,我们定义SOCK5代理是支持IPv6/ 

IPv4双协议的服务器。IPv6客户可以通过此代理访 

问IPv6服务器,同时lPv4客户也可通过此代理访 

问lPv4服务器。如果进行交叉访问,则需要通过域 

名来访问。在许多情况下,往往只能给出IP,例如很 

多web页面中内嵌了IP地址,则需要客户端也显 

式地支持。也就是说,IPv6的客户端软件J必须能够 

识别IPv4的目的地址,而IPv4客户端则需能识别 

IPv6地址。因此我们还要考虑给SOcKs5代理增加 

个lPv6地址和IPv4地址的转换功能。我们也可 

以利用与lPv4兼容的IPv6地址来提供IPv6主机 

到lPv4主机的访问。还要在SOCKS服务器中建立 

s∞§s #一: i 

静态映射表,来静态的完成IPv4和lPv6地址的转 

圈3 SOCKS5代理器T作藏程示掌图 

化。sOCKS5代理工作流程如图2所示。 

Fig.3 Sche ̄tic of SCCKS5 work flow 

判斯请求消 中的ATYP域 

采用Microsoft Visual C4-+6.0作为开发平 

台,采用面向对象的方法和MFC类库框架,开发了 

<.是域名?> 一『壹询城名 

\,,_否得到地址l 

个SOCKS5双协议代理服务器软件。此代理服务 

器接受lPv4/lPv6双协议上的TCP连接请求,它用 

同一端口在2种协议栈上开设了TCP服务。同时也 

匦 豳 

支持lPv4/lPv62种目的地址。因此,利用此代理软 

4 

件可以实现lPv6主机访问lPv6主机、IPv6主机访 

酱 嘧囊 

问IPv4主机、lPv4主机访问lPv4主机,lPv4主机 

访问IPv6主机4种访问形式。 

2.3 S()CKS5代理实现IPv6 孤岛”通信连接 

圈2 6 l 4sL 5代理服务钮地址解析藏程 

Fig.2同0w chart ad&e ̄decoding IFv6一IPv4 SCEES5 proxy 

向lPv6升级的初期,在广大的IPv4的“海洋” 

sOcKs5服务器首先产生2个Socket对象,分 

中存在一系列的已经实现lPv6的网络“孤岛”。我们 

别用于lPv4和lPv6的连接和监听。当判断到不同 

可以利用所建立的服务器实现这些“孤岛”和广大互 

地址的客户连接的时候,不同的对象要分别处理 对 

联网节点之间的通信,如图4所示。其中代理服务器 

于每一对连接,都将产生2个Socket对象实例。客 

户来源和请求目的地址的不同产生的对象也不同。 

葺 

骨干 

产生2个对象的可能情况有:都是IPv4 Socket对 

m 4曲簪 

日瞄 

象,当源和目的都是IPv4主机的时候;都是lPv6 

Socket对象,当源和目的都是lPv6主机的时候;一 

凰 

挑 m 主劬 

个是lPv4,一个是IPv6,当要建立起lPv4和IPv6 

节点之间连接的时候。 

口 獬 

粥“ 

处理完SOCK5协议后,下面就交给新建立的 

田{利用SOCKS5代理的解氇 孤岛”方案示意围 

对象来处理。这将建立起对象实例之间的对应关系。 

Fig.4 Schematic of isolated island“solving 

对于从网络接口接收到的数据,发送到不同的对象 

scheme via SOCKS5 proxy 

・49・ 

维普资讯

2002年第2期 重庆邮电学院学报 

实现IPv6主机访问IPv4的网络访问形式。 服务器仍然可以作为防火墙配套方案而继续使用。 

参考文献 

3结束语 

上面讨论的SOCKS5代理方案,和其它的IPv4 

和IPv6互联方案相比,有很大的优势。体现在具有 

RFC 1752:The Recommendation for the IP 

Next Generation Protocol Es3. 

DEERING S,HINDEN R.RFC 2460:Inter— 

隔离作用,可以结合防火墙的使用,可以加入加密等 

安全功能;实现比较方便,可在上层实现;可作双向 

代理,方便地提供IPv4一lPv6网络的互访。但是,这 

个互联方案也有一定的不足之处,比如代理软件工 

作方式不是完全非透明的;应用软件必须支持 

SOCKS5协议;服务器上要有完全的TCP/IPv4和 

net Protocol,Version 6(IPv6)Specification 

ER3.1998. 

I EECH M,DAVID Koblas,Ying—Da I ee, 

I amont Jones,Ron Kuris,Matt Ganis,RFC 

1 928:SOCKS Protocol Version I[s].1 996. 

KITAMURA H.RFC 3098 1 A SOCKS—based 

TCP/IPv6双协议实现;不支持ICMP报文等。但是 

从目前代理服务器及防火墙的广泛使用看来,这种 

sOCKS5代理方案作为以后向IPv4一lPv6过渡阶段 

的一种方案可行性是很大的。它不仅可以用在过渡 

阶段,即使过渡基本完成,IPv6成为主流,SOCKS5 

lPv6/lPv4 Gateway Mechanism[R3.2001. 

凌小峰.IPv6的过渡方案及初步应用研究 

[D].南京:南京邮电学院.2001. 

(编辑:郭继骂) 

Ⅲ 呦 Ⅲ Ⅲ 嘲 

(上接28页) 

射为SDL的功能块,将OSI的SAP映射为SDI 的 

信道,将OSI的服务原语映射为SDI,的信号。而且, 

该方法已经在开发第三代移动通信TD—SCDMA终 

端高层协议软件的项目中得到应用。实践证明,该方 

法是简洁易行和切实可靠的。当然这种方法只是仿 

GUAGE(SDI )[s].1993. 

[3] GSM o4.01.Digital cellular telecommuni一 

cations system(Phase 2+);Mobile Station一 

Base Station System(MS—BSS)interfaee 

General aspects and principles.version 7.0.0 

真实现OSI参考模型众多方法中的一种。随着SDI 

的不断发展,SDI 的功能日趋完善,加之支持面向 

对象技术,可以灵活嵌入c代码,可以直接转换为 

可执行的c代码,以及强大的调试功能等优点,这

[s].1998. 

[4] GSM 04.07.Digital cellular telecommuni 

cations system(Phase 2)t Mobile radio in一 

terface signalling layer 3 General aspects. 

种方法必将得到越来越广泛的应用。 version 7.0.oES].1998. 

参考文献 

[1]ITu—T Recommendation Z.100一Appendices 

I and 11.SDI METHODOI OGY GUIDE一 

I INES,SDI,BIBI,IOGRAPHY[S ̄.1993. 

[2] ITu—T Recommendation z.100.SPECIFI一 

CAT10N AND DESCRIPT10N LAN一 

誓:薹 业务1996.数牛 _慵人艮眦 

[6] 陈文云,巩丹宏.网络通信软件设计原理及应 

用[M].西安:西安交通大学出版,2001. 

[7] 朱旭红.宽带CDMA:第三-代移动通信技术 

[M].卢学军译.北京:人民邮电出版社,2001. 

(嫡辑:郭继茑) 

5O・