See artikkel ootab keeletoimetamist. (Detsember 2025) |
| See artikkel räägib võrgusuhtluse ühest protokollist, IRC on ka Royal Ocean Racing Club võistluspurjetamise etteandesüsteem . |
Rühmavestlus Internetis (IRC, inglise keeles Internet Relay Chat) on protokoll reaalajas Interneti kaudu tekstsõnumite vahetamiseks. Selle peamine eesmärk on võimaldada gruppidevahelist suhtlust foorumites, mida nimetatakse kanaliteks (inglise keeles channels), kuid lisaks lubatud on nii üks ühele suhtlus privaatsõnumitega kui ka andmevahetus, näiteks failide jagamine.
IRC protokolli kirjutas 1988. aastal soomlane Jarkko Oikarinen. Klienttarkvara on saadaval kõigile populaarsematele operatsioonisüsteemidele, mis võimaldavad suhtlust Internetiga. Detsembris 2011 teenindas sada suurimat IRC võrgustikku umbes poolt miljonit kasutajat.

IRC kirjutas Jarkko Oikarinen augustis 1988 eesmärgiga asendada teatetahvlisüsteemis Oulubox kasutusel olnud programm MultiUser Talk. Oikarinenit inspireeris suhtlussüsteem Bitnet Relay, mis töötas BITNET-is.

