# Internet Relay Chat

Internet Relay Chat (meestal afgekort tot IRC) is een toepassingslaagprotocol voor een op tekst gebaseerd chatsysteem. Het is voornamelijk bedoeld voor groepsgewijze communicatie, maar laat ook directe communicatie tussen twee personen toe. Het chatten gebeurt vaak met gebruik van internetjargon. IRC had ruim 300.000 gebruikers in 2012.

## Geschiedenis

IRC is oorspronkelijk ontworpen in Finland door Jarkko Oikarinen (beter bekend onder de bijnaam WiZ) in augustus 1988 om het programma MUT (Multi User Talk) te vervangen, dat hij draaide op een BBS in Finland. Het is deels geïnspireerd door The InterChat Relay Network (kortweg Relay) dat draaide op het Bitnet-netwerk. IRC is sinds toen uitgegroeid tot een wereldwijd netwerk. Later (na enkele kleinschalige pogingen) is er door politieke motieven een grote splitsing ontstaan, waaraan veel huidige IRC-netwerken hun leven te danken hebben.

## Het protocol

IRC is een open protocol dat TCP en optioneel SSL gebruikt.
Omdat het IRC-protocol een open standaard is, kan iedereen een IRC-client bouwen om een verbinding te maken met een IRC-server (bij bijvoorbeeld ICQ en MSNP kan dat niet zonder meer). Dit is gedeeltelijk de oorzaak van de populariteit van IRC. Omdat het IRC-protocol een tekstgebaseerd protocol is, kan zelfs met een eenvoudig socketprogramma als telnet gebruikgemaakt worden van IRC, al vergt het meer moeite om de verbinding in stand te houden.
De oorspronkelijke IRC-standaard is beschreven in RFC 1459. Er zijn inmiddels door verschillende mensen functionaliteiten aan het protocol toegevoegd. Soms is deze nieuwe functionaliteit niet meer compatibel met de oorspronkelijke RFC — strikt gezien heet het dan geen IRC meer, al blijven veel gebruikers het zo noemen.

## IRC-servers en IRC-netwerken

IRC is op het client-servermodel gebaseerd. Dit wil zeggen dat een gewone IRC-gebruiker met een IRC-programma (de client) verbindt met een computer op het internet die hiervoor dient (de server). De IRC-client van de gebruiker communiceert dus niet rechtstreeks met andere IRC-clients, maar enkel met één server.
Er zijn verschillende IRC-netwerken. Een netwerk is een groep van IRC-servers die met elkaar in verbinding staan. De servers van het netwerk wisselen onderling hun status uit en vormen daardoor één geheel, waardoor het mogelijk is om met iemand te chatten die op een andere server zit, zolang die verbonden is met hetzelfde IRC-netwerk. Om met een bepaald IRC-netwerk verbonden te zijn is het dus enkel noodzakelijk om met één server van dat netwerk te verbinden.
Communiceren met iemand die met een bepaald IRC-netwerk verbonden is via een ander netwerk is in principe niet mogelijk. Wel is het mogelijk om op verschillende netwerken tegelijk aanwezig te zijn, een optie die vele programma's bieden.
Sommige IRC-netwerken bestaan slechts uit 1 server, anderen uit 50 of nog veel meer servers. In dit opzicht kan IRC een schaalbaar protocol worden genoemd. De servers zijn echter door een acyclische graaf met elkaar verbonden, waardoor het netwerk erg vatbaar is voor verstoringen. Zodra er een verbinding tussen twee servers uitvalt, is er sprake van een netsplit.
De grootste netwerken zijn: QuakeNet, IRCNet, UnderNet, EFnet, Malvager, DALnet, Rizon en GameSurge. Een ander voor iedereen vrij toegankelijk netwerk en populair netwerk is Freenode.
Ieder netwerk heeft zijn eigen specifieke kenmerken en gebruiken, maar de meeste IRC-netwerken kennen dezelfde basisfuncties. Alle "echte" IRC-netwerken hebben alle basisfuncties die de RFC specificeert.

## Channels

IRC legt zich voornamelijk toe op channels, in plaats van op personen. Channels of kanalen zijn een soort kamers (daarom ook wel door sommige mensen "rooms" genoemd) over een meer of minder specifiek onderwerp (dit onderwerp is meestal in meer of mindere mate "bindend", al wordt er vaak ook offtopic gepraat). Indien iets in een channel gezegd wordt, kan, afhankelijk van de regels, meestal iedereen het lezen die ook in het channel aanwezig is. IRC is dus een vorm van multicasting. Op meerdere channels aanwezig zijn is in principe mogelijk — echter, de meeste servers hebben een limiet op de hoeveelheid channels waar een gebruiker gelijktijdig in aanwezig is. Individueel chatten tussen twee personen is ook mogelijk via zogenaamde query-messages (privéberichten).
Op de meeste netwerken kan iedereen zelf een eigen channel beginnen en beheren. Hulp hierbij wordt vaak aangeboden in de vorm van services.
Channels waren vroeger genummerd, gemodelleerd naar radiofrequenties. Tegenwoordig hebben channels vrijwel altijd namen, beginnend met een prefix. De standaardprefix is "#"; sommige servers bieden echter ook andere aan, zoals "&". Het verschil tussen de prefixes # en & in de naam van een channel is meestal de bereikbaarheid; een "#" (jargon: sharp) is een zogeheten globaal channel; deze zal aanwezig zijn op alle servers in het netwerk. Een channel met prefix & is enkel bereikbaar voor mensen die op dezelfde server zitten. Omdat er meerdere verschillende &-kanalen op hetzelfde netwerk aanwezig kunnen zijn, kan dit voor verwarring zorgen. Mede hierdoor worden &-channels nauwelijks meer gebruikt.
Een IRC-gebruiker kan in principe altijd een kanaal binnengaan; het IRC-protocol implementeert echter een aantal beveiligingen om kanalen eventueel af te sluiten voor de "grote massa". Een channel verlaten kan vrijwel altijd. Een channel binnengaan wordt joinen genoemd (naar de IRC-opdracht "JOIN"). Een channel verlaten wordt "parten" genoemd (wederom vernoemd naar de aanverwante IRC-opdracht, namelijk "PART").

