Make your own free website on Tripod.com


vorheriges KapitelInhaltsverzeichnisStichwortverzeichnisnächstes Kapitel


4

Ein kurzer Überblick über TCP/IP

In diesem Kapitel lernen Sie einige der Protokolle kennen, die im Internet eingesetzt werden, u.a. das Transmission Control Protocol (TCP) und das Internet Protocol (IP). Dieses Kapitel liefert jedoch keine ausführliche Abhandlung über TCP/IP, sondern stellt nur das minimale Wissen zur Verfügung, das Sie für die Lektüre dieses Buches brauchen. Ich nenne Ihnen in diesem Kapitel aber Web-Links zu Dokumenten und anderen Informationen, die Ihr Wissen über TCP/IP vertiefen werden.

4.1 Was ist TCP/IP?

TCP/IP bezeichnet hauptsächlich zwei Netzwerk-Protokolle (oder Methoden der Datenübertragung), die im Internet benutzt werden: das Transmission Control Protocol (TCP) und das Internet Protocol (IP). TCP und IP sind aber nur zwei Protokolle, die zu einer viel größeren Sammlung von Protokollen gehören, der TCP/IP-Protokollfamilie.

Protokolle innerhalb der TCP/IP-Protokollfamilie übernehmen die Datenübertragung für alle Services, die dem Internet-Surfer heutzutage zur Verfügung stehen, u.a.:

4.1.1 Protokolltypen in der TCP/IP-Protokollfamilie

Die zwei Protokolltypen innerhalb der TCP/IP-Protokollfamilie, mit denen wir es zu tun haben, sind:

Lassen Sie uns kurz auf den Unterschied zwischen diesen beiden Protokolltypen eingehen.

Protokolle in der Netzwerkschicht

Netzwerkschicht-Protokolle managen die verborgenen Mechanismen der Datenübertragung. Diese Protokolle sind für den Benutzer in der Regel nicht sichtbar und arbeiten weit unter der Oberfläche. Zum Beispiel übernimmt das Internet Protocol (IP) die Paketübertragung der Informationen, die zwischen dem Benutzer und entfernten Rechnern ausgetauscht werden. Dies passiert auf Basis verschiedener Informationen, von denen die wichtigste die IP- Adresse der jeweiligen Rechner ist. Es gibt dafür keine Garantie. Wenn ein Paket verlorengeht, schreibt das Protokoll vor, daß das Bindeglied zwischen Anwendungsschicht und Netzwerkschicht (der TCP/IP-Stack) das Paket nochmal schicken muß. Das ist der größte Unterschied zwischen TCP/IP und X25. Während dieses Prozesses interagiert IP mit anderen Netzwerkschicht-Protokollen, die mit der Datenübertragung zu tun haben. Der Benutzer wird die Aktionen von IP nicht sehen, es sei denn, er benutzt Netzwerk-Utilities, wie z.B. einen Sniffer oder andere Vorrichtungen, die IP-Datagramme lesen.

Protokolle in der Anwendungsschicht

Anwendungsschicht-Protokolle dagegen sind für den Benutzer sichtbar. Zum Beispiel ist das File Transfer Protocol (FTP) ein interaktives Protokoll, d.h. Sie sehen die jeweiligen Ergebnisse Ihrer Verbindung und Übertragung. (Diese Informationen werden in Form von Fehlermeldungen und Statusberichten dargestellt, z.B. können Sie sehen, wie viele Bytes in einem bestimmten Moment übertragen wurden.)

4.1.2 Die Geschichte von TCP/IP

Das bereits im vorigen Kapitel erwähnte ARPANET arbeitete prinzipiell gut, wurde aber immer wieder von Systemabstürzen heimgesucht. Überdies stellte sich die langfristige Expansion des Netzwerks als kostspielig heraus. Daher wurde eine Suche nach einer zuverlässigeren Protokollsammlung initiiert, die Mitte der siebziger Jahre mit der Entwicklung von TCP/IP endete.

TCP/IP hatte gegenüber anderen Protokollen vor allem zwei Vorteile: es war nicht so umfangreich und konnte kostengünstiger als andere damals verfügbare Protokolle implementiert werden. Aufgrund dieser Faktoren wurde TCP/IP äußerst populär. ZuJahr 1983 wurde TCP/IP in die Version 4.2 von Berkeley Software Division (BSD)-Unix integriert. Die Integration in kommerzielle Versionen von Unix folgte bald und TCP/IP wurde als Internet- Standard etabliert. Das hat sich bis heute nicht geändert.

TCP/IP wird heute vielfach eingesetzt, nicht nur für das Internet. Zum Beispiel werden auch Intranets häufig auf TCP/IP aufgebaut. In solchen Umgebungen bietet TCP/IP bedeutende Vorteile gegenüber anderen Netzwerk-Protokollen, beispielsweise läuft TCP/IP auf einer Vielzahl an Hardware und Betriebssystemen. Daher kann man mit TCP/IP schnell und leicht ein heterogenes Netzwerk aufbauen, an das Macintoshes, Sun, und SGI(Silicon Graphics)- Workstations, PCs usw. angeschlossen sind. Jeder dieser Rechner kann mit den anderen über eine herkömmliche Protokoll-Suite kommunizieren. Aus diesem Grund erfreut sich TCP/IP seit seiner Einführung in den Markt in den siebziger Jahren immer noch großer Beliebtheit.

4.1.3 Auf welchen Plattformen läuft TCP/IP?

TCP/IP wird von den meisten Plattformen unterstützt. Der Umfang der Unterstützung ist jedoch von Plattform zu Plattform verschieden. Heutzutage bieten die meisten Betriebssysteme standardmäßig integrierten TCP/IP-Support. Viele ältere Betriebssysteme verfügen jedoch nicht über diesen integrierten Support. Tabelle 4.1 listet TCP/IP-Support für verschiedene Plattformen auf. Wenn eine Plattform integrierten TCP/IP-Support bietet, ist dies markiert. Wenn nicht, wird der Name eines TCP/IP-Betriebssystemzusatzes angegeben.

