Nun wieder zu einem einfacheren Protokoll: IRC57, definiert in RFC 1459. IRC ist sehr viel jünger als zum Beispiel SMTP oder FTP und übernimmt einen Bereich des Internets, der immer mehr an Zustimmung findet: Echt-Zeit58 Chatten.
Bei IRC werden Leute mit gleichen Interessen in "`Channels"' eingeteilt59, zum Beispiel #linux
oder #hurd
.
Die Kommunikation läuft dann immer über den Server, das heißt, es werden keine Verbindungen zwischen den Client-Rechnern selbst hergestellt. Bei einigen hundert Leuten pro Channel würde man, wenn alle Clients miteinander verbunden werden sollten, tausende Verbindungen benötigen. Wenn sich alle Clients nur mit dem Server verbinden sind nur soviel Verbindungen nötig wie Clients vorhanden sind (siehe Grafik
Dabei tauschen sich die einzelnen IRC-Server eines IRC-Netzwerkes (es gibt mehrere) auch gegenseitig aus, um ein möglichst synchrones IRC-Netz zu gewährleisten. Somit ist es egal, zu welchem Server eines Netzes ein Client sich verbindet: Er sieht trotzdem alle Nachrichten aller anderen Clients desselben Netzes.
Im Folgenden werden wir eine Runde im Channel #infothek
des Servers
irc.de.quakenet.eu.org:6667
chatten. Dazu verbinden wir uns zuerst mit dem
Server, woraufhin wir gleich eine Authentifizierungsmeldungen erhalten:
<NOTICE AUTH :*** Looking up your hostname <NOTICE AUTH :*** Checking Ident <NOTICE AUTH :*** Found your hostname
Dann melden wir uns mit dem Nickname irc-telnet
und dem Realname60 Telnet Chatter
an:
>NICK irc-telnet <PING :1437972627 >PONG :1437972627 >USER irc-telnet localhost localhost :Telnet Chatter <:quakenet.org 001 irc-telnet :Welcome... <... <:quakenet.org 372 irc-telnet :- **[ End Of MOTD ]****** <:quakenet.org 376 irc-telnet :End of /MOTD command. <:quakenet.org NOTICE irc-telnet :on 2 ca 4(4) ft 20(20)Das
PONG
-Befehl als Antwort auf PING
beeinflusst die Login-Prozedur
nicht; Der Server prüft mit einem PING
-Befehl nur, ob der Client noch
online ist. Auf ein PING
-Paket muss man immer mit einem identischen
PONG
-Paket antworten.
Als nächstes gehen wir in den Channel #infothek
:
>JOIN #infothek <:irc-telnet!~irc-telne@13.9.ak.net JOIN :#infothek <:quakenet.org 353 irc-telnet = #infothek :irc-telnet @iblech <:quakenet.org 366 irc-telnet #infothek :End of /NAMES list.
Wir sind drin! Und können jetzt eine Nachricht an alle im Channel befindlichen Leute61 schicken:
>PRIVMSG #infothek :Hallo?Der erste Parameter des
PRIVMSG
-Befehls bezeichnet den Empfänger der
Nachricht. Der Empfänger kann entweder ein ganzer Channel (erkennbar an
einem #
oder &
als erstes Zeichen des Names) oder eine einzelne Person
sein. Sendet man an eine Person, so ist diese Nachricht für den Rest des
Channels unsichtbar.
Wenn uns jemand anderes Antwort (im Beispiel iblech
) sieht das dann so aus:
<:iblech!~iblech@13.9.ak.net PRIVMSG #infothek :HiDas Format der Rückgabe ist dabei
:nickname!benutzername-auf-dem-client@ip-oder-hostnameAuch hier zeigt der erste Parameter des
PRIVMSG
-Befehls den Empfänger der
Nachricht an. Eine private Nachricht des Benutzers iblech
sähe zum Beispiel
so aus:
<:iblech!~iblech@13.9.ak.net PRIVMSG irc-telnet :Private Nachr.
Um einen Channel wieder zu verlassen, benutzt man PART
:
>PART #infothek <:irc-telnet!~irc-telne@13.9.ak.net PART #infothekSchließlich können wir die Verbindung beenden:
>QUIT
Neben denen in der Tabelle aufgeführten Befehle können auch die schon von
IRC-Clients wie bitchx
oder irssi
bekannten Befehle angewendet werden,
sofern man den /
(Slash) im Befehl weglässt, also zum Beispiel LIST
statt /LIST
.
Befehl | Wirkung |
NICK nickname |
Registrierung als nickname |
USER usern localhost localhost :Realname |
Login |
JOIN channelname |
Eintreten in Channel |
PART channelname |
Austreten aus einem Channel |
PRIVMSG empfänger :Text |
Sendet eine Zeile |
QUIT |
Schließt die Verbindung |