Internet Relay Chat (IRC) è unprotocollo dimessaggistica istantanea suInternet. Consente sia la comunicazione diretta fra due utenti che il dialogo contemporaneo di gruppi di persone raggruppati in "stanze"[1] di discussione, chiamate "canali".
Il protocollo di messaggistica istantanea venne creato daJarkko Oikarinen nell'agosto 1988 per sostituire un programma chiamato MUT (MultiUserTalk) che girava sullaBBSfinlandeseOuluBox. Jarkko Oikarinen trovò l'ispirazione dalla Bitnet Relay Chat che operava sulla rete Bitnet.[2]
L'RFC 1459 descrive i protocolli di comunicazione utilizzati per l'IRC. Più recentemente l'IRC2 viene regolato dai documenti,RFC 2810, ilRFC 2811, ilRFC 2812 e ilRFC 2813, che descrivono un insieme di proposte di estensione al modello IRC. Molteimplementazioni IRC si basano sul IRC2 con variadd-on che superano le incompatibilità causate dalle differenze tra i software utilizzati per la gestione deiserver di rete.
L'IRC è unprotocollo di rete aperto che utilizza il protocollo di trasmissioneTCP, e, opzionalmente ilTransport Layer Security. Unserver IRC, chiamatoIRCd, è in grado inoltre di connettersi con altriserver IRC, formando così una rete di comunicazione alla quale gli utenti accedono mediante unclient. Molti server IRC non richiedono all'utente diautenticarsi, ma va comunque specificato unnickname univoco a livello della rete IRC.
L'IRC è un protocolloplaintext, questo significa che è possibile, anche se con qualche inconveniente, usarlo tramite una connessionesocket di tiporaw. Tuttavia non vi è modo di definire il carattere di decodifica dei messaggi e dei nickname, rendendo impossibile il filtraggio di caratteri non-ASCII.
Il mezzo di comunicazione in una sessione IRC è il "canale": un nome che identifica un gruppo di utenti. In tale contesto tutti gli appartenenti sono abilitati ad inviare messaggi, leggibili unicamente dagli utenti dello stesso gruppo. Un canale IRC si crea automaticamente nel momento in cui il primo utente vi acceda per la prima volta. I nomi dei canali appartenenti ad una rete IRC si identificano col carattere "#" (cancelletto) iniziale, mentre quelli locali, specifici di unserver, sono identificati con il carattere "&".[N 1] Per ovviare a problemi di desincronizzazione dei canali, quando dei server si scollegano, sono stati creati i canali "!" senza problemi di sincronismo, ma hanno ottenuto scarso successo.
Il primo utente che entra in un canale acquisisce automaticamente dei privilegi che può poi cedere a qualsiasi altro utente presente nel medesimo canale. Questi utenti vengono chiamatioperatori di canale. Vi sono anche diversi utenti con privilegi differenti e con compiti di amministrazione della rete; questi sono chiamati IRC Operator[N 2] o in italiano "operatori IRC". Nelle implementazioni più recenti è anche possibileregistrare i canali, in modo che i diritti di accesso non vengano persi alla disconnessione dell'ultimo operatore; ove questo non sia possibile viene fatto uso dibot, programmi speciali che appaiono come normali utenti, ma chepresidiano il canale e, all'uso, ri-conferiscono lo status di operatore ai proprietari.
Glioperatori possono impostare diverse opzioni su quel determinato canale (vedib:IRC/Modi canale). Gli utenti nell'ambito del canale o del server possono avere diversi attributi (vedib:IRC/Modi utente).
Le connessioni IRC sono un obiettivo privilegiato per icracker, in quanto pur essendo cifrate necessitano, per la loro stessa natura, lunghi periodi di tempo di collegamento. È necessario pertanto assicurare a queste connessioni un'accurata politica di sicurezza in grado di proteggerle dagli attacchi di tiposcript kiddie, che cercano di prenderne il controllo[N 3], magari tentando di sfruttare a proprio vantaggio unnetsplit[N 4].
La connessione IRC viene spesso utilizzata da parte degliscript kiddies come "laboratorio" per provare diversi tipi di attacchi in rete, per esempio inviando pacchettiICMP[N 5] mal formati, al fine di disturbarne gli utenti. Tuttavia, con l'entrata in scena, sia deiBouncer, che deivirtual host, è molto difficile per queste persone malintenzionate portare a termine un attacco, visto che questi servizi riescono a nascondere l'indirizzo IP collegato ad unnickname.
In tutto il mondo, ci sono diverse centinaia di reti IRC attive. Eseguono diverse implementazioni di server IRC, e sono amministrate da vari gruppi diOperatori IRC, ma tutti i protocolli utilizzati dagli utenti IRC presentano similitudini, per cui in tutte le reti IRC si può accedere col medesimo client senza problemi.
La differenza tra i vari network sta nella gestione delle implementazioni.IRCnet ad esempio è fedele all'implementazione storica di IRC e può essere definita la rete più anarchica, poiché non prevede alcun controllo dei nickname o dei canali. Al contrario altre reti hanno sviluppato sistemi per registrare inickname o i canali debellando così l'uso dibot e i problemi causati dalle IRC War. Come inUsenet, i contenuti inviati sono immediatamente visibili da più siti e su tutti i server d'accesso, però, a differenza diUsenet, non sono più cancellabili. Una traccia delle discussioni[N 6] è tenuta in file di log di pubblico dominio.
IRC offre, inoltre, le funzionalità tipiche delle chat più evolute: possibilità di creare profili-utente con dati personali, chattare, invio di messaggi privati, scambio di file, organizzare meeting della chat. Per individuare un'ora standard in tutto il mondo è stata scelta la convenzioneUTC.
Android: AndChat, Revolution Irc rilasciata secondo I termini della GNU General Public License Version 3
Le reti IRC hanno prodotto "client automatici" chiamati "bot", abbreviazione di "robot". Il primo fu scritto da Greg Lindahl e serviva da moderatore automatizzato per il giocoHunt the Wumpus.
Quelli più recenti, tra tutti,eggdrop, sono invece usati per automatizzare la moderazione dei canali nelle reti sprovviste di servizi irc,[N 7] anche se sono spesso solo di fastidio agli utenti[N 8]. Sono di solito sviluppati in linguaggioJava e permettono uno standard di funzionalità che spaziano dall'invio di messaggi privati all'e-mail di utenti non connessi, all'apertura dichatroom private con utenti in linea, all'invio diemoticon all'interno dei messaggi.
Un'ulteriore evoluzione in campo di "bot" è sicuramente l'avvento dipsotnic, un bot le cui velocità sono di gran lunga superiori a quelle di un eggdrop[senzafonte]. Anch'esso è dotato di partyline, invio messaggi privati ed espansioni con script in c.
IRC ha subito una notevole evoluzione nel tempo. Software più recenti di gestione dei server hanno aggiunto nuove funzioni e caratteristiche.
Services: sono servizi gestiti da "bot" che permettono la registrazione deinickname (NickServ) e dei canali IRC (ChanServ), ma anche l'invio di messaggi per utenti non connessi in quel momento (MemoServ) o la gestione dei bot (BotServ).
Extra Modes: I sistemi originali IRC usavano una serie di modalità standard, ora le nuove caratteristiche permettono di rimuovere i codici colore dai testi, o per nascondere un utente al fine di proteggerlo dagli attacchi dihacker malintenzionati (denial of service).
Proxy Detection: molti server moderni implementano la possibilità di individuare e bloccare utenti che tentano di connettersi attraversoproxy o rete tor, spesso per compiere abusi del servizio (ad esempio "IRC War").