Tabelle 4.1: Plattformen und TCP/IP-Support

Plattform

TCP/IP-Support

Unix

Integriert (in den meisten Auslieferungen)

DOS

Piper/IP von Ipswitch, Information Technology FTP Server, Adobe FTP

Windows

TCPMAN von Trumpet Software

Windows 95

Integriert

Windows NT

Integriert

Macintosh

MacTCP oder OpenTransport (Sys 7.5+)

OS/2

Integriert

AS/400 OS/400

Integriert

Plattformen ohne integrierten TCP/IP-Support können diesen durch proprietäre oder von Drittanbietern erhältliche TCP/IP-Programme trotzdem implementieren. Es gibt Programme von Drittanbietern, die umfassenden TCP/IP-Support liefern, und solche, die das nur eingeschränkt tun.

Zum Beispiel stellen einige dieser Produkte dem Client lediglich die wichtigsten Dienste zur Verfügung, was für solche Benutzer ausreichend ist, die nur E-Mails empfangen und einfache Netzwerk-Funktionen ausführen wollen. Im Gegensatz dazu sind manche TCP/IP- Implementierungen durch Drittanbieter sehr umfangreich und beinhalten Server-Applikationen, vielfache Übertragungsmethoden und andere Merkmale einer ausgewachsenen Unix- TCP/IP-Implementierung.

TCP/IP-Unterstützung durch Drittanbieter verschwindet heutzutage zunehmend vom Markt, weil große Unternehmen wie Microsoft TCP/IP-Dienste in die Basispakete ihrer Betriebssysteme integriert haben.

4.1.4 Die Arbeitsweise von TCP/IP

TCP/IP arbeitet über einen Protokollstapel, der der Gesamtsumme aller Protokolle entspricht, die für die Übertragung von Daten von einem Rechner zu einem anderen notwendig sind. Anders gesagt ist dieser Protokollstapel der Weg, den die Daten nehmen müssen, um von einem Rechner heraus- und in einen anderen Rechner hineinzugelangen. Der Stapel ist in Schichten eingeteilt, von denen uns hier fünf betreffen. Abbildung 4.1 erklärt dieses Schichtenmodell.


Abbildung 4.1: Der TCP/IP-Protokoll-Stapel

Nachdem die Daten den in Abbildung 4.1 dargestellten Prozeß durchlaufen haben, erreichen sie den Zielrechner oder das Zielnetzwerk. Dort durchlaufen sie den Prozeß in umgekehrter Reihenfolge, d.h. sie treffen zuerst auf die Physikalische Schicht und reisen dann den Stapel hoch. Während dieses Vorgangs läuft sowohl auf dem Ursprungs- als auch auf dem Zielrechner ein komplexes Fehlersuchsystem.

Jede Schicht des Stapels kann Daten an seine Nachbarschicht versenden bzw. von ihr Daten empfangen. Außerdem ist jede Schicht mit mehreren Protokollen verbunden. Diese Protokolle stellen dem Benutzer verschiedene Dienste zur Verfügung. Im nächsten Abschnitt dieses Kapitels werden die Protokolle und ihre Beziehung zu den Schichten des Stapels dargestellt. Sie werden ihre Funktionen, die zur Verfügung gestellten Dienste und ihre Bedeutung in Bezug auf Sicherheit kennenlernen.

4.2 Die einzelnen Protokolle

Sie wissen jetzt, wie Daten via TCP/IP über den Protokoll-Stapel übertragen werden. Jetzt werde ich die wichtigsten Protokolle innerhalb dieses Stapels vorstellen, beginnend mit den Protokollen der Netzwerkschicht.

4.2.1 Protokolle in der Netzwerkschicht

Netzwerkschicht-Protokolle sind die Protokolle, die aktiv am Übertragungsprozeß beteiligt sind oder ihn vereinfachen. Sie sind für den Benutzer nicht sichtbar, außer er setzt Utilities zur Überwachung von Systemprozessen ein.

Tip:

Sniffer sind Vorrichtungen, die solche Prozesse überwachen können. Ein Sniffer ist eine Vorrichtung - Hardware oder Software -, die jedes Paket lesen kann, das über das Netzwerk versandt wird. Sniffer werden in der Regel eingesetzt, um Netzwerkprobleme zu isolieren, die die Leistung oder auch Performance des Netzwerks verschlechtern, obwohl sie für den Benutzer nicht sichtbar sind. Daher können Sniffer jegliche Aktivität zwischen Netzwerkschicht-Protokollen lesen. Darüber hinaus können Sniffer ein erhebliches Sicherheitsrisiko darstellen. In Kapitel 13 werden Sie mehr über Sniffer erfahren.

Wichtige Netzwerkschicht-Protokolle sind:

Im folgenden stelle ich jedes dieser Protokolle kurz dar.

Wegweiser:

Für umfassendere Informationen über Protokolle (oder den Protokoll-Stapel im allgemeinen) empfehle ich Ihnen TCP/IP Blueprints von Robin Burk, Martin Bligh und Thomas Lee (Sams Publishing) ISBN Nr. 0-672-31055-4.

Address Resolution Protocol (ARP)

ARP hat die kritische Aufgabe, die Internet-Adresse (man spricht hier von IP-Adresse) einer physikalischen Adresse eines Netzwerk-Interfaces, etwa einer Netzkarte in einem PC, zuzuordnen. (Anmerkung: Diese physikalische Adresse eines Netzwerkadapters muß auf demselben physikalischen Netzwerk einzigartig sein!)

