<?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-v4-09" category="historic" submissionType="independent" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.33.0 -->
  <front>
    <title abbrev="SOCKS4">SOCKS Protocol Version 4</title>
    <seriesInfo name="Internet-Draft" value="draft-vance-socks-v4-09"/>
    <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 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 <xref target="RFC1413"/>) 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. <xref target="RFC1413"/>).</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>
      </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">
        <name>BIND First Reply</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">
        <name>BIND Second Reply</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="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="RFC768">
          <front>
            <title>User Datagram Protocol</title>
            <author fullname="J. Postel" initials="J." surname="Postel"/>
            <date month="August" year="1980"/>
          </front>
          <seriesInfo name="STD" value="6"/>
          <seriesInfo name="RFC" value="768"/>
          <seriesInfo name="DOI" value="10.17487/RFC0768"/>
        </reference>
        <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="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="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="RFC1948">
          <front>
            <title>Defending Against Sequence Number Attacks</title>
            <author fullname="S. Bellovin" initials="S." surname="Bellovin"/>
            <date month="May" year="1996"/>
            <abstract>
              <t>IP spoofing attacks based on sequence number spoofing have become a serious threat on the Internet (CERT Advisory CA-95:01). While ubiquitous crypgraphic authentication is the right answer, we propose a simple modification to TCP implementations that should be a very substantial block to the current wave of attacks. This memo provides information for the Internet community. This memo does not specify an Internet standard of any kind.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="1948"/>
          <seriesInfo name="DOI" value="10.17487/RFC1948"/>
        </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="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="RFC4953">
          <front>
            <title>Defending TCP Against Spoofing Attacks</title>
            <author fullname="J. Touch" initials="J." surname="Touch"/>
            <date month="July" year="2007"/>
            <abstract>
              <t>Recent analysis of potential attacks on core Internet infrastructure indicates an increased vulnerability of TCP connections to spurious resets (RSTs), sent with forged IP source addresses (spoofing). TCP has always been susceptible to such RST spoofing attacks, which were indirectly protected by checking that the RST sequence number was inside the current receive window, as well as via the obfuscation of TCP endpoint and port numbers. For pairs of well-known endpoints often over predictable port pairs, such as BGP or between web servers and well-known large-scale caches, increases in the path bandwidth-delay product of a connection have sufficiently increased the receive window space that off-path third parties can brute-force generate a viable RST sequence number. The susceptibility to attack increases with the square of the bandwidth, and thus presents a significant vulnerability for recent high-speed networks. This document addresses this vulnerability, discussing proposed solutions at the transport level and their inherent challenges, as well as existing network level solutions and the feasibility of their deployment. This document focuses on vulnerabilities due to spoofed TCP segments, and includes a discussion of related ICMP spoofing attacks on TCP connections. This memo provides information for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4953"/>
          <seriesInfo name="DOI" value="10.17487/RFC4953"/>
        </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="I-D.vance-socks-v4a">
          <front>
            <title>SOCKS Protocol Version 4A</title>
            <author fullname="Daniel James Vance" initials="D. J." surname="Vance">
              <organization>Independent</organization>
            </author>
            <date day="15" month="February" year="2026"/>
            <abstract>
              <t>   This document specifies SOCKS 4A, an extension to the SOCKS Version 4
   protocol.  This extension 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.

Discussion Venues

   This note is to be removed before publishing as an RFC.

   Source for this draft and an issue tracker can be found at
   https://github.com/4socks/socks4.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-vance-socks-v4a-01"/>
        </reference>
      </references>
    </references>
    <?line 210?>

