Vos identifiants
Bienvenue
Voir tous les scripts
Pour mirc 6.1 et moins
Pour mirc 6.2
Pour mirc 6.3
Pour mirc 7.1
Top 10
Vous aimez ou détestez
Soumettre un script
Foire aux questions
Forum de discussion



Les bases du Scripting
Le virus "irc.worm.gen"
Le mIRC D'Or
Snippets
ScreenShots
Le Défi du moment
Tag-moi-ça
Le Pire de l'IRC
L'IRC pour les nuls
Configurer UnrealIRCD
Configurer votre box
Attention à l'arnaque!
Usenet et les News
Arrêter de fumer
Un peu d'orthographe
Unreal/Anope Admin
mIRC Script Server
Proxy Web Chat
Magneto for Unreal
Super Poupées
Tour de cartes
L'Equipe
Partenariat
Administration

CodesWall: Déposer et coloriser des codes sources
Web Of Trust
www.chat.exolia.net (Francophone)
fantasya.org (Francophone)
hiersay (francophone)
JhdScript

                                            

Le link entre serveurs - comment ça marche

Article soumis par Averell le 29/09/02

Peut-être que certains d'entre vous se seront posés cette question, à savoir: comment cela se fait-il que je puisse parler sur l'irc à une personne connectée sur un autre serveur que moi? Si la réponse est simple (ces deux serveurs sont linkés) la question se pose autrement: comment fonctionne un link entre serveurs? Avec comme corollaire à la question: pourquoi ne puis-je pas linker avec undernet avec mon serveur irc sous windows que j'ai téléchargé sur le Net? (Qui d'entre vous n'a pas déjà essayé?!)

Link? Vous avez dit link?

Il faut savoir que le link est une connexion spéciale, qui s'effectue exclusivement entre deux ou plusieurs serveurs (on appelle l'ensemble de ces serveurs un réseau irc), ou entre un serveur ou un réseau et un service (voir mon article consacré aux services). Cette connexion se fait souvent sur le même port que le port client (6666 ou 6667) mais parfois sur un port différent.

Initiation d'un link

Le protocole de link entre un serveur A qui sollicite une connexion au serveur B se fait suivant le schéma:


PASS :Un_mot_de_passe
SERVER Nom-du-Service :Bla bla bla


Déjà vous pourrez remarquer une chose: la présence d'un passe, qui est obligatoirement requis. Cela est un moyen d'empêcher un intrus d'essayer de linker avec B. Vous saurez en temps utile pourquoi il est dangereux de laisser linker n'importe qui, et pourquoi cela est-il donc si protégé.

Si la connexion est acceptée par B, alors B va lui aussi faire une requête à A suivant le même schéma (PASS + SERVER). Le nom du serveur et le passe peuvent être différents, cependant. Si les requêtes sont mutuellement acceptées, alors B va renseigner A, par l'intermédiaire de cette connexion, sur tous ses occupants (leurs nicks, leurs états, leurs modes, les canaux dans lesquels ils se trouvent, les topics des canaux, les modes des canaux, etc). A va faire de même pour renseigner B.

Le mécanisme du link

Arrivé à ce stade, que se passe-t-il lorsque, par exemple, vous vous connectez à A et désirez parler à MrZ qui est connecté sur B?

Premièrement, sachez que lorsque vous-vous connectez sur A, vous créez sur B une connexion virtuelle qui porte les mêmes attributs que votre connexion sur A (NICK et USER). Cette connexion virtuelle "fantôme" vous suit pas à pas sur B en répliquant tous vos faits et gestes, et disparaît dès lors que vous vous déconnectez. Ce qui est valable pour un serveur l'est évidemment pour un ensemble de serveurs, si jamais il y a aussi des serveurs C,D,E etc.

