IRC

Historiaa

IRC:n kehitti Jarkko "Wiz" Oikarinen vuoden 1988 kesällä korvaamaan OuluBox BBS:n MUT ("MultiUser Talk") -ohjelman. IRC:n edeltäjä ja inspiraatio oli Bitnet Relay Chat -niminen ohjelma, joka mahdollisti reaaliaikaisen keskustelun kansainvälisten akateemisten verkkojen muodostamassa BITNET-verkossa. Ensimmäinen IRC-palvelin aloitti toimintansa Oulussa elokuussa 1988, osoitteenaan tolsun.oulu.fi. 
Vuoden 1989 puolivälissä IRC-palvelimia oli maailmanlaajuisesti noin 40 kappaletta. Samana vuonna Michael Sandrof julkaisi tunnetun ircII-asiakasohjelman. Heinäkuussa 1990 IRC:tä käytti keskimäärin 12 käyttäjää 38 palvelimella .
IRC tuli kuuluisaksi, kun Neuvostoliiton vallankaappauksen yhteydessä käyttäjät kertoivat rautaesiripun takaisista tapahtumista. Kuwaitilaiset käyttivät sitä aikaisemmin samalla tavalla Saddam Husseinin hyökättyä maahan. Vuonna 1991 saavutettiin ensimmäisen kerran 300 yhtäaikaisen käyttäjän raja . 
Sittemmin IRC:stä tuli merkittävä kansainvälisen keskustelun media. IRC-verkot kasvoivat sekä määrällisesti että käyttäjämäärältään Internetin yleistyessä voimakkaasti 1990-luvun lopussa ja 2000-luvun alussa. Huippuvuosi IRC:n käytössä oli vuosi 2004, jonka jälkeen käyttäjämäärät ovat pääsääntöisesti laskeneet vuosi vuodelta irc.netsplit.de-sivuston tilastojen mukaan. Huippuvuonna 2004 esimerkiksi suurimmassa verkossa Quakenetissä oli parhaimmillaan noin 240 000 yhtäaikaista käyttäjää ja vuonna 2013 Quakenetissä on keskimäärin 70 000 samanaikaista käyttäjää. Hidas käyttäjämäärien lasku on todettavissa myös muissa suurissa ja perinteisissä IRC-verkoissa.
IRC:n ympärille on Suomessa kehittynyt muutama WWW-palvelu, kuten IRC-Galleria. Lisäksi Internetiin on ilmaantunut IRC:n kaltaisia palveluita, chattejä. Nämä ja sosiaaliset verkkopalvelut ovat vallanneet alaa aloittelijalle vaikeakäyttöiseltä IRC-palvelulta.
Jarkko Oikarinen sai vuonna 1997 Dvorak-palkinnon (John C. Dvorak Telecommunications Excellence Award) IRC:n kehittämisestä. Lisäksi IRC on palkittu Millennium-sovelluspalkinnolla vuonna 2005.

Käyttötapoja

IRC:n yleisin käyttö on todennäköisesti lähinnä yksityisten henkilöiden välistä keskustelua. IRC:ssä on lähes rajaton määrä kanavia eri aiheista monilla eri kielillä. IRC:ssä on keskustelua vuorokaudenaikaan katsomatta lähes aina. Suosittuja kanavia ovat esimerkiksi harrastus-, paikkakunta- ja opiskelukanavat. Osa IRC:n viehätyksestä perustunee kasvottomuuteen: halutessaan voi olla nimetön ja vaikkapa käyttää aina erilaista nimimerkkiä. Keskustelijan nimeä, ulkonäköä ja asuinpaikkaa ei tiedä kukaan – ellei sitä itse halua kertoa. Monille kanaville muodostuu sisäpiiri, joka tapaa toisiaan säännöllisesti myös kasvotusten. IRC:stä löytää melko varmasti samanhenkistä seuraa, kunhan muistaa normaalit käytöstavat, terveen järjen ja netiketin.

Toiminta

