Aller au contenu principal

3. Procedure for TCP-based clients (Procédure pour les clients TCP)

Lorsqu'un client basé sur TCP (TCP-based Client) souhaite établir une connexion à un objet qui n'est accessible que via un pare-feu (une telle détermination est laissée à l'implémentation), il doit ouvrir une connexion TCP au port SOCKS approprié sur le système serveur SOCKS (SOCKS Server System). Le service SOCKS (SOCKS Service) est conventionnellement situé sur le port TCP 1080. Si la demande de connexion (Connection Request) réussit, le client entre dans une négociation (Negotiation) pour la méthode d'authentification (Authentication Method) à utiliser, s'authentifie avec la méthode choisie, puis envoie une demande de relais (Relay Request). Le serveur SOCKS évalue la demande et établit la connexion appropriée ou la refuse.

Sauf indication contraire, les nombres décimaux apparaissant dans les diagrammes de format de paquet représentent la longueur du champ correspondant, en octets. Lorsqu'un octet donné doit prendre une valeur spécifique, la syntaxe X'hh' est utilisée pour désigner la valeur de l'octet unique dans ce champ. Lorsque le mot « Variable » est utilisé, il indique que le champ correspondant a une longueur variable définie soit par un champ de longueur associé (d'un ou deux octets), soit par un champ de type de données.

Le client se connecte au serveur et envoie un message d'identification de version/sélection de méthode (Version Identifier/Method Selection Message) :

                +----+----------+----------+
|VER | NMETHODS | METHODS |
+----+----------+----------+
| 1 | 1 | 1 to 255 |
+----+----------+----------+

Le champ VER est défini sur X'05' pour cette version du protocole. Le champ NMETHODS contient le nombre d'octets d'identificateur de méthode (Method Identifier Octet) qui apparaissent dans le champ METHODS.

Le serveur sélectionne l'une des méthodes données dans METHODS et envoie un message de sélection de METHOD (METHOD Selection Message) :

                      +----+--------+
|VER | METHOD |
+----+--------+
| 1 | 1 |
+----+--------+

Si le METHOD sélectionné est X'FF', aucune des méthodes listées par le client n'est acceptable, et le client doit fermer la connexion.

Les valeurs actuellement définies pour METHOD sont :

  • X'00' NO AUTHENTICATION REQUIRED (Aucune authentification requise)
  • X'01' GSSAPI
  • X'02' USERNAME/PASSWORD (Nom d'utilisateur/Mot de passe)
  • X'03' to X'7F' IANA ASSIGNED (Assigné par l'IANA)
  • X'80' to X'FE' RESERVED FOR PRIVATE METHODS (Réservé pour les méthodes privées)
  • X'FF' NO ACCEPTABLE METHODS (Aucune méthode acceptable)

Le client et le serveur entrent ensuite dans une sous-négociation spécifique à la méthode (Method-Specific Sub-Negotiation).

Les descriptions des sous-négociations dépendantes de la méthode apparaissent dans des mémos séparés.

Les développeurs de nouveau support METHOD pour ce protocole doivent contacter l'IANA pour obtenir un numéro METHOD. Le document ASSIGNED NUMBERS doit être consulté pour une liste actuelle des numéros METHOD et leurs protocoles correspondants.

Les implémentations conformes (Compliant Implementation) doivent prendre en charge GSSAPI et devraient prendre en charge les méthodes d'authentification USERNAME/PASSWORD.