Zum Inhalt springen

„Internet Relay Chat“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
[ungesichtete Version][gesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
 
(732 dazwischenliegende Versionen von mehr als 100 Benutzern, die nicht angezeigt werden)
Zeile 1: Zeile 1:
{| class="wikitable float-right" style="width:30%;"
{| border="0" cellspacing="3" style="float:right;padding-left:15px;text-align:center;"
|+ class="hintergrundfarbe6" style="font-size:larger;"| IRC (Internet Relay Chat)
|+ IRC im [[TCP/IP-Referenzmodell|TCP/IP-Protokollstapel]]
|-
| bgcolor="#FFCC99" | '''Anwendung'''
| '''Familie:'''
| colspan="4" bgcolor="#9999FF" | '''IRC'''
| [[Internetprotokollfamilie]]
|-----
|-
| bgcolor="#FFCC99" | ''Transport''
| '''Einsatzgebiet:'''
| colspan="4" bgcolor="#EEEEFF" | '''TCP'''
| Messaging, Soziale Netze
|-----
|-
| rowspan="1" bgcolor="#FFCC99" | ''Netzwerk''
| '''Port:''' || 194/TCP Offiziell, nicht in Verwendung,<br /> 6665-6669/TCP Offiziell, 6667 am häufigsten verwendet<br /> 6697/TCP Offiziell, für TLS-Verbindungen
| colspan="4" bgcolor="#EEEEFF" | '''IP'''
|-----
|-
|colspan="2" style="text-align:center"|
| rowspan="2" bgcolor="#FFEEBB" | ''Netzzugang''
{{Netzwerk-TCP-IP-Anwendungsprotokoll|IRC|}}
| rowspan="2" bgcolor="#EEEEEE" | Ethernet
|-
| rowspan="2" bgcolor="#EEEEEE" | Token<br>Ring
| '''Standards:'''
| rowspan="2" bgcolor="#EEEEEE" | FDDI
| <nowiki>RFC&nbsp;1459</nowiki> (1993)<ref name="RFC1459" /><br />
| rowspan="2" bgcolor="#EEEEEE" | …
<nowiki>RFC&nbsp;2810–2813</nowiki> (2000)<ref name="RFC2810/2813" /><br />
<nowiki>RFC&nbsp;7194</nowiki><ref>{{RFC-Internet |RFC=7194 |Titel=Default Port for Internet Relay Chat (IRC) via TLS/SSL |Datum=2014-08}}</ref>
|}
|}
'''Internet Relay Chat''' (IRC) ist der Oberbegriff für ein verteiltes Netzwerk aus miteinander vernetzten [[Server]]n, mit denen sich Benutzer mittels eines [[Client]] genannten Programms verbinden können, um in so genannten Channels, thematisch organisierten Chaträumen, miteinander zu kommunizieren. IRC findet im [[Internet]] statt, gehört aber nicht zum [[World Wide Web]] (WWW).


[[Datei:Ircnetz-Schema.svg|mini|Schema eines [[IRC-Netzwerk]]s mit [[IRC-Client|Clients]] (eckig), darunter normale Benutzer (grün), [[Bouncer]] (orange), Bots (bläulich) und [[IRC-Services]]]]
Channels tragen Namen wie #Mexico oder #Philosophie, haben ihre eigenen Regeln und gehören meistens einem so genannten Owner oder Manager, der seine Macht an Operatoren delegiert. Die größten Channels haben mehrere tausend Benutzer gleichzeitig.
[[Datei:Quassel IRC 2020 wmaker.png|mini|Chat von einem IRC-Client aus gesehen]]


<span style="white-space:nowrap">'''Internet Relay Chat''', kurz '''IRC''', bezeichnet</span><!-- Mindestbreite der Textspalte wegen überbreiter Infobox --> ein textbasiertes [[Chat]]-System. Es ermöglicht Gesprächsrunden mit einer beliebigen Anzahl von Teilnehmern in sogenannten Gesprächskanälen („Channels“), aber auch Gespräche mit nur zwei Partnern (Query).<ref name="RFC1459-1">{{RFC-Internet |RFC=1459 |Titel=Internet Relay Chat Protocol |Datum=1993-05 |Abschnitt=1}}</ref> Neue Channels können von jedem Teilnehmer eröffnet werden, ebenso kann man gleichzeitig an mehreren Channel-Gesprächen teilnehmen.
Die ursprüngliche Idee eines Chat-Netzwerkes entstand im [[BITNET]] unter dem Namen [[Relay Chat (BITNET)|Relay Chat]]. Dieses System wurde vom finnischen Studenten [[Jarkko Oikarinen]], der an der Fakultät für Informatik der Universität [[Oulu]] studierte, im Sommer [[1988]] auf das Internet übertragen.


Für die Einwahl wird ein [[Client|Netzwerkprogramm]] benötigt, wobei dieser „IRC-Client“ ein eigenständiges Programm am lokalen Rechner (z.&nbsp;B. [[mIRC]], [[XChat]]) oder auch nur [[IRC-Client#Typen interaktiver IRC-Clients|eine Benutzeroberfläche]] im [[Webbrowser]] sein kann.
Mit der Zeit wuchs das Netzwerk zu einer solchen Größe heran, dass es zum einen zu technischen Problemen kam und zum anderen zu unübersichtlich und chaotisch wurde. Daher entstanden ab etwa [[1993]] weitere unabhängige, kleinere Netzwerke. Im Sommer [[1996]] wurde dann auch das ursprüngliche Netzwerk aufgrund Differenzen der Betreiber geteilt. Diese Teile findet man heute hauptsächlich im [[IRCNet]] (hauptsächlich europäische Betreiber) und im [[EFnet]] (hauptsächlich Betreiber in den USA) wieder. Heute gibt es tausende voneinander unabhängige Netze. Große Netze mit gleichzeitig mehr als 100.000 verbundenen Clients sind [[QuakeNet]], [[EFnet]], [[IRCNet]] oder [[Undernet]], kleinere heißen DALnet, [[Freenode]], Blitzed, [[GamerIRC]], [[GameSurge]] oder NewNet. In größeren Netzwerken können aufgrund Netzwerkproblemen oder -überlastung auch [[Netsplit]]s auftreten.


Zur Vermittlung der Gespräche im IRC dient ein [[IRC-Netzwerk]], das aus miteinander verbundenen [[IRC-Server|Servern]] (den „[[Relais]]“-Stationen) besteht. Wesensmerkmal dieser Netzwerke ist seine vom [[BITNET]] übernommene Kommunikationstopologie, wonach zwischen zwei beliebigen Teilnehmern immer nur genau ein Kommunikationspfad existiert. Dies stellte historisch eine effiziente Kommunikation sicher, denn in der Anfangszeit des IRC hatten interkontinentale Datenleitungen eine stark begrenzte Kapazität. Die Topologie ermöglichte es, dass eine Nachricht eines Clients auf einem Kontinent nicht für jeden Client auf dem anderen Kontinent einzeln über die Interkontinentalleitung gesendet werden musste, sondern nur einmal an einen dortigen Server, der sie dann an die Clients weiterverteilte. So waren trotz beschränkter Leitungskapazitäten sehr große „Chatlandschaften“ möglich. Nachteil des Prinzips ist die fehlende Redundanz, die sich in [[Netsplit]]s äußert: Fällt irgendein Server aus, zerfällt das Netzwerk automatisch in voneinander getrennte Teile, bis dazwischen wieder eine neue Verbindung hergestellt wurde.
Die Netze unterscheiden sich in regionalen Schwerpunkten, Sprachen, Themen und angebotenen Services. Auch die Akzeptanz oder Toleranz gegenüber Sex und Kanälen für die Verteilung von Schwarzkopien spielt zunehmend eine Rolle. Das Chatsystem ist textbasiert, erlaubt jedoch über weitere Kommandos auch den Austausch von Dateien und sonstigen Informationen über eine [[Direct Client-to-Client]]-Verbindung (DCC) zweier User. Automatisierte DCC-Downloadmöglichkeiten wie bei einer [[Tauschbörse]] werden auch [[XDCC]] genannt.


Die größten IRC-Netzwerke bestehen aus mehreren Dutzend [[IRC-Server]]n, die gleichzeitig über 100.000 Benutzer verbinden und zehntausende Channels verwalten, an denen jeweils mehrere tausend Personen gleichzeitig teilnehmen können. Trotz dieser enormen Ausmaße ist die Verzögerung eines abgeschickten Textes für gewöhnlich in der Größenordnung von Zehntelsekunden und überschreitet nur in seltenen Fällen die Sekundenmarke.
== Clients ==


== Entwicklung ==
Die meisten Programme bieten bereits eine Auswahl an [[Server]]n an, mit denen man sich verbinden kann. Nachdem man mit einem Server verbunden ist (dieser Schritt wird Connect genannt), besteht die Möglichkeit, sich die vorhandenen Channels auflisten zu lassen. Der Befehl lautet /list, aufgrund der dabei übertragenen Menge an Informationen über alle existierenden Channel wird man jedoch bei fast allen Servern wieder disconnected. Viele Netzwerke unterstützen daher auch eine Suche mit [[Wildcard (Informatik)|Wildcards]].
[[Datei:Tolsun 2.jpg|mini|hochkant|Der erste IRC-Server, tolsun.oulu.fi ([[Sun Microsystems|Sun-3]])]]
Die ursprüngliche Idee eines Chat-Netzwerkes entstand im [[BITNET]] unter dem Namen ''[[Bitnet Relay|Relay Chat]]''. Dieses System wurde vom finnischen Studenten [[Jarkko Oikarinen]], der an der [[Fakultät (Hochschule)|Fakultät]] für [[Informatik]] der [[Universität Oulu]] studierte, im Sommer 1988 auf das Internet übertragen.


Mit der Zeit wuchs das Netzwerk zu einer solchen Größe heran, dass es zum einen zu technischen Problemen kam und zum anderen zu unübersichtlich und chaotisch wurde. Daher entstanden ab etwa 1993 weitere unabhängige, kleinere Netzwerke. Im Sommer 1996 wurde dann auch das ursprüngliche Netzwerk aufgrund von Differenzen der Betreiber geteilt. Diese Teile findet man heute im [[IRCnet]] (meistens europäische Betreiber) und im [[EFnet]] (hauptsächlich Betreiber in den [[Vereinigte Staaten|USA]]) wieder. Heute gibt es tausende voneinander unabhängige Netze. Große Netze sind [[QuakeNet]], EFnet, IRCnet, [[Undernet]], [[Libera Chat]] und [[freenode]], kleinere etwa [[DALnet]], [[euIRCnet]], FurNet, [[Open and Free Technology Community|OFTC]] oder [[GameSurge]]. In allen Netzwerken können aufgrund von Netzwerkproblemen oder -überlastung auch [[Netsplit]]s auftreten.
Wird ein noch nicht vorhandener Channel betreten, legt der IRC-Server diesen an und gibt dem Benutzer die Kontrollrechte (Owner) über den Channel. Sobald der letzte Benutzer einen Channel verlässt, wird der Channel aufgelöst. In vielen IRC-Netzwerken werden allerdings für Channels mit einer bestimmten Benutzerzahl [[Bot]]s angeboten, die den Channel in diesem Fall „bewachen“ und den entsprechenden Benutzern ihre Rechte zurückgeben, sobald sie den Channel erneut betreten.


Die Netze unterscheiden sich in regionalen Schwerpunkten, Sprachen, Themen und angebotenen Services. Auch die Akzeptanz oder Toleranz gegenüber Sex und Kanälen für die Verteilung von [[Schwarzkopie]]n spielt zunehmend eine Rolle. Das Chatsystem ist textbasiert, erlaubt jedoch über weitere Kommandos auch den Austausch von Dateien und sonstigen Informationen über eine [[Direct Client-to-Client|Direct-Client-to-Client]]-Verbindung (DCC) zweier User. Automatisierte DCC-Downloadmöglichkeiten werden auch [[XDCC]] genannt.
Je nach Netzphilosophie können Nicknames und Channelnamen registriert werden. Die Registrierung ist bei den meisten Netzen sehr einfach. In Channels wie #help, #hilfe oder #helpdesk (die in praktisch allen Netzen vorhanden sind) kann man sich erkundigen, wie die Regeln und Kommandos hierzu im einzelnen lauten. Auf der Webseite des jeweiligen Netzes oder in der MOTD, die beim Connect angezeigt wird, findet man ebenfalls weitergehende Informationen.


== Protokoll ==
Wie generell im [[Internet]] üblich sollte man auch im IRC auf seine Sicherheit achten, da die Annahme von Dateitransfers von unbekannten Nutzern oder Unachtsamkeit zum Ausspionieren von Passwörtern oder Virenbefall des eigenen Rechners führen können.
Beim ursprünglichen IRC kommt ein auf [[Internet Protocol|IP]] und [[Transmission Control Protocol|TCP]] basierendes, textorientiertes [[Netzwerkprotokoll|Protokoll]] zum Einsatz.


=== Nutzerinduzierte Befehle ===
===Gängige IRC-Clients===
Es ist beim IRC üblich, dass Benutzer direkt in die [[Kommunikation]] zwischen ihrem Client und dem IRC-Server eingreifen, indem sie eigene Nachrichten/Befehle schicken.


Ein Beispiel für einen oft verwendeten Befehl ist ''/whois Nickname'', der üblicherweise genau so einfach in einem Textfeld des IRC-Clients eingegeben werden kann. Der vorangestellte [[Schrägstrich|Slash]] (''/'') signalisiert dem IRC-Client, dass es sich um eine Nachricht handelt, die er dem IRC-Server in dieser Form übermitteln soll. Der Client schickt dem Server also ''whois Nickname'', wobei ''whois'' den Befehl und ''Nickname'' den Parameter darstellt.
* [[Microsoft Windows]]:
::[[SavIRC|savIRC]], [[Mirc|mIRC]], PIRCH, [[XChat]], [[Nettalk]], [[Gaim]], [[Miranda IM]], [[Trillian (Instant Messenger)|Trillian]], [[Chatzilla]], EPIC-Win32 [[Opera]] (ab Version 7.5), [[KVIrc]], [[HydraIRC]], [[BersIRC]], [[XiRCON]]
* [[AmigaOS]]:
::AmIRC (kommerziell), ircII, BlackIRC (FreeWare), BenderIRC (FreeWare mit Support), irchat, GrapeVine (nicht aktuell)
* [[Unix]]/[[Linux]]:
::[[SavIRC|savIRC]], ircII, ircII-EPIC, [[irssi]], [[BitchX]], ScrollZ, [[XChat]], [[Gaim]], [[Kopete]], KSirc, [[Chatzilla]], [[Opera]] (ab Version 7.5), Konversation, [[KVIrc]]
* [[Mac OS]]:
::[[SavIRC|savIRC]], Ircle, Snak, Colloquy, [[XChat]] Aqua, Conversation, [[Chatzilla]], MacIrssi, Fire, [[Opera]] (ab Version 7.5)
* [[Emacs]]:
::[[ERC (IRC-Client)|ERC]], Riece, ZenIRC, IrChat
* [[Java (Programmiersprache)|Java]]:
::[[jIRC]]. [[CBIRC]]
* [[Java-Applet]]s:
::[[pjirc]], [[EIRC]]
* [[Webserver]]:
::CGI:IRC ([[Perl]]/[[Common Gateway Interface]])


=== Kommunikation ===
''Siehe auch:'' [[Bouncer]], [[Instant Messaging]]
Sämtliche Kommunikation zwischen Client und Server und den Servern untereinander wird über Nachrichten (''messages'') in Befehlsform mit einer Maximallänge von 512 Zeichen inklusive befehlsbeendendem Zeilenumbruch abgewickelt.


Eine Nachricht besteht aus einem Absender (''prefix''), einem Befehl (''command'') und zusätzlichen Befehlsparametern. Die Parameter und ob überhaupt welche nötig sind, hängen vom jeweiligen Befehl ab. Bei Befehlen vom Client zum Server wird der Absender üblicherweise weggelassen, da kein anderer Absender als der Client selbst in Frage kommt.
== Protokoll ==
Beim ursprünglichen IRC kommt ein textbasiertes [[Netzwerkprotokoll|Protokoll]] zum Einsatz. Sämtliche Kommunikation zwischen Client und Server und den Servern untereinander wird über Nachrichten (''messages'') in Befehlsform mit einer Maximallänge von 510 Zeichen abgewickelt. Eine Nachricht besteht aus einem Absender (''prefix''), einem Befehl (''command'') und zusätzlichen Befehlsparametern. Als Antwort auf eine Nachricht von einem Client kann ein Server eine Antwort-Nachrichten (''reply'') schicken, die an Stelle des Befehls einen ''Reply-Code'' hat. Dabei handelt es sich um eine dreistellige Zahl mit fest definierter Bedeutung.
Zwingender Bestandteil einer Nachricht ist in allen Fällen jedoch nur die Angabe eines Befehls. Clients schicken ihre Nachrichten generell ohne Angabe eines Absenders ab, dieser wird erst beim Server ergänzt, um Falschangaben ([[Spoofing]]) zu verhindern. Server tauschen untereinander nur Nachrichten mit Absenderangabe aus, da Server oftmals Nachrichten nur [[routing|durchrouten]], und hierzu Ziel und Quelle einer Nachricht nötige Angaben sind. Ob überhaupt und wieviele Parameter bei einer Nachricht angegeben werden/müssen, richtet sich im Wesentlichen nach dem jeweiligen Befehl.


Server tauschen untereinander nur Nachrichten mit Absenderangabe aus, da Server oftmals Nachrichten nur [[Routing|durchrouten]], und hierzu Ziel und Quelle einer Nachricht nötige Angaben sind.
Da die Protokoll-Definition relativ locker ist, ist es beim IRC üblich, dass Benutzer direkt in die Kommunikation zwischen ihrem Client und dem IRC-Server eingreifen, indem sie eigene Nachrichten/Befehle schicken. Ein Beispiel für einen oft verwendeten Befehl wäre ''/whois Nickname'', der üblicherweise genau so einfach in einem Textfeld des IRC-Clients eingegeben werden kann. Der vorangestellte [[Slash]] (''/'') signalisiert dem IRC-Client, dass es sich eine Nachricht handelt, die er dem IRC-Server in der Form übermitteln soll. Der Client schickt dem Server also ''whois Nickname'', wobei ''whois'' den Befehl und ''Nickname'' den Parameter darstellt.


Als Antwort auf eine Nachricht von einem Client kann ein Server eine Antwort-Nachricht (''reply'') schicken, die einen ''Reply-Code'' hat. Dabei handelt es sich um eine dreistellige Zahl mit fest definierter Bedeutung. Auch hier weicht jedoch mangels Absprache die Bedeutung von Netzwerk zu Netzwerk ab.
Aufgrund dieses für Menschen einfachen und intuitiven Formats gibt es sehr viele Protokoll-Erweiterungen. Viele Befehle wurden ergänzt oder deren Syntax erweitert. Oftmals sind auch die sog. [[Channelmodes]] und [[Usermodes]] um neue Modi erweitert.
Die Entwicklung dieser Erweiterungen ist jedoch weitgehend unabhängig voneinander und unorganisiert in den verschiedenen IRC-Netzwerken abgelaufen. Es existieren daher keine einheitlichen Standards über diese Erweiterungen.
[http://www.faqs.org/rfcs/rfc1459.html RFC1459] beschreibt das ursprüngliche Protokoll. Bis auf wenige Details sind alle dort beschriebenen Mechanismen und Befehle bis heute gültig und stellen die Basis für das IRC-Protokoll dar.


Das IRC-Protokoll verursacht standardmäßig zwischen den Servern durch die verhältnismäßig langen Namen der Befehle relativ viel Steuerungsaufwand (Overhead), der wiederum unnötig viel Datenverkehr zur Folge hat. Um die Kosten zu verringern, wird in einigen IRC-Netzen ein spezielles [[Server-zu-Server]]-Protokoll eingesetzt, das beispielsweise für die Kommunikation zwischen den Servern ein so genanntes Token anstatt des vollständigen Befehls vorsieht (zum Beispiel „P“ anstatt „PRIVMSG“).
Darüber hinaus existieren [http://www.faqs.org/rfcs/rfc2810.html RFC2810], [http://www.faqs.org/rfcs/rfc2811.html RFC2811], [http://www.faqs.org/rfcs/rfc2812.html RFC2812] und [http://www.faqs.org/rfcs/rfc2813.html RFC2813]. Sie haben jedoch in der Praxis wenig bis keinerlei Bedeutung, da kein IRC-Server existiert der sie auch nur annäherungsweise vollständig implementiert. Insbesondere im Bereich der Kommunikation zwischen Servern innerhalb eines Netzes werden teilweise auch verkürzte (und dadurch inkompatible) Abwandlungen des Protokolls eingesetzt.


== Weblinks ==
=== Erweiterungen ===
Für IRC gibt es viele eigenständige Protokoll-Erweiterungen. Viele Befehle wurden ergänzt oder deren Syntax erweitert. Oftmals sind auch die so genannten [[Channelmode]]s und [[Usermode]]s um neue Modi erweitert. Die Entwicklung dieser Erweiterungen ist jedoch weitgehend unabhängig voneinander und unorganisiert in den verschiedenen IRC-Netzwerken abgelaufen und hängt generell von der verwendeten [[IRC-Daemon|IRC-Serversoftware]] ab.


Es existiert deshalb nur unzureichende Dokumentation und Standardisierung dieser Erweiterungen. <code><nowiki>RFC&nbsp;1459</nowiki></code><ref name="RFC1459" /> beschreibt das ursprüngliche Protokoll, wovon die meisten Mechanismen und Befehle bis heute gültig sind und die Basis für anderweitige Erweiterungen des Protokoll sind. Dennoch sind diverse beschriebene Details durch die Weiterentwicklungen der [[IRC-Daemon|Server-Software]] in den einzelnen [[IRC-Netzwerk]]en nicht mehr aktuell und auch an keiner Stelle in ihrer neuen Ausformung zentral dokumentiert.
*http://www.ircfibel.de/ Einführung in die Nutzung von IRC
*http://irc.fu-berlin.de/ - Offizielle Webseiten des deutschen IRC-Net mit kurzer Einführung und weiteren Links
*http://www.irchelp.org/ - Umfangreiches Informationsarchiv rund um IRC. Auch die spezifischen RFC-Dokumente sind hier abrufbar. (Englisch)
*http://irc.netsplit.de/ - Statistiken zu vielen IRC-Netzen (Anzahl der Benutzer, Server, Erreichbarkeit, etc.)
*http://www.st-city.net/hs/IRC.zip - Deutsche IRC-Anleitung


Darüber hinaus existieren <nowiki>RFC&nbsp;2810</nowiki>, <nowiki>RFC&nbsp;2811</nowiki>, <nowiki>RFC&nbsp;2812</nowiki> und <nowiki>RFC&nbsp;2813</nowiki>.<ref name="RFC2810/2813" /> Sie haben jedoch in der Praxis wenig bis keinerlei Bedeutung, da diese im Alleingang von Christophe Kalt, dem Programmierer von [[IRCnet]] Version 2.9, geschrieben wurden. Insbesondere im Bereich der Kommunikation zwischen Servern innerhalb eines Netzes werden teilweise auch verkürzte (und dadurch inkompatible) Abwandlungen des Protokolls eingesetzt.
=== Zitateseiten ===
*http://www.bash.org (Englisch)
*http://www.german-bash.org/ (Deutsch)
*http://www.irc-zitate.de/ (Deutsch)
*http://rootboonz.com/ (Deutsch)
*http://gqdb.de (Deutsch)
*http://www.i-rox.com/


=== Verschlüsselung ===
IRC kann sowohl in der Grundform [[Verschlüsselung|unverschlüsselt]], aber auf den meisten Netzwerken auch über eine [[Transport Layer Security|SSL/TLS]]-verschlüsselte Verbindung benutzt werden. Clientübergreifend besteht auch die Möglichkeit, Nachrichten clientseitig zu verschlüsseln.


Eine Möglichkeit bietet die Verschlüsselung mit [[FiSH (IRC)|FiSH]]. FiSH verschlüsselt Channels mittels eines [[Symmetrisches Kryptosystem|symmetrischen Kryptosystems]]. Hierfür wird für den zu verschlüsselnden Channel ein Key festgelegt, der allen Teilnehmern mitgeteilt werden muss. Ohne den Key kann der Channel zwar betreten werden (sofern er kein Passwort erfordert oder der Channelmode +i (invite only) gesetzt ist), die darüber stattfindende Kommunikation ist aber unleserlich. Weiterhin bietet FiSH die Möglichkeit, private Gespräche (Query)<ref name="RFC1459-1" /> zwischen zwei Teilnehmern abzusichern. Hier kommt ein [[asymmetrisches Kryptosystem]] zum Einsatz. Mittels [[Diffie-Hellman-Schlüsselaustausch]] wird ein Key zwischen den Teilnehmern ausgehandelt. FiSH-Plug-ins gibt es für gängige IRC-Clients wie [[mIRC]], [[XChat]] oder [[irssi]]. Auf [[Android (Betriebssystem)|Android]] bietet [[AndroIRC]] FiSH-Support.
{{WikiReader_Internet}}

Eine weitere Möglichkeit der Verschlüsselung bietet [[Off-the-Record Messaging]] (OTR). Im Gegensatz zu FiSH setzt OTR ausschließlich auf ein [[Public-Key-Verschlüsselungsverfahren|Public-Key-Verfahren]], ein [[asymmetrisches Kryptosystem]]. Auch hier kommt der [[Diffie-Hellman-Schlüsselaustausch]] zum Einsatz. Daher kann OTR auch nur das Query<ref name="RFC1459-1" /> verschlüsseln, nicht jedoch die gesamte Kommunikation in einem Channel. OTR gibt es als [[Plug-in]] für [[Pidgin (Instant Messenger)|Pidgin]], [[XChat]] und [[irssi]].

=== Zeichensätze ===
Da kein Zeichensatz festgelegt ist (wie es z.&nbsp;B. bei [[Extensible Messaging and Presence Protocol|XMPP]] der Fall ist) und es auch keine Möglichkeit gibt, den verwendeten auf Protokollebene anzugeben, kann es immer wieder zu falsch oder nicht dargestellten Zeichen durch verschiedene Zeichensätze kommen. Einige Clients versuchen, den von den Sendern benutzten Zeichensatz zu raten, dies kann aber prinzipbedingt nicht zuverlässig funktionieren, da bestimmte Bytefolgen in verschiedenen Zeichensätzen gültig sind, aber zu unterschiedlichen Interpretationen führen.

== Einstieg ==
Um am IRC teilnehmen zu können, wird ein [[IRC-Client]] als Chat-Programm benötigt, welcher die Verbindung zu einem [[IRC-Server]] aufbaut. Da IRC zu den etablierteren und älteren Standards im Internet zählt, ist die [[IRC-Client#Gängige IRC-Clients|Auswahl an IRC-Clients]] heutzutage groß.

In den meisten IRC-Clients ist bereits eine Auswahl bekannterer IRC-Netzwerke und deren [[Server]] gespeichert, mit denen man sich verbinden kann. Nachdem die Verbindung mit einem Server hergestellt ist, besteht die Möglichkeit, sich die vorhandenen Channels mit dem ''LIST''-Befehl auflisten zu lassen. Viele Netzwerke unterstützen dabei auch eine Suche mit [[Wildcard (Informatik)|Wildcards]].

=== Channels ===
Die Kommunikation mit einer Gruppe von Benutzern erfolgt innerhalb eines sogenannten ''Channels'' ({{enS}} für ''Kanal'').
Channels werden mit einem vorangestellten ''#'' gekennzeichnet.
Mit dem Befehl <code>/list</code> können die Channel des [[IRC-Server]]s angezeigt werden, mit dem man verbunden ist.
Mit dem Befehl <code>/join #channelname</code> kann man einem Channel beitreten.

Wird ein noch nicht vorhandener Channel betreten, legt der IRC-Server diesen üblicherweise an und gibt dem Benutzer die Kontrollrechte über den Channel (''Channel Operator'', kurz ''ChanOP''). Sobald der letzte Benutzer einen Channel verlässt, wird der Channel aufgelöst. Viele IRC-Netzwerke bieten allerdings für Channels [[Bot]]s bzw. Services an, die den Channel in diesem Fall „verwalten“ und den entsprechenden Benutzern ihre Rechte zurückgeben, sobald sie den Channel erneut betreten, sowie auch ein feineres Management des Channels erlauben.

Dazu werden Nicknamen und Channelnamen registriert. In Supportchannels, oft ähnlich benannt wie #irchelp, #help, #hilfe oder #helpdesk, können sich Anwender erkundigen, wie die Kommandos hierzu im Einzelnen lauten.

Manche Netzwerke bieten solche Services nicht an, da dort kein prinzipielles [[Recht|Besitzrecht]] für einen Channel oder auch für einen [[Nickname]] zugestanden wird. Hier ist der „Gründer“ des Channels selbst dafür verantwortlich, sich seine Rechte zu erhalten.

Diese Tatsache sorgt mitunter für virtuelle Kriege, welche mit legalen wie auch illegalen Mitteln ausgetragen werden, um Kontrolle über einen Channel zu erlangen (Takeover).

=== Verhaltensregeln ===
Auf der Webseite des jeweiligen Netzes oder in der [[Message of the Day|MOTD]], die beim Connect angezeigt wird, findet man zumeist Informationen über die zu beachtenden [[Netiquette#Chat|Verhaltensregeln]] und anderweitige netzwerkspezifische Besonderheiten.

=== Sicherheit ===
Wie generell im [[Internet]] sollten Anwender auch im IRC auf Sicherheit achten, da die Annahme von Dateitransfers von unbekannten Nutzern oder Unachtsamkeit zum Ausspionieren von Passwörtern oder Virenbefall des eigenen Rechners führen können. Man sollte auch beachten, dass bei einer unverschlüsselten Verbindung (ohne [[Transport Layer Security|SSL/TLS]]) ein Mitlauschen von Konversationen und Passwörtern möglich ist.

== Siehe auch ==
* [[Multi-User Chat]] – Auf [[Extensible Messaging and Presence Protocol|XMPP]] basierendes Chat-System
* [[IRC-Client]] – Clients für IRC
* [[IRC-Daemon]] (IRC-Server)
* [[SILC]] – Secure Internet Live Conferencing

== Weblinks ==
* {{Internetquelle
|autor=Kai „Oswald“ Seidler
|url=http://irc.fu-berlin.de/einfuehrung.html
|titel=Internet Relay Chat – Eine möglichst kurze Einführung
|abruf=2021-01-16}}
* {{Internetquelle
|url=http://www.irc.org/
|titel=IRC.org – your true Internet Relay Chat source
|sprache=en
|abruf=2021-01-16
|kommentar=Technische Informationen und ein Überblick zur Geschichte}}
* {{Internetquelle
|url=https://www.irchelp.org/
|titel=#IRChelp
|sprache=en
|abruf=2021-01-16
|kommentar=IRC-Hilfe-Archiv mit zahlreichen Artikeln zu IRC-Themen}}
* [http://netsplit.de/networks/ Hier] ist eine Übersicht der aktuell aktiven Chat-Netze


== Einzelnachweise ==
[[Kategorie:Netzwerkprotokoll auf Anwendungsschicht]]
<references>
<ref name="RFC1459">
{{RFC-Internet |RFC=1459 |Titel=Internet Relay Chat Protocol |Datum=1993-05}}
</ref>
<ref name="RFC2810/2813">
{{RFC-Internet |RFC=2810 |Titel=Internet Relay Chat: Architecture |Datum=2000-04}}<br />
{{RFC-Internet |RFC=2811 |Titel=Internet Relay Chat: Channel Management |Datum=2000-04}}<br />
{{RFC-Internet |RFC=2812 |Titel=Internet Relay Chat: Client Protocol |Datum=2000-04}}<br />
{{RFC-Internet |RFC=2813 |Titel=Internet Relay Chat: Server Protocol |Datum=2000-04}}
</ref>
</references>


[[Kategorie:Synchronous Conferencing-Protokoll]]
[[bg:IRC]]
[[da:IRC]]
[[Kategorie:IRC| ]]
[[Kategorie:Instant-Messaging-Protokoll]]
[[en:Internet Relay Chat]]
[[eo:IRC]]
[[Kategorie:Netzkultur]]
[[Kategorie:Englische Phrase]]
[[es:IRC]]
[[fi:IRC]]
[[fr:Internet Relay Chat]]
[[ia:Internet Relay Chat]]
[[is:Internet Relay Chat]]
[[it:Internet Relay Chat]]
[[ja:インターネット・リレー・チャット]]
[[ko:IRC]]
[[lt:IRC]]
[[ms:IRC]]
[[nl:Internet Relay Chat]]
[[no:IRC]]
[[pl:IRC]]
[[pt:Internet Relay Chat]]
[[ru:IRC]]
[[sl:Internet Relay Chat]]
[[sr:Википедија:Ирцање/Технички детаљи]]
[[sv:Internet Relay Chat]]
[[vi:IRC]]
[[zh:IRC]]

Aktuelle Version vom 10. September 2024, 08:19 Uhr

IRC (Internet Relay Chat)
Familie: Internetprotokollfamilie
Einsatzgebiet: Messaging, Soziale Netze
Port: 194/TCP Offiziell, nicht in Verwendung,
6665-6669/TCP Offiziell, 6667 am häufigsten verwendet
6697/TCP Offiziell, für TLS-Verbindungen
IRC im TCP/IP-Protokollstapel:
Anwendung IRC
Transport TCP
Internet IP (IPv4, IPv6)
Netzzugang Ethernet Token
Bus
Token
Ring
FDDI
Standards: RFC 1459 (1993)[1]

RFC 2810–2813 (2000)[2]
RFC 7194[3]

Schema eines IRC-Netzwerks mit Clients (eckig), darunter normale Benutzer (grün), Bouncer (orange), Bots (bläulich) und IRC-Services
Chat von einem IRC-Client aus gesehen

Internet Relay Chat, kurz IRC, bezeichnet ein textbasiertes Chat-System. Es ermöglicht Gesprächsrunden mit einer beliebigen Anzahl von Teilnehmern in sogenannten Gesprächskanälen („Channels“), aber auch Gespräche mit nur zwei Partnern (Query).[4] Neue Channels können von jedem Teilnehmer eröffnet werden, ebenso kann man gleichzeitig an mehreren Channel-Gesprächen teilnehmen.

Für die Einwahl wird ein Netzwerkprogramm benötigt, wobei dieser „IRC-Client“ ein eigenständiges Programm am lokalen Rechner (z. B. mIRC, XChat) oder auch nur eine Benutzeroberfläche im Webbrowser sein kann.

Zur Vermittlung der Gespräche im IRC dient ein IRC-Netzwerk, das aus miteinander verbundenen Servern (den „Relais“-Stationen) besteht. Wesensmerkmal dieser Netzwerke ist seine vom BITNET übernommene Kommunikationstopologie, wonach zwischen zwei beliebigen Teilnehmern immer nur genau ein Kommunikationspfad existiert. Dies stellte historisch eine effiziente Kommunikation sicher, denn in der Anfangszeit des IRC hatten interkontinentale Datenleitungen eine stark begrenzte Kapazität. Die Topologie ermöglichte es, dass eine Nachricht eines Clients auf einem Kontinent nicht für jeden Client auf dem anderen Kontinent einzeln über die Interkontinentalleitung gesendet werden musste, sondern nur einmal an einen dortigen Server, der sie dann an die Clients weiterverteilte. So waren trotz beschränkter Leitungskapazitäten sehr große „Chatlandschaften“ möglich. Nachteil des Prinzips ist die fehlende Redundanz, die sich in Netsplits äußert: Fällt irgendein Server aus, zerfällt das Netzwerk automatisch in voneinander getrennte Teile, bis dazwischen wieder eine neue Verbindung hergestellt wurde.

Die größten IRC-Netzwerke bestehen aus mehreren Dutzend IRC-Servern, die gleichzeitig über 100.000 Benutzer verbinden und zehntausende Channels verwalten, an denen jeweils mehrere tausend Personen gleichzeitig teilnehmen können. Trotz dieser enormen Ausmaße ist die Verzögerung eines abgeschickten Textes für gewöhnlich in der Größenordnung von Zehntelsekunden und überschreitet nur in seltenen Fällen die Sekundenmarke.

Der erste IRC-Server, tolsun.oulu.fi (Sun-3)

Die ursprüngliche Idee eines Chat-Netzwerkes entstand im BITNET unter dem Namen Relay Chat. Dieses System wurde vom finnischen Studenten Jarkko Oikarinen, der an der Fakultät für Informatik der Universität Oulu studierte, im Sommer 1988 auf das Internet übertragen.

Mit der Zeit wuchs das Netzwerk zu einer solchen Größe heran, dass es zum einen zu technischen Problemen kam und zum anderen zu unübersichtlich und chaotisch wurde. Daher entstanden ab etwa 1993 weitere unabhängige, kleinere Netzwerke. Im Sommer 1996 wurde dann auch das ursprüngliche Netzwerk aufgrund von Differenzen der Betreiber geteilt. Diese Teile findet man heute im IRCnet (meistens europäische Betreiber) und im EFnet (hauptsächlich Betreiber in den USA) wieder. Heute gibt es tausende voneinander unabhängige Netze. Große Netze sind QuakeNet, EFnet, IRCnet, Undernet, Libera Chat und freenode, kleinere etwa DALnet, euIRCnet, FurNet, OFTC oder GameSurge. In allen Netzwerken können aufgrund von Netzwerkproblemen oder -überlastung auch Netsplits auftreten.

Die Netze unterscheiden sich in regionalen Schwerpunkten, Sprachen, Themen und angebotenen Services. Auch die Akzeptanz oder Toleranz gegenüber Sex und Kanälen für die Verteilung von Schwarzkopien spielt zunehmend eine Rolle. Das Chatsystem ist textbasiert, erlaubt jedoch über weitere Kommandos auch den Austausch von Dateien und sonstigen Informationen über eine Direct-Client-to-Client-Verbindung (DCC) zweier User. Automatisierte DCC-Downloadmöglichkeiten werden auch XDCC genannt.

Beim ursprünglichen IRC kommt ein auf IP und TCP basierendes, textorientiertes Protokoll zum Einsatz.

Nutzerinduzierte Befehle

[Bearbeiten | Quelltext bearbeiten]

Es ist beim IRC üblich, dass Benutzer direkt in die Kommunikation zwischen ihrem Client und dem IRC-Server eingreifen, indem sie eigene Nachrichten/Befehle schicken.

Ein Beispiel für einen oft verwendeten Befehl ist /whois Nickname, der üblicherweise genau so einfach in einem Textfeld des IRC-Clients eingegeben werden kann. Der vorangestellte Slash (/) signalisiert dem IRC-Client, dass es sich um eine Nachricht handelt, die er dem IRC-Server in dieser Form übermitteln soll. Der Client schickt dem Server also whois Nickname, wobei whois den Befehl und Nickname den Parameter darstellt.

Sämtliche Kommunikation zwischen Client und Server und den Servern untereinander wird über Nachrichten (messages) in Befehlsform mit einer Maximallänge von 512 Zeichen inklusive befehlsbeendendem Zeilenumbruch abgewickelt.

Eine Nachricht besteht aus einem Absender (prefix), einem Befehl (command) und zusätzlichen Befehlsparametern. Die Parameter und ob überhaupt welche nötig sind, hängen vom jeweiligen Befehl ab. Bei Befehlen vom Client zum Server wird der Absender üblicherweise weggelassen, da kein anderer Absender als der Client selbst in Frage kommt.

Server tauschen untereinander nur Nachrichten mit Absenderangabe aus, da Server oftmals Nachrichten nur durchrouten, und hierzu Ziel und Quelle einer Nachricht nötige Angaben sind.

Als Antwort auf eine Nachricht von einem Client kann ein Server eine Antwort-Nachricht (reply) schicken, die einen Reply-Code hat. Dabei handelt es sich um eine dreistellige Zahl mit fest definierter Bedeutung. Auch hier weicht jedoch mangels Absprache die Bedeutung von Netzwerk zu Netzwerk ab.

Das IRC-Protokoll verursacht standardmäßig zwischen den Servern durch die verhältnismäßig langen Namen der Befehle relativ viel Steuerungsaufwand (Overhead), der wiederum unnötig viel Datenverkehr zur Folge hat. Um die Kosten zu verringern, wird in einigen IRC-Netzen ein spezielles Server-zu-Server-Protokoll eingesetzt, das beispielsweise für die Kommunikation zwischen den Servern ein so genanntes Token anstatt des vollständigen Befehls vorsieht (zum Beispiel „P“ anstatt „PRIVMSG“).

Für IRC gibt es viele eigenständige Protokoll-Erweiterungen. Viele Befehle wurden ergänzt oder deren Syntax erweitert. Oftmals sind auch die so genannten Channelmodes und Usermodes um neue Modi erweitert. Die Entwicklung dieser Erweiterungen ist jedoch weitgehend unabhängig voneinander und unorganisiert in den verschiedenen IRC-Netzwerken abgelaufen und hängt generell von der verwendeten IRC-Serversoftware ab.

Es existiert deshalb nur unzureichende Dokumentation und Standardisierung dieser Erweiterungen. RFC 1459[1] beschreibt das ursprüngliche Protokoll, wovon die meisten Mechanismen und Befehle bis heute gültig sind und die Basis für anderweitige Erweiterungen des Protokoll sind. Dennoch sind diverse beschriebene Details durch die Weiterentwicklungen der Server-Software in den einzelnen IRC-Netzwerken nicht mehr aktuell und auch an keiner Stelle in ihrer neuen Ausformung zentral dokumentiert.

Darüber hinaus existieren RFC 2810, RFC 2811, RFC 2812 und RFC 2813.[2] Sie haben jedoch in der Praxis wenig bis keinerlei Bedeutung, da diese im Alleingang von Christophe Kalt, dem Programmierer von IRCnet Version 2.9, geschrieben wurden. Insbesondere im Bereich der Kommunikation zwischen Servern innerhalb eines Netzes werden teilweise auch verkürzte (und dadurch inkompatible) Abwandlungen des Protokolls eingesetzt.

Verschlüsselung

[Bearbeiten | Quelltext bearbeiten]

IRC kann sowohl in der Grundform unverschlüsselt, aber auf den meisten Netzwerken auch über eine SSL/TLS-verschlüsselte Verbindung benutzt werden. Clientübergreifend besteht auch die Möglichkeit, Nachrichten clientseitig zu verschlüsseln.

Eine Möglichkeit bietet die Verschlüsselung mit FiSH. FiSH verschlüsselt Channels mittels eines symmetrischen Kryptosystems. Hierfür wird für den zu verschlüsselnden Channel ein Key festgelegt, der allen Teilnehmern mitgeteilt werden muss. Ohne den Key kann der Channel zwar betreten werden (sofern er kein Passwort erfordert oder der Channelmode +i (invite only) gesetzt ist), die darüber stattfindende Kommunikation ist aber unleserlich. Weiterhin bietet FiSH die Möglichkeit, private Gespräche (Query)[4] zwischen zwei Teilnehmern abzusichern. Hier kommt ein asymmetrisches Kryptosystem zum Einsatz. Mittels Diffie-Hellman-Schlüsselaustausch wird ein Key zwischen den Teilnehmern ausgehandelt. FiSH-Plug-ins gibt es für gängige IRC-Clients wie mIRC, XChat oder irssi. Auf Android bietet AndroIRC FiSH-Support.

Eine weitere Möglichkeit der Verschlüsselung bietet Off-the-Record Messaging (OTR). Im Gegensatz zu FiSH setzt OTR ausschließlich auf ein Public-Key-Verfahren, ein asymmetrisches Kryptosystem. Auch hier kommt der Diffie-Hellman-Schlüsselaustausch zum Einsatz. Daher kann OTR auch nur das Query[4] verschlüsseln, nicht jedoch die gesamte Kommunikation in einem Channel. OTR gibt es als Plug-in für Pidgin, XChat und irssi.

Da kein Zeichensatz festgelegt ist (wie es z. B. bei XMPP der Fall ist) und es auch keine Möglichkeit gibt, den verwendeten auf Protokollebene anzugeben, kann es immer wieder zu falsch oder nicht dargestellten Zeichen durch verschiedene Zeichensätze kommen. Einige Clients versuchen, den von den Sendern benutzten Zeichensatz zu raten, dies kann aber prinzipbedingt nicht zuverlässig funktionieren, da bestimmte Bytefolgen in verschiedenen Zeichensätzen gültig sind, aber zu unterschiedlichen Interpretationen führen.

Um am IRC teilnehmen zu können, wird ein IRC-Client als Chat-Programm benötigt, welcher die Verbindung zu einem IRC-Server aufbaut. Da IRC zu den etablierteren und älteren Standards im Internet zählt, ist die Auswahl an IRC-Clients heutzutage groß.

In den meisten IRC-Clients ist bereits eine Auswahl bekannterer IRC-Netzwerke und deren Server gespeichert, mit denen man sich verbinden kann. Nachdem die Verbindung mit einem Server hergestellt ist, besteht die Möglichkeit, sich die vorhandenen Channels mit dem LIST-Befehl auflisten zu lassen. Viele Netzwerke unterstützen dabei auch eine Suche mit Wildcards.

Die Kommunikation mit einer Gruppe von Benutzern erfolgt innerhalb eines sogenannten Channels (englisch für Kanal). Channels werden mit einem vorangestellten # gekennzeichnet. Mit dem Befehl /list können die Channel des IRC-Servers angezeigt werden, mit dem man verbunden ist. Mit dem Befehl /join #channelname kann man einem Channel beitreten.

Wird ein noch nicht vorhandener Channel betreten, legt der IRC-Server diesen üblicherweise an und gibt dem Benutzer die Kontrollrechte über den Channel (Channel Operator, kurz ChanOP). Sobald der letzte Benutzer einen Channel verlässt, wird der Channel aufgelöst. Viele IRC-Netzwerke bieten allerdings für Channels Bots bzw. Services an, die den Channel in diesem Fall „verwalten“ und den entsprechenden Benutzern ihre Rechte zurückgeben, sobald sie den Channel erneut betreten, sowie auch ein feineres Management des Channels erlauben.

Dazu werden Nicknamen und Channelnamen registriert. In Supportchannels, oft ähnlich benannt wie #irchelp, #help, #hilfe oder #helpdesk, können sich Anwender erkundigen, wie die Kommandos hierzu im Einzelnen lauten.

Manche Netzwerke bieten solche Services nicht an, da dort kein prinzipielles Besitzrecht für einen Channel oder auch für einen Nickname zugestanden wird. Hier ist der „Gründer“ des Channels selbst dafür verantwortlich, sich seine Rechte zu erhalten.

Diese Tatsache sorgt mitunter für virtuelle Kriege, welche mit legalen wie auch illegalen Mitteln ausgetragen werden, um Kontrolle über einen Channel zu erlangen (Takeover).

Verhaltensregeln

[Bearbeiten | Quelltext bearbeiten]

Auf der Webseite des jeweiligen Netzes oder in der MOTD, die beim Connect angezeigt wird, findet man zumeist Informationen über die zu beachtenden Verhaltensregeln und anderweitige netzwerkspezifische Besonderheiten.

Wie generell im Internet sollten Anwender auch im IRC auf Sicherheit achten, da die Annahme von Dateitransfers von unbekannten Nutzern oder Unachtsamkeit zum Ausspionieren von Passwörtern oder Virenbefall des eigenen Rechners führen können. Man sollte auch beachten, dass bei einer unverschlüsselten Verbindung (ohne SSL/TLS) ein Mitlauschen von Konversationen und Passwörtern möglich ist.

Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]
  1. a b RFC: 1459 – Internet Relay Chat Protocol. Mai 1993 (englisch).
  2. a b RFC: 2810 – Internet Relay Chat: Architecture. April 2000 (englisch).
    RFC: 2811 – Internet Relay Chat: Channel Management. April 2000 (englisch).
    RFC: 2812 – Internet Relay Chat: Client Protocol. April 2000 (englisch).
    RFC: 2813 – Internet Relay Chat: Server Protocol. April 2000 (englisch).
  3. RFC: 7194 – Default Port for Internet Relay Chat (IRC) via TLS/SSL. August 2014 (englisch).
  4. a b c RFC: 1459 – Internet Relay Chat Protocol. Mai 1993, Abschnitt 1 (englisch).