Internet Relay Chat

Internet Relay Chat, eller IRC er et virtuelt debatforumInternet, 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 programmet Chatzilla. Brugeren er logget ind på Wikipedia's IRC-kanal

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 redigér

Netværksstruktur redigér

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 RFC [https://tools.ietf.org/html/rfc1459 1459] 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 redigér

Klient-til-server redigér

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 RFC 1459. Siden RFC 1459 blev udgivet er nyere features i irc2.10 blevet dokumenteret i RFC [https://tools.ietf.org/html/rfc2810 2810], RFC [https://tools.ietf.org/html/rfc2811 2811], RFC [https://tools.ietf.org/html/rfc2812 2812] og RFC [https://tools.ietf.org/html/rfc2813 2813], 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 RFC 1459 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 redigér

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[kilde mangler], men disse er ofte medfulgt af restriktioner.

Feature-udvikling redigér

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 redigér

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 redigér

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 redigér

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

Andre større netværk:

Klientprogrammer redigér

Se også redigér