Bevor eine Nachricht (oder andere Daten) losgeschickt wird, wird sie zunächst in IP-Pakete verpackt. Die Pakete beinhalten die numerische IP-Adresse sowohl des Ursprungs- als auch des Zielrechners. Damit ist die Information für den Transfer über das Internet vorbereitet, es fehlt nur noch das Glied der Transportkette im lokalen Netzwerk: Zu diesem Zeitpunkt ist dem Ursprungsrechner noch nicht bekannt, welcher Rechner auf dem lokalen Netzwerk verantwortlich ist für die Ziel(IP)-Adresse, falls diese überhaupt im lokalen Bereich zu suchen ist. Gesetzt, die Zieladresse ist tatsächlich auf demselben lokalen Netz zu finden, kommt hier ARP ins Spiel.

Der Ursprungsrechner sendet nun einen ARP-Broadcast (Rundruf) an alle Rechner, die physikalisch auf demselben Netzwerk angeschlossen sind und nach Daten horchen. Dieser Broadcast beinhaltet der Aufgabenstellung zufolge die Frage nach der physikalischen Adresse des Netzwerk-Interfaces, welches dem Rechner gehört, der die Zieladresse unseres IP-Pakets beherbergt (daher der Name »host«). Die Antwort enthält dann die vollständige Paarung zwischen physikalischer und IP-Adresse und muß nicht notwendigerweise vom Eigentümer selbst gegeben worden sein - sie kann auch von einem anderen Rechner kommen, der sich diese Paarung irgendwann gemerkt hat. Wenn die Antwort (ARP-Reply) den Ursprungsrechner erreicht hat, wird dieser mit dem Datentransfer beginnen, wobei er die IP- Pakete nur an das Netzwerk-Interface des Rechners schickt, dessen physikalische Adresse er erfragt hat. Alle anderen Rechner wissen, daß das Paket nicht für sie bestimmt ist, und hören weg, verbrauchen also keine unnötige Rechenleistung beim Empfangen von Paketen, die gar nicht für sie bestimmt sind. Diese Ersparnis ist der Grund für das ARP.

Wie bereits kurz erwähnt, merken sich die Rechner auf dem lokalen Netzwerk, welche physikalische Adresse zu einer IP-Adresse gehört. Dieses »Merken« nennt man »Caching«, im Fall von ARP hat der Rechner einen ARP-Cache. Ein ARP-Cache macht sich bezahlt, weil damit nicht für jedes einzelne Paket die physikalische Adresse neu erfragt werden muß, was die Leistung des lokalen Netzwerks stark herabsetzen würde. Die Einträge im ARP-Cache unterliegen einer Alterung und werden nach einer gewissen Zeit ungültig, wenn kein Datentransfer mehr stattgefunden hat. Sie müssen somit wieder mit einem ARP-Broadcast an alle Rechner auf dem Netzwerk erfragt werden. Mit dieser Mimik wird es möglich, daß Sie die Netzkarte etwa eines PC austauschen können: Nach einer Weile werden sich alle Rechner auf dem lokalen Netzwerk an die Änderung der physikalischen Adresse Ihrer neuen Netzkarte »gewöhnt« haben. Es ist übrigens ohne weiteres möglich, daß eine physikalische Adresse (also ein einzelnes physikalisches Netzwerk-Interface) mehrere IP-Adressen beherbergt, wohingegen es nicht möglich ist, daß mehrere physikalische Adressen die gleiche IP- Adresse haben. Der letztere Zustand würde Verwirrung stiften. Vielleicht sehen Sie hier bereits das Sicherheitsproblem: So etwas könnte ja auch mit Absicht passieren.

Wegweiser:

Für tiefergehende Informationen über ARP schauen Sie sich RFC 826 an. http://info.internet.isi.edu:80/in-notes/rfc/files/rfc826.txt.

Wegweiser:

Eine andere gute Quelle für Informationen über ARP ist Margaret K. Johnsons Beitrag über Details des TCP/IP-Protokolls (Auszüge aus Microsoft LAN Manager TCP/IP protocol). Sie finden den Beitrag unter http:// www.alexia.net.au/~www/yendor/internetinfo/arp.html.

Internet Control Message Protocol (ICMP)

ICMP ist für Fehler- und Kontrollmeldungen an die beteiligten Rechner oder Hosts während des Übertragungsprozesses verantwortlich. In dieser Hinsicht ist ICMP wichtig für die Diagnose von Netzwerkproblemen. Diagnoseinformationen, die durch ICMP gesammelt werden, sind beispielsweise:

Tip:

Die vielleicht bekannteste Anwendung innerhalb einer ICMP-Implementierung ist ping. ping wird oft eingesetzt, um die Empfangsbereitschaft eines entfernten Rechners sicherzustellen. Die Arbeitsweise von ping ist sehr einfach: Wenn ein Benutzer einen entfernten Rechner »anpingt«, wird eine Reihe von Paketen vom Absenderrechner zum entfernten Host übermittelt, der wiederum ein Echo der Pakete zurücksendet. Wenn kein Echo erfolgt, erzeugt das ping-Programm in der Regel eine Fehlermeldung mit dem Inhalt, daß der entfernte Rechner nicht erreichbar oder heruntergefahren ist.

Wegweiser:

Für tiefergehende Informationen über ICMP schauen Sie sich RFC 792 an unter http://info.internet.isi.edu:80/in-notes/rfc/files/ rfc792.txt.

Internet Protocol (IP)

IP gehört zur Netzwerkschicht und ist für die Übertragung von Datenpaketen für alle Protokolle der TCP/IP-Protokollfamilie verantwortlich. IP stellt damit das Herz dieses unglaublichen Prozesses dar, mit dem Daten das Internet durchqueren. Abbildung 4.2 zeigt ein kleines Modell eines IP-Datagramms, das diesen Prozeß erklärt.


Abbildung 4.2: Das IP-Datagramm

