Internet Relay Chat

Internet Relay Chat, eller IRC er et virtuelt debatforum på Internet, hvor folk fra hele verden kan mødes og skrive (chatte) med hinanden. Som bruger anvender man et klientprogram, der forbinder sig med en server i et givent IRC-netværk. Alle servere i et IRC-netværk er koblet sammen og videresender beskeder fra bruger til bruger på netværket. Man kan deltage i gruppediskussioner på en af de utallige IRC-kanaler, på et af de mange store og små IRC-netværk, eller bare skrive privat med familie eller venner, hvorend de befinder sig i verden. Hele spektret af menneskelige interesser, idéer og emner findes på IRC.

IRC blev lavet af Jarkko Oikarinen i august 1988 som en erstatning for et program kaldet MUT (MultiUser talk) på et Bulletin Board system som hed OuluBox og var i Finland. Oikarinen fandt inspiration i Bitnet Relay Chat, der dengang var at finde på Bitnet-netværket.

Et spøgefuldt citat siger: "Velkommen til IRC. Hvor mænd er mænd, kvinder er mænd og småpiger er FBI-agenter". Meningen er selvfølgelig, at man ikke altid kan stole på, at andre netbrugere er dem, de giver sig ud for at være. Samtidigt henvises til at der på IRC-netværket findes en forholdsvis stor del erotiske kanaler.

Teknisk information

Netværksstruktur 
IRC er en åben protokol der benytter TCP og i nogle tilfælde tillader kryptering ved hjælp af SSL. En IRC-server er forbundet til andre IRC-servere i et IRC-netværk. IRC-servere er oftest vedligeholdt af enkelte personer eller teams bestående af en IRC-administrator og IRC-operatører, der besidder specielle privilegier. De kan eksempelvis omforbinde serverne i netværkets struktur eller smide folk ud fra serverne, hvilket kaldes et kill på grund af navnet til kommandoen der gør det. Blandt nogle nyere netværk som Freenode er denne hierarkiske tradition ikke videreført, og serverne drives af en organisation med ansatte.

Denne illustration af et tilfældigt IRC-netværk fremgår i  fra 1988.

                           [ Server 15 ]  [ Server 13 ] [ Server 14]
                                 /                \         /
                                /                  \       /
        [ Server 11 ] ------ [ Server 1 ]       [ Server 12]
                              /        \          /
                             /          \        /
                  [ Server 2 ]          [ Server 3 ]
                    /       \                      \
                   /         \                      \
           [ Server 4 ]    [ Server 5 ]         [ Server 6 ]
            /    |    \                           /
           /     |     \                         /
          /      |      \                   /
         /       |           \                 /
 [ Server 7 ] [ Server 8 ] [ Server 9 ]   [ Server 10 ]
 
                                  :
                               [ etc. ]
                                  :
 
                 [ Fig. 1. Format of IRC server network ]

Der findes også forskellige slags servere:
 Klientservere, der tillader forbindelser fra klienter som kommunikerer med hinanden over alle serverne. Fordelen ved flere klientservere forskellige steder i verden er, at mens klienterne ikke selv behøver at have en stabil Internetforbindelse til fjerne steder i verden, kan klientserveren i stedet have det og afhjælpe op til tusinder i et område. Flere servere tilbyder desuden også stabilitet, idet enkelte servere bliver mindre overbelastet.
 Hubs, der virker som mellemled mellem klientservere. Hubs benyttes i denne sammenhaeng for at etablere en stabilitet, og for at beskytte nogle af serverne imod angreb idet hubs ikke behøver at være synlige over for klienterne.
 Services, som er automatiserede bots der opfører sig som servere og dermed gives specielle privilegier. Services kommer i mange varianter, men de mest velkendte i dag benytter strukturen og terminologien omkring NickServ, ChanServ, MemoServ, OperServ osv.

Udvikling

Klient-til-server 
Alle klient-til-server-implementationer af IRC-protokollen, i modsætning til server-til-server, kommer fra protokollen implementeret i irc2.8-versionen af IRC2-serveren, en specifik implementation hvis adfærd er dokumenteret i . Siden  blev udgivet er nyere features i irc2.10 blevet dokumenteret i , ,  og , selvom andre implementationer end irc2.10 ikke i lige så stor grad har benyttet disse RFC'er. irc2.11 er mest benyttet på IRCnet-netværket. Microsoft udvidede desuden IRC i 1998 igennem sin IRCX-protokol der løste mange af de traditionelle problemer som ældre IRC-netværk havde samt en række features som de fleste mente var "forud for sin tid". Selvom der er blevet udgivet mange specifikationer for hvordan IRC er, er der ingen officiel specifikation, selvom  ofte er forstået som mindstekravet. Stort set ingen klienter eller servere går i dag direkte ud fra nogen af specifikationerne, men i stedet for efter hvilke features der er mest i brug. Denne afvigelse af protokollerne kan sættes i kontrast med hvordan HTTP-protokollen eksempelvis er fulgt meget mere nøje.

