当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:55:00  来源:本站整理

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++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • 操作UDP Socket技术实现IP多点传送详解
  • 基于Socket的Java网络编程集粹
  • 用Java Socket开辟支持上千个并发的小型服务器(下)
  • 用Java Socket开辟支持上千个并发的小型服务器(上)
  • <b>三步学会Java Socket编程</b>
  • 用Java Socket制作广播信使程序
  • Java Socket编程中的一个奥妙类
  • <b>Java网络编程底子(二) Socket类的操纵办法</b>
  • 利用异步输入输出流编写Socket进程通信
  • 操作Socket举行Java网络编程
  • 用Socket类实现HTTP协议客户端操纵
  • Java网络编程底子(四) ServerSocket类操纵
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .