SOCKS5 RESOLVE Request
The SOCKS5 RESOLVE request is used to resolve the provided host name, and in return, a reply is given with the resolved IPv4 or IPv6 address. At the time of this writing, the SOCKS5 RESOLVE request is an additional SOCKS5 request made for Jargyle. It is not a part of the SOCKS5 protocol specification.
The following is the specification for defining a SOCKS5 RESOLVE request and the reply to that SOCKS5 request. It is described in expressions, names, and terms that are based off of the SOCKS5 protocol specification described in RFC 1928.
In a RESOLVE request, the CMD
field is X'04'
. The ATYP
field SHOULD be
X'03'
(DOMAINNAME) and the DST.ADDR
field SHOULD be a fully-qualified
domain name with the first octet containing the number of octets of the name
that follows. The DST.PORT
field can be of any value in network octet order
(X'0000'
to X'FFFF'
inclusive).
In a reply to a RESOLVE request, the ATYP
field MUST be of any value other
than X'03'
(DOMAINNAME) and the BND.ADDR
field MUST be the resolved
address of the DST.ADDR
field of the RESOLVE request. The BND.PORT
field
can be of any value in network octet order (X'0000'
to X'FFFF'
inclusive).
If the ATYP
field and the DST.ADDR
field of the RESOLVE request is not a
fully-qualified domain name, the ATYP
field and the BND.ADDR
field in the
reply MUST be the same as the ATYP
field and the DST.ADDR
field of the
RESOLVE request. After the reply is sent, the connection is then closed
between the client and the server.