Wie in der Abbildung gezeigt, besteht ein IP-Datagramm aus mehreren Teilen. Der erste Teil, der Header (Kopfzeile), besteht aus verschiedenen Elementen, u.a. den IP-Adressen des Absenders und des Empfängers. Zusammen formen diese Elemente einen kompletten Header. Der restliche Teil des Datagramms enthält die jeweils zu versendenden Daten.

Das erstaunliche am Internet Protocol ist folgendes: Datagramme können während ihrer Reise fragmentiert und später beim Empfänger wieder zusammengesetzt werden (auch wenn sie nicht in der gleichen Reihenfolge ankommen, in der sie abgesandt wurden).

Ein IP-Datagramm enthält noch weitere Informationen, z.B. die Identität des gerade benutzten Protokolls, eine Header-Prüfsumme und eine Time-to-Live-Spezifikation. Diese Spezifikation ist ein numerischer Wert. Während das Datagramm durch das Internet reist, wird dieser numerische Wert ständig vermindert. Wenn er schließlich null erreicht, wird das Datagramm verworfen. Viele Paket-Typen haben Time-to-Live-Limitationen. Einige Netzwerk-Utilities (wie Traceroute) benutzen das Time-to-Live-Feld als eine Markierung für Diagnose-Routinen.

Zusammenfassend kann die Funktion von IP auf folgendes reduziert werden: Es dient der Übertragung von Datenpaketen über das Internet.

Wegweiser:

Lesern, die tiefergehende Informationen über das Internet Protocol suchen, empfehle ich RFC 760. http://info.internet.isi.edu:80/in-notes/rfc/ files/rfc760.txt

Transmission Control Protocol (TCP)

TCP ist eines der Hauptprotokolle des Internet. Es vereinfacht solch hochsensible Aufgaben wie die Übertragung von Dateien und entfernte Arbeitssitzungen. Die Arbeitsweise von TCP wird als zuverlässige Übertragung bezeichnet. In dieser Hinsicht unterscheidet sich TCP von anderen Protokollen der Protokollfamilie, die als unzuverlässig gelten und keine Garantie übernehmen, daß die Daten in perfektem Zustand ankommen. TCP dagegen garantiert, daß die Daten in der gleichen Reihenfolge und dem gleichen Zustand ankommen, in der bzw. dem sie abgesandt wurden.

Das TCP-System verläßt sich auf eine virtuelle Verbindung, die zwischen dem anfragenden und dem Ziel-Rechner etabliert wird. Diese Verbindung wird durch einen dreiteiligen Prozeß geöffnet, der oft auch als »three-part handshake« bezeichnet wird. In der Regel folgt der Prozeß dem in Abbildung 4.3 gezeigten Muster.


Abbildung 4.3: Der TCP/IP three-part handshake

Nach Öffnen der Verbindung können die Daten simultan in beide Richtungen reisen, was auch als Vollduplex-Übertragung bezeichnet wird. So können auch während einer Datenübertragung (oder einer anderen entfernten Arbeitssitzung) eventuell auftretende Fehler an den anfragenden Rechner übertragen werden.

TCP stellt umfangreiche Funktionen zur Fehlerüberprüfung zur Verfügung. Für jedes gesendete Datenpaket wird ein numerischer Wert generiert. Die zwei Rechner identifizieren jedes übertragene Datenpaket anhand dieses numerischen Wertes. Für jedes erfolgreich übertragene Paket sendet der Empfänger eine Nachricht an den Absender, daß die Übertragung erfolgreich war. Im Gegensatz dazu können bei nicht erfolgreicher Übertragung zwei Dinge passieren:

Nach Empfang einer Fehlermeldung werden die Daten erneut übertragen, außer wenn es sich um einen schweren Fehler handelt. In diesem Fall wird die Übertragung gewöhnlich unterbrochen. Ein typisches Beispiel für einen schweren Fehler ist z.B. ein Zusammenbrechen der Verbindung.

Ganz ähnlich dazu werden die Daten ebenfalls erneut übertragen, wenn innerhalb eines bestimmten Zeitraums keine Bestätigung empfangen wird. Dieser Prozeß wird solange wiederholt, bis die Übertragung oder die entfernte Arbeitssitzung abgeschlossen ist.

4.2.2 Protokolle in der Anwendungsschicht

Sie haben gelernt, wie Daten nach einer Verbindungsanfrage übertragen werden. Nun wollen wir uns anschauen, was passiert, wenn diese Anfrage ihr Ziel erreicht, und kommen damit zur Anwendungsschicht. Jedesmal wenn ein Rechner eine Verbindungsanfrage an einen anderen Rechner sendet, spezifiziert er ein ganz bestimmtes Ziel. Generell wird dieses Ziel durch die Hardware-Adresse des Empfängerrechners bestimmt. Aber, noch detaillierter, spezifiziert der anfragende Rechner die Applikation, die er beim Empfängerrechner erreichen möchte. Dabei spielen zwei Elemente eine Rolle:

inetd: Der Manager für Verbindungsanfragen

Bevor wir uns näher mit dem inetd-Programm befassen, möchte ich kurz den Begriff Daemon erklären, damit Sie das inetd-Programm leichter verstehen können. Daemons sind Programme, die permanent auf andere Prozesse reagieren. (In unserem Fall ist der Prozeß die Verbindungsanfrage.) Daemons entsprechen in etwa Terminate-and-Stay-Resident-Programmen (TSR = speicherresidente Programme) auf einer Microsoft-Plattform. Diese Programme laufen permanent, um auf ein bestimmtes Ereignis reagieren zu können.

inetd ist ein spezielles Daemon-Programm, das dazu benutzt wird, Verbindungsanfragen zentral zu beantworten. Der Vorteil dieses Ansatzes besteht darin, daß Systemressourcen erst dann eingesetzt werden, wenn sie auch wirklich gebraucht werden.