IRC on avoin TCP/IP:n päällä toimiva protokolla. Käyttäjä käyttää IRC:tä ottamalla yhteyden IRC-palvelimeen asiakasohjelmalla. IRC:stä on useita palvelin- ja asiakasohjelmatoteutuksia. IRC-palvelimet muodostavat keskenään IRC-verkkoja. Suosituimmat IRC-verkot ovat QuakeNet, EFnet (Eris Free Network), IRCnet sekä Undernet, joista IRCnet ja EFnet vastaavat parhaiten alkuperäistä vuonna 1988 aloitettua IRC-verkkoa. Joillakin kielillä on omia verkkojaan, esimerkiksi ranskankielinen EpiKnet ja espanjankielinen IRC-Hispano. Useimmat IRC-verkot ovat julkisia, eli verkkoon voi liittyä keskustelemaan kuka tahansa. IRC:n käyttäjä saa viestejä ainoastaan olleessaan kytkeytyneenä palvelimeen; jos käyttäjä ei ole verkossa, hänelle lähetetyt viestit jäävät saapumatta. Pysyvä IRC:ssä paikallaolo vaatii koko ajan päällä olevan asiakasohjelman pysyvästi verkossa olevalla koneella. Tämä voi tapahtua Unix-koneessa ajettavalla tekstipohjaisella IRC-ohjelmalla, jolloin puhutaan shell-tunnuksesta tai samankaltaisella ns. bouncer-ohjelmalla, joka toimii välityspalvelimena ja kerää viestejä käyttäjän poissaolon aikana.
IRC:n peruskäsitteisiin kuuluvat nimimerkki (nickname) ja kanava.

Nimimerkit ja käyttäjätunnukset

Jokaisella käyttäjällä on oma IRC-nimimerkki (nickname) ja käyttäjätunnus (username). Kunkin käyttäjän täytyy valita itselleen nimimerkki, jolla muut käyttäjät tunnistavat hänet. Nimimerkki määritellään asiakasohjelman asetuksissa ennen ensimmäistä käyttökertaa. Nimimerkki näkyy muille IRC:n käyttäjille kunkin käyttäjän kirjoittamien tekstirivien alussa.
Esimerkki:
<Matti> Hei Maija, mitä kuuluu?
<Maija> Kiitos hyvää, Matti!
Alun perin käyttäjätunnuksen (username) tarkoituksena oli näyttää se käyttäjätunnus, joka käyttäjällä on hänen käyttämässään laiteympäristössä. Useimmissa nykyisissä asiakasohjelmissa käyttäjätunnukseksi voi asettaa kuitenkin minkä tahansa haluamansa tekstin.
Teknisesti käyttäjä tunnistetaan maskista, joka on muotoa nimimerkki!käyttäjätunnus@osoite, jossa osoite (hostname) on käyttäjän IP-osoite tai sitä vastaava DNS-nimi. identd-palvelu antaa käyttäjätunnuksen palvelimelle pyydettäessä. Palvelin lisää käyttäjätunnuksen eteen ~-merkin ja jotkut palvelimet "+" tai "-" -merkin merkiksi rajoitetusta yhteydestä, jos ne eivät saa vastausta identd-palvelimelta, tai mahdollisesti epäävät pääsyn kokonaan.
Tästä huolimatta IRC:ssä on kuitenkin mahdollista esiintyä myös jonain toisena käyttäjänä muiden välttämättä hoksaamatta käyttäjän todellista identiteettiä.

Kanavat

Pääasiallisesti IRC:ssä keskustellaan monien kuulijoiden kanssa, joten peruskommunikointi IRC:ssä tapahtuu kanavalla (puhekielessä puhutaan myös kannusta). Kanavat ovat ns. keskusteluhuoneita, jotka käsittelevät jotain kanavan jäsenten valitsemaa aihetta, esimerkiksi harrastusta tai paikkakuntaa. Kun käyttäjä liittyy kanavalle, hänen kirjoittamansa tekstit välitetään muille samalle kanavalle liittyneille käyttäjille.
Kullakin kanavalla on nimi. Kanavien nimet alkavat erikoismerkillä, joka on normaaleilla kanavilla "#". Joissain verkoissa on myös muita, harvemmin käytettyjä etuliitteitä, kuten "&", "+" ja "!". Kanavan nimi voi olla esimerkiksi #wikipedia.
Kanava syntyy automaattisesti, kun ensimmäinen keskustelija liittyy kanavalle. Vastavuoroisesti kanava lakkaa olemasta, kun viimeinen käyttäjä poistuu kanavalta. Käyttäjät voivat liittyä yhtä aikaa myös useille kanaville, joilla käydyt keskustelut eivät näy muille kanaville.

