Schéma siete IRC s klientmi (zelená), botmi (modrá) a bouncermi (oranžová)
Screenshot programu Kvirc pod Linuxom
**Internet Relay Chat** (skratka **IRC**) je protokol určený na okamžitú textovú komunikáciu. Je založený na klient-server architektúre. IRC je určené hlavne na komunikáciu skupín (viacerí-viacerým) v diskusných fórach zvaných *channels* (kanály), ale tiež umožňuje komunikáciu jedného s jedným alebo prenos súborov cez Direct Client-to-Client (DCC). IRC klient je počítačový program pomocou ktorého sa užívateľ pripája k IRC serveru a komunikuje s ostatnými užívateľmi.

IRC bolo jednou z prvých možností komunikácie v reálnom čase cez internet. Vo svojej dobe spájala významnú časť internetových užívateľov. IRC tak čiastočne stojí pri zrode „internetového chatovania".

IRC vytvoril Jarkko Oikarinen (nickname "WiZ") neskoro v auguste 1988 ako náhradu za program zvaný MUT (MultiUser Talk) na Fínskom BBS zvanom OuluBox. Oikarinen sa inšpiroval Bitnet Relay Chatom na Bitnet networku.

IRC získal význam, keď bol použitý na podanie správy o pokuse o prevrat v Sovietskom zväze v roku 1991 v priebehu utíchnutia masmédii. Neskôr bol použitý v podobnej situácii v Kuvajte počas Irackej invázie.[chýba zdroj]

Technické informácie
--------------------

IRC je otvorený protokol aplikačnej vrstvy, používa TCP a voliteľne môže používať TLS. IRC server sa môže pripojiť na iné IRC servery a tak môže rozšíriť IRC sieť. Používatelia pristupujú na IRC pripojením klienta na server. Existuje mnoho implementácií pre klienta, napríklad mIRC, HexChat (odvodený of XChat) a irssi, a servera, napríklad pôvodný IRCd. Väčšina IRC serverov nevyžaduje prihlásenie používateľov, ale používateľ si musí nastaviť prezývku (nickname) pred tým, ako sa pripojí na server.

IRC je protokol, ktorý používa čisto textový protokol, čo znamená, že je možné (hoci nepohodlné) používať IRC cez obyčajný klient pracujúci s prúdom bajtov, ako napríklad netcat alebo telnet. Protokol používal len jemne modifikovanú verziu ASCII a pôvodne neposkytoval žiadnu podporu pre texty zo znakmi mimo ASCII. Nakoniec sa začali používať dosť rozdielne a nekompatibilné kódovania znakov (ako napríklad ISO 8859-1 a UTF-8).

Pretože väčšina implementácií IRC používa acyklický graf ako ich model na pripojenie, neexistuje tu redundancia pri spojení medzi servermi a pri poruche servera môže nastať netsplit.

### Vývoj

Všetky klient-server IRC protokoly, ktoré sa používajú dnes sú odvodené z protokolu implementovaného v irc2.8 verzie IRC2serveru a dokumentované v RFC 1459. Odkedy bola publikovaná RFC 1459, boli implementované nové funkcie v irc2.10, ktoré viedli k publikovaniu opravených protokolových dokumentov; RFC 2810, RFC 2811, RFC 2812 a RFC 2813, avšak zmeny týchto protokolov neboli všeobecne prijaté medzi ostatné implementácie. IRC 2.10 je najviac používané na sieti IRCnet. IRC protokol bol rozšírený Microsoftom v roku 1998 jeho IRCX protokolom, ktorý rieši mnoho tradičných problémov, ktorým čelila celá generácia IRC sietí, spolu s niektorými funkciami, o ktorých si väčšina používateľov myslela, že „predbieha svoju dobu". Hoci bolo publikovaných mnoho noriem IRC protokolov, neexistuje žiadna oficiálna norma, takže protokol ostáva dynamický. V skutočnosti žiaden klient a veľmi málo serverov sa striktne odvoláva na vyššie uvedené RFC.

Kým sú si protokoly klient-server aspoň funkčne podobné, protokoly server-server sa značne odlišujú (TS5, P10 a ND/CD sú osobitne značne používané a nekompatibilné serverové protokoly) a spôsobujú, že je veľmi komplikované prepojiť dve osobitné implementácie IRC servera. Existujú servery používané ako „mosty", ktoré pomáhajú spojiť, napríklad, servery 2.10 so servermi TS5), ale tieto často sprevádzajú obmedzenia, ktoré časti každého protokolu majú byť použité a nie sú príliš používané v praxi.