### Channel Operators

Een Channel Operator (meestal afgekort tot "chanop" of "op") is een beheerder van een channel. Deze functie wordt soms (mede) vervuld door één of meer bots. Deze zijn in principe aangesteld om het channel ordelijk te houden, al komt misbruik regelmatig voor. Een channel operator kan technische maatregelen instellen, zoals een limiet op het aantal gelijktijdige leden, gebruikers uit het channel gooien (kicken, meestal als waarschuwing of plagerij), verbannen (bannen, meestal na herhaald misbruik), en andere beheerders aanstellen (meestal met minder rechten).
Op vrijwel alle servers krijgt de gebruiker na het joinen van een leeg, nieuw channel automatisch de channel operator-status toebedeeld. Om het kanaal verder te beschermen is er vaak een Channel Service aanwezig (meestal "ChanServ" geheten) die kan bijhouden wie de eigenaar van een specifiek kanaal is, en welke gebruikers extra rechten hebben op welk kanaal.

## Bots

Een IRC-bot is een IRC-client die geautomatiseerd taken uitvoert voor andere gebruikers. Bots vervullen verschillende functies, variërend van simpele raadspelletjes tot het op afstand besturen van computers (vaak zijn deze dan ook beveiligd met een wachtwoord). Een speciaal geval van bots zijn de zogeheten services: bots die door de beheerders van het netwerk zijn aangesteld om henzelf en gebruikers te helpen met "alledaagse" taken zoals het reserveren van gebruikersnamen en het beheren van kanalen.

## Clients

Een IRC-gebruiker gebruikt meestal een IRC-client, een programma dat ontworpen is om verbinding te maken met een of meerdere IRC-netwerken. De meeste IRC-programma's vertalen het IRC-clientprotocol naar een min of meer gebruiksvriendelijk formaat, waardoor de gebruiker geen verstand hoeft te hebben van het protocol zelf om gebruik te kunnen maken van IRC. Een IRC-client kan zijn opgenomen in een internet suite.
Hieronder staan er een aantal vermeld:
* AdiIRC, een grafische IRC-client voor Windows met veel features waaronder het gebruiken van mIRC scripts.
* Adosbox Tchatche IRC Client, (alle platforms die Flash ondersteunt, geschreven in Flash/Flex)
* BitchX, een IRC-client voor Unix, voor de console. Behoort tot de ircII-familie.
* ChatZilla, een chatextensie voor Mozilla Firefox.
* CIRC, een IRC-client in de vorm van een packaged app voor Google Chrome
* Colloquy, een open-source IRC-client voor OS X.
* HexChat, een IRC-client voor Windows, OS X en Linux gebaseerd op XChat
* HydraIRC, een open source-IRC-client.
* IceChat, een grafische IRC-client.
* ircII, herschreven versie van de oorspronkelijke IRC-client voor Unix.
* Ircle, voor de Apple Macintosh, propriëtaire software.
* Irssi, een veelgebruikte IRC-client voor Unix en Linux voor de terminal. Behoort tot de ircII-familie.
* Jabber-clients, met behulp van brugsoftware zoals ejabberd.
* Klient, een grafische IRC-client voor Windows met veel features.
* Konversation, een grafische client voor X, voornamelijk gebruikt in combinatie met KDE.
* KSirc, een grafische IRC-client voor X, voornamelijk gebruikt in combinatie met KDE.
* KVirc, een grafische IRC-client voor Windows, OS X, Linux en Unix.
* Linkinus, een IRC-client voor OS X.
* Miranda IM, een veelzijdig open source-chatprogramma, dat vele IM-netwerken en IRC ondersteunt.
* mIRC, de meest gebruikte Windows-client, enkel Windows, propriëtaire software)
* mIRGGI, een IRC-client voor Symbian (Nokia)
* Quassel IRC, een grafische IRC-client voor Windows, OS X, Linux, en Android
* pIRCh, een open directory IRC-client die meerdere gelijktijdige connecties met eenzelfde server kan houden. Ook bekend als pirch98.
* Smuxi, een multiplatform-client voor Windows, OS X en Linux.
* Trillian, een client die zowel IRC alsook MSN, ICQ, aim, yim en via modules ook XMPP en Skype beheert.
* vIRC, een eenvoudige en gratis IRC-client geschreven in Visual Basic.
* WeeChat, een opensource IRC-client welke standaard komt met een terminal interface maar ook optioneel beschikt over andere interfaces zoals een webinterface.
* X-Chat Aqua, een verbeterde versie van XChat voor OS X in combinatie met Aqua.
* XChat, een opensource-chatprogramma voor Windows, OS X en Linux. (inactief)