Socks5代理服务[VC/C++编程]
本文“Socks5代理服务[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
假期的时刻把socks5代理的RFC全部读完了,有些领会不敢独享,在这里写出来大家一同评论评论,若有错误敬请提出.
下面假定利用TCP衔接方法.首先需求和代理服务器之间成立衔接,这里没什么复杂的,简单的connect(serverIP, serverPort)便可以了.衔接成功之后,需求利用send()发送号令字,以便肯定能否需求考证,下面是RFC里面的号令字格局:
项目 | 版本 | 方法数目 | 衔接方法 | … |
项目长度 | 1 | 1 | 1-255 | … |
首先"版本"这一项固定是 X"05"(socks version 5),方法数目奉告server毕竟提交了几种衔接方法的恳求,至于衔接方法则可以有多个.下面就是方法列表:
衔接方法 | 含义 |
X’00’ | 无需考证,直接持续 |
X’01’ | GSSAPI |
X’02’ | 需求用户名/密码 |
X’03’ to X’7F’ | IANA ASSIGNED |
X’80’ to X’FE’ | 保存方法,可以自己机动选用 |
X’FF’ | 未包含符合要求的方法 |
接下来是server的回应:
项目 | 版本 | 答应的衔接方法 |
项目长度 | 1 | 1 |
版本没必要说,仍旧固定是 X"05",答应的衔接方法则是在你提交的众多衔接方法中,由server选出一个可以承受的,然后返回来;假如没有,那么返回就是 X"FF".此中普通用到的就是 X"00"和 X"02"了.它们之间的辨别就在于 X"02"方法需求发送用户名/密码,考证通过后的历程则和 X"00"方法没有任何辨别.
客户端辨认到server返回 X"02"之后,发送下列格局考证字串:
项目 | VER | 用户名长度 | 用户名 | 密码长度 | 密码 |
项目长度 | 1 | 1 | 1-255 | 1 | 1-255 |
注意:这里的VER有别于上边,固定是 X"01".用户名/密码最大长度是255.
server端考证完毕后返回后果:
项目 | VER | 考证后果 |
项目长度 | 1 | 1 |
考证后果是 X"00"的话,就表示考证通过,不然都是不过…
接下来的历程一样,就是发送恳求号令字了:
项目 | 版本 | 号令字 | 保存 | 地址范例 | 地址 | 端口 |
项目长度 | 1 | 1 | X"00" | 1 | 不固定 | 2 |
版本固定 X"05";号令字分三种: CONNECT X"01",BIND X"02",UDP X"03".CONNECT就是普通的TCP衔接;BIND要求你的client支持承受server的衔接恳求(FTP协议就是一个典型的例子);UDP则是一个特例,我还没有完好理解… 保存项固定是 X"00".
地址范例有三种:X"01"、X"03"、X"04",辨别对应IP-V4、DOMAINNAME、IP-V6,而接下来的地址长度也按照地址范例的差别而改变.IP-V4的长度是4位,DOMAINNAME的长度则按照实际情形改变,但是地址的第一位的内容要设成域名字符串的长度,IP-V6就是16位.
端口长度固定两位,没什么可说的.
而server返回的内容格局也大致相同
项目 | 版本 | 返回值 | 保存 | 地址范例 | 地址(BND) | 端口 |
项目长度 | 1 | 1 | X"00" | 1 | 不固定 | 2 |
返回值大概是下列值中的一个:
衔接方法 | 含义 |
X’00’ | 成功 |
X’01’ | general SOCKS server failure |
X’02’ | 衔接不符合server规格 |
X’03’ | 目标网络无法到达 |
X’04’ | 目标主机无法到达 |
X’05’ | 衔接回绝 |
X’06’ | TTL expired |
X’07’ | 号令不支持 |
X’08’ | 地址格局不支持 |
X’09 to X’FF’ | 保存 |
以上是“Socks5代理服务[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
- ·上一篇文章:Socket的地址构造
- ·下一篇文章:BCB6/Delphi7下完善调用CHM帮忙
- ·中查找“Socks5代理服务”更多相关内容
- ·中查找“Socks5代理服务”更多相关内容