首页 > 编程知识 正文

socks5和pptp的区别,socks5 rfc

时间:2023-05-03 18:00:33 阅读:170023 作者:3010

由于项目的需要,最近需要了解代理的知识,因此我们查看了Sock5合同的详细信息。 主要也参考了RFC1928 .网上的翻译。 防火墙的使用有效地隔离了组织内部网络和外部网络,这种类型的互联网体系结构越来越普遍。 许多防火墙系统用作网络之间的APP应用层网关,通常提供受控的Telnet、FTP和SMTP访问。 为了推动全球信息交流和部署更多新的APP应用层协议,必须提供一个全面的体系结构,使这些协议能够更清晰、安全地通过防火墙。 此外,还需要提供更强大的身份验证系统,以便实际通过防火墙。 这一需求来自于在各种受管理且需要安全身份验证的组织网络之间实现客户端-服务器连接。 此处描述的协议框架旨在使使用TCP和UDP的客户端-服务器APP应用程序能够更轻松地使用网络防火墙提供的服务。 该协议在概念上是介于APP应用层和传输层之间的“中介层”,不提供ICMP信息的传递等网络层网关提供的服务。 使用TCP协议的客户如果希望与只能通过防火墙到达的目标建立连接,则必须首先建立与socks服务器上的socks端口的TCP连接。 通常这个TCP端口是1080。 建立连接后,客户端进入协议的“握手”过程。 选择认证方式,根据选择的方式进行认证,并发送转发的请求。 sockds服务器会检查此请求,并根据结果建立或拒绝相应的连接。 除非另有说明,否则所有显示的数据格式图中的十进制数字都表示相应域的字节长度,如果域需要特定字节的值,则用X'hh '表示该字节的值。 如果域中使用“可变”一词,这意味着域的长度是可变的,该长度由与域关联的“1-2字节”域或数据类型定义。 在第一步中,客户端连接到服务器,然后就发送请求协商版本和认证方法。 **客户端**请求的第一步------| methods-----------|------------------------------------------ - METHODS (方法)中出现的方法标识符的数据(用字节来表示)当前定义的程序(GSSAPI ) x(02 )用户名/密码auth(username/password ) x ) 03 x’ff’不能接受的方法(NO ACCEPTABLE METHODS ) *服务器**是第一步服务器响应来自客户端的消息,返回服务器的方法之一发送一条METHOD选择消息。 --------| ver|method|------|1|----1|---- -第二步骤* ) ) ) ) )第二步骤 SOCKS请求如下表:----|ver|cmd|RSV|atyp|--------|1| x ' 00 '|1|variable|2 | ----------------各字段的含义为: VER版本号x----05'cmd:1.connectx IP类型ipv4x ' 01 '2. domain namex ' 03 在此,在big-endian顺序的4字节数据FQDN的情况下,例如' www在此为:0f777772e7366f6375732e6574注意。 无结尾的空字符、非ASCIZ字符串,第一个字节为长度字段3。 对于IPv6地址,这里是16字节的数据。 DST.PORT目标端口**网络顺序**sock5响应如下:**OCKS Server评估来自SOCKS Client的转发请求并发送响应报文: +----+-----+-------+------+----------+----------+ |VER | REP | RSV | ATYP | BND.ADDR | BND.PORT | +----+-----+-------+------+----------+----------+ | 1 | 1 | X'00' | 1 | Variable | 2 | +----+-----+-------+------+----------+----------+ VER 版本号X'05' REP 1. 0x00 成功 2. 0x01 一般性失败 3. 0x02 规则不允许转发 4. 0x03 网络不可达 5. 0x04 主机不可达 6. 0x05 连接拒绝 7. 0x06 TTL超时 8. 0x07 不支持请求包中的CMD 9. 0x08 不支持请求包中的ATYP 10. 0x09-0xFF unassigned RSV 保留字段,必须为0x00 ATYP 用于指明BND.ADDR域的类型 BND.ADDR CMD相关的地址信息,不要为BND所迷惑 BND.PORT CMD相关的端口信息,big-endian序的2字节数据 connect命令 假设CMD为CONNECT,SOCKS Client、SOCKS Server之间通信的相关四元组是: SOCKSCLIENT.ADDR,SOCKSCLIENT.PORT,SOCKSSERVER.ADDR,SOCKSSERVER.PORT 一般SOCKSSERVER.PORT是1080/TCP。 CONNECT请求包中的DST.ADDR/DST.PORT指明转发目的地。SOCKS Server可以靠 DST.ADDR、DST.PORT、SOCKSCLIENT.ADDR、SOCKSCLIENT.PORT进行评估,以决定建立到转发 目的地的TCP连接还是拒绝转发。 假设规则允许转发并且成功建立到转发目的地的TCP连接,相关四元组是: BND.ADDR,BND.PORT,DST.ADDR,DST.PORT 此时SOCKS Server向SOCKS Client发送的CONNECT响应包中将指明BND.ADDR/BND.PORT。 注意,BND.ADDR可能不同于SOCKSSERVER.ADDR,SOCKS Server所在主机可能是多目 (multi-homed)主机。 假设拒绝转发或未能成功建立到转发目的地的TCP连接,CONNECT响应包中REP字段将指明具体原因。 响应包中REP非零时表示失败,SOCKS Server必须在发送响应包后不久(不超过10s)关闭与 SOCKS Client之间的TCP连接。 响应包中REP为零时表示成功。之后SOCKS Client直接在当前TCP连接上发送待转发数据。 BIND命令 #### 假设CMD为BIND。这多用于FTP协议,FTP协议在某些情况下要求FTP Server主动建立 到FTP Client的连接,即FTP数据流。 FTP Client - SOCKS Client - SOCKS Server - FTP Server 参考文章

Socks5协议中文文档(RFC1928)
socks4 socks5 rfc1928一大堆

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。