<?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.30 (Ruby 3.4.8) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-vance-socks-v4-05" category="historic" submissionType="independent" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.31.0 -->
  <front>
    <title abbrev="SOCKS4 SPEC">SOCKS Protocol Version 4 Specification</title>
    <seriesInfo name="Internet-Draft" value="draft-vance-socks-v4-05"/>
    <author fullname="Daniel James Vance">
      <organization>Independent</organization>
      <address>
        <email>djvanc@outlook.com</email>
      </address>
    </author>
    <date year="2026" month="February" day="01"/>
    <abstract>
      <?line 35?>

<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>
    <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 40?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>The SOCKS protocol, Version 4 (SOCKSv4), <bcp14>SHALL</bcp14> be used to relay TCP sessions between an application client and an an application server via a SOCKS server, often positioned at a firewall host. The protocol <bcp14>MUST</bcp14> provide transparent access across the firewall for application users.</t>
      <t>The protocol <bcp14>MUST</bcp14> be application-protocol independent, allowing it to be used for various services, including, but not limited to, telnet, ftp, finger, whois, gopher, and WWW (World Wide Web).</t>
      <t>The SOCKS server <bcp14>MUST</bcp14> apply access control mechanisms at the beginning of each TCP session. Following successful establishment, the SOCKS server <bcp14>MUST</bcp14> simply relay data between the client and the application server, incurring minimum processing overhead. The protocol inherently supports applications utilizing encryption, as the SOCKS server is not required to interpret the application protocol's payload.</t>
      <t>Two primary operations are defined: CONNECT and BIND.</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>
        <li>
          <t>IDENT: A protocol (as described in RFC 1413) used by the SOCKS server to verify the user identity of the client.</t>
        </li>
      </ul>
    </section>
    <section anchor="connect-operation">
      <name>CONNECT Operation</name>
      <t>The client <bcp14>MUST</bcp14> initiate a CONNECT request when it desires to establish an outbound TCP connection to an application server.</t>
      <section anchor="connect-request-packet-format">
        <name>CONNECT Request Packet Format</name>
        <t>The client <bcp14>MUST</bcp14> send a request packet with the following structure:</t>
        <table>
          <name>CONNECT Request Packet Format</name>
          <thead>
            <tr>
              <th align="left">Field</th>
              <th align="left">Description</th>
              <th align="center">Size (bytes)</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">VN</td>
              <td align="left">Version Number</td>
              <td align="center">1</td>
            </tr>
            <tr>
              <td align="left">CD</td>
              <td align="left">Command Code</td>
              <td align="center">1</td>
            </tr>
            <tr>
              <td align="left">DSTPORT</td>
              <td align="left">Destination Port</td>
              <td align="center">2</td>
            </tr>
            <tr>
              <td align="left">DSTIP</td>
              <td align="left">Destination IP Address</td>
              <td align="center">4</td>
            </tr>
            <tr>
              <td align="left">USERID</td>
              <td align="left">User ID</td>
              <td align="center">variable</td>
            </tr>
            <tr>
              <td align="left">NULL</td>
              <td align="left">Null Terminator</td>
              <td align="center">1</td>
            </tr>
          </tbody>
        </table>
        <ul spacing="normal">
          <li>
            <t>VN (Version Number): <bcp14>MUST</bcp14> be 4, representing the SOCKS protocol version.</t>
          </li>
          <li>
            <t>CD (Command Code): <bcp14>MUST</bcp14> be 1, indicating a CONNECT request.</t>
          </li>
          <li>
            <t>DSTPORT (Destination Port): The port number of the application server (network byte order).</t>
          </li>
          <li>
            <t>DSTIP (Destination IP): The IP address of the application server (network byte order).</t>
          </li>
          <li>
            <t>USERID (User Identifier): A string of characters representing the client's user ID.</t>
          </li>
          <li>
            <t>NULL: A single byte with a value of all zero bits, terminating the USERID field.</t>
          </li>
        </ul>
      </section>
      <section anchor="connect-processing-and-reply">
        <name>CONNECT Processing and Reply</name>
        <t>The SOCKS server <bcp14>MUST</bcp14> determine whether to grant the request based on criteria such as the source IP address, DSTIP, DSTPORT, USERID, and information obtained via IDENT (cf. RFC 1413).</t>
        <t>If the request is granted, the SOCKS server <bcp14>MUST</bcp14> attempt to establish a TCP connection to the specified DSTPORT on the DSTIP.</t>
        <t>A reply packet <bcp14>MUST</bcp14> be sent to the client upon the establishment of the connection, rejection of the request, or operational failure.</t>
        <t>When the DSTIP field is 0.0.0.1, which the protocol SOCKSv4a (See <xref target="socks-protocol-version-4a"/>) uses for a client wishes to connect using a domain name instead of an IP address, SOCKSv4 implementations <bcp14>MUST</bcp14> treat the the DSTIP field 0.0.0.1 as a normal DSTIP value and treat the following messages as the specification.</t>
      </section>
      <section anchor="connect-reply-packet-format">
        <name>CONNECT Reply Packet Format</name>
        <t>The SOCKS server <bcp14>MUST</bcp14> send a reply packet with the following structure:</t>
        <table>
          <name>CONNECT Reply Packet Format</name>
          <thead>
            <tr>
              <th align="left">Field</th>
              <th align="left">Description</th>
              <th align="center">Size (bytes)</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">VN</td>
              <td align="left">Version Number</td>
              <td align="center">1</td>
            </tr>
            <tr>
              <td align="left">CD</td>
              <td align="left">Command Code</td>
              <td align="center">1</td>
            </tr>
            <tr>
              <td align="left">DSTPORT</td>
              <td align="left">Destination Port</td>
              <td align="center">2</td>
            </tr>
            <tr>
              <td align="left">DSTIP</td>
              <td align="left">Destination IP Address</td>
              <td align="center">4</td>
            </tr>
          </tbody>
        </table>
        <ul spacing="normal">
          <li>
            <t>VN: <bcp14>MUST</bcp14> be 0, representing the reply version code.</t>
          </li>
          <li>
            <t>CD (Result Code): The SOCKS server <bcp14>MUST</bcp14> use one of the following values:</t>
          </li>
        </ul>
        <table anchor="socks-version-4-reply-codes">
          <name>Result Codes</name>
          <thead>
            <tr>
              <th align="left">Reply Code</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">90</td>
              <td align="left">Request granted (Connection successful).</td>
            </tr>
            <tr>
              <td align="left">91</td>
              <td align="left">Request rejected or failed.</td>
            </tr>
            <tr>
              <td align="left">92</td>
              <td align="left">Request rejected due to inability to connect to <tt>identd</tt> on the client.</td>
            </tr>
            <tr>
              <td align="left">93</td>
              <td align="left">Request rejected because the client program and <tt>identd</tt> report different user-IDs.</td>
            </tr>
          </tbody>
        </table>
        <ul spacing="normal">
          <li>
            <t>DSTPORT and DSTIP: These fields <bcp14>MUST</bcp14> be ignored by the client in a CONNECT reply.</t>
          </li>
        </ul>
        <t>If the request is rejected or failed (CD != 90), the SOCKS server <bcp14>MUST</bcp14> close its connection to the client immediately after sending the reply.</t>
        <t>If the request is successful (CD = 90), the SOCKS server <bcp14>MUST</bcp14> immediately begin relaying traffic in both directions between the client connection and the established application server connection. The client <bcp14>MUST</bcp14> then treat its connection to the SOCKS server as if it were a direct connection to the application server.</t>
      </section>
    </section>
    <section anchor="bind-operation">
      <name>BIND Operation</name>
      <t>The client <bcp14>MUST</bcp14> initiate a BIND request when it requires the SOCKS server to prepare for an inbound connection from an application server. This operation is typically used for protocols that involve a secondary data connection originating from the server (e.g., FTP's active mode). A BIND request <bcp14>SHOULD</bcp14> only be sent after a primary connection to the application server has been successfully established using a CONNECT request.</t>
      <section anchor="bind-request-packet-format">
        <name>BIND Request Packet Format</name>
        <t>The client <bcp14>MUST</bcp14> send a request packet identical in format to the CONNECT request:</t>
        <table anchor="socks-version-4-request-format">
          <name>BIND Request Packet Format</name>
          <thead>
            <tr>
              <th align="left">Field</th>
              <th align="left">Description</th>
              <th align="center">Size (bytes)</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">VN</td>
              <td align="left">Version Number (must be 4)</td>
              <td align="center">1</td>
            </tr>
            <tr>
              <td align="left">CD</td>
              <td align="left">Command Code (1 for CONNECT, 2 for BIND)</td>
              <td align="center">1</td>
            </tr>
            <tr>
              <td align="left">DSTPORT</td>
              <td align="left">Destination Port (Network Byte Order)</td>
              <td align="center">2</td>
            </tr>
            <tr>
              <td align="left">DSTIP</td>
              <td align="left">Destination IP Address</td>
              <td align="center">4</td>
            </tr>
            <tr>
              <td align="left">USERID</td>
              <td align="left">User ID (String of Octets)</td>
              <td align="center">variable</td>
            </tr>
            <tr>
              <td align="left">NULL</td>
              <td align="left">Null Terminator (0x00)</td>
              <td align="center">1</td>
            </tr>
          </tbody>
        </table>
        <ul spacing="normal">
          <li>
            <t>VN: <bcp14>MUST</bcp14> be 4.</t>
          </li>
          <li>
            <t>CD: <bcp14>MUST</bcp14> be 2, indicating a BIND request.</t>
          </li>
          <li>
            <t>DSTPORT: The port number of the primary connection to the application server.</t>
          </li>
          <li>
            <t>DSTIP: The IP address of the application server.</t>
          </li>
          <li>
            <t>USERID and NULL: As defined for the CONNECT request.</t>
          </li>
        </ul>
      </section>
      <section anchor="bind-first-reply-socket-assignment">
        <name>BIND First Reply (Socket Assignment)</name>
        <t>The SOCKS server <bcp14>MUST</bcp14> first decide whether to grant the BIND request. The reply format <bcp14>MUST</bcp14> be the same as the CONNECT reply format.</t>
        <t>If the request is rejected (CD != 90), the SOCKS server <bcp14>MUST</bcp14> close its connection to the client immediately.</t>
        <t>If the request is granted (CD = 90):</t>
        <ul spacing="normal">
          <li>
            <t>The SOCKS server <bcp14>MUST</bcp14> obtain a local socket and begin listening for an incoming connection.</t>
          </li>
          <li>
            <t>The SOCKS server <bcp14>MUST</bcp14> send a first reply packet in which the DSTPORT and DSTIP fields are meaningful: DSTPORT <bcp14>MUST</bcp14> contain, in network byte order, the port number of the newly listening socket, and DSTIP <bcp14>MUST</bcp14> contain, in network byte order, the IP address of the SOCKS server's listening interface.</t>
          </li>
          <li>
            <t>If the SOCKS server returns a DSTIP of 0 (the value of constant 'INADDR_ANY'), the client <bcp14>MUST</bcp14> replace this value with the IP address of the SOCKS server to which the client is currently connected.</t>
          </li>
          <li>
            <t>The client <bcp14>MUST</bcp14> use this IP address and port to inform the application server via the primary connection, enabling the application server to initiate the anticipated inbound connection to the SOCKS server.</t>
          </li>
        </ul>
      </section>
      <section anchor="bind-second-reply-connection-established">
        <name>BIND Second Reply (Connection Established)</name>
        <t>The SOCKS server <bcp14>MUST</bcp14> send a second reply packet to the client once the anticipated inbound connection from the application server is established. The reply format <bcp14>MUST</bcp14> be the same as the first reply.</t>
        <t>The SOCKS server <bcp14>MUST</bcp14> check the IP address of the newly connected application server host against the DSTIP value specified in the client's original BIND request.</t>
        <ul spacing="normal">
          <li>
            <t>If the IP addresses match: The CD field in the second reply <bcp14>MUST</bcp14> be set to 90. The SOCKS server <bcp14>MUST</bcp14> then prepare to relay traffic between the client connection and the new application server connection.</t>
          </li>
          <li>
            <t>If a mismatch is found: The CD field in the second reply <bcp14>MUST</bcp14> be set to 91. The SOCKS server <bcp14>MUST</bcp14> immediately close both the client connection and the connection from the application server.</t>
          </li>
        </ul>
        <t>Upon a successful second reply, the client <bcp14>MUST</bcp14> perform I/O on its connection to the SOCKS server as if it were directly connected to the application server.</t>
      </section>
    </section>
    <section anchor="timeout-mechanism">
      <name>Timeout Mechanism</name>
      <t>For both CONNECT and BIND operations, the SOCKS server <bcp14>MUST</bcp14> employ a time limit for the establishment of its connection with the application server (e.g., 2 minutes). If the connection is not established before the time limit expires, the SOCKS server <bcp14>MUST</bcp14> close its connection to the client and abort the operation.</t>
    </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>
      <t>See <xref target="existing-values"/> for the existing values used within the protocol.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC1413">
          <front>
            <title>Identification Protocol</title>
            <author fullname="M. St. Johns" initials="M." surname="St. Johns"/>
            <date month="February" year="1993"/>
            <abstract>
              <t>The Identification Protocol was formerly called the Authentication Server Protocol. It has been renamed to better reflect its function. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="1413"/>
          <seriesInfo name="DOI" value="10.17487/RFC1413"/>
        </reference>
        <reference anchor="SOCKS4">
          <front>
            <title>SOCKS: A protocol for TCP proxy across firewalls</title>
            <author initials="Y.-D." surname="Lee" fullname="Ying-Da Lee">
              <organization>NEC Systems Laboratory, CSTC</organization>
            </author>
            <date>n.d.</date>
          </front>
        </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="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>
      </references>
    </references>
    <?line 212?>

<section anchor="common-operational-extensions">
      <name>Common Operational Extensions</name>
      <t>The content of this appendix is Informative, not Normative. It describes extensions and interpretations of the SOCKSv4 protocol that have been widely adopted in practical deployments and client implementations to enhance functionality and compatibility.</t>
      <section anchor="socks-protocol-version-4a">
        <name>SOCKS Protocol Version 4A</name>
        <t>The SOCKSv4 protocol originally required the client to resolve the target domain name before sending the request. As this is impractical in many environments, the SOCKSv4a protocol was widely adopted to allow the SOCKS server to perform domain name resolution.</t>
        <t>SOCKSv4a, though share a same version number with SOCKSv4, is treated as a complete independent protocol here. The specification will be published elsewhere. The content below is just a simple summary of SOCKSv4a, and it should never be treated as a Normative standard.</t>
        <t>Clients using this protocol must follow these rules:</t>
        <section anchor="socksv4a-request-format">
          <name>SOCKSv4a Request Format</name>
          <t>When a client wishes to connect using a domain name instead of an IP address, the request format follows the CONNECT/BIND format, but with modifications to DSTIP and the end of the request:</t>
          <table>
            <name>SOCKSv4a Request Format</name>
            <thead>
              <tr>
                <th align="left">Field</th>
                <th align="left">Description</th>
                <th align="left">Size (bytes)</th>
                <th align="left">SOCKSv4a Usage</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td align="left">VN</td>
                <td align="left">Version Number (4)</td>
                <td align="left">1</td>
                <td align="left">Unchanged.</td>
              </tr>
              <tr>
                <td align="left">CD</td>
                <td align="left">Command Code (1 or 2)</td>
                <td align="left">1</td>
                <td align="left">Unchanged.</td>
              </tr>
              <tr>
                <td align="left">DSTPORT</td>
                <td align="left">Destination Port</td>
                <td align="left">2</td>
                <td align="left">Unchanged.</td>
              </tr>
              <tr>
                <td align="left">DSTIP</td>
                <td align="left">Destination IP Address</td>
                <td align="left">4</td>
                <td align="left">
                  <bcp14>MUST</bcp14> be set to 0.0.0.1 (0x00000001).</td>
              </tr>
              <tr>
                <td align="left">USERID</td>
                <td align="left">User ID</td>
                <td align="left">variable</td>
                <td align="left">Unchanged.</td>
              </tr>
              <tr>
                <td align="left">NULL</td>
                <td align="left">Null Terminator (0x00)</td>
                <td align="left">1</td>
                <td align="left">Terminates USERID.</td>
              </tr>
              <tr>
                <td align="left">DOMAIN</td>
                <td align="left">Target Domain Name</td>
                <td align="left">variable</td>
                <td align="left">New field: Null-terminated string.</td>
              </tr>
              <tr>
                <td align="left">NULL</td>
                <td align="left">Final Null Terminator</td>
                <td align="left">1</td>
                <td align="left">New field: Terminates DOMAIN.</td>
              </tr>
            </tbody>
          </table>
          <t>A SOCKSv4a client, when sending a request, must append the target domain name string after the NULL terminator of USERID, and terminate the entire request with a second NULL byte.</t>
        </section>
        <section anchor="socksv4a-server-processing">
          <name>SOCKSv4a Server Processing</name>
          <t>When a SOCKSv4a server receives a request where the DSTIP field is 0.0.0.1, it <bcp14>MUST</bcp14> perform the following actions:</t>
          <ol spacing="normal" type="1"><li>
              <t>Treat 0.0.0.1 as a special signal and <bcp14>MUST NOT</bcp14> attempt to connect to this IP address.</t>
            </li>
            <li>
              <t>Start reading data after the USERID's NULL terminator, interpreting it as the target domain name string (DOMAIN), until the next NULL terminator is encountered.</t>
            </li>
            <li>
              <t>The server <bcp14>MUST</bcp14> attempt to resolve this domain name.</t>
            </li>
            <li>
              <t>If resolution is successful, the server attempts to connect to the obtained IP address. If the connection succeeds, it replies 90. If the connection fails, it replies 91.</t>
            </li>
            <li>
              <t>If resolution fails, the server <bcp14>MUST</bcp14> reply 91 and close the connection.</t>
            </li>
          </ol>
        </section>
      </section>
      <section anchor="use-of-dstipdstport-in-bind-requests-for-access-control">
        <name>Use of DSTIP/DSTPORT in BIND Requests for Access Control</name>
        <t>Although DSTIP and DSTPORT in the BIND request (Section 4.1) are intended to identify the application server, many SOCKS server and firewall implementations use them as an Access Control List (ACL) for the inbound connection.</t>
        <ul spacing="normal">
          <li>
            <t>DSTIP as Source Address Restriction: The server strictly requires the IP address of the inbound connection to <bcp14>MUST</bcp14> match the DSTIP specified in the BIND request.</t>
          </li>
          <li>
            <t>DSTPORT as Source Port Restriction (less common): Some implementations may attempt to verify that the source port of the inbound connection matches the DSTPORT in the BIND request. Since the source port of an application server is usually randomly allocated by the operating system, this usage is generally considered unreliable or misleading and is ignored in most implementations.</t>
          </li>
        </ul>
        <t>When initiating a BIND request, a client <bcp14>SHOULD</bcp14> ensure that DSTIP is the address of the application server it expects to receive the connection from, to improve compatibility.</t>
      </section>
      <section anchor="explanation-of-timeout-mechanism">
        <name>Explanation of Timeout Mechanism</name>
        <t>As mandated by Section 5, the SOCKS server <bcp14>MUST</bcp14> employ time limits. In common implementations, timeouts usually trigger under the following circumstances:</t>
        <ul spacing="normal">
          <li>
            <t>CONNECT Timeout: The server is unable to establish a connection with DSTIP:DSTPORT within the specified time.</t>
          </li>
          <li>
            <t>Timeout after the first BIND reply: After the SOCKS server successfully binds the listening socket (sent the first 90 reply), but fails to receive an inbound connection from the application server within the specified time.</t>
          </li>
        </ul>
        <t>When a timeout occurs, the server <bcp14>MUST</bcp14> immediately close the connection with the client and abort all pending network operations.</t>
      </section>
    </section>
    <section anchor="security-analysis">
      <name>Security Analysis</name>
      <t>The SOCKS Version 4 (SOCKSv4) protocol, designed exclusively for TCP proxy traversal across network firewalls, is fundamentally weak from a security perspective as it operates solely at the session layer and lacks intrinsic security mechanisms. Any deployment of SOCKSv4 must be critically assessed against its inherent deficiencies.</t>
      <section anchor="authentication-and-authorization-deficiencies">
        <name>Authentication and Authorization Deficiencies</name>
        <t>SOCKSv4's client identification relies on the USERID field, often intended for use with the IDENT protocol (specified in RFC 1413). This reliance constitutes a major security risk because the IDENT protocol depends on an untrusted daemon on the client host, making the identification process susceptible to trivial spoofing or malicious disabling. Crucially, SOCKSv4 entirely lacks integrated provisions for strong client-to-server or server-to-client authentication, offering no mechanisms for verifying user credentials, passwords, or employing cryptographic challenge-response methods. Consequently, access control (authorization) is managed exclusively by the SOCKS server's local configuration and security policy. A failure in the server's policy or configuration directly risks granting unauthorized network access across the protective boundary of the firewall.</t>
      </section>
      <section anchor="data-integrity-and-transport-limitations">
        <name>Data Integrity and Transport Limitations</name>
        <t>SOCKSv4 does not incorporate any encryption capabilities for the application data stream. As a session layer relay, it forwards all application traffic, including sensitive data, in plaintext. This inherent vulnerability exposes all transmitted data to passive network eavesdropping and interception, resulting in a total absence of confidentiality. Furthermore, the protocol’s operational scope is strictly confined to proxying Transmission Control Protocol (TCP) connections. It provides no native support for the relay of User Datagram Protocol (UDP) traffic or other IP-layer protocols, limiting its utility and scope of protection.</t>
      </section>
      <section anchor="vulnerabilities-associated-with-the-bind-operation">
        <name>Vulnerabilities Associated with the BIND Operation</name>
        <t>The BIND command, used for establishing a socket for an anticipated inbound connection (a callback) from an application server, introduces distinct security challenges. The SOCKS server attempts a rudimentary security check by comparing the source IP address of the incoming connection with the target address (DSTIP) specified in the client's request. However, a malicious actor can easily forge the source IP address of the inbound connection, potentially bypassing this basic server check and facilitating an unauthorized session. Moreover, in network topologies employing Network Address Translation (NAT) or Port Address Translation (PAT), the source IP address is structurally altered, rendering the BIND source address verification mechanism unreliable, ineffectual, or operationally complex to maintain.</t>
      </section>
      <section anchor="denial-of-service-dos-vector">
        <name>Denial of Service (DoS) Vector</name>
        <t>Every successful SOCKS connection consumes finite server resources, including active sockets, allocated memory, and network bandwidth. A direct vector for a Denial of Service attack exists where a malicious client can exploit this resource consumption by initiating a large volume of connection attempts, particularly through the resource-intensive BIND operation, to rapidly exhaust the SOCKS server’s capacity. Although the protocol specifies a basic connection establishment timeout mechanism (2 minutes), this measure is entirely insufficient in scope and rigor to fully mitigate the risks associated with sophisticated DoS attacks.</t>
      </section>
      <section anchor="recommended-mitigation-and-deployment-practices">
        <name>Recommended Mitigation and Deployment Practices</name>
        <t>Given SOCKSv4's security deficiencies, its deployment should be strictly limited to environments designated as highly trusted and subject to stringent local policy control. Where SOCKSv4 must transport sensitive application traffic, the protocol must be encapsulated within an existing secure transport layer, such as a Transport Layer Security (TLS/SSL) or IPsec tunnel, to establish the essential confidentiality and integrity mechanisms that SOCKSv4 lacks. Operators should actively plan for migration to SOCKS Version 5 (RFC 1928), which incorporates native, robust authentication methods.</t>
      </section>
    </section>
    <section anchor="existing-values">
      <name>Existing Values</name>
      <t>The existing values used within the protocol are summarized below:</t>
      <section anchor="socks-protocol-version-number-vn">
        <name>SOCKS Protocol Version Number (VN)</name>
        <ul spacing="normal">
          <li>
            <t>The SOCKS protocol version number <tt>VN</tt> in requests is 4 (0x04).</t>
          </li>
          <li>
            <t>The SOCKS protocol version number <tt>VN</tt> in replies is 0 (0x00).</t>
          </li>
        </ul>
      </section>
      <section anchor="socks-command-code-cd">
        <name>SOCKS Command Code (CD)</name>
        <t>The SOCKS command code <tt>CD</tt> in requests defines two values:</t>
        <ul spacing="normal">
          <li>
            <t>1 (0x01): CONNECT</t>
          </li>
          <li>
            <t>2 (0x02): BIND</t>
          </li>
        </ul>
      </section>
      <section anchor="socks-reply-code-cd">
        <name>SOCKS Reply Code (CD)</name>
        <t>The SOCKS reply code <tt>CD</tt> in replies defines four values:</t>
        <ul spacing="normal">
          <li>
            <t>90 (0x5A): Request granted</t>
          </li>
          <li>
            <t>91 (0x5B): Request rejected or failed</t>
          </li>
          <li>
            <t>92 (0x5C): Request rejected because SOCKS server cannot connect to <tt>identd</tt> on the client</t>
          </li>
          <li>
            <t>93 (0x5D): Request rejected because the client program and <tt>identd</tt> report different user-ids</t>
          </li>
        </ul>
      </section>
      <section anchor="port-number">
        <name>Port Number</name>
        <t>The SOCKS protocol is conventionally known to use TCP port 1080 for its service. This port number has already been registered in the IANA Service Name and Transport Protocol Port Number Registry for the <tt>socks</tt> service.</t>
      </section>
    </section>
    <section numbered="false" anchor="original-auther">
      <name>Original Auther</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>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
