namespace cpp

C++ lernen, kennen, anwenden

Benutzer-Werkzeuge

Webseiten-Werkzeuge


netzwerk:dienste

Der König als Kunde

Aber er hat ja gar nichts an!
— Hans Christian Andersen : Des Kaisers neue Kleider

Dienstbare Geister

Im Netz kann man auf Webseiten surfen, Informationen suchen, Nachrichten austauschen, Dateien hoch- und herunterladen und mehr. Als dafür genutztes Programm wird meist nur der Webbrowser genannt. Andere Programme (für eMail, Dateiaustausch) kennen die meisten gar nicht. Auch ohne Zutun des Nutzers können Programme "nach Hause telefonieren": Die Uhrzeit des Rechners wird über das Netz abgeglichen, Programme werden aktualisiert.

Für all diese Anwendungen muss es in Netz Maschinen (und Programme) geben, von denen die Informationen abgerufen werden können. Server (Dienstleister) stehen bereit, auf Anfragen von Kunden (Client-Programmen) zu reagieren.

Nur wer fragt, erhält Antwort

Webbrowser sind Client-Programme, die darauf spezialisiert sind, mit Webservern zu kommunizieren. Was geschieht nach der Eingabe einer Webadresse wie www.gidf.de (Google ist dein Freund) in den Browser oder nach dem Antippen eines Links auf einer Webseite? Es beginnt ein Frage-Antwort-Spiel des Browsers (Client) mit der Gegenstelle (Webserver). Mit Telnet (in Windows 7 vom Administrator zu aktivieren), dem Unix-Befehl nc (Netcat) oder der für Windows-Nutzer einfacher zu bedienenden Netzkonsole (Dank an Florian!) lässt sich dieses nachvollziehen.

Protokolle

Ein "Gespräch" (eine Sitzung) zwischen zwei Maschinen folgt festgelegten Regeln, die einzuhalten sind. Ein Protokoll legt diese Regeln fest. Werden sie von einer Seite nicht beachtet, kann der Abbruch der (diplomatischen) Beziehungen durch die Gegenstelle erfolgen. Achtung! Protokoll ist hier nicht als Niederschrift eines Ablaufs zu verstehen.

Das Hypertext-Transfer-Protokoll (HTTP) dient zur Kommunikation mit einem Webserver. Daneben gibt es viele weitere (siehe Liste_der_standardisierten_Ports), u.a.

  • zum Versenden (Simple_Mail_Transfer_Protocol) und zum Lesen (POP3) von eMail (ja, das sind verschiedene!),
  • zum Hoch- und Herunterladen von Dateien (FTP),
  • zum Abfragen eines Zeitdienstes (NTP, DayTime-Protokoll).

Nicht alle Protokolle übermitteln für den Menschen lesbaren Text. Binärcode von Programmdateien und Bildern ist unleserlich, einige Protokolle (HTTPS, FTPS) verschlüsseln den zu übertragenden Inhalt — ganz wichtig ist das beim Übertragen von Passwörtern!

Sowohl zu ganz einfachen wie dem Daytime-Protokoll als auch zu komplexen Protokollen gibt es meist öffentlich einsehbare, genaue Beschreibungen. Für das Internet werden diese als Request for Comments (RFC) bezeichnet. Einige sind auch als Aprilscherz zu werten, so RFC 1149 und RFC 2549 zum Internet-Datenverkehr mittels Brieftauben (Internet_Protocol_over_Avian_Carriers).

Hier steckt keine Zauberei dahinter: Ein Schüler des SRZ Dresden beherrschte fließend HTTP, FTP, SMTP und POP3 (vermutlich auch noch andere, aber bei den erwähnten war ich vor einigen Jahren Augenzeuge). Damit ergibt sich eine interessante Zwischenfrage: Bist du sicher, dass der Webserver, den du gerade besuchst, eine Maschine und kein Lebewesen ist?

Es folgen einige Beispieldialoge, die mit Telnet, netcat oder Netzkonsole nachvollzogen werden können. (Die hellen Kästen stellen die Anfragen dar, die dunkleren die Antworten der Gegenseite.)

Webbrowser-Dialog

In einem Konsolen-Fenster (Windows-Taste+R : cmd) wird mit

telnet www.gidf.de 80

eine Verbindung zum Webserver aufgebaut. Die HTTP-Anfrage entspricht einem Mausklick auf den Weblink www.gidf.de:

GET / HTTP/1.1
Host: www.gidf.de

Nach der abschließenden Leerzeile folgt eine Antwort des Webservers. Sie besteht aus einem Vorspann und dem HTML-Text der Webseite:1)

HTTP/1.1 200 OK
Date: Sun, 06 Jul 2008 08:34:45 GMT
Server: Apache/2.0.55 (Ubuntu) PHP/5.2.6
X-Powered-By: PHP/5.2.6
Content-Length: 4364
Connection: close
Content-Type: text/html; charset=ISO-8859-1


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  <title>Google ist dein Freund - </title>
  <link rel="stylesheet" type="text/css" href="http://img.gidf.de/gidf/style.css" />
</head>
<body>
  <h1>Google Ist Dein Freund</h1>
  <h2>Clevere Leute nutzen Google</h2>
  <h3>Du scheinst nicht clever zu sein</h3>
  <p>
    Jemand ist der Meinung, dass du zu dumm bist, um mit <a href="http://www.google.de">Google</a>
    zu suchen. Stattdessen nervst du andere Leute damit, f&uuml;r dich zu suchen. 
    Man gab dir diesen Link, um dich genau darauf hinzuweisen. 
    Der Umstand, dass du ihm gefolgt bist, best&auml;tigt das.
  </p>
  [ ... leicht gekürzt ... ]
</body>
</html>

Ein Webbrowser muss diese Antwort nun noch verarbeiten, feststellen, welche weiteren Dateien (Bilder, Stylesheets usw.) zu laden sind, worauf der Inhalt dann auf dem Bildschirm dargestellt wird.

Zeitansage

Die Verbindung zum DayTime-Dienst

telnet time-A.timefreq.bldrdoc.gov 13

gibt sofort Antwort, ohne auf die überflüssige Frage "Wie spät ist es?" zu warten:

54653 08-07-06 07:39:29 50 0 0  17.2 UTC(NIST) *

Mail versenden

Der SMTP-Dialog verwendet ein zeilenorientiertes Protokoll (Servername wurde geändert):

telnet myserver.de 25
220 myserver.de ESMTP
HELO localhost
250 myserver.de
MAIL FROM: Oval Office <president@whitehouse.gov>
250 ok
RCPT TO: <myaddress@myserver.de>
250 ok
DATA
354 go ahead
Mission failed.
Take over.
.
250 ok 1215339842 qp 22716
QUIT
221 myserver.de
  • Kannst du dem Absender vertrauen?
  • Wunderst du dich noch über unerwünschte eMail?

Um dieselbe Nachricht an youraddress@yourserver.com zu senden, brauche ich nur den Empfänger (RCPT TO) zu ändern… I don't like SPAM.

1)
Inzwischen (2019) erhält man auf die Anfrage eine Fehlermeldung, obwohl die Webseite noch existiert und im Browser angezeigt wird. Offenbar wurden serverseitig Maßnahmen gegen den zunehmenden Missbrauch im Internet getroffen.
netzwerk/dienste.txt · Zuletzt geändert: 2019-06-08 12:24 von rrichter