Das Programm reagiert auf Verbindungsanfragen von dem Netzwerk. Wenn es eine solche Anfrage erhält, wertet es sie aus. Diese Auswertung dient der Feststellung einer einzigen Sache: Welchen Dienst verlangt der anfragende Rechner? Wenn beispielsweise FTP verlangt wird, startet inetd den FTP-Server-Prozeß, worauf dieser dann die Anfrage bearbeiten kann. All dies passiert innerhalb von Sekundenbruchteilen. (Fairerweise muß man sagen, daß der Einsatz von inetd ebenfalls eine Menge Rechnerressourcen belegen kann, da für jede Verbindungsanfrage ein entsprechender Server-Prozeß gestartet wird.)

Tip:

inetd gibt es mittlerweile nicht nur für Unix. Zum Beispiel hat Hummingbird Communications (als Teil seiner Exceed-5-Produktpalette) eine inetd-Version entwickelt, die auf jeder Microsoft Windows- oder OS/2-Plattform läuft. Es gibt auch nichtkommerzielle Versionen von inetd, die von Studenten oder anderen Computer-Begeisterten geschrieben wurden. Eine dieser Versionen ist von TSF Software erhältlich unter http://www.trumpton.demon.co.uk/ index.html.

Im allgemeinen wird inetd beim Booten gestartet und bleibt resident, bis der Rechner wieder ausgeschaltet wird oder bis der Root-Benutzer den Prozeß ausdrücklich beendet.

inetd wird auf den meisten Unix-Plattformen von einer Datei namens inetd.conf im Verzeichnis /etc gesteuert. In der Datei inetd.conf werden die Dienste, die von inetd aufgerufen werden können, spezifiziert. Die Dienste umfassen z.B. FTP, Telnet, SMTP, TFTP, Finger, Systat, Netstat und andere.

Die Ports

Viele TCP/IP-Programme können über das Internet gestartet werden. Die meisten dieser Programme sind Client/Server-orientiert. Nach dem Empfang einer Verbindungsanfrage wird ein Serverprozeß gestartet, der mit dem anfragenden Client-Rechner kommuniziert.

Um diesen Prozeß zu erleichtern, wird jeder Applikation (beispielsweise FTP oder Telnet) eine spezielle Nummer zugewiesen, ein sogenannter Port. Die jeweilige Applikation ist an diesen bestimmten Port angeschlossen. Wird eine Verbindungsanfrage an diesen Port gestellt, wird die entsprechende Applikation gestartet (inetd ist das Programm, das sie startet).

Auf einem durchschnittlichen Internet-Server gibt es Tausende solcher Ports. Zur Vereinfachung und Erhöhung der Effektivität wurden Standardrichtlinien für die Zuweisung von Ports entwickelt. Anders gesagt könnte ein Systemadministrator den jeweiligen Diensten Ports seiner Wahl zuordnen, aber in der Regel werden die Dienste anerkannten Ports oder sogenannten »well-known«-Ports zugewiesen. Tabelle 4.2 gibt Ihnen einen Überblick über weithin anerkannte Ports und die Applikationen, die ihnen üblicherweise zugewiesen werden.

Tabelle 4.2: Übliche Ports und die entsprechenden Dienste oder Applikationen

Dienst oder Applikation

Port

File Transfer Protocol (FTP)

TCP Port 21

Telnet

TCP Port 23

Simple Mail Transfer Protocol (SMTP)

TCP Port 25

Gopher

TCP Port 70

Finger

TCP Port 79

Hypertext Transfer Protocol (HTTP)

TCP Port 80

Network News Transfer Protocol (NNTP)

TCP Port 119

Wegweiser:

Eine umfassende Liste aller Port-Zuweisungen finden Sie unter: ftp:// ftp.isi.edu/in-notes/iana/assignments/port-numbers. Dieses Dokument ist sehr informativ und ausführlich in seiner Beschreibung üblicherweise zugewiesener Port-Nummern.

Ich stelle Ihnen jede der Applikationen in Tabelle 4.2 im folgenden kurz vor. Alle sind Protokolle oder Dienste der Anwendungsschicht, d.h. sie sind für den Benutzer sichtbar und der Benutzer kann mit ihnen an der Konsole interagieren.

Telnet

Telnet wird am besten in RFC 854 beschrieben, der Spezifikation des Telnet-Protokolls:

Zweck des Telnet-Protokolls ist es, eine eher generelle, in beide Richtungen gerichtete, 8-bit Byte-orientierte Kommunikationsmöglichkeit zur Verfügung zu stellen. Das Hauptziel ist das Realisieren einer Standard-Methode, um Endgeräte oder Endgerät- basierte Prozesse miteinander zu verbinden.

Telnet ermöglicht dem Benutzer nicht nur, sich in einen entfernten Host einzuloggen, sondern auch auf diesem entfernten Host Befehle auszuführen. Zum Beispiel kann sich ein Benutzer in Los Angeles per Telnet in einen Rechner in New York einwählen und dann auf dem Rechner in New York Programme starten, als säße er selbst vor Ort an diesem Rechner.

Für diejenigen unter Ihnen, die Telnet nicht kennen: Man kann die Arbeitsweise von Telnet am ehesten mit dem Interface eines Mailbox-Systems vergleichen. Telnet eignet sich hervorragend als Terminal-basiertes Front-End für Datenbanken. Zum Beispiel kann auf mehr als 80 Prozent aller Universitätsbibliothekskataloge über Telnet oder tn3270 (eine 3270-Telnet- Variante) zugegriffen werden. Abbildung 4.4 zeigt ein Beispiel für einen Telnet-Bibliothekskatalog-Bildschirm.


Abbildung 4.4: Beispiel für eine Telnet-Session

Obwohl GUI-Applikationen die Welt im Sturm erobert haben, ist Telnet - das im wesentlichen eine textbasierte Applikation ist - nach wie vor aus mehreren Gründen unglaublich beliebt. Erstens stellt Telnet eine ganze Reihe von Funktionen zur Verfügung (z.B. erlaubt esdas Abrufen von E-Mails) und belegt aber nur minimale Netzwerkressourcen. Zweitens ist die Implementierung eines sicheren Telnet-Dienstes eine relativ einfache Aufgabe. Mehrere Programme können dies realisieren, das beliebteste ist Secure Shell (wird später in diesem Buch beschrieben).

