Le Protocole IRC


précédentsommairesuivant

3. Initialisation et gestion de la connexion

Quand une connexion est ouverte sur un serveur, celui-ci ne peut déterminer de but-en-blanc si la connexion vient de la part d'un serveur ou d'un client. Ceci dépend de la séquence de commandes envoyée, il y en a deux possibles. Toute autre séquence donne lieu à un message d'erreur ou, plus simplement, à une rupture de la connexion. Les messages doivent être envoyés dans l'ordre de leur présentation pour ceux faisant partie de la séquence d'initialisation.

  • Message PASS
    Paramètre : <le mot de passe>
    Réponses possibles : ERR_NEEDMOREPARAMS (461), ERR_ALREADYREGISTRED (462)


    Ce message est optionnel, certains réseaux exigent que toutes les connexions soient identifiées par un mot de passe, chaque serveur contenant une liste de mots de passe valides pour les clients et une pour les serveurs. Il est très vivement recommandé que ce soit mis en place pour les connexions de serveurs. Ce message doit être le premier envoyé, il peut être envoyé plusieurs fois, seul le dernier est alors pris en compte. Il est invalide s'il est envoyé dans les autres cas.


  • Message NICK
    Paramètres : <nouveau NICK> [<Compteur>]
    Réponses possibles : ERR_NONICKNAMEGIVEN (431), ERR_ERRONEUSNICKNAME (432), ERR_NICKNAMEINUSE (433), ERR_NICKCOLLISION (436)

    Ce message fait partie de la séquence d'initialisation de connexion client/serveur, il permet à un client de spécifier le nick sous lequel il sera identifié. Il permet également à un client de changer de nick une fois la connexion initialisée, et peut donc être envoyé n'importe quand. Le compteur permet simplement d'indiquer à un serveur combien de serveur il y a entre le serveur qui lui a fait passer l'info et le client. Si un client fournit un compteur, alors il doit être ignoré. Si un serveur reçoit une information de changement de nick (de la part d'un autre serveur) et que le nouveau nick est déjà enregistré, alors il doit imédiatement aretter de transmettre l'info et envoyer une commande KILL ainsi qu'un ERR_NICKCOLLISION à l'attention du client pour déconnecter les deux clients. Si un client tente de changer de nick pour un nick déjà utilisé, le serveur auquel il est directement connecté peut générer un ERR_NICKNAMEINUSE et éviter ainsi l'envoi de KILL (et donc les déconnexions).


  • Message USER
    Paramètres : <nom d'utilisateur> <domaine> <nom de serveur> <nom réel>
    Réponses possibles : ERR_NEEDMOREPARAMS (461), ERR_ALREADYREGISTRED (462)

    Ce message est la seconde et dernière étape d'initialisation de connexion client/serveur, il permet à un client de s'identifier clairement en indiquant ses nom, domaine de connexion, serveur de connexion et nom réel. En général, les paramètres domaine et serveur sont ignorés quand ils viennent directement du client, et sont renseignés par le serveur lui-même. Comme il est très facile de mentir sur ce type d'informations, il est conseillé d'avoir recours à un serveur d'identité s'il y en a un présent sur le client.


  • Message SERVER
    Paramètres : <nom de serveur> <Compteur> <infos>
    Réponses possibles : ERR_ALREADYREGISTRED (462)

    Ce message est la séquence d'initialisation d'une connexion serveur/serveur. Le compteur doit être à 1 quand c'est le nouveau serveur qui l'envoie. Ensuite le serveur qui reçoit la connection doit envoyer le message en le préfixant de son nom, puis chaque serveur doit incrémenter le compteur. Une erreur à la suite de ce message réside le plus souvent en la coupure de la connection et l'envoi d'un message ERROR.


  • Message QUIT
    Paramètres : [<Message de départ>]
    Réponses possibles : Aucune

    Cette commande permet d'indiquer la déconnexion d'un client, si un serveur la reçoit d'un client, il est ensuite censé couper la connexion. Le message est facultatif. En cas de split (coupure d'une connection serveur/serveur), alors un message QUIT doit être émis pour chaque client derrière le serveur. De plus, le message doit être composé des noms des deux serveurs de part et d'autre de la connexion, d'abord celui qui est toujours accessible, et ensuite celui qui ne l'est plus.


  • Message SQUIT
    Paramètres : <serveur> [<commentaire>]
    Réponses possibles : ERR_NOPRIVILEGES (481), ERR_NOSUCHSERVER (402)

    Ce message est l'équivalent du message QUIT pour les serveurs, il peut également être utilisé par un IRCOP pour déconnecter un serveur.


  • Messages PING/PONG
    Paramètres : [<param1> [<param2>]]
    Réponses possibles : ERR_NOORIGIN (409), ERR_NOSUCHSERVER (402)

    Le classique PING/PONG, il permet de tester la validité d'une connection, tout client recevant un message PING doit renvoyer un message PONG avec les mêmes arguments, sous peine de voir sa connection éventuellement coupée.


  • Message OPER
    Paramètres : <utilisateur> <mot de passe>
    Réponses possibles : ERR_NEEDMOREPARAMS (461), RPL_YOUREOPER (381), ERR_NOOPERHOST (491), ERR_PASSWDMISMATCH (464)

    Ce message permet à un client de s'identifier en tant qu'IRCOP. Si l'authentification est validée, alors un message "MODE +o" est retransmis pour le pseudo identifié.


  • Message KILL
    Paramètres : <nick> <commentaire>
    Réponses possibles : ERR_NEEDMOREPARAMS (461), ERR_NOPRIVILEGES (481), ERR_NOSUCHNICK (401), ERR_CANTKILLSERVER (483)

    Ce message est utilisé par les serveurs et les IRCOPs et permet de déconnecter un utilisateur de force. Il est utilisé dans des cas tels qu'une atteinte grâve aux règles du réseau, ou une collision de nick.


  • Message ERROR
    Paramètres : <message d'erreur>
    Réponses possibles : Aucune

    Ce message est utilisé par les serveurs pour signaler une erreur grave ou fatale. Il peut également être envoyé à un utilisateur pour signaler l'erreur sans que ce client en soit la cause (très utile pour les IRCOPs par exemple), en l'encapsulant dans une NOTICE.

précédentsommairesuivant

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

Ce document est issu de http://www.developpez.com et reste la propriété exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise à l'obtention préalable de l'autorisation de l'auteur.