title: Client-To-Client Protocol
text: # Client-To-Client Protocol
  
  Client-To-Client Protocol (en abrégé CTCP) est un type spécial de communication entre clients IRC.
  
  ## Description
  
  CTCP est un protocole commun implémenté par la plupart des clients IRC.
  
  Il permet aux utilisateurs de connaître la version d'un client (CTCP VERSION), l'heure locale (CTCP TIME), certaines informations (CTCP USERINFO), entre autres.
  
  Il peut également être utilisé pour encoder des messages que le protocole IRC ne permettrait pas d'envoyer, comme des messages contenant des sauts de lignes par exemple ou encore communiquer avec des robots (bots) principalement de type "eggdrops".
  
  Enfin, il est utilisé comme moyen d'initier une connexion directe entre deux clients via le protocole DCC en vue de transférer des fichiers ou de discuter, sans passer par le serveur IRC (éliminant ainsi toutes les contraintes liées au dialogue via le serveur IRC).
  
  Une requête CTCP est un message classique (PRIVMSG) qui commence par le caractère ASCII "0x01" suivi du type de CTCP (VERSION, DCC, ...) et qui se termine également par le caractère ASCII "0x01". De ce fait, les caractères NULL (0x00), 0x01, CR (0x0D) et LF (0x0A) sont interdits dans les CTCP. Les caractères non autorisés par le protocole IRC sont ignorés.
  
  Une réponse CTCP est de la même forme qu'une requête, excepté qu'elle se fonde sur une NOTICE plutôt qu'un message classique (PRIVMSG).
  
  