V prvých formách IRC nemalo toľko vlastností, aké má dnes, napr. mená kanálov a operátori na kanáloch. Kanály boli očíslované -- napríklad kanál 4 a kanál 57 -- a téma kanála popisovala druh konverzácie, ktorá sa práve konala na kanále. Odtiaľ pochádza pamiatka, že pri pripojení sa na kanál 0 je klient prinútený, aby opustil všetky kanály, na ktorých práve je: „KANÁL 0" je pôvodný príkaz pre opustenie aktuálneho kanála.

Prvá hlavná zmena v IRC verzie 2.5 bola pridanie pomenovaných kanálov -- „+kanály", tieto boli neskôr vo verzii 2.7 vymenené za „#kanály", numerické (číselné) kanály boli úplne odstránené a bol implementovaný ban (zákaz prístupu) na kanál. irc2.8 pridalo „&kanály", ktoré existovali len na aktuálnom (lokálnom) serveri a nie na celkovej sieti IRC a „!kanály", ktoré tieto boli teoreticky bezpečné proti útoku, kde mohol používateľ exploitnúť (zneužiť dieru v systéme) kanál pri netsplite, a je to základné vydanie, od ktorého sú odvodené skoro všetky implementácie.

Významné verzie založené na 2.8 obsahujú: 

* 2.8.21+CS, vyvinutý Comstudom
* 2.8+th, Tanerov patchset, ktorý sa neskôr stal
* 2.8/hybrid, originálne vyvinutý Jonom Luskym (Rodder) a Dianou Bruceovou (Dianora), ktorí sa neskôr spojili do veľkeho vývojového tímu.
* 2.9, 2.10, 2.11, ... pokračovanie vývoja originálneho kódu jadra, hlavne pre použitie pre siete IRC. Táto vývojová línia vyprodukovala 4 IRC RFC vydané po RFC 1459, ktoré výhradne dokumentujú tento serverový protokol.

2.8.21+CS a 2.8/hybrid sa naďalej používa na EFnete s ircd-ratboxom (odnož z 2.8/hybrid), ktorý bol v roku 2004 najobľúbenejší.

Undernetový IRC server, ircu, je jeden z mála serverov, ktorý nebol odvodený z irc2.8, ktorý je založený na originálnom ircd; bol odvodený z kódu irc2.7.

Mnoho moderných IRC serverov bolo napísaných odznova, ako csircd (tiež z Comstud), ConferenceRoom, Microsoft Exchange Chat Service a IRCPlus/IRCXPro.

### Kanály

Základný komunikačný prostriedok na nadviazanie IRC relácii je kanál. Všetky kanály na serveri je možné zobraziť príkazom /list.

Na kanály sa môžu používatelia pripojiť a potom posielať správy, ktoré sú potom prenášané k ostatným používateľom na tom istom kanáli. Kanály, ktoré sú dostupné po celej sieti IRC, majú prefix „#", zatiaľ čo tie, čo sú na lokálnom serveri, môžu použiť „&". Medzi ostatné (neštandardné) typy kanálov patria „+" kanály-"bez módov", kanály bez operátorov a kanály „!", forma timestamped (s časovou pečiatkou) kanálu na obyčajne non-timestamped (bez časovej pečiatky) sietiach.

### Módy

Používatelia aj kanály môžu mať módy, ktoré predstavujú ich atribúty.
Módy sú reprezentované jednopísmenovou skratkou, takže sa dajú jednoducho za sebou zreťaziť.
Napríklad používateľský mód „i" znamená neviditeľný (Nemôžete povedať, či daný neviditeľný používateľ je na kanáli, ak nie ste na tom istom kanáli). Pri móde záleží na tom, či je použitý pri kanáli alebo pri používateľovi.

Módy môžu mať tiež parametre, napríklad mód k, ktorý určuje kľúč ku kanálu.

Nastavovanie módov prebieha pomocou príkazu *mode*. Pre pridávanie resp. uberanie módu sa používajú symboly + resp. -.

#### Štandardné módy (RFC 1459)

Užívateľské módy| Znak | Symbol | Popis |
| --- | --- | --- |
| **i** |  | neviditeľný — nemôžete ho vidieť, ak neviete presný nick alebo nie ste na rovnakom kanáli |
| **s** |  | príjma správy od serveru |
| **w** |  | príjma wallops |
| **o** |  | užívateľ je IRC operátor (ircop) |

