本文所列的表格通常长这样的:
┌────────┬────────┬────────┐
│ field1 │ field2 │ field3 │
├────────┼────────┼────────┤
│ 1 │ 2 │ 3 │
└────────┴────────┴────────┘
其中field就是协议头的域,其下面的数字表示该域所占字节数量,而不是其表示内容。
协议内容
client to server
┌─────┬──────────┬─────────┐ │ VER │ NMETHODS │ METHODS │ ├─────┼──────────┼─────────┤ │ 1 │ 1 │ 1~255 │ └─────┴──────────┴─────────┘
用途:确立连接认证方法协商,client告知server其所支持的认证方法,server可从中挑选一个。其中
ver
socks协议的版本号,常用的是socks5版本的,故可以为0x05
。
nmethods
后面的域methods有n个字节
methods
每个字节即为一个认证方法,供server挑选server to client
┌──────┬──────────┐ │ VER │ METHOD │ ├──────┼──────────┤ │ 1 │ 1 │ └──────┴──────────┘
用途:告知client需要使用哪种认证方法进行认证。
ver
版本,即0x05
method
可以下面其中一项:
o0x00
NO AUTHENTICATION REQUIRED 无需认证
o0x01
GSSAPI
o0x02
USERNAME/PASSWORD 用户名/密码
o0x03
to0x7F
IANA ASSIGNED 由IANA指定
o0x80
to0xFE
RESERVED FOR PRIVATE METHODS 私人保留方法
o0xFF
NO ACCEPTABLE METHODS 不接受