socks5 protocol | 青训营笔记

148 阅读1分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第一篇笔记

socks5协议解析:

Auth Stage server receive information:

VER 1byte:协议版本,socks5为0x05

NMETHODS 1byte:支持认证的方法数量

METHODS:对应NMETHODS,NMETHODS的值为多少,METHODS就有多少个字节。RFC预定了一些值的含义,内容如下 X'00' NO AUTHENTICATION REQUIRED X'02' USERNAME/PASSWORD

Connection Stage Server receive information:

VER 1byte:版本号,socks5的值为0x05

CMD 1byte: 0x01表示CONNECT请求

RSV X'00': 保留字段,值为0*00

ATYP 1byte:目标地址类型,DST.ADDR的数据对应这个字段的类型。 0x01表示IPV4地址,DST.ADDR为4个字节 0x03表示域名,DST.ADDR是一个可变长度的域名

DST.ADDR Variable:一个可变长度的值

DST.PORT 2byte:目标端口,固定2个字节

Connection Stage Client receive information:

VER 1byte:socks版本,这里为0x05

REP Relay field 1byte,内容取值如下 X'00' succeeded

RSV 保留字段

ATYPE 1byte:地址类型

BND.ADDR Variable:服务绑定的地址

BND.PORT 2byte 服务绑定的端口DST.PORT

基于socks5proxy服务器构建引发的思考?

bufio.NewReader(conn) conn type is net.Conn为什么成立 net.Conn的结构体解释为:Conn是一种通用的面向流的网络连接。 Conn中的Read方法解释为:从连接中读取数据。 Conn中的Write方法解释为:数据写入连接。

net.Conn本身作为一个面向流的网络连接,采用tcp协议,相当于双方打电话,一方可以同时获取对方的信息,同时也可以发送信息,每一个Conn本质上来说就是一个流。 net.Conn的底层原理?