3. Procedure for TCP-based clients (Verfahren für TCP-basierte Clients)
Wenn ein TCP-basierter Client (TCP-based Client) eine Verbindung zu einem Objekt herstellen möchte, das nur über eine Firewall erreichbar ist (eine solche Bestimmung wird der Implementierung überlassen), muss er eine TCP-Verbindung zum entsprechenden SOCKS-Port auf dem SOCKS-Serversystem (SOCKS Server System) öffnen. Der SOCKS-Dienst (SOCKS Service) befindet sich konventionell auf TCP-Port 1080. Wenn die Verbindungsanfrage (Connection Request) erfolgreich ist, tritt der Client in eine Aushandlung (Negotiation) für die zu verwendende Authentifizierungsmethode (Authentication Method) ein, authentifiziert sich mit der gewählten Methode und sendet dann eine Relay-Anfrage (Relay Request). Der SOCKS-Server bewertet die Anfrage und stellt entweder die entsprechende Verbindung her oder lehnt sie ab.
Sofern nicht anders angegeben, stellen die in Paketformat-Diagrammen erscheinenden Dezimalzahlen die Länge des entsprechenden Feldes in Oktetten dar. Wenn ein bestimmtes Oktett einen bestimmten Wert annehmen muss, wird die Syntax X'hh' verwendet, um den Wert des einzelnen Oktetts in diesem Feld anzugeben. Wenn das Wort „Variable" verwendet wird, zeigt es an, dass das entsprechende Feld eine variable Länge hat, die entweder durch ein zugeordnetes (ein- oder zwei-Oktett-) Längenfeld oder durch ein Datentypfeld definiert ist.
Der Client verbindet sich mit dem Server und sendet eine Versionskennung/Methodenauswahlnachricht (Version Identifier/Method Selection Message):
+----+----------+----------+
|VER | NMETHODS | METHODS |
+----+----------+----------+
| 1 | 1 | 1 to 255 |
+----+----------+----------+
Das VER-Feld ist für diese Version des Protokolls auf X'05' gesetzt. Das NMETHODS-Feld enthält die Anzahl der Methodenkennung-Oktette (Method Identifier Octet), die im METHODS-Feld erscheinen.
Der Server wählt eine der in METHODS angegebenen Methoden aus und sendet eine METHOD-Auswahlnachricht (METHOD Selection Message):
+----+--------+
|VER | METHOD |
+----+--------+
| 1 | 1 |
+----+--------+
Wenn die ausgewählte METHOD X'FF' ist, ist keine der vom Client aufgelisteten Methoden akzeptabel, und der Client muss die Verbindung schließen.
Die derzeit für METHOD definierten Werte sind:
- X'00' NO AUTHENTICATION REQUIRED (Keine Authentifizierung erforderlich)
- X'01' GSSAPI
- X'02' USERNAME/PASSWORD (Benutzername/Passwort)
- X'03' to X'7F' IANA ASSIGNED (IANA zugewiesen)
- X'80' to X'FE' RESERVED FOR PRIVATE METHODS (Reserviert für private Methoden)
- X'FF' NO ACCEPTABLE METHODS (Keine akzeptablen Methoden)
Der Client und der Server treten dann in eine methodenspezifische Unter-Aushandlung (Method-Specific Sub-Negotiation) ein.
Beschreibungen der methodenabhängigen Unter-Aushandlungen erscheinen in separaten Memos.
Entwickler neuer METHOD-Unterstützung für dieses Protokoll sollten sich an die IANA wenden, um eine METHOD-Nummer zu erhalten. Das ASSIGNED NUMBERS-Dokument sollte für eine aktuelle Liste der METHOD-Nummern und ihrer entsprechenden Protokolle konsultiert werden.
Konforme Implementierungen (Compliant Implementation) müssen GSSAPI unterstützen und sollten USERNAME/PASSWORD-Authentifizierungsmethoden unterstützen.