Um Telnet zu benutzen gibt der Benutzer den jeweiligen Befehl ein, der zum Start des Telnet-Clients notwendig ist, gefolgt vom Namen (oder der numerischen IP-Adresse) des Ziel- Hosts. Unter Unix wird das folgendermaßen gemacht:

telnet internic.net

Der obige Befehl startet eine Telnet-Session, kontaktiert internic.net und bittet um eine Verbindung. Diese Verbindungsanfrage wird entweder angenommen oder abgelehnt, abhängig von der Konfigurierung des Ziel-Hosts. Unix wird schon seit über 10 Jahren mit integriertem Telnet-Client ausgeliefert. Aber nicht alle Betriebssysteme verfügen über einen integrierten Telnet-Client. Tabelle 4.3 listet Telnet-Clients für verschiedene Betriebssysteme auf.

Tabelle 4.3: Telnet-Clients für verschiedene Betriebssysteme

Betriebssystem

Client

Unix

Integriert

Microsoft Windows 95

Integriert (Befehlszeile), ZOC, NetTerm, Zmud, WinTel32, Yawtelnet

Microsoft Windows NT

Integriert (Befehlszeile), CRT und alle oben genannten für Windows 95

Microsoft Windows 3.x

Trumptel Telnet, Wintel, Ewan

Macintosh

NCSA Telnet, NiftyTelnet, Comet

VMS

Integriert (in einigen Versionen)

File-Transfer-Protocol (FTP)

FTP ist die Standardmethode zur Übertragung von Dateien zwischen zwei entfernten Systemen. Der Zweck von FTP ist in RFC 0765 wie folgt dargestellt:

Die Aufgaben von FTP sind 1) das gemeinnützige Verbreiten von Dateien (Programme und/oder Daten), 2) die indirekte oder implizite (durch Programme) Benutzung entfernter Rechner zu fördern, 3) dem Benutzer die Mühseligkeit der strukturellen Unterschiede der Dateisysteme zwischen verschiedenen Systemen zu ersparen und 4) Daten zuverlässig und effektiv zu übertragen. Obwohl FTP auch direkt auf einem Terminal benutzt werden kann, ist es hauptsächlich für die Benutzung über Programme entwikkelt.

Seit über zwei Jahrzehnten haben Forscher eine große Vielfalt an Methoden für die Übertragung von Dateien untersucht. Während dieser Zeit wurde der FTP-Standard immer wieder ergänzt. Die erste Definition von FTP entstand im Jahr 1971, die Spezifikationen können Sie in RFC 114 nachlesen.

Wegweiser:

RFC 114 enthält die erste Definition von FTP, aber ein praktischeres Dokument könnte RFC 959 sein: http://info.internet.isi.edu:80/in-notes/ rfc/files/rfc959.txt.

Mechanismen für das Arbeiten mit FTP

Dateiübertragungen mittels FTP werden über die Nutzung eines FTP-Clients erreicht. Tabelle 4.4 listet einige übliche FTP-Clients für die verschiedenen Betriebssysteme auf.

Tabelle 4.4: FTP-Clients für verschiedene Betriebssysteme

Betriebssystem

Client

Unix

Integriert, LLNLXDIR2.0, FTPtool, ncftp

Microsoft Windows 95

Integriert, WS_FTP, Netload, Cute-FTP, Leap FTP, SDFTP, FTP Explorer

Microsoft Windows NT

Siehe Auflistung für Windows 95

Microsoft Windows 3.x

Win_FTP, WS_FTP, CU-FTP, WSArchie

Macintosh

Anarchie, Fetch, Freetp

OS/2

Gibbon FTP, FTP-IT, Lynn's Workplace FTP

VMS

Integriert (in einigen Versionen)

Wie funktioniert FTP?

Dateiübertragungen per FTP werden in einer Client-/Server-Umgebung ausgeführt. Der anfragende Rechner startet einen der Clients aus Tabelle 4.4. Dieser generiert eine Anfrage, die an den Ziel-Server (meistens der Host eines anderen Netzwerks) übertragen wird. In der Regel wird diese Anfrage an Port 21 geschickt. Um eine Verbindung herzustellen, muß auf dem Zielrechner ein FTP-Server beziehungsweise ein FTP-Daemon laufen.

FTPD

FTPD ist der Standard-FTP-Server-Daemon. Seine Funktion ist einfach: auf Verbindungsanfragen über inetd zu reagieren und diesen Anfragen zu entsprechen. Dieser Daemon ist standardmäßig in den meisten Unix-Versionen integriert (für andere Betriebssysteme finden Sie in Tabelle 4.5 entsprechende FTP-Serverprogramme).

Tabelle 4.5: FTPD-Server-Daemons für verschiedene Betriebssysteme

Betriebssystem

Client

Unix

Integriert (ftpd), wuftd

Microsoft Windows 95

WFTPD, Microsoft FrontPage, WAR FTP Daemon, Vermilion

Microsoft Windows NT

Serv-U, OmniFSPD, Microsoft Internet Information Server

Microsoft Windows 3.x

WinQVT, Serv-U, Beames & Whitside BW Connect, WFTPD FTP Server, WinHTTPD

Macintosh

Netpresenz, FTPd

OS/2

Penguin

FTPD wartet auf eine Verbindungsanfrage, nach deren Empfang FTPD die Eingabe eines Benutzernamens fordert. Der Benutzer muß entweder einen gültigen Benutzernamen und ein Paßwort eingeben oder kann sich anonym einloggen (wenn der Server anonyme Arbeitssitzungen erlaubt).