Server-til-server 
Når klient-til-server-protokollerne i det mindste virker nogenlunde ens, er der en utrolig stor forskel på server-til-server-protokollerne, (TS5, P10 og NC/DC er meget benyttede protokoller og ukompatible med hinanden) hvilket gør det meget svært at forbinde to separate IRC-implementationer sammen. Nogle forsøg i at danne en "bro" mellem forskellige implementationer har været etableret, men disse er ofte medfulgt af restriktioner.

Feature-udvikling 
De tidligste versioner af IRC havde heller ikke mange af de egenskaber som brugere af moderne implementationer tager for givet, såsom navngivne kanaler og kanal-operatører. Førhen havde kanaler tal, og deres emnefelt angav hvad man diskuterede på den givne kanal. Et fortidslevn fra denne konvention kan ses ved de fleste IRC-serveres tendens til at forlade alle kanalerne man er på, når man går ind på kanal 0. Den første større ændring til IRC var i version 2.5 hvor navngivne kanaler blev tilføjet. Oprindeligt havde de et præfiks +, der senere i version 2.7 blev ændret til # som vi kender det i dag. I version 2.7 blev numererede kanaler desuden fjernet helt, og bandlysninger (+b) blev introduceret. I version 2.8 blev & introduceret som præfiks til kanaler som en speciel slags kanaler der ikke er delt på hele netværket, men blot ligger på den enkelte server, og ! som et andet præfiks til kanaler som en slags sikring imod en måde man kunne overtage kanaler ved hjælp af netsplit.

Klienter 
I modsætning til de fleste chatsteder på nettet ligger IRC ikke på World Wide Web, forstået på den måde at IRC-servere ikke starter med www. og at man oftest ikke bruger en browser som Internet Explorer eller Firefox til at gå ind på det. Der findes dog nyere klienter som alligevel gør dette muligt, men foruden disse skal man benytte et andet program kaldet en IRC-klient. Der findes klientprogrammer i mange varianter til stort set alle operativsystemer. Den mest populære er mIRC til Windows, men der findes rigtig mange andre. Nogle af disse klienter virker muligvis unødvendigt komplicerede, og diverse messenger-programmer som Trillian og Miranda IM tilbyder derfor IRC-adgang ved hjælp af en grænseflade der minder mere om andre messenger-programmer.

Se artiklen IRC-klienter for en liste.

Kommandoer 
Selvom der ikke er noget krav til hvordan de individuelle klienter skal opføre sig over for brugeren, har langt de fleste klienter et meget nærliggende kommandoer – linjer med tekst, der har en speciel betydning og derfor ikke bliver sendt til kanalen man befinder sig på, men i stedet bliver fortolket af klienten til at gøre noget, eventuelt gå ind på en ny kanal eller logge af serveren. Kommandoer i de fleste klienter er på en linje for sig selv og starter med / (skråstreg). Andet man skriver bliver sendt ud til alle, der er på samme kanal som en selv. Nogle af kommandoerne er:

 /server <server-adresse> – Logger dig på en server. (<server-adresse> kunne f.eks være: irc.freenode.org for at logge på Freenode)
 /join #kanal – Gå ind på kanalen ved navn #kanal. Hvis den ikke findes i forvejen, bliver den oprettet.
 /part – Forlad den aktuelle kanal
 /nick nytnavn – Skift alias til nytnavn
 /msg bruger meddelelse – Send meddelelse til bruger og ingen andre.

En komplet samling af kommandoer til individuelle klienter kan findes i deres dokumentation.

IRC-netværk 

De fire største IRC-netværk er:

 QuakeNet,
 EFnet,
 UnderNet og
 IRCnet.

Andre større netværk:
 QuakeNet
 WebChat
 GamesNET
 DALnet
 freenode
 Enter The Game

Klientprogrammer 

 Tilgængelige til flere platforme: ChatZilla, Gaim, jIRC, XChat , EPIC4, jIRCii Java

 Windows: Bersirc, dIRC, HydraIRC, Klient, mIRC, pIRCh, Trillian, vIRC, XiRCON, Microsoft Comic Chat (mIRC er den mest populære klient til IRC).

 UNIX-lignende systemer: XChat, BitchX, IIRC, ircII, irssi, Kopete, KVIrc, TalkSoup (of GNUstep), Zircon, Konversation

 Mac OS: Colloquy, Adium, Fire, IRCle, Minerva, Snak, ShadowIRC

 AmigaOS: AmIRC

Se også 
 #wikipedia
 ICQ
 Jabber
 MSN Messenger
 Yahoo! Messenger

Chattjenester