<section anchor="relationship-with-socks-4a">
      <name>Relationship with SOCKS 4A</name>
      <t>The relationship between the base SOCKSv4 protocol and the variant commonly known as SOCKS 4A (<xref target="I-D.vance-socks-v4a"/>) is frequently misunderstood as a simple backward-compatible extension. In strict architectural terms, SOCKS 4A functions as an independent protocol that occupies the same version number space while introducing semantic behaviors that directly conflict with the original specification. While SOCKSv4 mandates that the client perform destination address resolution prior to the request—thereby transmitting a definitive four-octet IPv4 address—SOCKS 4A introduces a mechanism where the server assumes responsibility for DNS resolution. This shift is triggered by a specific heuristic where the client provides an invalid IP address in the format 0.0.0.x.</t>
      <t>This intersection creates a significant protocol conflict. According to the original SOCKSv4 design, a server receiving a destination IP in the 0.0.0.x range should treat it as a literal, albeit unreachable, network address and immediately reject the request with a failure code. However, a SOCKS 4A-compliant server intercepts this specific bit pattern to signal the presence of a trailing variable-length domain name field located after the initial null-terminated user identifier. This divergence means that a standard SOCKSv4 server cannot safely ignore the additional data appended by a 4A client; doing so would result in the trailing domain name being misinterpreted as the start of the application data stream or causing a synchronization error in the TCP buffer. Consequently, SOCKS 4A should be treated as a distinct experimental branch that successfully gained market dominance due to the practical necessity of server-side resolution in environments where clients lack direct DNS access, such as those described in the context of private addressing in <xref target="RFC1918"/>.</t>
    </section>
    <section anchor="operational-considerations">
      <name>Operational Considerations</name>
      <t>The following sections provide a analysis of the operational realities of SOCKS version 4, accounting for its historical evolution and the practical interpretations that have shaped its deployment in modern network environments.</t>
      <section anchor="operational-security-and-access-control-in-bind">
        <name>Operational Security and Access Control in BIND</name>
        <t>In practical deployments, the BIND operation deviates significantly from its theoretical description as a simple port-binding utility. While the protocol fields DSTIP and DSTPORT are nominally intended to identify the target application server, most production-grade SOCKS implementations utilize these fields as a primitive form of an Access Control List (ACL). This behavior is driven by the security requirements outlined in RFC 3552, as allowing an unrestricted inbound socket on a firewall host would present an unacceptable internal network risk. Most servers enforce a strict source-address restriction, ensuring that the incoming connection to the temporary listening port originates specifically from the IP address provided in the client’s initial BIND request.</t>
        <t>Furthermore, the operational stability of the BIND command is often compromised by the presence of Network Address Translation (NAT) devices between the SOCKS server and the application server. If the application server's perceived IP address changes due to a NAT gateway, the SOCKS server's security check will fail, returning a rejection code despite a legitimate connection attempt. While some implementations attempt to extend this verification to the source port (DSTPORT), this is widely considered an unreliable practice. As per the transport layer behaviors defined in <xref target="RFC9293"/>, source ports for outbound connections are typically ephemeral and allocated dynamically by the operating system’s stack, making them unpredictable for the purpose of pre-configured access control.</t>
      </section>
      <section anchor="implementation-of-state-management-and-timeouts">
        <name>Implementation of State Management and Timeouts</name>
        <t>The lack of explicit state-tracking mechanisms in the SOCKSv4 control plane necessitates the implementation of aggressive timeout policies to prevent resource exhaustion. Standard operational practice involves two distinct timer categories: the connection establishment timer and the idle listener timer. For CONNECT operations, servers typically implement a 120-second limit for the three-way handshake with the destination host. Failure to receive an ACK within this window results in a code 91 reply and immediate teardown of the client-to-proxy segment. This prevents the "hanging" of file descriptors which could be exploited in a low-bandwidth Denial of Service attack as categorized in <xref target="RFC4732"/>.</t>
        <t>The BIND operation introduces a more complex state requirement. After the SOCKS server sends the initial success reply containing its local listening port, it must maintain an open socket waiting for the application server's secondary connection. Modern implementations strictly limit this "waiting" state to a narrow window, often significantly shorter than the default TCP timeout. If the expected inbound SYN packet does not arrive within this period, the server must abort the BIND process to free the ephemeral port for other users. This rigorous management of the listener state is a critical operational safeguard, ensuring that a single misbehaving or malicious client cannot monopolize the proxy's available port range or impact the overall availability of the gateway service.</t>
      </section>
    </section>
    <section anchor="security-analysis">
      <name>Security Analysis</name>
      <t>The SOCKS Version 4 (SOCKSv4) protocol was designed as a pragmatic mechanism for TCP proxying across firewalls in an era when the Internet threat model was significantly less hostile than at present. By contemporary standards, as established in <xref target="RFC3552"/> and <xref target="RFC3365"/>, SOCKSv4 is considered fundamentally insecure. It fails to meet the "strong security" requirements mandated for Internet protocols because it lacks native mechanisms for mutual authentication, data confidentiality, and integrity protection.</t>
      <section anchor="weaknesses-in-identification-and-authentication">
        <name>Weaknesses in Identification and Authentication</name>
        <t>The primary mechanism for client identification in SOCKSv4 is the USERID field, typically leveraged in conjunction with the Identification Protocol (IDENT) as defined in <xref target="RFC1413"/>. As noted in the security considerations of <xref target="RFC1413"/>, the information returned by an IDENT server is only as trustworthy as the client host and the network path. In a modern decentralized network, a malicious actor can easily spoof IDENT responses or disable the service entirely, rendering the USERID field unsuitable for any meaningful authorization decisions. Furthermore, SOCKSv4 provides no facility for server-to-client authentication, leaving the client vulnerable to "rogue proxy" attacks where an adversary intercepts the connection and masquerades as the intended SOCKS server. This lack of cryptographic authentication deviates from the best practices for session-layer protocols outlined in <xref target="RFC1928"/>.</t>
      </section>
      <section anchor="absence-of-confidentiality-and-integrity">
        <name>Absence of Confidentiality and Integrity</name>
        <t>SOCKSv4 operates strictly as a plaintext relay. It does not incorporate any cryptographic transforms to protect the application data stream. Consequently, all traffic traversing a SOCKSv4 proxy is susceptible to passive eavesdropping and active injection or modification by any entity with access to the network path. Under the criteria defined in BCP 61 <xref target="RFC3365"/>, protocols that fail to implement strong encryption are insufficient for use over the public Internet. While SOCKSv4 is confined to proxying TCP connections as defined in <xref target="RFC9293"/>, its inability to handle UDP traffic (defined in <xref target="RFC768"/>) or provide per-packet integrity checks means that even the protocol’s control plane—such as the BIND and CONNECT requests—can be manipulated by an on-path attacker.</t>
      </section>
      <section anchor="vulnerabilities-in-the-bind-operation">
        <name>Vulnerabilities in the BIND Operation</name>
        <t>The BIND command, intended to support protocols requiring secondary inbound connections, presents a significant attack surface. The protocol’s reliance on a rudimentary source IP address check to validate the incoming "callback" connection is inherently flawed. As documented in <xref target="RFC1948"/> and <xref target="RFC4953"/>, IP address-based authentication is easily subverted through IP spoofing. Additionally, the prevalence of Network Address Translation (NAT) and middleboxes in modern architectures frequently masks the true source IP of the remote host, making the SOCKSv4 BIND verification either operationally brittle or entirely ineffective. An attacker can exploit this weakness to hijack the inbound socket, potentially gaining unauthorized access to the client’s internal network environment.</t>
      </section>
      <section anchor="susceptibility-to-resource-exhaustion">
        <name>Susceptibility to Resource Exhaustion</name>
        <t>SOCKSv4 lacks robust flow control and state management for its control plane, making it a viable vector for Denial of Service (DoS) attacks. Every request, particularly the BIND operation which requires the server to listen for an indeterminate period, consumes finite system resources including memory, file descriptors, and kernel state. While the protocol suggests a two-minute timeout for connection establishment, this fixed value is not an adequate defense against coordinated resource exhaustion attacks. Without the modern rate-limiting and state-tracking mechanisms discussed in <xref target="RFC4732"/>, a SOCKSv4 server can be easily overwhelmed by a relatively small number of malicious clients.</t>
      </section>
      <section anchor="deployment-limitations-and-mitigation">
        <name>Deployment Limitations and Mitigation</name>
        <t>Given the deficiencies detailed above, SOCKSv4 is classified as a "Historic" protocol and its use is strongly discouraged. In scenarios where legacy requirements necessitate its deployment, it <bcp14>MUST</bcp14> be encapsulated within a secure transport layer, such as Transport Layer Security (TLS) defined in <xref target="RFC8446"/> or an IPsec tunnel as defined in <xref target="RFC4301"/>, to provide the requisite security properties. Operators are urged to migrate to SOCKS Version 5 <xref target="RFC1928"/>, which supports extensible authentication (GSS-API, etc.) and UDP proxying, or to modern proxying solutions that satisfy the security requirements of the IETF "Danvers Doctrine" as memorialized in <xref target="RFC3365"/>.</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">
        <name>SOCKS Protocol Version Number</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">
        <name>SOCKS Command Code</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">
        <name>SOCKS Reply Code</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-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>
  </back>
  <!-- ##markdown-source:
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
7qwzi45hLihpMoXfmOqrRvwqv/8Doc8OEplVAAA=

-->

</rfc>