Nach dem Einloggen kann der Benutzer Dateien herunterladen. In gewissen Fällen, wenn die Sicherheitsmaßnahmen auf dem Server dies erlauben, können auch Dateien auf den Server hochgeladen werden.

Simple Mail Transfer Protocol (SMTP)

Die Aufgabe von SMTP ist in RFC 821 präzise beschrieben:

Die Aufgabe des Simple Mail Transfer Protocol (SMTP) ist die zuverlässige und effektive Übertragung von Mail.

Der Benutzer sendet über ein SMTP-fähiges Clientprogramm eine Anfrage an einen SMTP- Server. Daraufhin wird eine Verbindung in beide Richtungen etabliert. Der Client schickt eine MAIL-Anweisung, die zeigt, daß er eine Nachricht an einen Empfänger irgendwo im Internet senden will. Wenn der SMTP-Server die Durchführung dieser Übertragung erlaubt, wird eine positive Bestätigung an den Client zurückgeschickt. Zu diesem Zeitpunkt beginnt die Arbeitssitzung. Der Client kann jetzt die Identität des Empfängers, seine IP-Adresse und die Nachricht (als Text) losschicken.

Trotz des einfachen Charakters von SMTP waren Mail-Dienste die Quelle für zahlreiche Sicherheitslöcher, was teilweise sicher an der Vielzahl der beteiligten Konfigurationsoptionen liegt. Fehlkonfigurationen sind ein weitverbreiteter Grund für Sicherheitslöcher. Ich werde später noch auf Sicherheitsaspekte zurückkommen.

SMTP-Server sind in den meisten Unix-Versionen integriert. Die meisten anderen vernetzten Betriebssysteme verfügen heutzutage ebenfalls über irgendeine Form von SMTP, deshalb spare ich mir eine Auflistung.

Wegweiser:

Weitere Informationen über SMTP erhalten Sie in RFC 821: http://info.internet.isi.edu:80/in-notes/rfc/files/rfc821.txt .

Gopher

Der Gopher-Dienst ist ein hierarchisches Informationssystem. Er wurde usprünglich als ein Campus-weites Informationssystem an der Universität von Minnesota implementiert. In einem FYI (For Your Interest) der Universität von Minnesota vom März 1993 wird er wie folgt definiert:

Das Internet Gopher Protocol ist hauptsächlich als ein hierarchisches Informationssystem entwickelt. Während Dokumente (und Dienste) auf vielen Servern liegen, präsentiert die Gopher-Client-Software dem Benutzer eine Hierarchie von Dokumenten und Verzeichnissen, ähnlich einem Dateisystem. Tatsächlich wurde das Gopher-Interface so entwickelt, das es einem Dateisystem ähnelt, da ein Dateisystem für das Ablegen von Dateien und Diensten hervorragend geeignet ist.

Wegweiser:

Die vollständige Dokumentation des Gopher-Protokolles können Sie in RFC 1436 einsehen. http://info.internet.isi.edu:80/in-notes/rfc/files/ rfc1436.txt.

Der Gopher-Dienst ist sehr mächtig und eignet sich für Textdokumente, Sound und andere Medien. Er arbeitet größtenteils im Textmodus und ist daher viel schneller als HTTP über einen Browser. Gopher-Clients sind heute für jedes Betriebssystem verfügbar, von denen einige in Tabelle 4.6 aufgelistet sind.

Tabelle 4.6: Gopher-Clients für verschiedene Betriebssysteme

Betriebssystem

Client

Unix

gopher, xgopher

Microsoft Windows (alle)

Hgopher, Ws_Gopher

Macintosh

Mac Turbo Gopher

AS/400

The AS/400 Gopher Client

OS/2

Os2Gofer

In der Regel startet der Benutzer einen Gopher-Client und kontaktiert einen vorgegebenen Gopher-Server. Danach überträgt der Gopher-Server ein Auswahlmenu, das Suchmasken, vorgegebene Ziele oder Dateiverzeichnisse enthalten kann. Abbildung 4.5 zeigt eine Client- Verbindung zur University of Illinois.


Abbildung 4.5: Beispiel einer Gopher-Session

Beachten Sie, daß das Gopher-Modell komplett Client/Server-basiert ist. Der Benutzer loggt sich niemals per se ein, sondern der Client sendet eine Anfrage an den Gopher-Server, in der er um alle verfügbaren Dokumente (oder Objekte) bittet. Der Gopher-Server antwortet mit dieser Information und tut sonst nichts weiter, bis der Benutzer ein Objekt anfordert.

Hypertext Transfer Protocol (HTTP)

HTTP ist wohl das bekannteste aller Protokolle, weil es Benutzern das Surfen im Internet ermöglicht. Wie in RFC 1945 kurz erklärt, ist HTTP

ein einfaches und schnelles Protokoll der Anwendungsschicht für hierarchische, kollaborative Hypermedia-Informationssysteme. Es ist ein auswählbares, statusloses, objektorientiertes Protokoll, das für viele Aufgaben wie Name-Server und verteilte Objekt-Management-Systeme durch die Erweiterung seiner Anfragemethoden (Befehle) eingesetzt werden kann. Ein Merkmal von HTTP ist die Wahl der Datendarstellung, was einen Aufbau von Systemen unabhängig von den übertragenen Daten ermöglicht.

Hinweis:

RFC 1945 wurde durch RFC 2068 ersetzt, eine aktuellere Spezifikation von HTTP: http://info.internet.isi.edu:80/in-notes/rfc/files/ rfc2068.txt.

HTTP hat die Natur des Internet für immer geändert, vor allem weil es das Internet für die Massen zugänglich gemacht hat. In gewisser Hinsicht entspricht seine Arbeitsweise der von Gopher. Zum Beispiel arbeitet es auch mittels eines Anfrage/Antwort-Schemas. Und das ist ein wichtiger Punkt. Während Applikationen wie beispielsweise Telnet verlangen, daß der Benutzer eingeloggt bleibt (und damit Systemressourcen verbraucht), löschen Protokolle wie Gopher und HTTP dieses Phänomen aus. Der Benutzer (Client) belegt Systemressourcen nur solange wie er Daten anfragt oder empfängt.