Yksityisviestit

Kaikki IRCissä tapahtuva kommunikaatio ei tapahdu kanavilla. Käyttäjät voivat lähettää toisilleen myös yksityisviestejä, jotka ainoastaan yksityisviestin vastaanottaja ja lähettäjä voi nähdä. Yksityisviestit lähetetään useimmissa asiakasohjelmissa seuraavanlaisella komennolla. Viestin sisällöllä on tietty järjestys toimivuuden kannalta, joten ensin pitää kirjoittaa /msg sitten vastaanottaja -kohtaan laitetaan nimimerkki ja lopuksi haluamasi viesti perinteisellä kirjoitustyylillä.
 /msg vastaanottaja Sinun viestisi.

IRC-operaattorit

IRC-palvelimen ylläpitäjä toimii IRC-operaattorina ja voi kutsua tähän tehtävään myös tekniikkaan hyvin perehtyneitä ja yhteistyökykyisiä IRC-käyttäjiä. IRC-operaattorit vastaavat verkon toiminnasta. Heidän tehtävänsä on hallinnoida ja valvoa ylläpitämänsä IRC-palvelimen toimintaa ja varmistaa IRC-verkon toimivuus. IRC-operaattorit voivat muun muassa yhdistää uusia palvelimia IRC-verkkoon tai katkaista yhteyksiä toisiin palvelimiin. He voivat myös katkaista käyttäjän yhteyden palvelimelle, mikäli hän käyttäytyy häiritsevästi tai haittaa palvelimen tai verkon toimintaa. Äärimmäisissä tapauksissa IRC-operaattori voi estää pysyvästi käyttäjän pääsyn palvelimelle tai jopa koko verkkoon.
IRC-operaattorit eivät yleensä puutu kanavanvaltauksiin; tämä tosin vaihtelee melko paljon verkoittain. Teknisistä syistä kanavien alkuperäisiä omistajuuksia on yleensä mahdotonta selvittää. Tämä aiheuttaa myös IRC-operaattoreille suuren työmäärän, sillä vallattuja tai ilman kanavaoperaattoreita olevia kanavia on usein todella paljon. Yleensä IRC-operaattorit puuttuvat kanavanvaltauksiin vain, jos se häiritsee verkon toimintaa, esimerkiksi kanavan valtaaminen palvelunestohyökkäystä apuna käyttäen.

Netsplit

Netsplit, puhekielessä splitti, tapahtuu, kun kahden IRC-palvelimen välinen yhteys syystä tai toisesta katkeaa. Tällöin molemmat puolet näkevät vastakkaisen puolen poistuvan IRC:stä, ja syntyy ikään kuin kaksi erillistä IRC-verkkoa. Kun yhteys kahden IRC-palvelimen väliin palaa ennalleen, yhdistetään molemmat puolet taas samaan IRC-verkkoon ja käyttö jatkuu normaalisti.

IRC-palvelut

Joihinkin verkkoihin on liitetty erityisiä palveluohjelmistoja (engl. services). Palveluiden yleisimmät käyttötarkoitukset ovat IRC-nimimerkin ja kanavien rekisteröinti. Näitä käyttäen sama henkilö voi saada yksinoikeuden nimimerkkiin ja säilyttää kanavaoperaattorin oikeutensa, vaikka yhteys palvelimeen katkeaa.

IRC-botit

