代理协议整理

来源:互联网 发布:亚马逊数据魔方ziniao 编辑:程序博客网 时间:2024/06/05 17:14

 

SOCKS4/SOCKS4A 客户端服务器端协议

1

客户端发送

 

// SOCKS 4

//            +----+----+----+----+----+----+----+----+----+----+....+----+

//            | VN | CD | DSTPORT |   DSTIP   | USERID  |NULL|

//            +----+----+----+----+----+----+----+----+----+----+....+----+

//# of bytes:   1    1      2              4     variable       1

 

服务器返回

 

//                +----+----+----+----+----+----+----+----+

//                | VN | CD | DSTPORT |   DSTIP    |

//                +----+----+----+----+----+----+----+----+

// # of bytes:       1    1      2              4

//

// VN is the version of the reply code and should be 0. CD is the result

// code with one of the following values:

//

//        90: request granted

//        91: request rejected or failed

//        92: request rejected becasue SOCKS server cannot connect to

//            identd on the client

//        93: request rejected because the client program and identd

//            report different user-ids

 

 

SOCKS5 客户端服务器端协议

 

1  认服务器选择支持的socks类型

客户端发送

 

// SOCKS 5

// -------------------------------------------------------------------------------------------

// The client connects to the server, and sends a version identifier/method selection message:

//                +----+----------+----------+

//                |VER | NMETHODS | METHODS  |

//                +----+----------+----------+

//                | 1  |    1   | 1 to 255 |

//                +----+----------+----------+

//

// The values currently defined for METHOD are:

//

//       o  X'00' NO AUTHENTICATION REQUIRED

//       o  X'01' GSSAPI

//       o  X'02' USERNAME/PASSWORD

//       o  X'03' to X'7F' IANA ASSIGNED

//       o  X'80' to X'FE' RESERVED FOR PRIVATE METHODS

//       o  X'FF' NO ACCEPTABLE METHODS

 

发送协议(版本号(1字节) | 可供选择的认证方法(1字节) | 方法序列(1-255个字节长度))  

 

如果是socks4协议,版本号就是0x04,但是这里是支持UDPSocks5,所以是字节0x05

 

Socks协议定义了0-255种通过代理的认证方法:

0x00 无验证需求

0x01 通用安全服务应用程序接口(GSSAPI)

0x02 用户名/密码(USERNAME/PASSWORD)

0x03 X'7F' IANA 分配(IANA ASSIGNED)

0x80 X'FE' 私人方法保留(RESERVED FOR PRIVATE METHODS)

0xFF 无可接受方法(NO ACCEPTABLE METHODS)

 

0x05 0x01 0x00 表示只有一种0x00供服务器选择

0x05 0x02 0x00 0x02 表示有两种 0x00 0x02 供服务器选择

 

服务器端返回

 

版本号 | 服务器选定的方法

 

2 发送用户认证消息

 

客户端发送

 

0x01|用户名长度(1字节)| 用户名(长度根据用户名长度域指定)| 口令长度(1字节)| 口令(长度由口令长度域指定)

 

服务器返回

 

0x01 | 验证结果标志

                                                                                                  验证结果标志可以为:0x00 验证通过

 

3 代理的服务器信息

 

客户端发送

 

协议版本 | Socks命令 | 保留字节 | 地址类型 | 特定地址 | 特定端口

Socks命令有3种:CONNECT (编号0x01 BIND (0x02) UDP(编号0x03)

 

保留字节长度1,为0x00

地址类型有3种:

0X01 该地址是IPv4地址,长48bit字节。

0X03 该地址包含一个完全的域名。第一个8bit字节包含了后面名称的8bit的数目,没有中止的’/0’。

0X04  该地址是IPv6地址,长168bit字节。

 

服务器返回

 

版本 | 代理的应答 | 保留1字节 | 地址类型 | 代理服务器地址 | 绑定的代理端口

代理的应答可以为值:

0X00 成功协商

0X01 常见的Socks故障

0x02 不允许连接

0X03 网络不可到达

0X04 主机不可到达

0X05 连接被重置

0X06 TTL 失效

0X07 命令不支持

0X08 地址类型不支持

0X09 一直到0xff都保留

 

HTTP客户端服务器端协议

 

1

客户端发送

1.0

CONNECT www.16gt.com:80 HTTP/1.0/r/n

Authorization: Basic用户:密码/r/n

Proxy-Authorization: Basic用户:密码/r/n

/r/n

 

1.1

CONNECT www.16gt.com:80 HTTP/1.1/r/n

Host: www.16gt.com:80/r/n

Authorization: Basic 用户:密码/r/n

Proxy-Authorization: Basic 用户:密码/r/n

/r/n

 

服务器返回

http/

 

原创粉丝点击