Módy na kanáli| Znak | Symbol | Parameter | Popis |
| --- | --- | --- | --- |
| **o** | @ | nick používateľa, ktorý má byť ovplyvnený | operátor kanálu – môže meniť kanálové módy a vyhadzovať ľudí z kanálu |
| **s** |  |  | tajný kanál – nie je uvedený v zozname kanálov alebo v whois (okrem používateľov, ktorí už na tom kanáli sú) |
| **p** |  |  | privátny kanál – v zozname kanálov ako "prv" (podľa RFC 1459) |
| **n** |  |  | užívatelia, ktorí nie sú na kanáli, do neho nemôžu písať |
| **m** |  |  | kanál je moderovaný – len používatelia, ktorí majú hlas (+v) môžu písať správy |
| **i** |  |  | len na pozvanie – používateľ sa môže pripojiť len ak ho operátor kanálu pozve |
| **t** |  |  | tému môže meniť len operátor kanálu |
| **l** |  | limit | limituje počet používateľov na kanáli |
| **b** |  | ban maska (nick!user@host s povolenými rozsahmi) | zablokuje používateľovi prístup na kanál |
| **v** | + | nick používateľa, ktorý má byť ovplyvnený | dá používateľovi hlas (voice) – viz. +m hore |
| **k** |  | kľúč | nastaví na kanál kľúč (heslo) – len používatelia, ktorí ho poznajú, môžu vstúpiť na kanál |

Klienti
-------

mIRC je vo všeobecnosti považovaný za najpopulárnejšieho IRC klienta pre Windows. S príchodom klientov ako napríklad Bersirc, KVIrc, Trillian, Miranda IM a X-Chat začína mať väčšiu konkurenciu. Veľa ľudí však stále používa mIRC hlavne kvôli existencii mnohých skriptov pre tohto klienta.

ircII je jedným z prvých Unixových irc klientov, ale jeho používateľská základňa sa zmenšila s príchodom klientov ako ircII-EPIC, BitchX, irssi, X-Chat, atď. V prostredí KDE existuje klient s názvom Konversation.

Najrozšírenejšie klienty pre Mac OS X sú Ircle a Colloguy.

Na OS X je možné spustiť väčšinu Unixových klientov. Nedávno vyšla špeciálna verzia X-Chatu pre OS X systémy Aqua.

ChatZilla je Mozilla Firefox IRC klient.

Opera má taktiež zabudovaného IRC klienta.

Začínajúcim používateľom sa môžu mIRC a iné klienty zdať zbytočne veľkí a komplexní. Noví používatelia môžu uprednostniť instant messenger klientov ako Miranda IM alebo Trillian, ktorí poskytujú známejšie rozhranie pre IRC.

Framework vytvorený na začlenenie IRC do rôznych aplikácií ako hry sa nazýva LibIRC, hoci je stále vo vývoji.

### Boty

Existuje veľké množstvo automatizovaných klientov, nazývaných boty. Prvého bota napísal Greg Lindahl a fungoval ako multiplayerová verzia hry Wumpus, ale moderné boty sa využívajú najmä na prideľovanie operátorských privilégií (kontrolovanie kanála a rýchle reagovanie v prípade porušovania jeho pravidiel), na otravovanie používateľov (zaplavovaním používateľov rôznymi správami), na odpovedanie opakovaných otázok používateľov, na poskytovanie pomoci, keď nie sú prítomní operátori kanála alebo slúžia ako stále kontaktné body pre výmenu informácií (odkazovač, prenos súborov, atď.). V súčasnosti najpopulárnejšie boty sú Eggdrop a EnergyMech.

Moderné IRC služby sú implementované využitím botov. Boty sú dôležitou súčasťou správy kanálu. Využívajú sa na blokovanie používateľov, udržiavanie operátorov, udržiavanie témy kanálu atď.

### Bouncery

Program, ktorý beží na serveri ako daemon a funguje ako perzistentný proxy server, sa nazýva bouncer. Jeho úloha je zabezpečiť spojenie na IRC server, tváriac sa ako spojovací článok medzi serverom a pripájajúcim sa klientom. Ak klient stratí sieťovú konektivitu, bouncer archivuje všetky správy pre neskoršie doručenie. Najpopulárnejšie bouncery sú muh Archivované 2004-10-09 na Wayback Machine, psyBNC Archivované 2006-01-06 na Wayback Machine, shroudBNC a ZNC Archivované 2010-12-07 na Wayback Machine. Muh je určený len pre jedného používateľa, zatiaľ čo psyBNC, shroudBNC a ZNC podporujú viac používateľov. shroudBNC a ZNC ponúka navyše správu používateľských účtov cez webové rozhranie.

Referencie
----------

1. ↑   *Archivovaná kópia* [online]. [Cit. 2006-01-10]. Dostupné online. Archivované 2008-03-26 z originálu.

Pozri aj
--------

* ICQ

Iné projekty
------------

Commons
* Spolupracuj na Commons Commons ponúka multimediálne súbory na tému **Internet Relay Chat**

Externé odkazy
--------------

* Open Directory IRC Help
* Servicebot J Wiki(en)[nefunkčný odkaz]