IRC-botit ovat IRC-verkkoon yhteydessä olevia tietokoneohjelmia, botteja, jotka voivat muun muassa ylläpitää kanavaa. Ne ovat oikeastaan robotteja, jotka automatisoivat kanavan ylläpidollisia toimenpiteitä. IRC-palvelimilla toimivia botteja kutsutaan palveluiksi. Yleensä IRC-botit ovat kuitenkin käyttäjien itsensä ylläpitämiä. Niitä käytetään lähinnä varmistamaan, että kanava pysyy alkuperäisten omistajien hallussa. Bottien tarkoitus on pysyä aina kanavalla ja antaa valituille henkilöille kanavaoperaattorin oikeudet heti kanavalle saapumisen jälkeen tai heidän syötettyään salasanan botille yksityisviestillä. IRC-botti voi myös potkaista (kick) liian kauan hiljaa olleen irkkaajan kanavalta (idlekick). IRC-botti voi bannata huonosti käyttäytyvän keskustelijan kanavalta määräajaksi tai toistaiseksi.
Botissa voi olla käyttäjätietokanta, joten se voi muistaa rekisteröidyt käyttäjät ja esimerkiksi kertoa kyselijälle, milloin kysytty keskustelija on ollut viimeksi kanavalla. Käyttäjätietokannassa käyttäjillä voi olla erilaisia oikeustasoja.
IRC-botteihin saa myös lisätoimintoja, muun muassa televisio-ohjelmatietojen näytön, erilaisia suojaus- ja hallintajärjestelmiä kanaville ja jopa tekoälykeskustelujärjestelmiä. Suosittuja bottiohjelmia ovat esimerkiksi Eggdrop, oer ja Energymech.

IRC teknisesti

IRC on tekstiprotokolla, mikä tarkoittaa sitä, että kaikki siirtyy selkokielisenä tekstinä verkon yli. Nykyisin moni IRC-verkko tukee myös SSL-protokollalla salattua yhteyttä.
Kaikki käytössä olevat asiakkaan ja palvelimen väliset protokollat periytyvät protokollasta, joka oli toteutettu IRC2-palvelimen versiossa irc2.8 ja dokumentoitu RFC 1459:ssä. RFC 1459:n jälkeen ei enää ole julkaistu yhteistä standardia. IRCnetin irc2.10-toteutuksen uudet ominaisuudet on julkaistu dokumenteissa RFC 2810, RFC 2811, RFC 2812 ja RFC 2813. Uudet RFC:t eivät ole Internet-standardeja eikä niillä ole vaikutusta muiden verkkojen palvelinohjelmistojen kehitykseen.
Toisaalta palvelin–palvelin-protokollia on paljon erilaisia, ja tästä syystä yleensä vain samaa ohjelmistoa käyttävät palvelimet voivat yhdistää toisiinsa. Suurin tällaisista eroista on jako TS (TimeStamp) ja CD/ND (Channel Delay, Nick Delay) -palvelimiin. Yksi syy alkuperäisen IRC-verkon jakautumiseen EFnetiksi ja IRCnetiksi oli kiista siitä, kumpi näistä järjestelmistä otetaan käyttöön.
IRCnet käyttää kanava- ja nimimerkkiviiveitä, kun taas EFnet käyttää aikakoodeja ongelmatilanteiden välttämiseksi ja ratkaisemiseksi.

Merkistö

IRC-protokollassa ei ole määritelty merkistökoodausta. Käytännössä tämä tarkoittaa sitä, että kukin asiakas päättää itse, mitä merkistöä käyttää. Perinteisesti suomalaisilla IRC-kanavilla käytetään Latin-1-merkistöä, mutta muitakin käytäntöjä esiintyy, kuten WIN-1252-merkistö tai eurolaajennettu Latin-9-merkistö. Osa suosii UTF-8-merkistöä, johon siirtymisestä perustettiin loppuvuodesta 2005 kampanja, joka kehottaa kaikkia siirtymään UTF-8:n käyttöön vuoden 2006 alettua. Siirtymän tarpeellisuus on toisaalta myös kyseenalaistettu. Monet asiakasohjelmat ovat kuitenkin jo jonkin aikaa tarjonneet mahdollisuutta automaattiseen kääntämiseen UTF-8:n ja vanhojen merkistöjen välillä ja myös mIRC, eräs käytetyimmistä asiakasohjelmista, sai tuen tälle alkuvuodesta 2006. Tämä helpottaa UTF-8-merkistön käyttöä.
Vastaavasti esimerkiksi puolalaisilla IRC-kanavilla käytetään yleensä ISO 8859-2-merkistöä ja japanilaisilla IRC-kanavilla ISO 2022-JP- tai Shift-JIS-merkistöä.