Bei Nutzung eines üblichen Browsers wie Netscape Navigator oder Microsoft Internet Explorer können Sie diesen Prozeß während seines Ablaufs beobachten. Für jedes Datenelement (Text, Grafik, Sound) auf einer WWW-Seite kontaktiert Ihr Browser den Server einmal, d.h. er holt sich erst Text, dann eine Grafik, dann Sound, usw. usw. Unten links in Ihrem Browser sehen Sie eine Statusanzeige. Beobachten Sie diese einige Momente, wenn eine Seite geladen wird. Sie werden dort die Anfrage/Antwort-Aktivitäten verfolgen können, oft in sehr hoher Geschwindigkeit.

HTTP interessiert es nicht, welche Art von Daten angefordert werden. Verschiedene Formen von Multimedia können entweder eingebettet sein oder über HTML-basierte Webseiten übermittelt werden. Kurz, HTTP ist ein extrem einfaches und effektives Protokoll. Clients für dieses Protokoll sind in Tabelle 4.7 aufgelistet.

Tabelle 4.7: HTTP-Clients für verschiedene Betriebssysteme

Betriebssystem

HTTP-Client

Microsoft Windows (alle)

Netscape Navigator, WinWeb, Mosaic, Microsoft Internet Explorer, WebSurfer, NetCruiser, AOL, Prodigy

Macintosh

Netscape Navigator, MacMosaic, MacWeb, Samba, Microsoft Internet Explorer

Unix

Xmosaic, Netscape Navigator, Grail, Lynx, TkWWW, Arena, Chimera,Kfm

OS/2

Web Explorer, Netscape Navigator

HTTP-Server sind ebenfalls für eine Reihe von Plattformen verfügbar. Diese sind in Tabelle 4.8 aufgelistet.

Tabelle 4.8: HTTP-Server für verschiedene Betriebssysteme

Betriebssystem

HTTP-Server

Microsoft Windows 3.x

Website, WinHTTPD

Microsoft Windows 95

OmniHTTPD, Server 7, Nutwebcam, Microsoft Personal Web Server, Fnord, ZB Server, Website, Folkweb, Netscape

Microsoft Windows NT

HTTPS, Internet Information Server, Alibaba, Espanade, Expresso, Fnord, Folkweb, Netpublisher, Weber, OmniHTTPD, WebQuest, Website, Wildcat, Netscape

Macintosh

MacHTTP, Webstar, Phantom, Domino, Netpresenz

Unix

NCSA, Apache, Netscape

OS/2

GoServe, OS2HTTPD, OS2WWW, IBM Internet Connection Server, Bearsoft, Squid & Planetwood

Network News Transfer Protocol (NNTP)

NNTP ist eines der meistgenutzten Protokolle. Es ermöglicht den Zugang zu dem Nachrichtendienst, der allgemein als USENET News bekannt ist. In RFC 977 wird sein Zweck wie folgt definiert:

NNTP spezifiziert ein Protokoll für die Verteilung, die Recherche, die Wiedergewinnung und die Veröffentlichung von Nachrichtenartikeln durch eine zuverlässige Datenstrom-basierte Übertragung von Nachrichten innerhalb der ARPA-Internet- Gemeinde. NNTP ist so aufgebaut, daß Nachrichtenartikel in einer zentralen Datenbank gespeichert werden. Dem Abonnent wird ermöglicht, nur auf die Artikel zuzugreifen, die er lesen möchte. Indexierung, Querverweise und das Löschen von veralteten Artikeln sind ebenfalls vorgesehen.

NNTP hat ähnliche Eigenschaften und Merkmale wie SMTP: Es benutzt TCP als Netzwerkprotokoll und akzeptiert einfache Befehle von einem Prompt. NNTP benutzt üblicherweise den TCP-Port 119.

Wegweiser:

Für tiefergehende Informationen über NNTP empfehle ich Ihnen die Lektüre von RFC 977. Zu finden unter: http://info.internet.isi.edu:80/innotes/ rfc/files/rfc977.txt.

Frühere Implementierungen des Standards finden Sie in RFC 850 unter: http://info.internet.isi.edu:80/in-notes/rfc/files/rfc850.txt .

4.3 TCP/IP ist das Internet

Inzwischen sollte es offensichtlich sein, daß TCP/IP im Grunde genommen das Internet selbst umfaßt. Es ist eine komplexe Sammlung von Protokollen, viele davon für den Benutzer unsichtbar. Auf den meisten Internet-Servern können alle der folgenden Netzwerkprotokolle laufen:

In der Anwendungsebene gelten die folgenden Protokolle als Standard:

Nun machen Sie sich auf einen Schock gefaßt. Dies ist nur eine Handvoll der Protokolle, die im Internet laufen. Tatsächlich gibt es Hunderte dieser Protokolle. Mehr als die Hälfte der Implementierungen der wichtigsten Protokolle hatten schon ein oder mehrere Sicherheitslöcher.

Folgender Punkt ist wesentlich: Das Internet wurde als ein System mit vielfachen Kommunikationswegen entwickelt. Jedes Protokoll stellt einen dieser Wege dar. An sich gibt es also Hunderte von Wegen, um Daten über das Internet zu bewegen.

4.4 Zusammenfassung

In diesem Kapitel haben Sie TCP/IP kennengelernt. Hier sind einige Merkmale von TCP/IP:

Jetzt, da Sie ein bißchen mehr über TCP/IP wissen, können wir uns wieder einem spannenderen Thema zuwenden: Hacker und Cracker.



vorheriges KapitelInhaltsverzeichnisStichwortverzeichnisKapitelanfangnächstes Kapitel