这是我参与「第三届青训营 -后端场」笔记创作活动的的第一篇笔记
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的底层原理?