RFC IRC : Concepts IRC


Cette section décrit les concepts sous-jacents à l'organisation du protocole IRC et comment les implémentations actuelles délivrent les différentes classes de messages.
                          1--                              A        D---4
                          2--/ \      /
                                B----C
                               /                                    3        E
   Serveurs: A, B, C, D, E         Clients: 1, 2,3, 4

                    [ Fig. 2. Exemple d'un petit réseau IRC ]

3.1 Communication un à un

La communication sur une base un à un n'a lieu que par les clients, étant donné que la plupart du trafic serveur/serveur n'est pas causé par les serveurs qui se parlent entre eux. Afin de fournir un moyen sécurisé pour les clients de parler entre eux, il est nécessaire que tous les serveurs, pour atteindre un client, soient capables d'envoyer un message dans une seule direction sur l'arbre des connections. Le chemin d'un message remis est le plus court entre deux points sur l'arbre.

Les exemples suivants se réfèrent tous à la figure 2 ci-dessus.

Exemple 1 :
Un message entre les clients 1et 2 n'est vu que par le serveur A, qui l'envoi directement au client 2.
Exemple 2 :
Un message entre les clients 1 et 3 est vu par les serveurs A & B, et par le client 3. Aucun autre client n'est autorisé à voir le message.
Exemple 3 :
Un message entre les clients 2 et 4 n'est vu que par les serveurs A, C, C & D et par le client 4.

3.2 Un à plusieurs

Le but principal d'IRC est de fournir un forum qui permette de réaliser des conférences de façon simple et efficace (conversation un à plusieurs). L'IRC offre plusieurs moyens d'accomplir cela, chacun avec des buts différents.

3.2.1 A une liste

Le moyen le moins efficace d'avoir une conversation un à plusieurs consiste, pour chaque client, à parler à une 'liste' d'utilisateurs. La façon dont cela à lieu est triviale : chaque client donne une liste de destinataires auxquels le message doit être délivré, et le serveur découpe le message et en distribue une copie à chacun des destinataires. Ce n'est pas aussi efficace que l'utilisation d'un groupe puisque la liste de destinataire est décomposée et la distribution a lieu sans vérifier que le message soit envoyé en double sur un même chemin.

3.2.2 A un groupe (canal)

Sur IRC, un canal a un rôle équivalent à celui d'un groupe de multi-diffusion ; leur existence est dynamique (ils vont et viennent au fur et à mesure que les gens accèdent et quittent les canaux) et la conversation qui a lieu sur un canal n'est envoyé qu'aux serveurs qui ont des utilisateurs sur ce canal. Cette action est alors répétée par chaque combinaison client/serveur jusqu'à ce que le message original est atteint tous les membres d'un canal.

Les exemples suivants se réfèrent tous à la figure 2.

Exemple 4 :
Pour tout canal qui contient un seul client, les messages du canal vont au serveur et nul par ailleurs.
Exemple 5 :
Il y a deux clients dans un canal. Tous les messages traversent le chemin comme s'ils étaient des messages privés entre les deux clients en dehors du canal.
Exemple 6 :
Les clients 1, 2 et 3 sont dans un canal. Tous les messages adressés à un canal sont envoyés à tous les clients, et à ceux des serveurs qui serraient traversé par le message s'il était un message privé entre deux clients. Si le client 1 envoie un message, il est envoyé au client 2, et par le serveur B, au client 3.<

3.2.3 A un masque d'hôte/de serveur

Afin de fournir aux opérateurs IRC un mécanisme pour envoyer des messages à un grand nombre d'utilisateurs apparentés, on fournit des masques de serveurs et d'hôtes. Ces messages sont envoyés à ceux des serveurs et des hôtes dont l'adresse correspond au masque. Ces messages ne sont envoyés qu'aux endroits où il y a des utilisateurs, de façon similaire a celle des canaux.

3.3 Un à tous

Les messages un à tous peuvent être décrit comme des messages de type diffusion, envoyés à tous les clients, les serveurs, ou les deux. Sur un grand réseau d'utilisateurs et de serveurs, un simple message peut générer beaucoup de trafic, puisqu'il est envoyé à travers le réseau pour atteindre toutes les destinations.

Pour certains messages, il est nécessaire de les diffuser à tous les serveurs, de façon à ce que les informations de statut de chaque serveur soient raisonnablement identiques entre tous les serveurs.

3.3.1 Client à client

Il n'y a pas de classe de message qui, à partir d'un simple message, résulte en un message envoyé à tous les autres clients.

3.3.2 Client à serveur

La plupart des commandes qui résultent en un changement d'état (tels que l'appartenance à un canal, le mode d'un canal, le statut d'un utilisateur, etc.) doivent être, par défaut, envoyés à tous les serveurs, et cet envoi ne peut pas être altéré par le client.

3.3.3 Serveur à serveur

Bien que la plupart des messages entre les serveurs soient distribués à 'tous' les autres serveurs, cela n'est nécessaire que pour les messages qui affectent soit un utilisateur, soit un canal, soit un serveur. Etant donné que cela constitue l'essentiel des éléments de l'IRC, la quasi-totalité des messages issus d'un serveur est diffusée à tous les autres serveurs connectés.