Votre pote MrZ connecté sur B a lui aussi sa connexion virtuelle sur A, qui porte le même nom. Lorsque vous vous adressez à MrZ (sur A), vous ne lui parlez pas directement, vous parlez à son fantôme! Par chance, si l'on peut dire, votre fantôme à vous sur B répète exactement ce que vous racontez, donc le vrai MrZ sait ce que vous dites et peut vous répondre. De reste, la connexion virtuelle de MrZ sur A vous répète fidèlement sa réponse.

Et le link dans tout ça? Eh bien, c'est justement le "tuyau" par lequel transitent les informations concernant les répliques et les actions des occupants de tous les serveurs. Pour corser le tout, il faut penser qu'un réseau est souvent constitué de plus de deux serveurs: A est linké à B qui est linké a C qui est linké à D et à E, par exemple. Lorsque MrZ dit "Hello" sur le canal #toto sur son serveur B, l'information suivante est transmise par le link aux deux serveurs qui lui sont immédiatement rattachés (A et C):

:MrZ PRIVMSG #toto :Hello

Mais C doit aussi renseigner D et E et leur renvoyer cette information. Autrement dit, à la moindre action que vous commettez, vous ébranlez tout le réseau! Pensez, si votre réseau comporte 30 ou 40 serveurs, avec sur chacun d'eux un millier de personnes qui n'arrêtent pas de baratiner, vous comprendrez facilement que le link est une connexion particulièrement sollicitée qui requiert le haut débit. Autrement dit, n'essayez pas de penser linker l'undernet avec votre petit PC et un modem 56K, même si le système le permettait!

Ce qu'il faut savoir en plus de tout ça

Première chose, c'est que TOUS les serveurs à l'instant t (au lag près) contiennent un miroir du réseau tout entier. Ce miroir est consitué par les connexions réelles (sur le serveur) et les connexions virtuelles (sur les autres serveurs du réseau). Petite aparté si je puis me permettre: sur mIRC Script Server, dans la fenêtre @Liste des actions, les connexions réelles sont en noir et les connexions virtuelles (en particulier les services si vous les avez mis) sont en bleu.

Seconde chose: il faut savoir que le link permet de "contrôler" tous les serveurs du réseau et ses occupants. Ainsi, si un petit malin arrivait à s'immiscer dans un réseau, il pourrait potentiellement faire n'importe quoi (créer des fausses connexions avec des hosts différents et fantaisistes, faire parler des personnes, obtenir l'op de la part d'un autre op contre sa volonté, et, dans certains cas, devenir ircop). Il est donc TRES IMPORTANT que la connexion link soit sécurisée par un système de passes, et comme ce système a ses failles, les adresses ip des serveurs sollicitant le link sont aussi vérifiées.

Troisième chose: il arrive parfois que la connexion de link entre deux serveurs A et B se casse. Il se crée alors un "Netsplit": le résultat visible est que, toutes les connexions virtuelles de B disparaissent de A, et toutes les connexions virtuelles de A disparaissent de B. Les usagers de ces serveurs voient donc quitter en masse un certain nombre de personnes.

Le contraire du netsplit (le Netmerge?) est le mélange des données des deux serveurs. Il se traduit visuellement par un mass join de personnes, avec récupération de leurs modes (op, voices ou autres). Ces deux phénomènes sont assez détestés des chatteurs, car ils occasionnent du flood sur les gros canaux.

Epilogue

Ceci dit, toujours en aparté, voilà pourquoi vous n'arriverez jamais à linker l'undernet avec mIRC Script Server (ce n'est pas la seule raison: les protocoles de link sont probablement différents, mais l'objet de cet article n'était pas de discuter de ce protocole proprement dit).


Réagir à cet article (1 commentaire)

Titre de l'article Date d'édition Auteur Comm
Différence entre un bot client et un bot de service 01/08/02 Averell 8
Le link entre serveurs - comment ça marche 29/09/02 Averell 1
Créer des fonctions de type $fct() 14/10/02 Vlad 2
Les expressions régulières 9/03/03 Averell 1
Avoir le Saint du jour - Snippet 15/11/04 Vestax 1
Un script open-source 2/2/08 Averell 2


Retour à la page des tutoriaux