RFC IRC : Introduction


Le protocole IRC (Internet Relay Chat) a été conçu pendant de nombreuses années pour l'usage de conférences en mode texte. Ce document décrit le protocole IRC actuel.

 Le protocole IRC a été développé sur des systèmes utilisant le protocole réseau TCP/IP, bien qu'il n'y ait pas de raison que cela reste la seule sphère dans laquelle il opère.

 L'IRC, en lui-même, est un système de téléconférence qui (grâce à l'utilisation d'un modèle client/serveur) et se prête à une exécution sur de nombreuses machines, de façon distribuée. Une configuration type comprend un processus unique (le serveur) qui fourni un point d'accès pour les clients (ou d'autres serveurs), et qui traite l'acheminement / le multiplexage requis de messages, ainsi que d'autres fonctions.

1.1 Serveurs

Le serveur est la colonne vertébrale de l'IRC. Il fournit un point auquel peuvent les clients peuvent se connecter pour parler entre eux, et un point auquel les autres serveurs peuvent se connecter, formant un réseau IRC. La seule configuration de réseau autorisée est celle d'un arbre [voir Fig. 1] où chaque serveur agit comme un noeud central pour la partie du réseau qu'il voit.
                         [ Serveur 15 ]  [ Serveur 13 ] [ Serveur 14]
                                 /                \         /
                                /                  \       /
        [ Serveur 11 ] ------ [ Serveur 1 ]       [ Serveur 12]
                              /        \          /
                             /          \        /
                  [ Serveur 2 ]          [ Serveur 3 ]
                    /       \                      \ 
                   /         \                      \ 
           [ Serveur 4 ]    [ Serveur 5 ]         [ Serveur 6 ]
            /    |    \                           /
           /     |     \                         /
          /      |      \____                   /
         /       |           \                 /
[ Serveur 7 ] [ Serveur 8 ] [ Serveur 9 ]   [ Serveur 10 ]

                                  :
                               [ etc. ]
                                  :
[ Fig. 1. Format d'un réseau de serveur IRC ]

1.2 Clients

Un client est un truc qui se connecte à un serveur et qui n'est pas un autre serveur. Chaque client est différencié des autres clients par un pseudonyme unique ayant une longueur maximale de neuf (9) caractères. Voir les règles de grammaire du protocole pour ce qui est autorisé et ce qui ne l'est pas dans un pseudonyme. En plus de leur pseudonyme, tous les serveurs doivent connaître les informations suivantes sur tous les clients : le vrai nom de l'hôte sur lequel le client est exécuté, le nom de l'utilisateur du client sur cet hôte, et le serveur auquel le client est connecté.
 
 

1.2.1 Opérateurs

Pour permettre de maintenir un niveau d'ordre raisonnable dans un réseau IRC, une catégorie de clients spéciale (les opérateurs) est autorisée à exécuter des fonctions de maintenance générale sur le réseau. Bien que les pouvoirs donnés aux opérateurs peuvent être considérés comme 'dangereux', ils sont néanmoins indispensables. Les opérateurs doivent être capable de faire certaines tâches de base, telles que la déconnexion de la reconnection aux serveurs, ce qui est nécessaire pour prévenir les problèmes à long terme de mauvais routage réseau. Etant donné cette nécessité, le protocole décrit ici n'autorise que les opérateurs à effectuer ces fonctions. Voir les section 4.1.7 (SQUIT) et 4.3.5 (CONNECT).

 Un pouvoir plus controversé des opérateurs est la possibilité de retirer par la force un utilisateur connecté au réseau, c'est à dire que les opérateurs peuvent clore une connection entre un client et un serveur. La justification à cela est délicate puisque son abus est à la fois destructif et ennuyant. Pour plus de détails concernant ce type d'actions, voir la section 4.6.1 (KILL).
 
 

1.3 Les canaux

Un canal est groupe nommé d'un ou plusieurs clients qui recevront tous les messages adressés à ce canal. Les canaux sont créés implicitement quand le premier client y accède, et le canal disparaît lorsque le dernier client le quitte. Tant qu'un canal existe, tous les clients peuvent y accéder en utilisant le nom du canal.

 Les noms de canaux sont des chaînes de caractères (commençant par un caractère '&' ou '#') d'une longueur maximale de 200 caractères. En dehors du fait que le premier caractère doive être un '&' ou un '#', la seule restriction sur le nom d'un canal est qu'il ne peut pas contenir d'espace (' '), de contrôle G (^G ou ASCII 7), ou de virgule (',' qui est utilisée comme séparateur de liste dans le protocole).

 Il y a deux types de canaux autorisés par ce protocole. L'un est un canal distribué, qui est connu de tous les serveurs connectés au réseau. Ces canaux commencent par un '#'. L'autre type de canal, reconnaissable à leur nom qui commence par un '&', est marqué comme n'étant accessible qu'aux clients du serveur où le canal existe. En plus de ces deux types, il existe différents modes de canaux, permettant de modifier leur comportement individuel. Voir la section 4.2.3 (commande MODE) pour avoir plus de détails à ce sujet.

Pour créer un nouveau canal, ou pour faire partie d'un canal existant, un utilisateur doit accéder au canal. Si le canal n'existe pas avant l'accès, le canal est créé et l'utilisateur créateur devient opérateur de canal. Si le canal existait déjà au moment de l'accès, l'autorisation ou non d'accès dépend du mode du canal. Par exemple, si le canal est en "invités uniquement" (+i), vous ne pourrez joindre le canal que si vous êtes invités. Le protocole spécifie qu'un utilisateur peux être membre de plusieurs canaux à la fois, mais une limite de dix (10) canaux est recommandée comme étant amplement suffisante aussi bien pour les utilisateurs novices que pour les experts. Voir la section 8.13 pour plus d'informations à ce sujet.

Si le réseau IRC devient disjoint en raison d'une division entre deux serveurs, le canal, de chaque côté, est composé de ceux des clients qui sont connectés aux serveurs du côté respectif de la division, et disparaissent d'un des côtés de la division. Lorsque la division est soignée, les serveurs se reconnectant se communiquent entre eux qui, d'après eux, est dans chaque canal, et le mode de ce canal. Si le canal existe des deux cotés, les accès et les modes sont interprétés de façon inclusive pour que les deux côtés de la nouvelle connection soient d'accord sur quels clients sont dans quels canaux et quels modes ont les canaux.

1.3.1 Les opérateurs de canaux

Les opérateurs de canaux (aussi appelés "chanop") sur un canal donné, sont considérés comme étant propriétaires du "canal". A ce titre, les opérateurs de canaux sont dotés de certains pouvoirs qui leur permettent de garder le contrôle et une forme sanité à leur canal. En tant que propriétaire d'un canal, un opérateur de canal n'est pas tenu d'avoir de raisons pour agir, bien que si leur action sont généralement antisociales ou abusives, il pourrait être raisonable de demander a un opérateur IRC d'intervenir, ou pour les utilisateur de simplement quitter et aller ailleurs pour former leur propre canal.

Les commandes réservées aux opérateurs de canaux sont :
KICK - Ejecte un client d'un canal
MODE - Change le mode d'un canal
INVITE - Invite un client dans un canal à accès sur invitation (mode +i)
TOPIC - Change le titre du canal, dans un canal en mode +t

Un opérateur de canal est identifié par un symbole '@' devant son pseudonyme à chaque fois qu'il est utilisé en association avec le canal (c'est à dire lors des réponses aux commandes NAMES, WHO et WHOIS)