IRC on vabalt kättesaadava lähtekoodiga protokoll, mis kasutab TCP protokolli ning lisavõimalusena ka TLS protokolli. Iga IRC server suudab ühenduda teiste IRC serveritega luues IRC võrgustiku. Kasutajad loovad IRC serveriga ühenduse klienttarkvara abul. Klienttarkvara ja serveritarkvara on saadaval mitme versioonina, näiteks klientprogrammid mIRC ja XChat ning originaalne serveritarkvara IRC-d. Enamik IRC serveritest ei nõua kasutajalt eelnevat registreerumist, siiski on ühenduse loomiseks vajalik kasutajanime sisestamine.
IRC oli algselt tekstipõhine protokoll, mis kasutas IANA määratud 194/TCP porti. Tegelikult aga kasutati tavaliselt 6667/TCP ja selle läheduses olevaid porte (näiteks TCP pordid 6660–6669, 7000) vältimaks vajadust käivitada IRCd tarkvara superkasutaja õigustega.
Protokoll määras märkide suuruseks 8 bitti, kuid ei vajanud kindlat kodeeringut. See võis tekitada probleeme erineva klienttarkvara ja/või platvormiga kasutajate suhtluses.
Kõik praegu kasutusel olevad klient-server IRC protokollid pärinevad IRC2 serveri irc2.4.0 protokolli versioonist, mis on dokumenteeritud RFC 1459 -s. RFC 1459 publitseerimisest saati on uute, irc2.10 versioonis lisandunud võimaluste kohta avaldatud mitu sarnast dokumenteeringut (RFC 2810, RFC 2811, RFC 2812, RFC 2813), kuid need muutused protokollis ei ole leidnud laialdast kasutust.
Vaatamata mitmetele avaldatud IRC protokolli spetsifikatsioonidele ei ole IRC protokollil ametlikku spetsifikatsiooni, seetõttu on protokoll dünaamiline. Eelnevalt mainitud RFC spetsifikatsioonidele on rangelt üles ehitatud väga vähesed IRC serverid ning pea mitte ühtegi klientprogrammi.
1998. aastal avaldas Microsoft laienduse IRC protokollile – IRCX-i, kuid hiljem lõpetati IRCX-i toetava tarkvara tootmine ning keskenduti .NET Messenger Service-i (MSN) arendamisele.
Inspireerituna IRCX protokollist on net-bits.net loodud uus IRC protokoll IRCwx (ing. k. IRC web extension).
Standardne IRC serverite võrgu topoloogiline struktuur on puu. Sõnumeid edastatakse lühimat teed pidi, kuid võrgu seisu teatatakse igale serverile. Sellisel ülesehitusel on mitmeid puudusi. Vigane või pahatahtlik server võib võrgule põhjustada kahju ja iga struktuurimuutuse korral langeb võrgule suur koormus.
IRC on reapõhise struktuuriga. Klientprogramm saadab serverile üherealisi sõnumeid ning saab neile vastuseid ja koopiaid teiste kasutajate poolt serverile saadetud sõnumitest. Enamikus klientprogrammides saavad kasutajad sisestada käske, lisades nende ette märgi "/". Olenevalt käsust võib seda interpreteerida klientprogramm või kui klientprogramm ei tuvasta käsku, saadetakse käsk edasi serverile.
Protokolli iseärasuste tõttu ei suuda automatiseeritud süsteemid alati korrektselt rühmitada konkreetset sõnumit selle vastusega.
Käskude näiteid:
Põhiline viis kasutajatega suhtlemiseks kasutades olemasolevat IRC sessiooni on läbi kanali. Võrgus olevaid kanaleid saab kuvada käsuga LIST, mis kuvab kõigi konkreetses võrgus olevate kanalite nimekirja, mis ei ole režiimides +s või +p.
Kasutajad saavad kanaliga liituda kasutades JOIN käsku, tavaliselt kujul /join #kanalinimi. Pärast kanaliga liitumist edastatakse sellesse kanalisse saadetud sõnumid kõigile sama kanaliga liitunud kasutajatele.
Kogu IRC võrgust kättesaadavate kanalite nime ette lisatakse märk '#', serverile omaste kanalite nimede ette aga '&' . Vähem kasutusel olevad märgid on näiteks '+' – märkimaks operaatoriteta kanaleid, ja '!' – ajatemplit kasutavate kanalite jaoks ajatempleid tavaliselt mittekasutavates võrkudes.
Kanalitel ja kasutajatel võivad olla töörežiimid (ing.k. modes), mida väljendavad ühekordsed tõstutundlikud tähed ning saab määrata käsuga MODE. Kasutajarežiimid ja kanalirežiimid on erinevad ning sama täht võib tähendada kummalgi juhul erinevat režiimi (näiteks kasutajarežiim "i" tähistab nähtamatut olekut, aga kanalirežiim "i" ainult kutse alusel sisenemist). Režiime saab tavaliselt määrata kasutades režiimikäsku, kus määratakse sihtmärk (kasutaja või kanal), rakendatavad režiimid ("+" – režiimi lisamiseks, "-" – eemaldamiseks) ning võimalikud lisaparameetrid.
Mõned kanalirežiimid ei vaja parameetreid ning teatud juhtudel rakenduvad kanali asemel seal olevale kasutajale või muudavad kanaliga seotud nimekirja maski terve kanali režiimi asemel. Režiime, mis rakenduvad kanalis olevatele kasutajatele, tähistatakse kasutajate aliastele lisatavate sümbolitega. Vastav informatsioon saadetakse serveri poolt kasutaja liitumisel kanaliga. Mitmetes klientprogrammides on režiimisümbol nähtav kanaliga liitunud kasutajate nimekirjas.
Korrektseks sõnumite edastamiseks ja kanalirežiimide järgimiseks on klientprogrammidel vaja teada kanalirežiimide ning kasutajatele rakenduvate režiimide puhul kasutajanimedele lisanduvate sümbolite tähendusi. Varajastes IRC versioonides pidi see olema püsiprogrammeeritud klientprogrammi, kuid praeguseks on loodud juba standardseks nimetatav laiendus ISUPPORT, mis saadab klientprogrammile režiimide kohta käiva informatsiooni ühenduse loomisel.
IRC-s on väike disainiviga seoses nende kanalirežiimidega, mis rakenduvad kanalis olevatele kasutajatele. Esialgne serveri saadetav sõnum sisaldab infot hetkel kehtiva režiimi kohta, kuid kui kanalile on rakendatud mitu režiimi, saab kasutaja infot ainult kõrgema tähtsusega režiimi kohta. Näiteks, kui vastselt kanaliga liitunud kasutajale omistatakse vaikimisi nii operaatori (+o) kui ka kanalihääle staatus, siis kasutaja saab teada ainult operaatori staatusest. Sellele probleemile on lahendusi, kuid need ei ole laialt kasutatavad.
| Täht | Sümbol | Kirjeldus |
|---|---|---|
| i | Nähtamatu – ei ole võimalik näha ühise kanali olemasoluta või teadmata täpset aliast | |
| s | võtab vastu serveri teateid | |
| w | võtab vastu kõigile operaatoritele saadetud teateid (wallops) | |
| o | kasutaja omab IRC operaatori staatust (ircop) | |
| Täht | Sümbol | Parameeter | Kirjeldus |
|---|---|---|---|
| o | @ | Staatust omandava kasutaja alias | Kanalioperaator – saab muuta kanalirežiime, kasutajaid eemaldada jpm. |
| s | Salajane kanal – ei näidata kanalite nimekirjas | ||
| p | Privaatne kanal – RFC 1459 järgi väljendab sellist kanalit kanalite nimekirjas lühend "prv" | ||
| n | Kasutajad ei saa kanaliväliselt saata kanalisse sõnumeid | ||
| m | Kanal on modereeritud (ainult need kasutajad, kes omavad operaatori või kanalihääle staatust saavad kanalisse sõnumeid saata) | ||
| i | Kanaliga saab liituda ainult kutsega | ||
| t | Kanali "teemat" (ing.k channel topic) saavad muuta ainult operaatorid | ||
| l | Piirarv | Määrab kanaliga ühenduda võivate kasutajate arvu (kui kanal on täis, ei saa uued kasutajad liituda) | |
| b | Keelatav mask (lubatud alias!kasutaja@host metamärkidega) | Keelab määratud hostimaski(de)l kanaliga ühenduse loomise | |
| v | + | staatust omandava kasutaja alias | Annab määratud kasutajale kanalihääle staatuse |
| k | Uus kanali võti | Määrab uue kanali võtme, ainult võtit teadvad kasutajad saavad kanaliga liituda |
Enne serveri või IRC võrguga ühenduse loomist on soovitatav tutvuda konkreetse serveri või IRC võrgu dokumentatsiooniga, kuna mitmed IRC programmeerijad on lisanud režiime või muutnud olemasolevate režiimide olemust.
Mõned kasutajad omavad suuremaid õigusi teatud serveris või terves võrgus, neid kutsutakse IRC operaatoriteks. Kuna IRC leiab rakendust eri viisidel, on ka iga võrgu/serveri IRC operaatoritel erinevad õigused. RFC 1459 väidab, et IRC operaatorid on "vajalik kurjus" (ing.k. "neccessary evil") hoidmaks IRC võrku puhtana. IRC operaatoritel on näiteks õigused ühenduda ning lahti ühenduda serveritest, visata välja kasutajaid ja täielikult keelata IP aadresse ning terveid alamvõrke. Lisaks võib operaatoritel olla õigus kustutada kasutajate ligipääsukeelde teatud kanalile, lubada endal ligi pääseda tavaliselt keelatud kanalile, võimaldada ligipääsu kõigile võrgus olevatele kanalitele jne.
IRC kanalioperaator on IRC kanali kasutaja, kes haldab seda kanalit. IRC kanalioperaatorid on kergesti äratuntavad sümboli "@" või ladina tähe "+o"/"o" järgi. Tavaliselt võib kanalioperaator
Hostimask on unikaalne IRC serveriga ühendatud klientprogrammi identifikaator. IRC serverid, IRC teenused ning teised kliendid, kaasa arvatud IRC botid, võivad kasutada hostimaski konkreetse IRC sessiooni kindlaks tegemiseks.
Hostimaski formaat on alias!kasutaja@host. Sarnase kirjapildi tõttu võib hostimaski ajada segamini e-posti aadressiga.
Aliase osa hostimaskist määrab kasutaja ühenduse loomisel ning seda võib muuta ka ühenduse käigus. Kasutaja osa hostimaskist edastab klientprogramm kasutades ident protokolli. Kui klientprogrammil puudub ident, siis kasutatakse ühenduse loomisel määratud aliast, lisades ta ette tilde.
Hostimaski hosti osa sisaldab kasutaja hostimaski. Kui kasutaja IP-aadressi ei ole võimalik tõlgendada hostinimeks kasutatakse, siis kasutatakse IP-aadressi selle asemel.
Maailmas on kasutusel tuhandeid serveritarkvara versioonidel töötavaid IRC võrke, kuid kõik on ligipääsetavad suvalise klienttarkvaraga, kuna vaatamata suurele versioonide hulgale on kasutatav IRC protokoll kõikjal väga sarnane.
Suurimad IRC võrgud on traditsiooniliselt rühmitatud "suureks nelikuks" – edetabelite tipus olevate võrkude tunnus.
Ajalooliselt olid "suures nelikus":
Praegu on "suures nelikus":
Erinevate operatsioonisüsteemide populaarseimad klientprogrammid on järgmised:
Kõrgetasemelised programmid võivad olla ka IRC klientprogrammide platvormiks. Näiteks:
IRC protokoll on aja jooksul eriti palju muutunud. Uued serveritarkvara versioonid on lisanud uusi võimalusi:
IRC protokollil ei ole siiani ühiselt aktsepteeritud viisi, kuidas edastada märke, mis ei ole ASCII 7-bitises kodeeringus. Tavaliselt vahetavad IRC serverid kasutajate vahelisi sõnumeid bitijadana, pööramata tähelepanu märgikodeeringule. IRC protokollil puuduvad vahendid kodeeringuga tegelemiseks. Seetõttu langes korrektse kodeeringu valimise kohustus kasutajale. Tegelikult on aga IRC kanalid traditsiooniliselt kasutanud samu kodeeringuid nagu operatsioonisüsteemid, sõltuvalt keelekeskkonnast:
Paljuski sarnaselt tavalise P2P-failiedastusega saavad kasutajad rakendades IRC botte või skripte luua failiservereid, mis võimaldavad kasutajatevahelist failiedastust. Tihti loovad kasutajad IRC bottidel põhineva võrgustiku jagamaks autoriõigustega kaitstud andmeid.
Tehniliselt ei võimalda IRC protokoll faile saata, kuid seda võimaldavad klientprogrammid, tavaliselt DCC- (Direct Client-to-Client) protokolliga. Enamik IRC klientprogramme võimaldab failide jagamist, seetõttu peetakse seda IRC protokollile omaseks võimaluseks.
{{cite book}}: CS1 hooldus: tundmatu keel (link)