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 à unLa 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 à plusieursLe 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 listeLe 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 serveurAfin 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 à tousLes 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 à clientIl 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 à serveurLa 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 à serveurBien 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.
|