<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.36 (Ruby 3.4.9) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-vance-socks-v4a-02" category="historic" submissionType="independent" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.33.0 -->
  <front>
    <title abbrev="SOCKS 4A">SOCKS Protocol Version 4A</title>
    <seriesInfo name="Internet-Draft" value="draft-vance-socks-v4a-02"/>
    <author fullname="Daniel James Vance">
      <organization>Independent</organization>
      <address>
        <email>djvanc@outlook.com</email>
      </address>
    </author>
    <date year="2026" month="May" day="04"/>
    <abstract>
      <?line 41?>

<t>This document specifies SOCKS Protocol Version 4A, an independent protocol originated from the SOCKS Protocol Version 4. This protocol allows SOCKS clients to delegate domain name resolution to the SOCKS server. This is particularly useful in environments where the client host cannot resolve the destination host's domain name due to restrictive network policies or lack of DNS access.</t>
    </abstract>
    <note removeInRFC="true">
      <name>Discussion Venues</name>
      <t>Source for this draft and an issue tracker can be found at
    <eref target="https://github.com/4socks/socks4"/>.</t>
    </note>
  </front>
  <middle>
    <?line 45?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The original SOCKSv4 protocol (<xref target="I-D.vance-socks-v4"/>) requires the client to provide the destination host's IPv4 address. However, in many firewall configurations, the client resides on a network without direct DNS access to the outside world. SOCKS 4A addresses this by allowing the client to provide a domain name string instead of a resolved IP address.</t>
    </section>
    <section anchor="conventions-and-terminology">
      <name>Conventions and Terminology</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<t>This specification uses the following terms:</t>
      <ul spacing="normal">
        <li>
          <t>Client (Application Client): The program requesting a connection to an application server through the SOCKS server.</t>
        </li>
        <li>
          <t>SOCKS Server: The host, typically at a firewall, that intermediates the connection between the Client and the Application Server.</t>
        </li>
        <li>
          <t>Application Server: The host to which the Client ultimately wishes to connect (e.g., a Telnet daemon, an HTTP server).</t>
        </li>
        <li>
          <t>TCP Session: A connection established using the Transmission Control Protocol (TCP). SOCKSv4 only supports TCP sessions.</t>
        </li>
        <li>
          <t>DSTIP (Destination IP): The IP address of the Application Server, as specified in the SOCKS request.</t>
        </li>
        <li>
          <t>DSTPORT (Destination Port): The port number of the Application Server, as specified in the SOCKS request.</t>
        </li>
        <li>
          <t>USERID: A variable-length, NULL-terminated string identifying the client's user on the local system.</t>
        </li>
        <li>
          <t>NULL: A byte of all zero bits, used to terminate the USERID field.</t>
        </li>
      </ul>
    </section>
    <section anchor="protocol-mechanism">
      <name>Protocol Mechanism</name>
      <t>The only behaviors that SOCKS 4A is different from the original SOCKSv4 is triggered by a specific, non-routable pattern in the <tt>DSTIP</tt> field of a standard SOCKSv4 request.</t>
      <section anchor="request-format">
        <name>Request Format</name>
        <t>To initiate a SOCKS 4A request (either CONNECT or BIND), the client sends a packet with the following structure:</t>
        <table anchor="socks4a-req-format">
          <name>SOCKS 4A Request Structure</name>
          <thead>
            <tr>
              <th align="left">Field</th>
              <th align="left">Description</th>
              <th align="left">Size (bytes)</th>
              <th align="left">Value/Notes</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">VN</td>
              <td align="left">Version Number</td>
              <td align="left">1</td>
              <td align="left">0x04</td>
            </tr>
            <tr>
              <td align="left">CD</td>
              <td align="left">Command Code</td>
              <td align="left">1</td>
              <td align="left">0x01 (CONNECT) or 0x02 (BIND)</td>
            </tr>
            <tr>
              <td align="left">DSTPORT</td>
              <td align="left">Destination Port</td>
              <td align="left">2</td>
              <td align="left">Network Byte Order</td>
            </tr>
            <tr>
              <td align="left">DSTIP</td>
              <td align="left">Destination IP</td>
              <td align="left">4</td>
              <td align="left">0x00, 0x00, 0x00, x (x != 0)</td>
            </tr>
            <tr>
              <td align="left">USERID</td>
              <td align="left">User Identifier</td>
              <td align="left">variable</td>
              <td align="left">Variable length, NULL terminated</td>
            </tr>
            <tr>
              <td align="left">DOMAIN</td>
              <td align="left">Destination Domain</td>
              <td align="left">variable</td>
              <td align="left">Variable length, NULL terminated</td>
            </tr>
          </tbody>
        </table>
        <section anchor="dstip-encoding-and-signaling">
          <name>DSTIP Encoding and Signaling</name>
          <t>To signal a SOCKS 4A extension request, the client <bcp14>MUST</bcp14> set the first three octets of the DSTIP field to 0x00 and the final octet to a non-zero value in network byte order (i.e., representing an IPv4 address in the range 0.0.0.1 through 0.0.0.255).</t>
          <t>This specific address range, part of the 0.0.0.0/8 block, is reserved by IANA for "this host on this network" <xref target="RFC1122"/> and is not a routable destination. This ensures that the 4A signal is syntactically distinct from standard SOCKSv4 requests. A SOCKS server receiving such a DSTIP <bcp14>MUST</bcp14> ignore its numerical value and proceed to extract the destination address from the DOMAIN field as defined in <xref target="destination-domain-name-field"/>.</t>
        </section>
        <section anchor="destination-domain-name-field">
          <name>Destination Domain Name Field</name>
          <t>The <tt>DOMAIN</tt> field contains the fully qualified domain name (FQDN) of the application server. To ensure protocol stability and prevent common parsing errors, the following rules <bcp14>MUST</bcp14> be observed:</t>
          <ul spacing="normal">
            <li>
              <t>Positioning: The <tt>DOMAIN</tt> field <bcp14>MUST</bcp14> begin immediately after the <tt>NULL</tt> (0x00) terminator of the <tt>USERID</tt> field.</t>
            </li>
            <li>
              <t>Encoding: The domain name <bcp14>SHOULD</bcp14> be encoded in US-ASCII. While some implementations support Internationalized Domain Names (IDNs), clients <bcp14>SHOULD</bcp14> use the Punycode-encoded A-label format <xref target="RFC5891"/> to ensure maximum compatibility.</t>
            </li>
            <li>
              <t>Termination: The field <bcp14>MUST</bcp14> be terminated by a single <tt>NULL</tt> (0x00) octet.</t>
            </li>
            <li>
              <t>Length Constraints: The <tt>DOMAIN</tt> string (excluding the terminator) <bcp14>SHOULD NOT</bcp14> exceed <strong>255 octets</strong>, consistent with the maximum length of a FQDN defined in <xref target="RFC1035"/>. Servers <bcp14>SHOULD</bcp14> enforce a maximum buffer limit for this field to mitigate resource exhaustion attacks.</t>
            </li>
          </ul>
        </section>
      </section>
    </section>
    <section anchor="server-processing">
      <name>Server Processing</name>
      <t>Upon receipt of a client request, a SOCKS 4A compliant server <bcp14>MUST</bcp14> process the data according to the following sequential states:</t>
      <section anchor="initial-header-parsing">
        <name>Initial Header Parsing</name>
        <t>The server <bcp14>MUST</bcp14> first read the fixed-length 8-octet header. It <bcp14>SHALL</bcp14> evaluate the fields as follows:</t>
        <ul spacing="normal">
          <li>
            <t>VN: If the version number is not 4, the server <bcp14>SHOULD</bcp14> terminate the connection.</t>
          </li>
          <li>
            <t>CD: The server determines the requested operation (CONNECT or BIND).</t>
          </li>
          <li>
            <t>DSTPORT: The destination port is extracted for later use in the connection attempt.</t>
          </li>
          <li>
            <t>DSTIP: The server inspects the four-octet destination IP address to determine the routing mode (Standard SOCKSv4 or SOCKS 4A).</t>
          </li>
        </ul>
      </section>
      <section anchor="routing-mode-selection-and-field-extraction">
        <name>Routing Mode Selection and Field Extraction</name>
        <t>The server <bcp14>MUST</bcp14> apply the following logic based on the <tt>DSTIP</tt> value:</t>
        <ol spacing="normal" type="1"><li>
            <t>SOCKS 4A Signaling: If the first three octets of <tt>DSTIP</tt> are zero and the fourth octet is non-zero (0.0.0.x, where x != 0), the server <bcp14>SHALL</bcp14> enter the SOCKS 4A extended resolution mode. The server <bcp14>MUST</bcp14> continue to read the input stream to extract the <tt>USERID</tt> string, defined as all octets up to and including the first <tt>NULL</tt> (0x00) terminator. Immediately following the <tt>USERID</tt> terminator, the server <bcp14>MUST</bcp14> continue reading to extract the <tt>DOMAIN</tt> string, defined as all octets up to and including the second <tt>NULL</tt> (0x00) terminator.</t>
          </li>
          <li>
            <t>Standard SOCKSv4 Handling: If the <tt>DSTIP</tt> does not match the 0.0.0.x pattern (including the case of 0.0.0.0), the server <bcp14>MUST</bcp14> follow the standard SOCKSv4 procedure, extracting only the <tt>USERID</tt> field. In this mode, the server <bcp14>MUST NOT</bcp14> attempt to read or interpret any data following the first <tt>NULL</tt> terminator as a domain name.</t>
          </li>
        </ol>
      </section>
      <section anchor="name-resolution-and-execution">
        <name>Name Resolution and Execution</name>
        <t>In SOCKS 4A mode, once the <tt>DOMAIN</tt> string is extracted:</t>
        <ul spacing="normal">
          <li>
            <t>Resolution: The server <bcp14>SHALL</bcp14> attempt to resolve the ASCII-encoded domain name to a valid IPv4 address using the server's local DNS resolver or host lookup mechanism.</t>
          </li>
          <li>
            <t>Successful Resolution: If the domain resolves to one or more IPv4 addresses, the server <bcp14>SHOULD</bcp14> attempt to establish the requested TCP session (for CONNECT) or bind a socket (for BIND) using the first resolvable and reachable address.</t>
          </li>
          <li>
            <t>Resolution Failure: If the domain cannot be resolved, or if the resolver returns an error, the server <bcp14>MUST</bcp14> consider the request failed. It <bcp14>SHALL</bcp14> return a reply packet with <tt>CD = 91</tt> and <bcp14>MUST</bcp14> immediately close the connection to the client.</t>
          </li>
        </ul>
      </section>
      <section anchor="response-generation">
        <name>Response Generation</name>
        <t>Following the completion (success or failure) of the request processing, the server <bcp14>MUST</bcp14> return an 8-octet reply packet. For SOCKS 4A <tt>CONNECT</tt> operations, the <tt>DSTPORT</tt> and <tt>DSTIP</tt> fields in the reply are typically set to zero and <bcp14>SHOULD</bcp14> be ignored by the client. For <tt>BIND</tt> operations, these fields <bcp14>MUST</bcp14> contain the specific port and IP address where the SOCKS server is listening for the inbound connection.</t>
        <table anchor="socks4a-rep-format">
          <name>SOCKS 4A Reply Structure</name>
          <thead>
            <tr>
              <th align="left">Field</th>
              <th align="left">Description</th>
              <th align="left">Size (bytes)</th>
              <th align="left">Value/Notes</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">VN</td>
              <td align="left">Reply Version</td>
              <td align="left">1</td>
              <td align="left">0x00 (Null byte)</td>
            </tr>
            <tr>
              <td align="left">CD</td>
              <td align="left">Result Code</td>
              <td align="left">1</td>
              <td align="left">0x5A (Granted), 0x5B (Rejected/Failed), etc.</td>
            </tr>
            <tr>
              <td align="left">DSTPORT</td>
              <td align="left">Destination Port</td>
              <td align="left">2</td>
              <td align="left">Ignored for CONNECT; provided for BIND</td>
            </tr>
            <tr>
              <td align="left">DSTIP</td>
              <td align="left">Destination IP</td>
              <td align="left">4</td>
              <td align="left">Ignored for CONNECT; provided for BIND</td>
            </tr>
          </tbody>
        </table>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>See <xref target="security-analysis"/>.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>No IANA actions required.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="I-D.vance-socks-v4">
          <front>
            <title>SOCKS Protocol Version 4</title>
            <author fullname="Daniel James Vance" initials="D. J." surname="Vance">
              <organization>Independent</organization>
            </author>
            <date day="4" month="May" year="2026"/>
            <abstract>
              <t>   This document describes SOCKS version 4, a protocol designed to
   facilitate TCP proxy services across a network firewall.  SOCKS
   operates at the session layer, providing application users with
   transparent access to network services on the other side of the
   firewall.  It is application-protocol independent, allowing it to
   support a wide range of services, including those utilizing
   encryption, while maintaining minimum processing overhead by simply
   relaying data after initial access control checks.  The protocol
   defines two primary operations: CONNECT for establishing outbound
   connections to an application server, and BIND for preparing for and
   accepting inbound connections initiated by an application server.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-vance-socks-v4-09"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC791">
          <front>
            <title>Internet Protocol</title>
            <author fullname="J. Postel" initials="J." surname="Postel"/>
            <date month="September" year="1981"/>
          </front>
          <seriesInfo name="STD" value="5"/>
          <seriesInfo name="RFC" value="791"/>
          <seriesInfo name="DOI" value="10.17487/RFC0791"/>
        </reference>
        <reference anchor="RFC1122">
          <front>
            <title>Requirements for Internet Hosts - Communication Layers</title>
            <author fullname="R. Braden" initials="R." role="editor" surname="Braden"/>
            <date month="October" year="1989"/>
            <abstract>
              <t>This RFC is an official specification for the Internet community. It incorporates by reference, amends, corrects, and supplements the primary protocol standards documents relating to hosts. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="3"/>
          <seriesInfo name="RFC" value="1122"/>
          <seriesInfo name="DOI" value="10.17487/RFC1122"/>
        </reference>
        <reference anchor="RFC9293">
          <front>
            <title>Transmission Control Protocol (TCP)</title>
            <author fullname="W. Eddy" initials="W." role="editor" surname="Eddy"/>
            <date month="August" year="2022"/>
            <abstract>
              <t>This document specifies the Transmission Control Protocol (TCP). TCP is an important transport-layer protocol in the Internet protocol stack, and it has continuously evolved over decades of use and growth of the Internet. Over this time, a number of changes have been made to TCP as it was specified in RFC 793, though these have only been documented in a piecemeal fashion. This document collects and brings those changes together with the protocol specification from RFC 793. This document obsoletes RFC 793, as well as RFCs 879, 2873, 6093, 6429, 6528, and 6691 that updated parts of RFC 793. It updates RFCs 1011 and 1122, and it should be considered as a replacement for the portions of those documents dealing with TCP requirements. It also updates RFC 5961 by adding a small clarification in reset handling while in the SYN-RECEIVED state. The TCP header control bits from RFC 793 have also been updated based on RFC 3168.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="7"/>
          <seriesInfo name="RFC" value="9293"/>
          <seriesInfo name="DOI" value="10.17487/RFC9293"/>
        </reference>
        <reference anchor="RFC1928">
          <front>
            <title>SOCKS Protocol Version 5</title>
            <author fullname="M. Leech" initials="M." surname="Leech"/>
            <author fullname="M. Ganis" initials="M." surname="Ganis"/>
            <author fullname="Y. Lee" initials="Y." surname="Lee"/>
            <author fullname="R. Kuris" initials="R." surname="Kuris"/>
            <author fullname="D. Koblas" initials="D." surname="Koblas"/>
            <author fullname="L. Jones" initials="L." surname="Jones"/>
            <date month="March" year="1996"/>
            <abstract>
              <t>This memo describes a protocol that is an evolution of the previous version of the protocol, version 4 [1]. This new protocol stems from active discussions and prototype implementations. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="1928"/>
          <seriesInfo name="DOI" value="10.17487/RFC1928"/>
        </reference>
        <reference anchor="RFC1929">
          <front>
            <title>Username/Password Authentication for SOCKS V5</title>
            <author fullname="M. Leech" initials="M." surname="Leech"/>
            <date month="March" year="1996"/>
            <abstract>
              <t>The protocol specification for SOCKS Version 5 specifies a generalized framework for the use of arbitrary authentication protocols in the initial socks connection setup. This document describes one of those protocols, as it fits into the SOCKS Version 5 authentication "subnegotiation". [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="1929"/>
          <seriesInfo name="DOI" value="10.17487/RFC1929"/>
        </reference>
        <reference anchor="RFC3552">
          <front>
            <title>Guidelines for Writing RFC Text on Security Considerations</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <author fullname="B. Korver" initials="B." surname="Korver"/>
            <date month="July" year="2003"/>
            <abstract>
              <t>All RFCs are required to have a Security Considerations section. Historically, such sections have been relatively weak. This document provides guidelines to RFC authors on how to write a good Security Considerations section. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="72"/>
          <seriesInfo name="RFC" value="3552"/>
          <seriesInfo name="DOI" value="10.17487/RFC3552"/>
        </reference>
        <reference anchor="RFC3365">
          <front>
            <title>Strong Security Requirements for Internet Engineering Task Force Standard Protocols</title>
            <author fullname="J. Schiller" initials="J." surname="Schiller"/>
            <date month="August" year="2002"/>
          </front>
          <seriesInfo name="BCP" value="61"/>
          <seriesInfo name="RFC" value="3365"/>
          <seriesInfo name="DOI" value="10.17487/RFC3365"/>
        </reference>
        <reference anchor="RFC5891">
          <front>
            <title>Internationalized Domain Names in Applications (IDNA): Protocol</title>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <date month="August" year="2010"/>
            <abstract>
              <t>This document is the revised protocol definition for Internationalized Domain Names (IDNs). The rationale for changes, the relationship to the older specification, and important terminology are provided in other documents. This document specifies the protocol mechanism, called Internationalized Domain Names in Applications (IDNA), for registering and looking up IDNs in a way that does not require changes to the DNS itself. IDNA is only meant for processing domain names, not free text. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5891"/>
          <seriesInfo name="DOI" value="10.17487/RFC5891"/>
        </reference>
        <reference anchor="RFC1035">
          <front>
            <title>Domain names - implementation and specification</title>
            <author fullname="P. Mockapetris" initials="P." surname="Mockapetris"/>
            <date month="November" year="1987"/>
            <abstract>
              <t>This RFC is the revised specification of the protocol and format used in the implementation of the Domain Name System. It obsoletes RFC-883. This memo documents the details of the domain name client - server communication.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="13"/>
          <seriesInfo name="RFC" value="1035"/>
          <seriesInfo name="DOI" value="10.17487/RFC1035"/>
        </reference>
        <reference anchor="RFC1918">
          <front>
            <title>Address Allocation for Private Internets</title>
            <author fullname="Y. Rekhter" initials="Y." surname="Rekhter"/>
            <author fullname="B. Moskowitz" initials="B." surname="Moskowitz"/>
            <author fullname="D. Karrenberg" initials="D." surname="Karrenberg"/>
            <author fullname="G. J. de Groot" initials="G. J." surname="de Groot"/>
            <author fullname="E. Lear" initials="E." surname="Lear"/>
            <date month="February" year="1996"/>
            <abstract>
              <t>This document describes address allocation for private internets. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="5"/>
          <seriesInfo name="RFC" value="1918"/>
          <seriesInfo name="DOI" value="10.17487/RFC1918"/>
        </reference>
        <reference anchor="RFC2827">
          <front>
            <title>Network Ingress Filtering: Defeating Denial of Service Attacks which employ IP Source Address Spoofing</title>
            <author fullname="P. Ferguson" initials="P." surname="Ferguson"/>
            <author fullname="D. Senie" initials="D." surname="Senie"/>
            <date month="May" year="2000"/>
            <abstract>
              <t>This paper discusses a simple, effective, and straightforward method for using ingress traffic filtering to prohibit DoS (Denial of Service) attacks which use forged IP addresses to be propagated from 'behind' an Internet Service Provider's (ISP) aggregation point. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="38"/>
          <seriesInfo name="RFC" value="2827"/>
          <seriesInfo name="DOI" value="10.17487/RFC2827"/>
        </reference>
        <reference anchor="RFC3927">
          <front>
            <title>Dynamic Configuration of IPv4 Link-Local Addresses</title>
            <author fullname="S. Cheshire" initials="S." surname="Cheshire"/>
            <author fullname="B. Aboba" initials="B." surname="Aboba"/>
            <author fullname="E. Guttman" initials="E." surname="Guttman"/>
            <date month="May" year="2005"/>
            <abstract>
              <t>To participate in wide-area IP networking, a host needs to be configured with IP addresses for its interfaces, either manually by the user or automatically from a source on the network such as a Dynamic Host Configuration Protocol (DHCP) server. Unfortunately, such address configuration information may not always be available. It is therefore beneficial for a host to be able to depend on a useful subset of IP networking functions even when no address configuration is available. This document describes how a host may automatically configure an interface with an IPv4 address within the 169.254/16 prefix that is valid for communication with other devices connected to the same physical (or logical) link.</t>
              <t>IPv4 Link-Local addresses are not suitable for communication with devices not directly connected to the same physical (or logical) link, and are only used where stable, routable addresses are not available (such as on ad hoc or isolated networks). This document does not recommend that IPv4 Link-Local addresses and routable addresses be configured simultaneously on the same interface. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3927"/>
          <seriesInfo name="DOI" value="10.17487/RFC3927"/>
        </reference>
        <reference anchor="RFC4301">
          <front>
            <title>Security Architecture for the Internet Protocol</title>
            <author fullname="S. Kent" initials="S." surname="Kent"/>
            <author fullname="K. Seo" initials="K." surname="Seo"/>
            <date month="December" year="2005"/>
            <abstract>
              <t>This document describes an updated version of the "Security Architecture for IP", which is designed to provide security services for traffic at the IP layer. This document obsoletes RFC 2401 (November 1998). [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4301"/>
          <seriesInfo name="DOI" value="10.17487/RFC4301"/>
        </reference>
        <reference anchor="RFC4732">
          <front>
            <title>Internet Denial-of-Service Considerations</title>
            <author fullname="M. Handley" initials="M." role="editor" surname="Handley"/>
            <author fullname="E. Rescorla" initials="E." role="editor" surname="Rescorla"/>
            <author>
              <organization abbrev="IAB">Internet Architecture Board</organization>
            </author>
            <date month="December" year="2006"/>
            <abstract>
              <t>This document provides an overview of possible avenues for denial-of-service (DoS) attack on Internet systems. The aim is to encourage protocol designers and network engineers towards designs that are more robust. We discuss partial solutions that reduce the effectiveness of attacks, and how some solutions might inadvertently open up alternative vulnerabilities. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4732"/>
          <seriesInfo name="DOI" value="10.17487/RFC4732"/>
        </reference>
        <reference anchor="RFC5246">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.2</title>
            <author fullname="T. Dierks" initials="T." surname="Dierks"/>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2008"/>
            <abstract>
              <t>This document specifies Version 1.2 of the Transport Layer Security (TLS) protocol. The TLS protocol provides communications security over the Internet. The protocol allows client/server applications to communicate in a way that is designed to prevent eavesdropping, tampering, or message forgery. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5246"/>
          <seriesInfo name="DOI" value="10.17487/RFC5246"/>
        </reference>
        <reference anchor="RFC5890">
          <front>
            <title>Internationalized Domain Names for Applications (IDNA): Definitions and Document Framework</title>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <date month="August" year="2010"/>
            <abstract>
              <t>This document is one of a collection that, together, describe the protocol and usage context for a revision of Internationalized Domain Names for Applications (IDNA), superseding the earlier version. It describes the document collection and provides definitions and other material that are common to the set. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5890"/>
          <seriesInfo name="DOI" value="10.17487/RFC5890"/>
        </reference>
        <reference anchor="RFC7626">
          <front>
            <title>DNS Privacy Considerations</title>
            <author fullname="S. Bortzmeyer" initials="S." surname="Bortzmeyer"/>
            <date month="August" year="2015"/>
            <abstract>
              <t>This document describes the privacy issues associated with the use of the DNS by Internet users. It is intended to be an analysis of the present situation and does not prescribe solutions.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7626"/>
          <seriesInfo name="DOI" value="10.17487/RFC7626"/>
        </reference>
        <reference anchor="RFC7858">
          <front>
            <title>Specification for DNS over Transport Layer Security (TLS)</title>
            <author fullname="Z. Hu" initials="Z." surname="Hu"/>
            <author fullname="L. Zhu" initials="L." surname="Zhu"/>
            <author fullname="J. Heidemann" initials="J." surname="Heidemann"/>
            <author fullname="A. Mankin" initials="A." surname="Mankin"/>
            <author fullname="D. Wessels" initials="D." surname="Wessels"/>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <date month="May" year="2016"/>
            <abstract>
              <t>This document describes the use of Transport Layer Security (TLS) to provide privacy for DNS. Encryption provided by TLS eliminates opportunities for eavesdropping and on-path tampering with DNS queries in the network, such as discussed in RFC 7626. In addition, this document specifies two usage profiles for DNS over TLS and provides advice on performance considerations to minimize overhead from using TCP and TLS with DNS.</t>
              <t>This document focuses on securing stub-to-recursive traffic, as per the charter of the DPRIVE Working Group. It does not prevent future applications of the protocol to recursive-to-authoritative traffic.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7858"/>
          <seriesInfo name="DOI" value="10.17487/RFC7858"/>
        </reference>
        <reference anchor="RFC8446">
          <front>
            <title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
            <author fullname="E. Rescorla" initials="E." surname="Rescorla"/>
            <date month="August" year="2018"/>
            <abstract>
              <t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol. TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t>
              <t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961. This document also specifies new requirements for TLS 1.2 implementations.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8446"/>
          <seriesInfo name="DOI" value="10.17487/RFC8446"/>
        </reference>
        <reference anchor="RFC8484">
          <front>
            <title>DNS Queries over HTTPS (DoH)</title>
            <author fullname="P. Hoffman" initials="P." surname="Hoffman"/>
            <author fullname="P. McManus" initials="P." surname="McManus"/>
            <date month="October" year="2018"/>
            <abstract>
              <t>This document defines a protocol for sending DNS queries and getting DNS responses over HTTPS. Each DNS query-response pair is mapped into an HTTP exchange.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8484"/>
          <seriesInfo name="DOI" value="10.17487/RFC8484"/>
        </reference>
      </references>
    </references>
    <?line 166?>

<section anchor="operational-considerations">
      <name>Operational Considerations</name>
      <t>The following section outlines the operational behaviors and implementation strategies observed in historical deployments of SOCKS 4A. These notes are provided to ensure interoperability and to document how the protocol handles complex network topologies.</t>
      <section anchor="multi-tier-proxying-and-chaining">
        <name>Multi-tier Proxying and Chaining</name>
        <t>In hierarchical network architectures, an intermediate SOCKS server often acts as a client to an upstream SOCKS server. This configuration, known as proxy chaining, requires specific handling of SOCKS 4A requests to maintain the integrity of the resolution delegation.</t>
        <section anchor="recursive-resolution-and-protocol-downgrade">
          <name>Recursive Resolution and Protocol Downgrade</name>
          <t>An intermediate proxy receiving a SOCKS 4A request <bcp14>MAY</bcp14> perform local resolution of the <tt>DOMAIN</tt> field. If the resolution is successful, the intermediate proxy may elect to "downgrade" the request to a standard SOCKSv4 <tt>CONNECT</tt> or <tt>BIND</tt> operation when communicating with the upstream server, using the literal IPv4 address obtained from its local resolver.</t>
          <t>While this approach reduces the resolution burden on the upstream server, it requires that the intermediate proxy possesses a DNS environment consistent with the client's expectations. Implementations should be aware that resolving a domain at an intermediate hop may yield different IP addresses (e.g., in Content Delivery Networks) than resolution at the network edge.</t>
        </section>
        <section anchor="transparent-relaying">
          <name>Transparent Relaying</name>
          <t>In environments where the intermediate proxy is situated behind a restrictive firewall without direct DNS access, it <bcp14>SHOULD</bcp14> implement transparent relaying. In this mode, the intermediate proxy preserves the SOCKS 4A signaling (the <tt>0.0.0.x</tt> <tt>DSTIP</tt> pattern) and appends the <tt>USERID</tt> and <tt>DOMAIN</tt> fields exactly as received from the client when initiating the upstream connection. This ensures that the resolution intent is signaled end-to-end until it reaches a node capable of performing the lookup.</t>
        </section>
      </section>
      <section anchor="implementation-robustness-and-interoperability">
        <name>Implementation Robustness and Interoperability</name>
        <t>In accordance with the general robustness principle—to be conservative in what you send and liberal in what you accept—SOCKS 4A implementations have historically adopted permissive processing logic to accommodate diverse and sometimes non-compliant client behaviors.</t>
        <section anchor="handling-of-pre-resolved-requests">
          <name>Handling of Pre-resolved Requests</name>
          <t>Certain "SOCKSified" libraries or shim layers may resolve the destination hostname locally via the system's standard resolver before initiating the SOCKS handshake. Despite possessing a valid IP address, these clients may still utilize the SOCKS 4A format, placing the original hostname in the <tt>DOMAIN</tt> field.</t>
          <t>To ensure maximum interoperability, a SOCKS 4A-compliant server <bcp14>MUST NOT</bcp14> attempt to validate whether a 4A request was strictly necessary. Any request that matches the <tt>0.0.0.x</tt> pattern <bcp14>MUST</bcp14> be processed according to the SOCKS 4A logic described in Section 4, even if the server suspects the client is capable of direct IPv4 addressing.</t>
        </section>
        <section anchor="buffer-management-and-premature-termination">
          <name>Buffer Management and Premature Termination</name>
          <t>Historical implementations have occasionally encountered "leaky" or malformed packets where the <tt>NULL</tt> terminators for the <tt>USERID</tt> or <tt>DOMAIN</tt> fields are missing or followed by extraneous data. A robust implementation <bcp14>SHOULD</bcp14> treat the first <tt>NULL</tt> octet encountered as the definitive end of the field.</t>
          <t>Furthermore, if the stream terminates before the second <tt>NULL</tt> octet (the <tt>DOMAIN</tt> terminator) is received, the server <bcp14>MUST</bcp14> treat the request as failed and send a rejection reply (Result Code <tt>91</tt>). This prevents the server from hanging in a "half-read" state, which could be exploited as a resource exhaustion vector (see <xref target="robustness-and-resource-exhaustion"/>).</t>
        </section>
        <section anchor="character-set-consistency">
          <name>Character Set Consistency</name>
          <t>While this document recommends US-ASCII or Punycode (<xref target="destination-domain-name-field"/>), historical deployments have occasionally seen <tt>DOMAIN</tt> strings containing raw UTF-8 or local codepage octets. Servers <bcp14>SHOULD</bcp14> treat the <tt>DOMAIN</tt> string as an opaque sequence of octets when passing it to the local resolver. If the local resolver returns an error due to illegal characters, the server <bcp14>MUST</bcp14> return a failure code to the client rather than attempting to "guess" the intended encoding, which can lead to security vulnerabilities through domain name spoofing.</t>
        </section>
      </section>
    </section>
    <section anchor="security-analysis">
      <name>Security Analysis</name>
      <t>The SOCKS 4A protocol is a lightweight shim designed to facilitate TCP proxying with remote name resolution. It operates primarily at the session layer and lacks the cryptographic primitives found in more modern protocols like TLS <xref target="RFC8446"/>. This appendix provides a detailed analysis of the security implications of the protocol, assuming a threat model where an attacker can observe, intercept, and modify traffic between the client, the SOCKS server, and the DNS infrastructure.</t>
      <section anchor="security-deficiencies-of-the-base-protocol">
        <name>Security Deficiencies of the Base Protocol</name>
        <t>As an extension of SOCKSv4, SOCKS 4A inherits significant structural vulnerabilities. The protocol provides no mechanisms for mutual authentication, integrity protection, or confidentiality. Consequently, it is inherently susceptible to active man-in-the-middle (MITM) attacks. An attacker positioned between the client and the SOCKS server can silently alter the <tt>DSTPORT</tt> or <tt>DOMAIN</tt> fields, effectively redirecting the application traffic to a malicious destination without either party's knowledge.</t>
        <t>The <tt>USERID</tt> field, while intended for identity assertion, provides no cryptographic proof of origin. In the absence of a strong authentication framework as recommended in <xref target="RFC1918"/>, this field must be treated as untrusted and unauthenticated information. Relying on <tt>USERID</tt> for access control decisions is a violation of the principle of least privilege and is highly discouraged.</t>
      </section>
      <section anchor="remote-name-resolution-and-information-leakage">
        <name>Remote Name Resolution and Information Leakage</name>
        <t>One of the primary motivations for SOCKS 4A is the mitigation of "DNS leakage" on the client's local network. By delegating resolution to the SOCKS server, the client avoids issuing plaintext DNS queries that would otherwise expose the destination hostname to local observers <xref target="RFC7626"/>. However, this delegation does not eliminate the risk but rather relocates it to the SOCKS server's network environment.</t>
        <t>Unless the SOCKS server employs encrypted DNS transports such as DNS over TLS <xref target="RFC7858"/> or DNS over HTTPS <xref target="RFC8484"/>, the resolution process remains transparent to upstream passive monitors. Furthermore, if the client and SOCKS server communicate over an untrusted wide-area network (WAN) without a secure tunnel (e.g., <xref target="RFC4301"/> or <xref target="RFC5246"/>), the <tt>DOMAIN</tt> string itself is transmitted in the clear, negating any privacy benefits intended by the use of remote resolution.</t>
      </section>
      <section anchor="server-side-request-forgery-risks">
        <name>Server-Side Request Forgery Risks</name>
        <t>SOCKS 4A servers act as confused deputies by performing network operations on behalf of potentially anonymous clients. This mechanism introduces a significant risk of Server-Side Request Forgery (SSRF). A malicious client may leverage the SOCKS server to probe or attack internal infrastructure that is otherwise shielded from the public internet.</t>
        <t>To mitigate this, implementations <bcp14>MUST</bcp14> adhere to the guidance in <xref target="RFC2827"/> regarding network ingress filtering. Servers should be configured with strict egress Access Control Lists (ACLs) to prevent connections to loopback addresses (127.0.0.0/8), private address space <xref target="RFC1918"/>, and link-local addresses <xref target="RFC3927"/>. Failure to implement these controls allows an attacker to use the SOCKS server as a scanning proxy to enumerate internal services or exploit vulnerabilities in non-hardened internal applications.</t>
      </section>
      <section anchor="robustness-and-resource-exhaustion">
        <name>Robustness and Resource Exhaustion</name>
        <t>The variable-length nature of the <tt>USERID</tt> and <tt>DOMAIN</tt> fields introduces vectors for Denial of Service (DoS) attacks. Unlike protocols with explicit length-prefixing, SOCKS 4A relies on <tt>NULL</tt> terminators. An implementation that performs unbounded reads while searching for a <tt>NULL</tt> octet is vulnerable to memory exhaustion attacks.</t>
        <t>In accordance with <xref target="RFC4732"/>, implementations <bcp14>MUST</bcp14> enforce hard limits on the size of the input buffers used for these fields. For the <tt>DOMAIN</tt> field, a limit of 255 octets is recommended to align with the maximum length of a Fully Qualified Domain Name (FQDN) as specified in <xref target="RFC1035"/>. Furthermore, servers <bcp14>MUST</bcp14> implement per-session timeouts for the resolution phase to prevent "tarpitting" attacks, where a client initiates a large number of requests that target slow or non-responsive DNS authoritative servers, thereby exhausting the server's thread pool or file descriptors.</t>
      </section>
      <section anchor="protocol-rollback-and-downgrade-attacks">
        <name>Protocol Rollback and Downgrade Attacks</name>
        <t>While SOCKS 4A was designed to improve upon SOCKSv4, it remains a subset of the capabilities provided by SOCKSv5 <xref target="RFC1928"/>. SOCKSv5 offers robust authentication methods <xref target="RFC1929"/> and support for UDP. However, because SOCKS 4A does not participate in a formal version negotiation (it merely uses a different version octet), it is susceptible to downgrade attacks. An attacker may modify the version octet of a SOCKSv5 request to force the use of SOCKS 4A, thereby stripping away any authentication or encryption requirements mandated by the higher-version configuration.</t>
      </section>
      <section anchor="interaction-with-internationalized-domain-names">
        <name>Interaction with Internationalized Domain Names</name>
        <t>The use of the <tt>DOMAIN</tt> field requires careful handling of Internationalized Domain Names (IDNs). As noted in <xref target="RFC5890"/>, the interpretation of non-ASCII characters can lead to ambiguity and "homograph" attacks, where a visually similar but different domain is resolved. For maximum security and interoperability, clients <bcp14>SHOULD</bcp14> convert IDNs to A-label format (Punycode) as defined in <xref target="RFC5891"/> before transmission. Servers <bcp14>SHOULD</bcp14> treat the <tt>DOMAIN</tt> string as an opaque sequence of octets to be passed to the resolver, while ensuring that the resulting IP address undergoes the filtering described in <xref target="server-side-request-forgery-risks"/>.</t>
      </section>
      <section anchor="final-security-note">
        <name>Final Security Note</name>
        <t>SOCKS 4A is an aged protocol and lacks modern security features. It should only be used in environments where the communication channel is otherwise secured by a lower-layer technology (such as IPsec) or where the risk of interception and spoofing is deemed acceptable. For all other use cases, the transition to SOCKSv5 <xref target="RFC1928"/> combined with TLS is strongly recommended to ensure the confidentiality and integrity of the session.</t>
      </section>
    </section>
    <section anchor="example-implementations">
      <name>Example Implementations</name>
      <t>The following software projects provide full or partial implementations of the SOCKS4A protocol. The author consulted these implementations as practical references during the drafting of this document. It is explicitly stated that the author and this draft are entirely unaffiliated with these projects.</t>
      <ul spacing="normal">
        <li>
          <t>Dante: A sophisticated SOCKS server implementation for Unix-based systems. It handles SOCKS4A requests within its broader SOCKS4 module, utilizing the specific "null-domain" IP address format to trigger remote DNS resolution.</t>
        </li>
        <li>
          <t>GOST (Go Simple Tunnel): A multi-protocol tunnel manager written in Go. It includes a native SOCKS4A handler that supports both the protocol's command set and its specific address representation.</t>
        </li>
        <li>
          <t>3proxy: A lightweight, multi-platform proxy server. It implements SOCKS4A as part of its compact SOCKS service, supporting the extension for environments where client-side DNS resolution is restricted.</t>
        </li>
      </ul>
    </section>
    <section anchor="relationship-with-socks-4">
      <name>Relationship with SOCKS 4</name>
      <t>See Appendix A of <xref target="I-D.vance-socks-v4"/> for the reason why SOCKS 4A was not an extension of SOCKS Version 4.</t>
    </section>
    <section numbered="false" anchor="original-author">
      <name>Original Author</name>
      <artwork><![CDATA[
      Ying-Da Lee
      Principal Member Technical Staff
      NEC Systems Laboratory, CSTC
      ylee@syl.dl.nec.com

      David Koblas
      Netskope
]]></artwork>
      <t>We sincerely apologize that, due to the document's long history and the passage of time, many early contributors may not have been formally included in this list. We extend our deepest gratitude to all who have contributed to this work. If you believe your name should be added to the acknowledgments, please contact the draft maintainers.</t>
    </section>
    <section numbered="false" anchor="contributors">
      <name>Contributors</name>
      <artwork><![CDATA[
      George G. Michaelson
      Asia-Pacific Network Information Centre
      6 Cordelia St
      South Brisbane QLD 4101
      Australia
      Email: ggm@algebras.org
]]></artwork>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA7Vc63LbRpb+z6fokX+ESpEaS5bjy05mRpbsWDu2rEhyUqlU
qtQEmiQiEODgIolxtLUPsQ+wz7KPsk+y37l0o0HSyUztrlN2SBDo67l85zun
MR6PB03W5O6l2bn8cPy3S3NelU2ZlLn5zlV1Vhbm8GhnYCeTyt2Ge+hSYhs3
K6vVSzPP6qassmQwSMuksAu0lVZ22oxvbZG4cV0mN/X49tCOHx8M6nayyGpq
t1ktcWNWpG7p8E/RDND+k8HAts28rF4OzHhg8Gfa5rm0eWKLzOXmX/GlNt9R
03xDWc3wwy+2QZsvzWnUHv3qFjbLMZ6faSx/LdsmL8ubvaRcDAZFWS3w1K1D
X+Z0fLLXH+7LwSArpvE9F2+On73Y10/7+wcH+vHFwYsn/uqLg+fdxxf68cnT
p/7eJ0++eqofnz7vGnv85Gl4bN+3cPD84Jl/7EX4ePjksX/s8NkT3+7Tg8Ov
unYf++F+deCvPnv+1Lf7/DDc+/zwOU10PB4bO6mbyibNYHCFDTXYynaBVTT1
0iXZNMOaf1Y+RsYW8U6apb8HYjHLCkhKaqZVuTDN3H22mT3DHYdnbZ6Xd77X
JM/QcG2a0qQudzM0iSFicwtD0mEqV5d5SzJAt3Td1K66dZU2Ta3bqsmSNrdV
vjJt7SBeGLlxxW1WlcWC+7ibu8pxG9KrmZd1YxJbFGUjHd3Kz6mrG5od9Ur3
fFH3xpS2jgaDJxpoB0mRKVxzV1Y3ZlnmWUJrWlYmt8mNKafm5OzS2CRxdb0n
O7LI0jR3g8EjSHVTlWmbUE+0P84vbC7TvD3slm346dOmMD887GIcf28zDCae
GYaHB2+z9LMTOj1H4zZNKxqXeVveOazniNZsYYuVmaLFO+yUScpims3aih+u
R3EneBQdYK6FsWEF7jKoeduYFA0kTTR5v3/4kR4zuDtP94w3PH4sPA9s6GQl
gpIVs89MzPY2hfYCt2ZF3Tib0rpbv6cpJhumSst+XBa3aIwmBAlPzZWrFllR
5uVsJbtw41Y0vrQ2O+8/Xl7tjOT/5uwDf754/e3H04vXJ/T58u3Ru3fhw0Dv
uHz74eO7k+5T9+Txh/fvX5+dyMO4anqXBjvvj37YGfGodj6cX51+ODt6t0O7
0vSU11YsghOHnxpXLStHqmjrAfYjqbIJvuCZV8fn//Wf+4fm06c/kNnZ33/x
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
vxflfgRRAAA=

-->

</rfc>
