Internet-Grundlagen für Programmierer

Transcription

Internet-Grundlagen für Programmierer
Jürgen Bayer
Internet-Grundlagen für Programmierer
Grundlagen des Internet aus der Sicht des Programmierers
Inhaltsverzeichnis
1
Der Aufbau des Internet
1
1.1
Backbones
1
1.2
Adressierung
3
1.3
Router
3
1.4
Intranet und Extranet
4
2
RFCs
5
3
Die IP-Adresse
6
3.1
Die Klasseneinteilung der IP-Adressen
6
3.2
Subnetze und Subnetzmasken
7
3.3
Vergabe von IP-Adressen
7
4
IP-Namensauflösung
8
4.1
Der Name-Service in lokalen Netzen
8
4.2
Der Domain Name Service (DNS)
9
5
IP-Ports
10
6
URIs, URLs und URNs
11
7
Internet-Medientypen und MIME
12
8
Die (für Programmierer) wichtigsten Internetdienste
14
8.1
Das World Wide Web
14
8.2
FTP
15
8.3
Mail
15
9
Einfache Internetprotokolle
16
9.1
Das IP-Protokoll
16
9.2
Das UDP-Protokoll
17
9.3
Das TCP-Protokoll
18
10
Socket-Dienste
20
11
Die wichtigsten höheren Protokolle
21
11.1
Tools zum Testen der Kommunikation
21
11.1.1
Ein Paket-Sniffer zum Auslesen der IP-Kommunikation
21
11.1.2
Telnet
23
11.1.3
Ein simpler IP-Client für TCP und UDP
24
11.2
Das HTTP-Protokoll
25
11.2.1
Grundsätzlicher Aufbau einer HTTP-Nachricht
25
11.2.2
Die Anforderung
28
11.2.3
Die Antwort
29
11.3
Das FTP-Protokoll
31
11.3.1
Statuscodes
32
11.3.2
Datenverbindung
32
11.4
Das SMTP-Protokoll
34
11.4.1
Empfänger, CC, BCC, Datum und Betreffzeile
36
11.4.2
Statuscodes des Servers
37
12
Index
38
Eine wichtige Voraussetzung für die Internetprogrammierung ist, dass Sie den Aufbau des Internet
verstehen. Wahrscheinlich ist das bei Ihnen bereits der Fall, für den anderen Fall finden Sie in diesem
Abschnitt die notwendigen Informationen.
Das Internet ist ein Zusammenschluss unzähliger lokaler Netzwerke. Diese Netzwerke werden von
Privatunternehmen wie T-Online und AOL, von Universitäten und von staatlichen Organen wie z. B.
der NASA betrieben. Über leistungsfähige Datenleitungen und Satellitenverbindungen werden lokale
Netzwerke oft zu regionalen Netzen zusammengeschlossen. Diese Netze sind meist über
Großrechenzentren mit so genannten Backbones (Rückraten) verbunden.
Zahlreiche staatliche Unternehmen wie beispielsweise die NASA und private Firmen wie IBM, die als
Backbone-Provider bezeichnet werden, betreiben eigene leistungsfähige Netzwerke mit
Datenleitungen, Satellitenverbindungen und anderen Kommunikationstechnologien, die jedes für sich
größere Städte, oft in der ganzen Welt, miteinander verbinden. Ein solches Netz mit leistungsfähigen
Datenleitungen wird als Backbone1 (Rückgrat) bezeichnet. Der Worldcom-Backbone verbindet
beispielsweise fast alle größeren Städte der USA und Europas mit Datenleitungen, die eine Leistung
bis zu 10 Gbps2 besitzen. Abbildung 1.1 zeigt diesen Backbone.
1
Als Backbone wird machmal auch nur eine einzige leistungsfähige Datenverbindung bezeichnet. Im Internet ist
ein Backbone aber die Summe aller Datenverbindungen eines Backbone-Providers oder, auf einer höheren
Ebene, auch die Summe aller leistungsfähigen Datenleitungen in einer Region.
2
Gigabyte pro Sekunde
Der Aufbau des Internet 1
Abbildung
1.1:
Der
Backbone
von
http://www1.worldcom.com/global/about/network/maps/europe)
Worldcom
Informationen zu den Backbones in Europa finden
http://www.ispworld.com/isp/bb/europe.htm.
in
Sie
Europa
auf
der
(Quelle:
Seite
Die Backbone-Provider nutzen übrigens meist die bereits vorhandenen Datenverbindungen von
Telekommunikationsunternehmen wie der Telekom, die dazu einfach angemietet werden.
Spezielle neutrale Austauschpunkte, die als Knoten (Node), CIX (Commercial Internet Exchange3)
oder auch als DSE (Telecommunication Data Switching Exchange) bezeichnet werden, sichern den
Übergang zwischen den Backbones verschiedener Betreiber. Diese Austauschpunkte stellen sicher,
dass die Kommunikation zwischen verschiedenen Regionen, die an Backbones unterschiedlicher
Betreiber angeschlossen sind, nicht über unnötig weite Wege ausgeführt wird.
Viele Gesellschaften wie z. B. Internet-Service-Provider (ISP) sind direkt an einen Backbone
angeschlossen um ihren Kunden eine möglichst hohe Performance bieten zu können. Privatkunden
oder Firmen, die nicht direkt an einen Backbone angeschlossen sind, werden über TelefonWählleitungen, DSL oder andere Medien wie z. B. Stromnetze mit einem Rechner des
Internetproviders verbunden. Diese als PoP (Point of Precence4) bezeichneten Rechner sind Teil eines
lokalen Netzwerkes des Rechenzentrums des Providers. Über einen oder mehrere Backbone-Router ist
dieses Netzwerk an den Backbone angeschlossen. Es kann natürlich auch sein, dass kleinere Provider
3
Kommerzieller Internetaustauschpunkt
4
Einwahlknoten
Der Aufbau des Internet 2
nicht direkt an einen Backbone angeschlossen, sondern über Standleitungen mit dem Netzwerk eines
größeren Providers verbunden sind.
Um die einzelnen an das Internet angeschlossenen Rechner adressieren zu können, besitzt jeder
Rechner eine weltweit eindeutige IP-Adresse. IP-Adressen sind zwar eigentlich ganz normale 32-BitZahlen, werden aber zur besseren Übersicht normalerweise so dargestellt, dass die vier Bytewerte der
Zahl erkennbar sind. Eine typische IP-Adresse ist z. B. 207.46.197.101. Wie Sie es in Kapitel 3 noch
genauer erfahren, adressiert ein Teil der IP-Adresse das lokale Netzwerk, an das der Rechner direkt
angeschlossen ist. Der zweite Teil adressiert den einzelnen Rechner im Netzwerk. Bei der
Beispieladresse stehen die linken drei Byte für das Netzwerk, das rechte Byte adressiert den Rechner
im Netz.
Router sind Rechner, die ein lokales Netz mit einem anderen Netz oder einem Backbone verbinden.
Ein Router kennt alle Rechner, die in seinem Netz angeschlossen sind, und ist in der Lage,
hereinkommende Daten an den richtigen Rechner zu senden. Router kennen zusätzlich noch den Weg
zu anderen Netzen oder können diesen ermitteln. Sie verbinden damit lokale Netzwerke mit der
Außenwelt. Zudem arbeiten Router an allen Netzknoten im Internet.
Jeder Router verwaltet eine Routing-Tabelle, in der die Router aller Netzwerke eingetragen sind, die
direkt mit dem eigenen Netzwerk verbunden sind. Erhält ein Router Daten, extrahiert er den
Netzwerkteil der Ziel-IP-Adresse (die jedem Datenpaket beigefügt ist). Erkennt er, dass die Daten für
sein eigenes Netz bestimmt sind, extrahiert er die Rechneradresse aus der IP-Adresse und sendet die
Daten direkt zum entsprechenden Rechner. Im anderen Fall schaut er in seiner Routing-Tabelle nach
der Netzwerk-Zieladresse und ermittelt den Router, der für diese Adresse zuständig ist. Für den Fall,
dass die Netzwerk-Zieladresse unbekannt ist, ist in der Routing-Tabelle ein Default-Router
eingetragen, in dessen Routing-Tabelle wieder andere Router eingetragen sind. Dieser Router
übernimmt den Weitertransport der Daten nach demselben Schema.
Über ein spezielles Protokoll tauschen benachbarte Router Routing-Informationen untereinander aus.
Dabei werden komplexe Optimierungsverfahren eingesetzt, so dass jeder Router versucht, den
optimalen Weg zum Zielnetz zu finden. So werden die Daten im Internet von Router zu Router
versendet, bis sie schließlich am Zielrechner angekommen sind.
Ein anderer in diesem Zusammenhang häufig verwendeter Begriff ist Gateway. Ein
Gateway ist eigentlich ein Rechner, der zwei verschiedene Netzwerke, beispielsweise ein
Microsoft- und ein Apple-Netz, miteinander verbindet. Ein Gateway ist kein Router, aber
ein Router kann auch ein Gateway sein. In der heutigen Zeit werden die Begriffe Router
und Gateway häufig vermischt, besonders deswegen, weil Microsoft in der TCP/IPKonfiguration den Standardrouter als Standardgateway bezeichnet.
Abbildung 1.2 zeigt eine schematische Darstellung des Routing im Internet.
Der Aufbau des Internet 3
Abbildung 1.2: Schematische Darstellung des Routing im Internet
Ein Intranet ist ein Internet im Kleinen. Schon wenn Sie nur zwei Rechner über Netzwerkkarten
miteinander verbinden und das TCP/IP-Protokoll installieren, besitzen Sie bereits ein Intranet.
Normalerweise läuft in einem Intranet aber mindestens ein Web- und/oder FTP-Server. Die von
diesem Server verwalteten Dateien können – genau wie im Internet – von jedem angeschlossenen
Rechner aus abgerufen werden. Ist das Intranet (über einzelne Rechner oder Router) mit dem Internet
verbunden, verhindern meist so genannte Firewalls, dass Personen von außen Zugriff auf das Intranet
erhalten.
Die meisten Firmen arbeiten heutzutage mit Intranets. Die Internet-Standards erleichtern den
Informationsfluss innerhalb der Firma. Auf dem Webserver sind häufig alle wichtigen
Firmeninformationen gespeichert. Jeder Mitarbeiter kann diese Informationen über einen einfachen
Webbrowser abrufen. Viele Firmen bauen zudem Wissensdatenbanken auf, in die Mitarbeiter
besondere Erfahrungen eintragen können. Flexible Suchmechanismen wie z. B. die des Microsoft
Index Servers, helfen dabei, das firmeninterne Wissen zu verbreiten.
Ein weiteres Einsatzgebiet für Intranets ist das, wegen dem Sie dieses Buch lesen. Moderne Firmen
verlagern immer mehr firmeninterne Softwarelösungen ins Intranet. Die Vorteile gegenüber
klassischen Lösungen habe ich ja bereits in Kapitel 1 genannt. Das Intranet ist damit ein weites
Betätigungsfeld für Programmierer.
Der Aufbau des Internet 4
Ein Extranet verbindet die Intranets einzelner Firmen oder Filialen miteinander, schließt aber das
Internet dabei aus. So können die Vorteile des Intranets über verschiedene Firmen bzw.
Firmenstandorte genutzt werden, wobei die Gefahren des Internet (Spionage, Zerstörung von Daten
durch Hacker etc.) ausgeschlossen werden. Firmen, die keine direkte Datenverbindung besitzen,
nutzen dazu meist spezielle Extranet-Dienste von Internetprovidern.
Alles, was irgendwie mit dem Internet zusammenhängt, wird in technischen Dokumenten beschrieben,
die als »RFC« (Request For Comment5) bezeichnet werden. Neben Diskussionen über neue
Forschungsprojekte, Berichten über den Zustand des Internet und anderem werden dort auch die
Internet-Protokolle sehr ausführlich dokumentiert.
RFC-Dokumente werden einfach nummeriert. RFC 791 beschreibt z. B. das IP-Protokoll. Beim
Verleger der RFCs, dem RFC-Editor, finden Sie eine Möglichkeit, die einzelnen RFCs einzusehen.
Gehen Sie dazu zur Seite www.rfc-editor.org/overview.html. Klicken Sie auf den
SEARCH-Link und geben Sie auf der Suchseite einen Suchbegriff wie z. B. die RFC-Nummer ein. Da
die Webseite des RFC-Editors oft recht langsam ist und die Seiten einiger Dokumente manchmal erst
gar nicht angezeigt werden, finden Sie eine gute und schnelle Alternative bei der Internet Engineering
Task Force (IETF): www.ietf.org/rfc.html.
Im weiteren Verlauf nehme ich immer wieder Bezug auf RFC-Dokumente.
Beachten Sie, dass RFCs kontinuierlich weiterentwickelt werden. Finden Sie bei der Suche auf der
RFC-Editor-Seite im rechten Bereich des Suchergebnisses einen Eintrag »Obsoleted by«, ist das
betreffende RFC-Dokument mittlerweile durch ein neues ersetzt worden.
Im RFC 2800 (zum Zeitpunkt der Drucklegung dieses Buchs aktuell) finden Sie eine
Übersicht über die RFCs, die die Internetprotokolle betreffen.
5
Aufforderung, Kommentare zur beschriebenen Technologie einzusenden
RFCs 5
Jeder Rechner, der an das Internet oder an ein Intranet angeschlossen ist, besitzt eine eindeutige IPAdresse. Eigentlich handelt es sich dabei um eine einfache 32-Bit-Zahl. IP-Adressen werden aber an
sich immer so dargestellt, dass die einzelnen Bytes dieser Zahl durch Punkte getrennt angegeben
werden. Abweichend von der normalen Zahl-Darstellung wird das erste Byte aber links angegeben
(das erste Byte ist normalerweise das kleinere und müsste folglich rechts angegeben werden). Eine
typische IP-Adresse wird z. B. so dargestellt: 128.66.12.1. Dieses Beispiel steht für die Zahl
17580672. Wenn Sie einmal eine als Zahl dargestellte IP-Adresse umrechnen wollen (oder müssen),
konvertieren Sie die Zahl in einen Hexadezimalwert (für das Beispiel: 10C428016), drehen die
einzelnen Bytes um (8016.4216.0C16.0116) und rechnen diese in Dezimalwerte zurück.
Ein Teil der Adresse adressiert das lokale Netzwerk, an das der Rechner angeschlossen ist. Der andere
Teil adressiert den Rechner. Im Beispiel steht 128.66 für das Netzwerk und 12.1 für den Rechner.
!"
"
IP-Adressen werden in verschiedene Klassen eingeteilt. Abhängig von der Klasse der Adresse werden
unterschiedliche Teile als Netzwerk- bzw. Rechneradresse gewertet. Welcher Klasse einer IP-Adresse
angehört, wird an den ersten Bits erkannt:
•
Ist das linke Bit einer IP-Adresse 0, handelt es sich um eine Klasse-A-Adresse. Da es sich bei
diesem Bit eigentlich um Bit 8 des linken Byte handelt, kann man auch sagen, dass ein Wert
kleiner als 128 im linken Byte eine solche Adresse bezeichnet. Bei einer Klasse-A-Adresse steht
das linke Bit für die Klasse, die nächsten sieben Bit identifizieren das Netzwerk. Die restlichen
drei Bytes bezeichnen einen Rechner im lokalen Netz. Damit existieren maximal 127 Klasse-AAdressen, die jedoch jede für sich Millionen von angeschlossenen Rechnern adressieren können.
•
Wenn das linke Bit einer IP-Adresse gesetzt ist und das folgende nicht, handelt es sich um eine
Klasse-B-Adresse. Alternativ kann man sagen, dass ein Wert von 128 bis 191 im linken Byte eine
solche Adresse kennzeichnet. Bei einer Klasse-B-Adresse stehen die linken zwei Bit für die
Klasse, die nächsten 14 Bit bezeichnen das Netzwerk, die restlichen 16 Bit den Rechner. Damit
sind 16.383 Netze der Klasse B möglich, die jedes für sich 65.535 Rechner enthalten können.
•
Wenn die linken drei Bit einer Adresse 110 sind (bzw. wenn im linken Byte ein Wert von 192 bis
223 gespeichert ist), handelt es sich um eine Klasse-C-Adresse. Bei einer solchen Adresse
bestimmen die linken drei Bit die Klasse, die folgenden 21 Bit das Netzwerk und die restlichen
acht Bit den Rechner. Damit sind 2.097.152 Klasse-C-Netze möglich, die jedes für sich maximal
255 Rechner enthalten können.
•
Adressen, die mit 111 beginnen (bzw. im linken Byte einen Wert größer als 223 speichern), sind
für besondere Zwecke reserviert und gehören zu keinem speziellen Netzwerk. Momentan werden
in diesem Bereich so genannte Multicast-Adressen verwaltet. Über diese Adressen können
Gruppen von Computern adressiert werden, die ein gemeinsames Protokoll benutzen.
•
Ein besonderer Klasse-C-Adressbereich ist 192.168.0.x. Diese Adressen sind für private Zwecke
reserviert und werden im Internet nicht verwendet. Wenn Sie ein einfaches privates Intranet
aufbauen, können Sie den Bereich dieser Adresse sehr gut nutzen, um Ihren Rechnern festen
Adressen zuzuteilen und dabei nicht mit Adressen im Internet in Konflikt zu geraten, wenn die
Rechner mit dem Internet verbunden sind.
•
Die Adresse 127.0.0.1 bezeichnet immer das lokale System. Für diese Adresse existiert immer
auch der Alias localhost.
Die IP-Adresse 6
#
$
#
$%
Ein Subnetz ist ein Teil eines Netzes, der nur über einen Router oder ähnliche Rechner Verbindung
mit den Rechnern anderer Subnetze besitzt und der über einen eigenen Bereich von IP-Adressen
adressiert wird. Subnetze werden häufig eingesetzt, um die Administration eines großen Netzes zu
verteilen oder um Teile eines Gesamtnetzes (aus Sicherheitsgründen) von anderen abzuschotten. Um
diese Subnetze zu adressieren, kann der Administrator Teile der Bits verwenden, die in einer IPAdresse zur Rechneridentifikation gedacht sind. Dazu werden so genannte Subnetzmasken verwendet.
Klasse-B-Netzwerke arbeiten beispielsweise normalerweise mit der Subnetzmaske 255.255.0.0. Eine
Subnetzmaske wird so interpretiert, dass jedes gesetzte Bit in der Maske die Netzwerkadresse
identifiziert. Im Beispiel stehen also die Bits der zwei linken Bytes für die Netzwerkadresse (was bei
einer Klasse-B-Adresse ja normal ist). Der Router, der das Netzwerk mit der Außenwelt verbindet,
arbeitet mit genau dieser Subnetzmaske. Enthält das Netzwerk Subnetze, arbeiten die internen Router
häufig mit der Subnetzmaske 255.255.255.0. Das bedeutet nun, dass das dritte Byte zur Adressierung
des Subnetzes verwendet wird (die ersten beiden stehen ja für das Hauptnetz). Das rechte Byte
adressiert dann innerhalb des Subnetzes die angeschlossenen Rechner. In einem solchen Netz können
also maximal 255 Subnetze existieren, die jedes für sich maximal 255 Rechner enthalten können.
Subnetzmasken müssen nicht wie im Beispiel ein komplettes Byte einbeziehen. Wenn weniger
Subnetze vorhanden sind, die mehr Rechner adressieren sollen, kann der Administrator auch weniger
Bits des Rechnerteils der IP-Adresse für die Adressierung der Subnetze verwenden. Bei einer KlasseC-Adresse erlaubt die Subnetzmaske 255.255.255.192 beispielsweise vier Subnetze mit jeweils 64
angeschlossenen Rechnern. Nur damit Sie diese Rechnung verstehen: 192 entspricht binär 110000002.
Die linken zwei Bit werden also für die Adressierung des Subnetzes verwendet, und daraus ergeben
sich eben genau vier Möglichkeiten. Die restlichen sechs Bit gehören zur Rechneradresse, und das
ergibt 64 Möglichkeiten.
&
'
In einem Intranet ohne direkten Zugang zum Internet können Sie IP-Adressen ohne weiteres frei
vergeben. Sie müssen lediglich darauf achten, dass der Typ der Adresse (Klasse A, B oder C) und die
Subnetzmaske gleich ist. Ist einer der Rechner indirekt (z. B. über eine ISDN-Karte oder ein DSLModem) an das Internet angeschlossen, sollten Sie den Adressbereich für private Adressen
(192.168.0.0 bis 192.168.0.255) verwenden, um keine Konflikte mit vorhandenen IP-Adressen zu
verursachen.
Für Rechner, die direkt am Internet angeschlossen sind, müssen Sie eine IP-Adresse beziehen.
Privatpersonen oder kleinere Firmen erhalten diese über den Internet-Service-Provider. Größere
Firmen und Internet-Service-Provider beziehen ganze Adressbereiche von einem der drei InternetRegistrations-Unternehmen. Für Europa ist das die Firma RIPE NCC (www.ripe.net). Für den
amerikanischen Raum ist das Unternehmen ARIN zuständig, für den asiatischen Raum die Firma
APNIC. IP-Adressen müssen eben weltweit eindeutig sein.
Rechner, die über einen Router oder Provider an das Internet angeschlossen sind, werden auch häufig
dynamisch über einen DHCP-Server mit einer IP-Adresse versorgt. Das ist beispielsweise der Fall,
wenn Sie Ihren Rechner mit dem PoP des Providers über das DFÜ-Netzwerk von Windows verbinden.
Ein DHCP-Server beim Provider ermittelt eine freie IP-Adresse in dem (Sub-)Netzbereich des
Providers und übermittelt diese an Ihren Rechner. Dieser ist dann unter zwei IP-Adressen erreichbar:
Im lokalen Netz unter seiner privaten und über das Internet über die zugeteilte Adresse. Die IPAdressen Ihres Rechners können Sie übrigens über das Programm ipconfig abfragen.
Die IP-Adresse 7
( %
"
)
Zur Kommunikation in einem IP-Netz werden ausschließlich die IP-Adressen der angeschlossenen
Rechner verwendet. Wie Sie ja sicher schon wissen, können Sie zur Adressierung eines Rechners aber
auch den Rechnernamen eingeben. In der einfachsten Form ist dies in einem Intranet der bloße Name
des Rechners. In komplexen Intranets und im Internet werden zudem Domänen6 verwendet, die die
Identifikation der Rechner vereinfachen. Bei dem Namen »www.addison-wesley.de« steht »de«
beispielsweise für die Top-Level-Domäne de (Deutschland), »addison-wesley« bezeichnet die
untergeordnete Domäne von Addison-Wesley und »www« ist der Name des Rechners, der in dieser
Domäne verwaltet wird. Domänennamen werden von NICs (Network Information Centers) vergeben
und verwaltet. Für Deutschland ist das DE-NIC zuständig (www.nic.de).
Wenn Sie nun einen solchen Rechnernamen in einem Programm verwenden, das eine IPKommunikation aufbaut, muss der Name in die passende IP-Adresse umgewandelt werden. Dazu
stehen zwei Verfahren zur Verfügung. Bei der einfachen und älteren Variante verwaltet eine spezielle
Tabelle im Rechner die Namen der benachbarten Rechner mit deren IP-Adresse. Dies ist häufig auf
Unix-Systemen üblich. Windows-Rechner fragen in einem einfachen Internet die IP-Adressen
allerdings ganz einfach über das normale Windows-Netzwerk ab. Das neuere Verfahren nutzt eine
verteilte Datenbank, den so genannten Domain Name Service (DNS).
( %
# '
"
"
( $
Für die Adressierung einzelner Rechner in lokalen Netzen können Sie meist problemlos deren Namen
an Stelle der IP-Adresse verwenden. Eine Webserver im Intranet sprechen Sie im Webbrowser z. B.
einfach mit »http://Zaphod« an (wobei »Zaphod« der Rechnername ist). Für den lokalen Webserver
können Sie auch den Alias localhost verwenden: »http://localhost«. Das System setzt den
angegebenen Namen automatisch in die IP-Adresse des angesprochenen Rechners um. Wird der lokale
Rechner angesprochen, setzt das System den Rechnernamen (bzw. localhost) immer in die Adresse
127.0.0.1 um.
Werden entfernte Rechner angesprochen, fordert das System in einfachen Windows-Netzen die IPAdresse über das Windows-Netzwerk direkt vom anderen Rechner an. Auf kleineren Unix-Systemen
wird zur Ermittlung der IP-Adresse allerdings häufig eine Rechnertabelle verwendet, die in Form einer
einfachen Textdatei meist im Ordner etc/hosts gespeichert ist. Diese Tabelle enthält die einzelnen
Rechnernamen und die dazugehörigen IP-Adressen.
Größere Netze nutzen dagegen meist einen Nameserver, der die Rechnernamen der angeschlossenen
Netze mit den IP-Adressen verbindet. Auf Windows-Systemen ist dies der WINS (Microsoft Windows
Name Service), der auf den Server-Versionen von NT, 2000 und XP läuft. Nameserver sind in der
Lage, sich mit benachbarten Nameservern auszutauschen, so dass ein Nameserver auch die IPAdressen der Rechner benachbarter (Sub-)Netzwerke kennt. Außerdem ist die Administration
gegenüber einer Rechnertabelle (die normalerweise manuell gepflegt wird) erheblich vereinfacht.
6
Der Begriff »Domäne« (englisch »Domain« = »Gebiet«) bezeichnet im Allgemeinen einen Wissens- oder einen
Steuerungsbereich. Im Internet ist mit einer Domäne ein Bereich von IP-Adressen gemeint, die geographisch
oder thematisch zusammengehören. Auf Windows-Systemen ist eine Domäne zudem eine Gruppierung von
Computern und Betriebsmitteln, die zu einer Gruppe Benutzer gehören.
IP-Namensauflösung 8
%
( %
# '
* (#+
Genau wie im Intranet sind IP-Adressen auch im Internet sehr unhandlich. Deshalb werden im Internet
(und in größeren Intranets) Namen verwendet, die in Domänen eingeteilt sind. Der Name
www.addison-wesley.de besteht beispielsweise aus der Toplevel-Domäne de, der die
Subdomäne addison-wesley untergeordnet ist, und dem in dieser Domäne verwalteten Rechner www.
Toplevel-Domänen bezeichnen einzelne Länder (wie de für Deutschland oder at für Österreich) oder
Geschäftsbereiche (wie com für kommerzielle Unternehmen, edu für Ausbildungsunternehmen und net
für Netzwerkdienste). Mittlerweile sind die Toplevel-Domänen aber etwas durcheinander geraten, da
prinzipiell jeder eine Internetadresse in einer nahezu beliebigen Toplevel-Domäne beantragen kann.
Subdomänen bezeichnen das Zielnetzwerk, an das der adressierte Rechner angeschlossen
größere Netzwerke können innerhalb einer Subdomäne noch weitere Subdomänen verwaltet
Der Webserver im Netzwerk des »Marshal Space Flight Center« der Nasa wird z.
www.msfc.nasa.gov adressiert. msfc steht hier für eine untergeordnete Subdomäne, die
der NASA-Subdomäne ist.
ist. Für
werden.
B. mit
ein Teil
Innerhalb der untergeordneten Domäne kann eine Firma oder eine Privatperson nahezu beliebig viele
Rechner verwalten. Die meisten Rechner für das World Wide Web heißen wohl www, die für den
FTP-Dienst werden meist ftp genannt. Prinzipiell sind aber auch alle anderen denkbaren (und gültigen
Namen) möglich. Der Suchserver von Microsoft (search.micosoft.com) oder der
Übersetzungsdienst von Altavista (babelfish.altavista.com) sind Beispiele dafür.
Diese Domänennamen müssen, wie auch im Intranet, vor dem Senden von Daten in die IP-Adresse
des Zielrechners umgewandelt werden. Dazu werden DNS-Server verwendet. Ein DNS-Server
verwaltet in einer Datenbank Rechnernamen und die zugehörigen IP-Adressen. Erhält ein DNS-Server
eine Anfrage nach einem unbekannten Namen, leitet er diese an einen so genannten autorativen DNSServer weiter. Ein autorativer DNS-Server ist ein beliebiger DNS-Server, der Informationen für die
Subdomäne bereithält. Kennt der autorative DNS-Server den angeforderten Namen nicht, leitet er die
Anfrage an einen Primary-Nameserver weiter, der Informationen für die Toplevel-Domäne bereithält.
Der Primary-Nameserver für die de-Domäne läuft beispielsweise beim DE-NIC.
Der Primary-Nameserver kennt zwar nicht die Namen der einzelnen Rechner der Toplevel-Domäne,
aber er kennt die dieser Domäne untergeordneten autorativen Server. Er leitet die Anfrage deshalb
einfach an den nächsten passenden autorativen DNS-Server weiter. Kann der autorative DNS-Server
den Namen auflösen, sendet er das Ergebnis zum ursprünglich angesprochenen DNS-Server zurück.
Dieser speichert den Namen und die IP-Adresse dann in seinem Cache, damit zukünftige Anfragen
direkt beantwortet werden können, und sendet das Ergebnis zu der IP-Adresse, die die Anfrage
gestartet hat. Kann ein Name nicht aufgelöst werden, antwortet ein DNS-Server einfach nicht. Die
Internetanwendung meldet dann nach einer gewissen Wartezeit, dass der Name nicht aufgelöst werden
kann (was auch eine Falschmeldung sein kann, nämlich dann, wenn die Anfrage sehr viel Zeit in
Anspruch nimmt).
In der IP-Konfiguration eines Rechners ist entweder die Adresse eines DNS-Servers fest eingetragen
oder festgelegt, dass diese Adresse bei der Einwahl in den PoP des Internet-Providers automatisch
übertragen wird. Wenn beispielsweise ein Browser ein HTML-Dokument anfordert, kennt das System
die IP-Adresse eines DNS-Servers, kann diesen nach der IP-Adresse des angegebenen
Domänennamens fragen und die Anforderung dann an die so ermittelte IP-Adresse senden.
IP-Namensauflösung 9
,
Im Internet oder in einem Intranet laufen die verschiedensten Dienste. Die bekanntesten sind wohl der
WWW-, der FTP- und der SMTP-Dienst. Diese Dienste können über separate Serveranwendungen auf
einem einzelnen Rechner ausgeführt werden, was beispielsweise unter Windows der Fall ist, wenn Sie
den IIS installieren. Aber auch spezielle Server oder Anwendungen, die über das Internet mit anderen
Anwendungen kommunizieren, müssen auf einem Rechner identifiziert werden.
Genau dazu werden die so genannten IP-Ports verwendet. Ein Port ist einfach eine 16-BitDezimalzahl, die einen Dienst oder ein Programm identifiziert. Es gibt reservierte, so genannte »Well
Known Ports«, mit einer Nummer unterhalb von 256. Diese Ports adressieren bekannte Dienste wie
WWW, SMTP und FTP. Der WWW-Dienst eines Webservers wird z. B. immer über den Port 80
adressiert, der FTP-Dienst verwendet den Port 21.
Wenn Sie in einem Webbrowser eine Webadresse wie z. B. http://www.addison-wesley.de
eingeben, erweitert Ihr Webbrowser diese Adresse implizit um den Port des angesprochenen Dienstes:
http://www.addison-wesley.de:80. Der Port wird über einen Doppelpunkt von der
eigentlichen Adresse getrennt. Der Browser erkennt den anzusprechenden Port übrigens mehr oder
weniger automatisch am eingegebenen Namen. Beginnt der Name mit »ftp://« oder »ftp.«, würde er
den Port 21 anhängen.
Beim Senden der Daten wird der Zielport als Teilinformation eines Datenpakets mitgesendet. Daraus
erkennt das Betriebssystem auf dem Server, welcher Dienst anzusprechen ist. Beim Port 80 übergibt
das Betriebssystem beispielsweise die eingegangenen Daten an den Webserver, der diesen Port für
sich beim Betriebssystem reserviert hat.
Ports mit einer Nummer größer als 255 können beliebig verwendet werden7. Programme und Dienste,
die nicht zum Internet-Standard gehören, wie z. B. der Microsoft SQL Server, nutzen eine solche freie
Portnummer.
Aber nicht nur Server-, sondern auch Clientanwendungen werden über einen Port identifiziert. Der
Server muss angeforderte Daten ja schließlich zum Client zurücksenden. Dazu reserviert sich jede
Clientanwendung beim Start normalerweise eine dynamisch vergebene, freie Portnummer. Beim
Senden einer Anforderung wird – wie Sie beim UDP- und beim TCP-Protokoll in Abschnitt 9.2 und
9.3 noch sehen – auch diese Portnummer mit im Datenpaket übertragen, sodass der Server weiß,
wohin er die angeforderten Daten senden soll. Deshalb ist es auch problemlos möglich, mit mehreren
Instanzen eines Webbrowsers gleichzeitig zu arbeiten, ohne dass diese durcheinander geraten.
7
Früher waren noch die Ports 256 bis 1024 für UNIX-typische Dienste reserviert, was aber heute nicht mehr gilt.
IP-Ports 10
- .
/. 0
. (
URIs (Uniform Resource Identifier) werden im Internet zur Identifikation von Ressourcen verwendet.
Eine Ressource ist im Allgemeinen etwas, das unter einem eindeutigen Namen angesprochen werden
kann, beispielsweise eine Mailbox, eine Datei, ein Dienst oder ein Programm. URIs beschreiben
typischerweise den Mechanismus, der verwendet wird, um die Ressource anzusprechen (z. B. http://
für das HTTP-Protokoll), den Namen des Computers, der die Ressource verwaltet, und den Namen der
Ressource selbst. Das Schema eines URIs ist für die einzelnen Protokolle festgelegt und weicht auch
manchmal vom allgemeinen Schema ab. Die Adresse eines HTML-Dokuments sieht beispielsweise so
aus:
http://www.boarder-magazin.de/index.htm
Eine über FTP erreichbare Datei wird prinzipiell identisch adressiert:
ftp://ftp.is.co.za/rfc/rfc1808.txt
Die URI zur Adressierung einer Mailbox oder einer Newsgroup sieht aber etwas anders aus:
mailto:[email protected]
news:microsoft.public.dotnet.languages.csharp
URLs (Uniform Resource Locator) sind eine Unterordnung von URIs, die eine Datei bezeichnen, die
über das Internet angesprochen werden kann. URLs sind Strings, die das zu verwendende Protokoll,
die Adresse oder den Domänennamen und optional den Port, den Pfad und Argumente angeben:
Protokoll://Host[:Port][Absoluter Pfad[?Argumente]]
Für das HTTP-Protokoll sieht eine URL beispielsweise so aus:
http://www.boarder-magazin.de/index.htm
http://www.boarder-magazin.de:80/index.htm
http://www.microsoft.com/Data
http://search.microsoft.com?siteid=us/dev
Falls beim HTTP-Protokoll Argumente angegeben sind, werden diese meist von ASP(.NET)- oder
CGI-Programmen ausgewertet. Falls bei einer URL keine Angabe der anzusprechenden Ressource
(Datei) erfolgt, verwendet der Server die Ressource, die als Standard für den angesprochenen Ort
eingestellt ist.
URNs sind eine andere Art URIs, die Ressourcen bezeichnen, deren Ort unbestimmt ist, die aber über
spezielle Dienste identifiziert werden können. Eine E-Mail-Adresse ist ein bekanntes Beispiel für eine
URN. Der Speicherort der damit angesprochenen Mailbox kann nahezu beliebig (innerhalb der
Domäne der Adresse) wechseln, die Adresse bleibt aber immer dieselbe. URNs garantieren
Eindeutigkeit und eine endlose Lebenszeit.
URIs, URLs und URNs 11
1
2
34
2 2
Wenn Programmierer über das Internet reden, fällt häufig der Begriff Medientyp bzw. MIME. Auch in
diesem Buch kommt der Begriff MIME häufiger vor. Deshalb sollten Sie wissen, worum es sich dabei
handelt.
Mime ist die Kurzform für »Multipurpose Internet Mail Extensions« (Mehrzweck-Internet-MailErweiterungen). MIME ist von der ursprünglichen Bedeutung her ein Standard, der es ermöglicht, dass
E-Mails und angehängte (oft binäre) Daten in einer Datei gemeinsam versendet werden können. Um
dem Empfänger den Typ der angehängten Daten mitteilen zu können (damit dieser die Daten korrekt
interpretieren kann), werden spezielle Medientyp-Bezeichnungen verwendet. Der Typ text/html
spezifiziert beispielsweise ein HTML-Dokument. Da sich herausgestellt hat, dass diese Medientypen
auch zu anderen Zwecken im Internet nützlich sind, werden MIME-Typen mittlerweile sehr häufig zur
Spezifizierung des Typs gesendeter Daten verwendet.
Wenn ein Medientyp gemeint ist, müsste eigentlich auch der (allgemeinere) Begriff
»Medientyp« verwendet werden, was auch in den offiziellen Schriften der Fall ist. Im
normalen Sprachgebrauch wird aber meist der Begriff »MIME-Typ« verwendet.
Eine Medientyp-Angabe besteht aus einem Haupttyp, einem optionalen Untertyp und einer ebenfalls
optionalen Angabe des Zeichensatzes, falls es sich um einen Texttyp handelt. Haupttyp und Untertyp
werden durch einen Schrägstrich getrennt angegeben. Tabelle 7.1 listet die zurzeit existierenden
Medien-Haupttypen auf.
Medien-Haupttyp
spezifiziert
text
Textdaten
image
Grafikdateien
video
Videodateien
audio
Sounddateien
application
Dateien, die an ein bestimmtes Programm gebunden sind
multipart
mehrteilige Daten
message
Nachrichten
model
Dateien, die mehrdimensionale Strukturen repräsentieren
Tabelle 7.1: Die Medien-Haupttypen
Für jeden Haupttyp existieren meist recht viele Untertypen. Der text-Typ wird beispielsweise in
comma-separated-values, css, html, javascript, plain und andere Untertypen unterteilt.
Tabelle 7.2 gibt eine Übersicht über die wichtigsten Medientypen.
Medientyp
Bedeutung
application/zip
zip-Archivdateien
application/rtf
RTF-Dateien
application/msword
Word-Dateien
application/msexcel
Excel-Dateien
application/pdf
PDF-Dateien
audio/basic
Basis-Audiodateien (.au, .snd)
audio/x-midi
Midi-Dateien
audio/x-mpeg
MPEG 2-Dateien (.mp2)
Internet-Medientypen und MIME 12
audio/x-pn-realaudio
Real-Audio-Dateien (.ram, .ra)
audio/x-wav
Wav-Dateien (.wav)
image/gif
Bilddateien im GIF-Format (.gif)
image/jpeg
Bilddateien im JPEG-Format (.jpg, .jpeg, .jpe)
image/tiff
Bilddateien im TIFF-Format (.tiff, .tif)
message/http
Mail im HTTP-Format
message/news
Mail im Format für Newsgroups
multipart/byteranges
Mehrteilige (Mail-)Nachricht im Byte-Format
multipart/encrypted
Mehrteilige, verschlüsselte (Mail-)Nachricht
multipart/form-data
Mehrteilige HTTP-Nachricht mit den Daten eines HTML-Formulars
text/comma-separatedvalues
Textdatei mit kommabegrenzten Feldwerten (.csv)
text/css
Cascading Style Sheets-Datei (.css)
text/html
HTML-Datei (.htm, .html)
text/javascript
JavaScript-Datei (.js)
text/plain
Normale Textdatei (.txt)
text/richtext
RTF-Datei (.rtf)
text/tab-separatedvalues
Textdatei mit durch Tabulatoren begrenzten Feldwerten (.tsv)
video/mpeg
Videodateien im MPEG-Format (.mpeg, .mpg, .mpe)
video/x-msvideo
Videodateien im AVI-Format (.avi)
x-world/x-vrml
VRML-Dateien (.wrl)
Tabelle 7.2: Die wichtigsten Medientypen
Eine
vollständigere
Liste
finden
Sie
unter
selfhtml.teamone.de/diverses/mimetypen.htm.
Auf
www.isi.edu/in-notes/iana/assignments/media-types finden Sie ein
offizielles Verzeichnis der Medientypen. Das MIME-Format wird in den RFCs 2045,
2046 und 2077 beschrieben.
Für Texttypen kann zusätzlich der Zeichensatz angegeben werden, wenn die Textdaten in einem
anderen als dem ISO-8859-1-Zeichensatz codiert sind. Dazu wird das charset-Attribut durch ein
Semikolon getrennt an den Medientyp angehängt:
text/plain; charset=ISO-8859-2
Internet-Medientypen und MIME 13
5
*6
5
9
%%
"9
+7 8
9
Das World Wide Web setzt sich aus unzähligen Webservern im Internet zusammen. Diese Server
verwalten HTML-Dokumente, Grafiken, Multimedia-Dateien, Internetprogramme und andere Dateien.
Ein Webserver ist ein relativ einfacher Dienst. Er horcht auf dem Port 80 auf eingehende HTTPNachrichten und wertet diese aus. Ein Client sendet über das HTTP-Protokoll (RFC 2616, siehe in
Abschnitt 11.2), das auf TCP/IP aufsetzt, eine Anforderung an den Server. Darin wird der Server
aufgefordert, entweder eine bestimmte Datei zum Client zu senden, gesendete Daten als Datei
abzuspeichern oder ein Programm auszuführen. Multimediale Inhalte, die oft mit HTML-Dokumenten
verknüpft sind, werden wie HTML-Dokumente selbst einfach zum Client gesendet. Der Webbrowser
auf dem Client ist dafür zuständig, die empfangenen Daten korrekt zu interpretieren und darzustellen.
Die meisten Webserver können zudem Programme ausführen, die auf dem Server gespeichert sind.
Die unterschiedlichen Server unterstützen dazu verschiedene Technologien, wie CGI, Perl, PHP, JSP
und ASP. Ein serverseitiges Programm erzeugt bei der Ausführung meist HTML-Code als Ergebnis
und sendet diesen an den Client zurück. Der Webserver ermöglicht damit u. a. die Erstellung
dynamischer Webseiten, die – im Gegensatz zu statischen Webseiten – immer aktuelle Informationen
beinhalten (sofern die zugrunde liegenden Datenquellen auf dem Webserver gepflegt werden). Mit
diesem Thema beschäftigt sich das Buch ab Kapitel 9 noch sehr ausführlich.
Ein Webserver ist mit verschiedenen Ordnern verknüpft, die die Webdateien enthalten. Wenn der
Server läuft, kann ein Client diese Dateien über die IP-Adresse oder den Namen des Servers (sofern
die IP-Namensauflösung möglich ist) abrufen. Eine Datei default.htm, die direkt im Root-Ordner des
Servers Trillian (im Intranet) gespeichert ist, wird z. B. im Webbrowser so abgerufen:
http://Trillian/default.htm
Webdateien werden ausgehend von einem logischen Root-Ordner (der in der Konfiguration des
Webservers angegeben ist) in physikalischen oder virtuellen Unterordnern verwaltet. Beim Zugriff auf
Webdateien müssen die Unterordner deshalb in vielen Fällen in der URL angegeben werden. Eine
Datei, die in einem Unterordner mit Namen Shop gespeichert ist, wird beispielsweise so abgerufen:
http://Trillian/Shop/default.htm
Wenn die Namensauflösung nicht funktioniert (z. B. weil einem Rechner im Internet noch kein
Domänenname zugeordnet wurde), können Sie natürlich auch alternativ die IP-Adresse angeben:
http://192.168.0.1/Shop/default.htm
Jeder Rechner, der an das Internet angeschlossen ist, kann einen Webserver ausführen. Dazu ist
lediglich die Installation des Webservers selbst (z. B. der Internet Informationsdienste bei Windows
2000) und eine Internetanbindung notwendig. Wenn Sie auf einem an das Internet angeschlossenen
Rechner einen Webserver betreiben, kann jeder Internetnutzer die dort verwalteten HTML-Dokumente
und Programme über die IP-Adresse Ihres Rechners abrufen. Probieren Sie dies einfach einmal aus,
wenn Sie die Internet Informationsdienste auf einem Rechner installiert haben, der eine
Internetverbindung besitzt. Öffnen Sie die Internetverbindung, lesen Sie die meist dynamisch
vergebene IP-Adresse über das Programm ipconfig aus (das Sie in der Konsole starten können),
besuchen Sie einen Freund oder eine Freundin mit Internetanschluss und geben Sie in deren
Webbrowser die IP-Adresse Ihres Rechners ein. Sie sehen dann die Startseite Ihres Webservers.
Die (für Programmierer) wichtigsten Internetdienste 14
5
:
Der FTP-Dienst des Internet setzt sich ähnlich dem WWW-Dienst aus einer Vielzahl von FTP8Servern zusammen. Jeder an das Internet angeschlossene Rechner kann einen FTP-Server verwalten.
Ein solcher Server arbeitet ähnlich einem Webserver. Der Unterschied ist, dass eine Clientanwendung
lediglich freigegebene Dateien von einem FTP-Server abrufen kann (die Ausführung von Programmen
ist über FTP-Server nicht möglich). Zudem erlauben FTP-Server auch den einfachen Upload von
Dateien zum Server und das Erstellen und Löschen von Dateien und Ordnern. Da der Dateidownload
und auch der Upload mittlerweile immer mehr über Webserver realisiert wird, nimmt die Bedeutung
von FTP zunehmend ab.
5
2 "
Für das Versenden von E-Mails werden SMTP-Server verwendet. Ein im Netzwerk des Netzbetreibers
laufender SMTP-Server übernimmt normalerweise das Weitersenden von E-Mails, nachdem ein
Mailclient die Mail zu diesem Server übertragen hat. Der Server verwendet dabei das Simple Mail
Transfer Protocol (SMTP), das auf TCP/IP aufsetzt und ein einfaches textbasiertes Protokoll ist.
Dieses Protokoll ist im RFC 821 definiert. In Abschnitt 11.4 beschreibe ich die Grundlagen von
SMTP.
In einem Netzwerk eingegangene Mails werden meist auf einem POP-Server gespeichert. Dieser
Server ermöglicht einem Client, die Mails über das POP-Protokoll (Post Office Protocol) abzufragen.
Ein Problem von POP-Servern ist allerdings, dass ein Mailclient die Mails herunterladen und auf dem
lokalen Rechner speichern muss. Will ein Anwender seine gespeicherten Mails von einem anderen
Rechner aus abrufen, ist dies mit einem POP-Server prinzipiell nicht möglich. Dieses Problem lösen
Server, die mit dem IMAP-Protokoll (Internet Message Access Protocol) arbeiten. Bei diesen Servern
bleiben eingegangene Mails auf dem Server gespeichert und können deshalb auch von beliebigen
Rechnern aus mehrfach abgerufen werden.
8
File Transfer Protocol
Die (für Programmierer) wichtigsten Internetdienste 15
;
8
4
"
"
Das Internet basiert auf der untersten Ebene auf dem IP-Protokoll. Alle Daten werden über dieses
Protokoll versendet. Die Protokolle UDP und TCP setzen auf IP auf und erweitern diese Protokolle um
wichtige Features, wie beispielsweise Angaben zum Port des Clients und zum Zielport. Höhere
Protokolle, wie z. B. HTTP und SMTP, basieren auf UDP oder TCP. Die folgenden Abschnitte
beschreiben die niedrigen Protokolle, die höheren werden im Kapitel 11 beschrieben.
;
"
"
Damit die Kommunikation zwischen den verschiedensten Rechnern im Internet überhaupt
funktioniert, werden Daten im Internet über das standardisierte IP9-Protokoll versendet.
Eine ausführliche Beschreibung dieses Protokolls finden Sie im RFC 791.
Beim IP-Protokoll werden die zu sendenden Daten in Pakete, die so genannten Datagramme, verpackt
und mit zusätzlichen Informationen versehen. Ein Datagramm besteht aus einem Header, der
Kontrollinformationen und die Ursprungs- und Zieladresse speichert, und aus den zu versendenden
Daten. Die Größe des Headers kann fünf oder sechs 32-Bit-Wörter betragen, die aus einzelnen Feldern
bestehen. Das sechste Wort ist optional. Deswegen verwaltet das Feld IHL (Internet Header Length)
die aktuelle Größe des Headers. Abbildung 9.1 zeigt die schematische Darstellung eines IPDatagramms.
Abbildung 9.1: Format von IP-Datagrammen
Anhand der Zieladresse im Header können Router die einzelnen Datagramme durch das Internet
leiten. Die Ursprungsadresse wird vom empfangenden Dienst dazu verwendet, eventuelle
Ergebnisdaten zurückzusenden.
Beim Senden der Daten kommt es vor, dass einzelne Datagramme für ein Netzwerk, das dieses
Datagramm übertragen soll, zu groß sind. Die recht großen Pakete eines Ethernet-Netzes können in
einem X.25-Netz beispielsweise nicht direkt versendet werden. Der Gateway dieses Netzwerks teilt
die Datagramme dann in kleinere Fragmente auf. Diese Fragmente besitzen dasselbe Format wie das
gesamte Datagramm. Das Feld Identifikation speichert dann eine Information, zu welchem Datagramm
das Fragment gehört, im Feld Fragmentierungs-Offset wird die Position des Fragments im Datagramm
verwaltet. Im Feld Flags verwaltet IP eine Information darüber, ob ein Fragment das letzte eines
Datagramms ist.
9
Internet Protocol
Einfache Internetprotokolle 16
Damit Datenpakete nicht endlos durch das Internet geroutet werden, wenn der Empfänger nicht
erreichbar ist, verwaltet das Feld Time to Live einen Wert, der von jedem Router um den Wert 1
reduziert wird. Erkennt ein Router, dass dieser Wert 0 ist, verwirft er das Paket einfach. Die
Anwendung, die das Datenpaket gesendet hat, erkennt nach einer gewissen Zeit an der fehlenden
Antwort, dass der Empfänger nicht verfügbar ist.
Das IP-Protokoll besitzt keine Möglichkeit, die Zustellung der Daten zu garantieren, empfangene
Daten auf Fehler zu überprüfen (lediglich die Header-Informationen können an Hand der HeaderPrüfsumme überprüft werden) und Prozesse auf dem Zielrechner zu adressieren. Die maximale Länge
der Daten ist zudem beschränkt, weil ein Datagramm nur eine für das Quellnetzwerk maximale Größe
annehmen kann. Eine Einschränkung entsteht daraus aber nicht, weil das IP-Protokoll lediglich auf der
untersten Ebene arbeitet. Programme, die über das Internet kommunizieren wollen, können IP nicht
direkt nutzen. Dazu stehen die höheren Protokolle UDP und TCP zur Verfügung, die die
Einschränkungen von IP aufheben.
;
.
"
"
Das UDP-Protokoll (User Datagram Protocol) setzt auf dem IP-Protokoll auf und erweitert dieses um
Informationen über den Ursprungs- und den Zielport, um eine weitere Prüfsumme und um eine
Längenangabe für die eigentlichen Daten. Diese Informationen werden in den ersten beiden 32-BitWörtern des IP-Datenbereichs gespeichert. Abbildung 9.2 stellt diesen Bereich dar (ohne die HeaderFelder des IP-Datagramms).
Abbildung 9.2: Format von UDP (ohne IP-Headerfelder)
Mit UDP kann ein Programm Daten an einen definierten Zielport senden und den eigenen Port für die
Antwort zum Server übermitteln. Eine Überprüfung der Daten auf das korrekte Versenden ist nicht
möglich. Die Prüfsumme im UDP-Header wird lediglich zur Kontrolle der Headerinformationen
verwendet. Zudem ist die Größe der Daten auf die Maximalgröße der Datagramme beschränkt. UDP
sendet die Daten ohne zu überprüfen, ob der Empfänger überhaupt zum Empfang bereit ist. Ist der
Empfänger nicht bereit, gehen die gesendeten Daten einfach verloren.
UDP wird für eine performante Übertragung geringer Datenmengen verwendet. Um eine relative
Übertragungssicherheit zu ermöglichen, geben Serverdienste, die UDP verwenden, möglichst immer
eine Antwort auf eine Anforderung. Geht eine Antwort beim Client ein, wird das als erfolgreiche
Übertragung gewertet. Geht keine Antwort ein, wird die Anforderung einfach erneut gesendet. Das bei
TCP wesentlich aufwändigere Verpacken der Daten und der Verbindungsaufbau vor dem Senden
erfordern oft mehr Verwaltungsaufwand als das eventuell erneute Senden bei UDP.
Eine Beschreibung des UDP-Protokolls finden Sie im RFC 768.
Einfache Internetprotokolle 17
;
:
"
"
Das wesentlich häufiger verwendete TCP-Protokoll (Transmission Control Protocol) setzt wie UDP
ebenfalls auf IP auf. TCP erweitert IP um:
•
eine Überprüfung der Bereitschaft des Empfängers,
•
eine Überprüfung der empfangenen Daten über eine Prüfsumme,
•
eine relativ sichere Zustellung der Daten
•
und die Fähigkeit, große Datenmengen in mehrere Pakete aufgeteilt zu versenden.
Wie bei UDP verwaltet das TCP-Protokoll zusätzliche Headerinformationen im IP-Datenbereich.
Abbildung 9.3: Format des TCP-Protokolls
Die zu sendenden Daten werden in kleine Pakete aufgeteilt. Jedes Paket erhält eine Sequenznummer.
Der Empfänger kann die einkommenden Pakete an Hand dieser Nummer in der richtigen Reihenfolge
zusammensetzen. Da jedes Paket zusätzlich mit einer Prüfsumme versehen ist, kann der Empfänger
überprüfen, ob die Daten auf ihrem Weg eventuell beschädigt wurden. Erhält der Empfänger
beschädigte Pakete oder sind Pakete verloren gegangen, fordert er die fehlenden Pakete einfach nach
einer gewissen Zeit vom Sender nach. Damit ist die Zustellung von Daten bei TCP sehr sicher.
Um das Versenden der Daten von Rechner A zu Rechner B zu garantieren, baut TCP zunächst eine
Verbindung zum Zielrechner auf. Dazu sendet TCP zunächst ein Segment an Rechner B mit der
Aufforderung, die Sequenznummern der folgenden Pakete zu synchronisieren. Der Zielrechner
erkennt dies als Verbindungswunsch, liest die Startsequenznummer10 des Senders aus und antwortet
mit einem Segment, in dem er Rechner A die Startsequenznummer der Pakete seiner potenziellen
Antwort mitteilt. Daran erkennt Rechner A die Bereitschaft und beginnt mit dem Senden der Daten.
Die einzelnen Pakete können dabei in loser Reihenfolge versendet werden und gehen häufig
unterschiedliche Wege durchs Internet. Die Reihenfolge, in der die Pakete ankommen, ist also nicht
festgelegt. An Hand der Sequenznummern kann der Zielrechner die Daten korrekt zusammensetzen.
Nach dem Senden der Daten sendet TCP ein Segment mit der Information, dass keine Daten mehr
folgen. Der Zielrechner sendet daraufhin das Ergebnis der Anforderung (vielleicht eine HTML-Seite),
natürlich wieder in Pakete unterteilt. Danach wird die Verbindung mit dem Senden eines Segments
abgeschlossen, das wiederum Rechner A mitteilt, dass keine Daten mehr folgen.
10
Die Startsequenznummer wird von TCP nicht vorgeschrieben, ist aber meistens die 1.
Einfache Internetprotokolle 18
Dieser Handshake zwischen den beteiligten Rechnern sichert ab, dass die Daten beim jeweiligen
Zielrechner ankommen. Wie bei UDP wird der Dienst des Zielrechners und die Anwendung auf dem
Client über Ports adressiert, die den TCP-Paketen beigefügt werden.
Das TCP-Protokoll wird im RFC 793 beschrieben.
Einfache Internetprotokolle 19
<#
Auf Rechnern, die an das Internet oder an ein Intranet angeschlossen sind, sorgen so genannte SocketDienste dafür, dass die zu sendenden und empfangenen Daten entsprechend dem TCP- bzw. dem
UDP-Protokoll verarbeitet werden. Socket heißt übersetzt »Steckdose«. Ein Socket verbindet wie eine
Steckdose zwei entfernte Geräte miteinander, ohne dass man wissen muss, wie die Verbindung
physikalisch realisiert wird. Unter Windows übernimmt diese Aufgabe die Winsock-Schnittstelle, die
ein Teil des Windows API11 ist. Diese Schnittstelle können Sie direkt über das Windows-API nutzen,
was allerdings recht komplex ist. Einfacher ist die Verwendung von speziellen Komponenten, die
meist Bestandteil einer Programmiersprache sind. Unter Visual Basic 6 nutzen Sie dazu z. B. das
Winsock-Steuerelement, unter C#, Visual Basic.NET und anderen .NET-Sprachen nutzen Sie die
Socket-Klasse (die Sie im Namespace System.Net finden). Damit können Sie eigene Server und
Clients entwickeln, die über TCP oder UDP miteinander kommunizieren, ohne sich mit den komplexe
Protokollen auseinandersetzen zu müssen. Kapitel 19 beschreibt, wie Sie eine eigene TCP- oder UDPKommunikation aufbauen.
11
API = Application Interface. Eine Schnittstelle zu den Funktionen einer Applikation, meist in Form von
klassischen DLL-Dateien oder COM-Komponenten. Das Windows-API beinhaltet ca. 1000 Funktionen, die
Programme nutzen können, um auf die Funktionalität von Windows zurückzugreifen.
Socket-Dienste 20
7 8
8)8
"
"
Neben den bereits beschriebenen Protokollen IP, TCP und UDP (Kapitel 9) werden im Internet noch
einige weitere Protokolle verwendet. E-Mails werden z. B. über das SMTP-Protokoll versendet,
HTML-Seiten über das HTTP-Protokoll. Die für Programmierer wichtigsten Protokolle beschreibe ich
in den folgenden Abschnitten. Wenn Sie diese Protokolle grundlegend kennen, verstehen Sie die
Kommunikation zwischen einem Internetserver und einem Client wesentlich besser und können sich
viele Fragen selbst beantworten. Die Frage, wie ein Programm, das auf einem Webserver ausgeführt
wird, den Browsertyp erkennt, ist beispielsweise damit beantwortet, dass der Browser Informationen
über sich selbst im Header der HTTP-Nachricht mitsendet.
:
"$% :
! %%
Wenn Sie die IP-Protokolle einmal selbst erforschen oder ausprobieren wollen, helfen Ihnen
wahrscheinlich die drei Tools, die ich hier kurz vorstelle: Ein Paket-Sniffer überwacht die
Netzwerkkarte und zeigt die empfangenen und gesendeten IP-Pakete an, Telnet hilft dabei, die
höheren Protokolle einmal selbst auszuprobieren. Statt dem recht einfachen Telnet können Sie auch
den von mir programmierten IP-Client verwenden, dessen Quellcode und Installationsversion Sie auf
der Buch-CD finden.
#
$%
"
! %%
Wenn Sie die IP-Protokolle selbst einmal erforschen wollen, empfiehlt sich ein Paket-Sniffer. Ein
solches Tool fängt alle Pakete ab, die über das Netzwerk gesendet werden, und zeigt diese an. Ein
hervorragender (weil sehr einfacher) Sniffer ist der Shareware-Sniffer von Ufasoft
(www.ufasoft.com/sniffer). Die Shareware-Version läuft ohne Einschränkungen. Die
Vollversion kostet 20 Dollar. Eine kostenfreie Alternative ist das Freeware-Tool Ethereal
(www.ethereal.com/distribution/win32/). Dieser Sniffer besitzt mehr Möglichkeiten, ist
jedoch auch komplizierter zu konfigurieren und besitzt keine Möglichkeit, die Pakete im Klartext
anzuzeigen.
Die wichtigsten höheren Protokolle 21
Abbildung 11.1: Der Sniffer von Ufasoft
Der Ufasoft-Sniffer ist einfach zu bedienen. Im Menü Tools / Select Adapter können Sie die
Netzwerkkarte auswählen, die überwacht werden soll (falls mehrere installiert sind). Im linken oberen
Fensterbereich stellen Sie ein, welche Protokolle überwacht werden sollen. Für die Überwachung der
höheren Protokolle stellen Sie TCP ein. Wenn Sie den PACKETS-Eintrag im Protokoll-Ordner
aktivieren, können Sie noch einstellen, ob alle oder nur bestimmte Ports überwacht werden sollen.
Wenn Sie nur HTTP-Anforderungen und -Antworten überwachen wollen, sollten Sie hier nur den Port
80 einstellen. Ansonsten erhalten Sie viele Pakete, die uninteressant sind. Mit (F5) starten Sie die
Überwachung. Die gesendeten und empfangenen Pakete können Sie anschauen, indem Sie im linken
oberen Bereich auf das Protokoll klicken. Über das VIEW-Menü können Sie die Ansicht der Pakete
zwischen Hex-Werten und Text umschalten. Beachten Sie, dass die mir vorliegende Version 3.0 Build
72 die eingefangenen Pakete nur dann direkt anzeigt, wenn Sie den Eintrag PAKETS aktivieren. Ist
dieser Eintrag nicht aktiviert, werden die Pakete erst angezeigt, wenn Sie kurz ein anderes Protokoll
und danach wieder das TCP-Protokoll auswählen.
Ein Sniffer überwacht den Netzwerkverkehr auf der Netzwerkkarte. Deshalb funktioniert
ein Sniffer nur dann korrekt, wenn er auf dem Server installiert ist und die Anfragen von
einem anderen Rechner aus über das Netzwerk erfolgen. Wenn Sie z. B. einen
Webbrowser auf demselben Rechner verwenden, dessen Netzwerkkarte der Sniffer
überwacht (Sniffer können auch entfernte Netzwerkkarten überwachen), werden Sie kein
Ergebnis erhalten. Die lokale Kommunikation läuft eben nicht über die Netzwerkkarte.
Sie benötigen also zumindest zwei Rechner, um die Netzwerkpakete abfangen zu können
(oder einen Trick, den ich allerdings nicht kenne ...).
Die wichtigsten höheren Protokolle 22
:"
Bei der Beschäftigung mit Protokollen ist es sehr hilfreich, wenn Sie die Protokolle selbst
ausprobieren können. Dazu können Sie einfach den Telnet-Client verwenden, der bei Windows
beiliegt. Telnet nutzt das spezielle Telnet-Protokoll und wird eigentlich dazu verwendet, entfernte
Rechner fernzuwarten. Aber Sie können eben auch die höheren Internetprotokolle über Telnet
verwenden. Der Microsoft-Telnet-Client ist leider nicht allzu benutzerfreundlich. In Windows NT
scheiterten meine Versuche schon daran, dass ich meine eingegebenen Daten nicht sah (weil das
lokale Echo ausgeschaltet war, aber ich nicht wusste, wie ich dies einschalten sollte). In Windows
2000 ist Telnet allerdings (wieder) ein einfaches Konsolenprogramm, das leichter anzuwenden ist.
Rufen Sie Telnet über die Kommandozeile auf, indem Sie idealerweise zunächst kein
Befehlszeilenargument angeben (alternativ können Sie Telnet so starten, dass die Verbindung zum
Server direkt aufgebaut ist). Nur dann können Sie nämlich das lokale Echo einschalten, das dazu führt,
dass Sie Ihre Eingaben sehen:
C:> Telnet
Microsoft Telnet> set local_echo
Danach können Sie die Verbindung über den open-Befehl aufbauen, dem Sie den Server und den Port
übergeben. Für eine HTTP-Sitzung auf dem Rechner »Zaphod« sieht der Aufruf z. B. so aus:
open zaphod 80
Ist die Verbindung aufgebaut, sehen Sie ein leeres Konsolenfenster. Hier geben Sie Ihre
Anforderungen ein. Einzelne Zeilen werden gesendet, indem Sie die Return-Taste betätigen.
Abbildung 11.2 zeigt eine erfolgreiche Telnet-HTTP-Sitzung.
Abbildung 11.2: Eine Telnet-HTTP-Sitzung
Beachten Sie, dass HTTP 1.1 erwartet, dass Sie den Namen des angesprochenen Servers
im HOST-Header mit angeben, wie es Abbildung 11.2 zeigt. Ohne Host-Header erhalten
Sie als Ergebnis nur den HTTP-Status »400 − Bad Request«.
Die wichtigsten höheren Protokolle 23
%4"
"
6 :
.
Leider ist Telnet nicht allzu benutzerfreundlich. Mit Telnet fühlte ich mich in die Computer-Steinzeit
zurückversetzt. Nervig ist schon allein, dass Sie alle Eingaben immer wieder neu schreiben müssen,
wenn Sie diese wiederholen wollen. Um die Telnet-Probleme zu lösen habe ich einfach mit Visual
Basic 6 und C# je einen einfachen IP-Client entwickelt, der die Protokolle TCP und UDP unterstützt.
Sie finden diesen Client im Quellcode und als Setup auf der Buch-CD. Abbildung 11.3 zeigt eine
HTTP-Sitzung mit meinem kleinen IP-Client.
Abbildung 11.3: Der einfache IP-Client mit einer ausgeführten HTTP-Anforderung
Die wichtigsten höheren Protokolle 24
=::
"
"
Das HTTP-Protokoll wird für die Kommunikation mit Webservern verwendet. Über dieses Protokoll
kann ein Client Daten vom Server abfragen, Prozesse starten und Dateien uploaden. Der Server sendet
angeforderte Daten ebenfalls über HTTP zum Client.
Das HTTP-Protokoll besteht aus einem HTTP-Header und einem optionalen Datenbereich. Der
HTTP-Header enthält einen der möglichen HTTP-Befehle (Get, Put, Post etc.) mit Argumenten und
weitere Daten, wie z. B. Informationen über den Browser. Der Datenbereich enthält das HTMLDokument bzw. Daten, die der Client zum Server hochladen will.
Das HTTP-Protokoll wird im RFC 2616 beschrieben.
Eine HTTP-Sitzung besteht aus einem »Request« (der Anforderung) und einem
»Response« (der Antwort). Ein Client fordert den Server in einem Request auf, entweder
Ressourcen (HTML-Dokumente, Bilder etc.) zu liefern, Programme auszuführen oder
Dateien hochzuladen. Der Server antwortet mit einem Response auf diese Anforderung.
>
? $" 8
=:: (
8
8
HTTP-Nachrichten bestehen aus einzelnen Zeilen, die jeweils mit einem Carriage Return/Linefeed
(CRLF = Unicode-Zeichen 13 + 10) abgeschlossen sind. Die erste Zeile enthält einen HTTP-Befehl
(der auch als »HTTP-Methode« bezeichnet wird). Danach folgen einzelne Felder, die zusätzliche
Informationen zum Befehl liefern. Dieser HTTP-Header wird mit einer leeren Zeile abgeschlossen.
Danach folgt der optionale Datenbereich. In diesem Bereich sendet der Server angeforderte
Ressourcen, z. B. ein HTML-Dokument, zum Client. Bei einem Datei-Upload sendet der Client diese
Datei ebenfalls im Datenbereich zum Server.
Tabelle 11.1 beschreibt die Befehle der HTTP-Version 1.1.
Methode
Bedeutung
GET URI HTTP-Version
Über GET fordert ein Client eine Ressource an, deren Adresse in
einem URI angegeben ist. GET kann mit If-Feldern im Header
erweitert werden. If-Modified-Since bewirkt beispielsweise,
dass nur Dokumente abgerufen werden, die ein neueres Datum
besitzen, als in diesem Feld angegeben ist.
HEAD URI HTTP-Version
HEAD ist zunächst identisch mit GET mit dem Unterschied, dass der
OPTIONS URI HTTP-Version
OPTIONS fragt die Möglichkeiten der Kommunikation zwischen
POST URI HTTP-Version
POST wird verwendet, um Daten vom Client zum Server zu
PUT URI HTTP-Version
Mit PUT kann ein Client Daten an den Server übertragen, die dieser
unter dem im URI angegebenen Dateinamen speichern soll
(vorausgesetzt, der Benutzer besitzt das Schreibrecht auf dem
Server keine Daten in der Antwort übertragen darf. Damit können
Informationen über die angeforderte Ressource ausgelesen werden
ohne die Ressource selbst zu übertragen.
Client und Server für einen bestimmten URI ab. Der Server antwortet
mit einer Liste der möglichen HTTP-Methoden.
übertragen, die zu dem angegebenen URI gehören. Ein ausgefülltes
HTML-Formular wird z. B. über POST an ein Programm auf dem
Server übertragen (das im URI angegeben ist) und dort ausgewertet.
Die wichtigsten höheren Protokolle 25
Ordner).
DELETE URI HTTP-Version
Mit dieser Methode kann ein Client eine Datei auf dem Server
löschen, sofern das entsprechende Recht vorliegt.
TRACE URI HTTP-Version
Trace führt dazu, dass der Server die übertragenen Daten wieder
CONNECT
Diese spezielle Methode wird mit Proxy-Servern verwendet, die
dynamisch zu einem »Tunnel« umgeschaltet werden können (was
immer das auch ist ...).
zurücksendet. Diese Methode wird verwendet, um in fehlerhaften
Systemen herauszufinden, welche Daten der Server wirklich erhält.
Tabelle 11.1: Die Methoden von HTTP 1.1
Header-Felder, die der Befehlszeile folgen, übermitteln spezifische Informationen oder erweitern den
Befehl. Einige Header-Felder werden in Anforderungen und Antworten gemeinsam verwendet, andere
gelten nur für Anforderungen oder Antworten. Tabelle 11.2 beschreibt die (für Internetprogrammierer)
wichtigsten gemeinsamen Felder, Tabelle 11.3 die wichtigsten Felder einer Anforderung und Tabelle
11.4 die wichtigsten einer Antwort.
Feld
Bedeutung
Connection
In diesem Feld kann der Sender spezifizieren, ob er die Verbindung nach dem
Senden der Daten noch aufrechterhalten oder schließen wird. Mit dem Wert KeepAlive signalisiert der Sender, dass er die Verbindung aufrechterhält, was immer
dann verwendet wird, wenn der Empfänger Daten zum Sender zurücksenden soll.
Mit dem Wert Close signalisiert der Sender, dass die Verbindung seinerseits
geschlossen wurde und der Empfänger keine Daten zurücksenden sollte.
Content-Type
spezifiziert den MIME-Typ der gesendeten Daten. Für HTML-Dokumente wird in
diesem Feld beispielsweise der Typ text/html angegeben.
Date
Dieses Feld speichert das Datum, an dem die Nachricht generiert wurde.
Via
In diesem Feld legt ein Proxy oder Gateway Informationen ab, wenn er eine HTTPNachricht weiterleitet. Da dieses Feld mehrfach vorkommen kann, kann der
Empfänger daraus den Weg einer HTTP-Nachricht nachvollziehen.
Tabelle 11.2: Die wichtigsten allgemeinen HTTP-Header-Felder
Feld
Bedeutung
Accept
definiert die akzeptierten Medientypen für die Antwort.
Accept-Charset
definiert die akzeptierten Zeichensätze für die Antwort.
Accept-Encoding
definiert die akzeptierten Verschlüsselungen für die Antwort.
Accept-Language
definiert die akzeptierten Sprachen für die Antwort.
Authorization
enthält die (einfach verschlüsselten) Logindaten des Benutzers für geschützte
Webs.
Cookie
sendet ein zuvor vom Webserver an den Browser gesendetes Cookie zum
Webserver zurück. Ein Cookie ist eine Informationseinheit, die ein HTMLDokument auf dem Rechner des Anwenders ablegen kann und die im HTTPHeader zum Webserver zurückgesendet wird, wenn der Anwender dieses
Dokument noch einmal abruft. Cookies erlauben das persistente Speichern
von Daten in einer Internetanwendung und werden häufig verwendet, um den
Anwender zu identifizieren.
From
kann verwendet werden, um die E-Mail-Adresse des Benutzers oder spezielle
Logging-Informationen an den Server zu übertragen.
Die wichtigsten höheren Protokolle 26
Host
enthält die Hostadresse und den Port des Servers.
If-Modified-Since definiert, dass die angeforderte Ressource nur dann übertragen werden soll,
wenn diese seit dem angegebenen Datum modifiziert wurde.
If-UnmodifiedSince
wie If-Modified-Since, nur negiert
ProxyAuthorization
enthält Informationen, die den Client gegenüber einem Proxy identifizieren.
Referer
definiert die URL des Aufrufers. »Referer« ist übrigens falsch geschrieben
und müsste eigentlich »Referrer« heißen.
User-Agent
enthält Informationen über den Client wie z. B. den Browsertyp und die
Version.
Tabelle 11.3: Die wichtigsten HTTP-Header-Felder einer Anforderung
Feld
Bedeutung
Accept-Ranges
Über dieses Feld teilt der Server dem Client mit, ob und welche
Bereichsanforderungen er erlaubt. Die einzigen Werte für dieses Feld nach
HTTP 1.1 sind byte und none. Sind Byte-Bereichsanforderungen erlaubt,
kann der Client nur einen Teil (einen Bereich) einer Ressource abfragen,
damit nicht die gesamte Ressource gesendet werden muss. Das ist
beispielsweise der Fall, wenn in einem zuvor abgebrochenen Download
bereits ein Teil einer Datei im Cache des Client gespeichert ist.
Content-Location
Wenn die angeforderte Ressource an einem anderen Ort gespeichert ist, als in
der URI der Anforderung angegeben, kann der Server in diesem Feld den
tatsächlichen Ort zum Client zurückmelden.
Last-Modified
enthält das Datum der letzten Änderung der angeforderten Datei. Dieses Feld
wird vom Browser verwendet, um zu kontrollieren, ob er ein eventuell zuvor
gecachtes Dokument neu cachen muss.
Location
Location wird verwendet, um den Client auf eine andere URL umzulenken
(Redirect). Der Client erhält eine Antwort mit dem Status »302 − Object
moved« mit der Angabe der URL der Ressource, auf die umgeleitet wurde,
im Feld Location. Der Client reagiert normalerweise darauf, indem er die
Ressource über die neue URL neu anfordert.
Server
Dieses Feld enthält Informationen über den Server.
Set-Cookie
Dieses Feld teilt dem Browser mit, dass er ein Cookie speichern soll.
WWW-Authenticate
Dieses Feld wird in einer HTTP-Nachricht mit dem Status 401 (Access
denied) gesendet und definiert die möglichen Authentifizierungs-Methoden
für den Client.
Tabelle 11.4: Die wichtigsten HTTP-Header-Felder einer Antwort
Die wichtigsten höheren Protokolle 27
Im Header einer Anforderung (dem Request) sendet ein Client in der ersten Zeile einen HTTP-Befehl
zum Server. Bei den meisten Befehlen wird die verwendete HTTP-Version mit angegeben. In den
folgenden Zeilen übergibt der Client in einzelnen HTTP-Feldern zusätzliche Informationen, die z. B.
definieren, welche Grafikdateitypen, Sprachen und Codierungen akzeptiert werden, und Felder mit
Informationen zum Client und zum Server.
Das folgende Beispiel zeigt eine typische HTTP-Anforderung in einem Intranet. Angefordert wird die
Datei default.htm im Stammordner des Webservers auf dem Rechner Zaphod. Client ist der Internet
Explorer 6.02 (der sich allerdings als Version 5.01 ausgibt):
GET /default.htm HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.msexcel, application/msword, application/vnd.ms-powerpoint, */*
Accept-Language: de
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)
Host: Zaphod
Connection: Keep-Alive
Der Client muss nicht alle Felder spezifizieren, wie es im Beispiel oben der Fall ist. Normalerweise
genügt die Angabe der Befehlszeile und des Host:
GET /default.htm HTTP/1.1
Host: Zaphod
Die Angabe des Host ist Pflicht bei HTTP 1.1. Geben Sie dieses Feld nicht an, erhalten Sie die HTTPStatusmeldung »400 - Bad Request« zurück.
Bei Befehlen, die zu einer Antwort führen, sollte der Client die Verbindung aufrechterhalten und dem
Server dies über das Connection-Feld mitteilen:
GET /default.htm HTTP/1.1
Host: Zaphod
Connection: Keep-Alive
Ruft der Client ein Dokument ab, das bereits in seinem Cache gespeichert ist, enthält die HTTPAnforderung normalerweise im If-Modified-Since-Feld eine Angabe darüber, dass nur neuere
Dokumente zurückgeliefert werden sollen:
GET /default.htm HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.msexcel, application/msword, application/vnd.ms-powerpoint, */*
Accept-Language: de
Accept-Encoding: gzip, deflate
If-Modified-Since: Sat, 23 Feb 2002 15:20:30 GMT
If-None-Match: "30f488578c16c11:87d"
User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)
Host: Zaphod
Connection: Keep-Alive
Die wichtigsten höheren Protokolle 28
7
Auf eine Anforderung (Request) antwortet der Server mit einem Response. Diese Antwort besteht
wieder aus einem Header und einem Datenbereich. Der Header beginnt mit einer Statuszeile, die die
HTTP-Version und Informationen über den Erfolg bzw. über Fehler enthält, die bei der Abarbeitung
der Anforderung aufgetreten sind. Danach folgen Header-Felder, die z. B. den Server identifizieren
und das auf dem Server aktuelle Datum enthalten. Antwortet der Server z. B. auf eine GETAnforderung, sieht die Antwort des Servers etwa so aus wie im folgenden Beispiel, falls alles in
Ordnung ist:
HTTP/1.1 200 OK
Server: Microsoft-IIS/5.0
Content-Location: http://zaphod/Default.htm
Date: Sat, 23 Feb 2002 15:48:30 GMT
Content-Type: text/html
Accept-Ranges: bytes
Last-Modified: Sat, 23 Feb 2002 15:47:18 GMT
ETag: "c0f7ee5f81bcc11:abc"
Content-Length: 297
<html>
<head>
<title>Zaphods Web</title>
</head>
<body bgcolor="silver" >
<h1>Zaphods Web</h1>
<h2>Willkommen auf Zaphods Web.</h2>
<p>Hier finden Sie Beispiele für die verschiedenen Techniken der
Internetprogrammierung.</p>
<p><a href="index.htm">Treten Sie ein</a>.</p>
</body>
</html>
Treten Fehler auf, antwortet der Server mit einer HTTP-Fehlermeldung (deren HTML-Text Sie in der
Administration des IIS selbst definieren können). Die Anforderung einer Datei, die nicht vorhanden
ist, wird z. B. mit dem HTTP-Fehler 404 beantwortet:
HTTP/1.1 404 Object Not Found
Server: Microsoft-IIS/5.0
Date: Sat, 23 Feb 2002 15:55:03 GMT
Connection: close
Content-Length: 3238
Content-Type: text/html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html dir=ltr>
<head>
...
Der hier nicht dargestellte Teil der Antwort enthält den Rest des HTML-Dokuments (das bei
»<!DOCTYPE« beginnt).
Bei einer Anforderung mit dem If-Modified-Since-Feld antwortet der Server mit dem Status »304
– Not Modified«, wenn die Ressource nicht geändert wurde:
HTTP/1.1 304 Not Modified
Server: Microsoft-IIS/5.0
Date: Sat, 23 Feb 2002 15:57:03 GMT
Content-Location: http://Trillian/Default.htm
ETag: "30f488578c16c11:87d"
Content-Length: 0
Die wichtigsten höheren Protokolle 29
Tabelle 11.5 zeigt die wichtigsten Statuscodes.
Statuscode Text
Bedeutung
200
OK
Eine Anforderung, eine Ressource zu senden, wurde erfolgreich
verarbeitet. Die angeforderte Ressource befindet sich im Datenbereich
der Antwort.
201
Created
Eine Anforderung, eine Ressource zu erstellen, wurde erfolgreich
verarbeitet.
202
Accepted
Eine Anforderung, einen Prozess auszuführen, wurde erfolgreich
verarbeitet. Der Prozess kann allerdings zum Zeitpunkt der Antwort
noch laufen.
302
Object moved
Die angeforderte Ressource wurde verschoben. Wird zurückgegeben,
wenn die angeforderte Ressource eine Weiterleitung (Redirect)
enthält. Das Feld Location enthält dann den neuen URI.
304
Not modified
Die angeforderte Ressource wurde (bezogen auf das im Request
übertragene Dateidatum) zwischenzeitlich nicht geändert und muss
deshalb nicht übertragen werden.
400
Bad Request
Die Anforderung konnte vom Server aufgrund einer deformierten
Syntax nicht verstanden werden.
401
Unauthorized
Die Anforderung erfordert eine Autorisation des Benutzers, die nicht
übergeben wurde.
403
Forbidden
Der Zugriff auf die Ressource ist abgesichert und kann im aktuellen
Benutzerkontext nicht erfolgen.
404
Not found
Die angeforderte Ressource wurde nicht gefunden.
405
Method not
allowed
Die in der Anforderung angegebene Methode ist (zum gegenwärtigen
Zeitpunkt) nicht erlaubt. Dieser Fehler wird z. B. dann erzeugt, wenn
ein HTML-Formular abgesendet wird und der in Action angegebene
Dateiname falsch ist (das muss man erst einmal herausfinden ...).
408
Request Timeout
Einige Server-Antworten, wie z. B. »401 – Unauthorized«,
ermöglichen dem Client eine erneute Anforderung zu senden.
Antwortet der Client nicht in der Zeit, die der Server als Timeout
definiert hat, antwortet der Server mit dem Status 408.
505
HTTP Version
not supported
Die HTTP-Version der Anforderung wird nicht unterstützt.
Tabelle 11.5: Die wichtigsten HTTP-Statuscodes
Die wichtigsten höheren Protokolle 30
:
"
"
Das FTP-Protokoll erlaubt über einen FTP-Server die Arbeit mit einem entfernten Dateisystem. Mit
einem FTP-Client kann ein Anwender von einem entfernten Rechner Dateien hoch- und herunterladen,
Dateien und Ordner löschen, Ordner erzeugen etc. FTP basiert auf TCP/IP und ist (wie HTTP) ein
relativ einfaches, textbasiertes Protokoll. Die Möglichkeiten von FTP sind aber so groß, dass ich hier
nur die Grundlagen erläutern kann.
Das FTP-Protokoll wird im RFC 959 beschrieben.
Eine FTP-Sitzung besteht aus Anfragen des Clients und Antworten des Servers. Der Client baut eine
Verbindung zum Port 21 des Rechners auf, der den FTP-Server ausführt. Der Server meldet den
erfolgreichen Verbindungsaufbau mit einer Statusmeldung. Daraufhin sendet der Client den Befehl
USER mit dem Benutzernamen und den Befehl PASS mit dem Passwort an den Server. FTP-Server
erfordern immer einen Login mit Username und Passwort (die Dateien auf dem Server sind
benutzerabhängig geschützt). Die meisten Server ermöglichen aber auch einen anonymen Login, meist
über den Usernamen Anonymous mit der E-Mailadresse des Benutzers als Passwort. Das folgende
Beispiel zeigt den Beginn einer FTP-Kommunikation mit dem Server ftp.microsoft.com. Die
Kommunikation habe ich über meinen IP-Client ausgeführt.
Server: 220 CPMSFTFTPA05 Microsoft FTP Service
(Version 5.0).
Client: USER anonymous
Server: 331 Anonymous access allowed, send identity
(e-mail name) as password.
Client: PASS [email protected]
Server: 230-This is FTP.MICROSOFT.COM Please see the
dirmap.txt
230-file for more information.
230 Anonymous user logged in.
FTP kennt einige Befehle, mit denen die unterschiedlichsten Aktionen ausgeführt werden können. Der
Befehl NLST ruft beispielsweise eine Dateiliste eines Verzeichnisses ab. Über RETR können Sie
Dateien downloaden, DELE löscht Dateien auf dem Server etc. Tabelle 11.6 listet die wichtigsten
dieser Befehle auf.
Befehl
Bedeutung
CDUP
Wechsel ins übergeordnete Verzeichnis
CWD Verzeichnis
Wechsel zu einem anderen Verzeichnis
DELE Dateiname
Löschen einer Datei
HELP [Befehl]
Hilfe anfordern
LIST [Verzeichnis]
Anforderung einer ausführlichen Dateiliste eines Verzeichnisses
MKD Verzeichnis
Verzeichnis erstellen
MODE Moduskürzel
Festlegung der Art des Datentransfers
NLST [Verzeichnis]
Anforderung einer einfachen Dateiliste eines Verzeichnisses
PASS Passwort
Angabe des Passworts des Benutzers
PASV
Umschaltung zum passiven Datentransfer. Der Server meldet eine IP-Adresse
und eine Portnummer zurück. Der Client muss eine separate Verbindung zu
diesem Port an der angegebenen Adresse aufbauen, um Daten zu empfangen.
PORT Adressangabe
Festlegung der IP-Adresse und des Ports des Clients für einen folgenden
Datentransfer. Der Client muss eine separate Verbindung zum Server über
diese Portnummer aufbauen, damit der Server Daten senden kann.
Die wichtigsten höheren Protokolle 31
PWD
Ausgabe des aktuellen Verzeichnisnamens
QUIT
FTP-Verbindung beenden
RETR Dateiname
Anforderung einer Datei
RMD Verzeichnis
Verzeichnis löschen
RNFR Dateiname
Datei umbenennen
STAT [Dateiname]
Abfrage des Status der Verbindung oder eines Dateitransfers
STOR Dateiname
Datei auf dem Server ablegen
STOU
Datei auf dem Server ablegen, wobei dieser einen eindeutigen Namen vergibt
TYPE Typkürzel
Festlegung des Transfer-Typs (ASCII, EBCDIC oder binär)
USER Benutzername
Angabe des Benutzernamens für den Login
Tabelle 11.6: Die wichtigsten FTP-Befehle nach RFC 959
#
Der FTP-Server antwortet auf jeden Befehl mit einem Statuscode. Die erste Ziffer dieses Codes steht
für die Art der Antwort. Eine 1 steht für eine neutrale Antwort und Statusmeldungen, die
unaufgefordert gesendet wurden. Eine 2 steht für eine positive Antwort auf einen Befehl, der
erfolgreich ausgeführt wurde. Eine 3 steht dafür, dass ein Befehl einer Befehlsfolge korrekt ausgeführt
wurde. Die Ziffer 4 spezifiziert eine negative Antwort. Der zurzeit nicht ausführbare Befehl kann aber
noch einmal wiederholt aufgerufen werden. Ist die erste Ziffer 5, wurde der Befehl nicht ausgeführt
und eine Wiederholung dieses Befehls macht keinen Sinn. In der Referenz finden Sie eine Liste der
wichtigsten Statuscodes.
'
Wenn Befehle Daten zurückliefern, erwartet FTP eine separate TCP/IP-Verbindung für das Senden der
Daten. Die erste Verbindung wird als Steuerungsverbindung bezeichnet, die andere als
Datenverbindung. Vor dem Abruf der Daten wird die Datenverbindung geöffnet und automatisch nach
dem Abruf wieder geschlossen. Da der Server den Port des Clients kennen muss, an den die Daten
gesendet werden sollen, muss der Client vor dem Abruf entweder den Befehl PORT oder PASV
ausführen. Über PORT teilt der Client dem Server seine IP-Adresse und den Port mit, über den die
Verbindung aufgebaut werden soll. Dazu muss der Port natürlich vorher bekannt sein. Mit PASV wird
der so genannte passive Modus eingeschaltet. Der Server reserviert einen Port für die geplante
Datenverbindung und meldet diesen Port zurück. Der Client kann dann einfach eine Verbindung zu
diesem Port aufnehmen. Die Angabe der IP-Adresse und des Ports erfolgt in sechs Byte, die
kommabegrenzt angegeben werden. Das folgende Beispiel zeigt eine solche Adressangabe:
207,46,133,140,19,131.
Die ersten vier Byte stehen für die IP-Adresse, im Beispiel ist das also die Adresse 207.46.133.140.
Die letzten zwei Byte stellen das niederwertige und das höherwertige Byte der 16-Bit-Portnummer
dar. Die Umrechnung dieses Werts in eine Portnummer ist etwas aufwändig. Ich gehe dabei so vor:
Ich rechne die beiden Bytewerte in Hexadezimalwerte um, füge diese zusammen und rechne daraus
wieder den Dezimalwert aus. Im Beispiel führt 19,131 zu den Hexadezimalwerten 1316 und 8316,
woraus sich 138316 ergibt, was wiederum der Portnummer 4995 entspricht.
Die wichtigsten höheren Protokolle 32
Das folgende Beispiel zeigt eine FTP-Verbindung mit der Aufforderung, den passiven
Datentransfermodus einzuschalten:
Server: 220 CPMSFTFTPA04 Microsoft FTP Service
(Version 5.0).
Client: USER anonymous
Server: 331 Anonymous access allowed, send identity
(e-mail name) as password.
Client: PASS [email protected]
Server: 230-This is FTP.MICROSOFT.COM. Please see the
dirmap.txt file for more information.
230 Anonymous user logged in.
Client: PASV
Server: 227 Entering Passive Mode
(207,46,133,140,19,131).
Danach sollte der Client über den TYPE-Befehl den Transfer-Typ einstellen. Standardmäßig steht
dieser auf ASCII. Tabelle 11.7 zeigt die verfügbaren Kürzel.
Befehl
Datenformat
A [N|T|C]
ASCII in den Modi Non Print, Telnet oder Carriage Control
E [N|T|C]
EBCDIC in den Modi Non Print, Telnet oder Carriage Control
I
Binär mit 8-Bit (I ist von Image abgeleitet)
Ln
Binär mit n Bit
Tabelle 11.7: Die Kürzel zur Einstellung des Transfer-Typs bei FTP
Für den binären Datenaustausch muss der Client die Dateien in passende Byteströme umwandeln, was
hier gar nicht demonstriert werden soll (weil es dafür fertige Steuerelemente bzw. Klassen gibt). Für
den einfachen Austausch von ASCII-Dateien reicht der ASCII-Modus aus:
Client: TYPE A N
Server: 200 Type set to A.
Der Client muss dann eine Verbindung zum ermittelten Transfer-Port des Servers aufbauen. Ich
verwende für das Beispiel einfach eine weitere Instanz meines IP-Clients. Danach kann der Client
einen der Befehle aufrufen, die Daten abfragen. Das Beispiel ruft den LIST-Befehl auf:
Client: LIST
Server: 125 Data connection already open;
Transfer starting.
Server: 226 Transfer complete.
Der Server sendet die Daten dann zu der Portnummer der Datenverbindung und schließt diese danach
automatisch. Bei meinem Beispiel erhält die zweite Instanz des IP-Client die Daten (Abbildung 11.4).
Die wichtigsten höheren Protokolle 33
Abbildung 11.4: Empfang von FTP-Daten über eine separate Datenverbindung
#2:
"
"
Über das SMTP-Protokoll werden E-Mails zwischen Client und SMPT-Server und zwischen SMPTServern selbst versendet. Das SMTP-Protokoll ist weniger komplex als HTTP, kennt aber dennoch
viele Möglichkeiten. Deshalb zeige ich wie beim HTTP-Protokoll nur die Grundlagen.
Der RFC 2821 beschreibt das SMPT-Protokoll ausführlich.
Eine SMTP-Sitzung besteht aus einigen Client-Anforderungen und Antworten des Servers. Der Client
baut zunächst über TCP/IP eine Verbindung zum Port 25 des Rechners auf, der den SMTP-Server
ausführt. Dieser antwortet mit der Statusmeldung »250 OK«, wenn alles in Ordnung ist. SMPT kennt
wie HTTP verschiedene Befehle. Um das Senden einer E-Mail einzuleiten, sendet der Client zunächst
den Befehl EHLO oder HELO mit der Hostadresse des Ziels zum Server um sich zu identifizieren.
Dieser antwortet wieder mit einer Statusmeldung, worauf der Client den Befehl MAIL FROM: mit der
E-Mailadresse der Quelle sendet. Nach der OK-Meldung des Servers sendet der Client den Befehl
RCPT TO und leitet danach über den Befehl DATA das Senden der eigentlichen E-Mail ein. Der Text
der E-Mail kann wieder einen Header mit einigen speziellen Feldern enthalten, die ich später erläutere.
Das Feld Subject definiert die Betreffzeile. Der Header des Nachrichtentextes wird über eine
Leerzeile vom eigentlichen Text getrennt. In den folgenden Zeilen folgt der Text der E-Mail.
Abgeschlossen wird dieser über einen Punkt, der alleine in einer Zeile steht.
Das folgende Beispiel einer SMTP-Sitzung demonstriert dieses Hin und Her von Daten
wahrscheinlich besser als eine weitere Erläuterung. Der Anfangszustand ist der nach dem Aufbau
einer TCP/IP-Verbindung zum Port 25 des Servers mailto.t-online.de. Die Kommunikation
habe ich über meinen einfachen IP-Client (Abschnitt 11.1.3) ausgeführt.
Die wichtigsten höheren Protokolle 34
Server: 220 fwd05.sul.t-online.com T-Online ESMTP
receiver fsmtpd ready.
Client: HELO addison-wesley.de
Server: 250 Ok.
Client: MAIL FROM: <[email protected]>
Server: 250 Ok.
Client: RCPT TO: <[email protected]>
Server: 250 Ok.
Client: DATA
Server: 354 Ok, start with data.
Client: Subject: Party?
Hey Zaphod, hast Du Lust zu einer Party im
Restaurant am Ende des Universums?
.
Server: 250 Message accepted.
Client: QUIT
Server: 221 fwd05.sul.t-online.com closing.
Tabelle 11.8 zeigt die im RFC 2821 beschriebenen SMTP-Befehle.
Befehl
Bedeutung
DATA
leitet das Senden der eigentlichen Maildaten ein.
EHLO Identifikation Über diesen Befehl beginnt ein Client das Senden einer oder mehrerer E-Mails.
Im Argument gibt er eine Information zur seiner Identifikation an.
HELO Identifikation
Normalerweise ist dies der komplette IP-Domänenname, wenn dieser
verfügbar ist. Ist dieser nicht bekannt, reicht auch die Angabe eines Kürzels
und der Toplevel- und der Subdomäne. Der Server antwortet mit einer
Statusmeldung 250, wenn er bereit ist, die E-Mail(s) zu empfangen. Über den
älteren HELO-Befehl beginnt der Client eine Sitzung zum Senden einer
normalen 7-Bit-Mail, der erweiterte Befehl EHLO (Extended HELO) beginnt
eine Sitzung, die erweiterte SMTP-Fähigkeiten wie MIME12 nutzt (sofern der
Server dies zulässt).
EXPAND Adresse
fragt den Server, ob es sich bei der Adresse um eine Mailingliste handelt, und
fordert diesen auf, die einzelnen Empfänger dieser Liste zurückzugeben.
HELP Befehl
führt zu der Rückgabe von Informationen zum angegebenen Befehl.
MAIL FROM:
Dieser Befehl initiiert das Senden einer separaten Mail innerhalb der Sitzung.
Die optionale Rücksendeadresse wird vom Server für eine Rückantwort
verwendet, wenn die Mail nicht zugestellt werden kann. Um eine FehlerRückmeldung zu vermeiden, kann die Rücksendeadresse weggelassen werden.
[Rücksendeadresse]
NOOP
steht für »keine Operation« und wird verwendet, um zu prüfen, ob die
Verbindung noch besteht.
QUIT
beendet die Verbindung.
RCPT TO:
Empfängeradresse
legt die Empfänger fest. Dieser Befehl kann mehrfach angegeben werden um
mehrere Empfänger zu spezifizieren.
RSET
setzt den Protokoll-Status zurück.
VRFY Adresse
führt zu einer Prüfung der angegebenen Adresse.
Tabelle 11.8: Die SMTP-Befehle nach RFC 2821
Erwartet ein Befehl eine Adresse, so wird diese normalerweise in spitze Klammern eingeschlossen:
<[email protected]>. Eine leere Adresse besteht dann nur aus diesen Klammern: <>.
12
Die Multimedia Internet Mail Extension ist eine Erweiterung des E-Mail-Formats zur Übertragung von 8-BitTexten und zum Anhängen von binären Dateien an Mails.
Die wichtigsten höheren Protokolle 35
%4 ?
/
/
/
%
$ "
Die Empfänger der Mail werden über den Befehl RCPT TO: festgelegt, der auch mehrfach angegeben
werden kann. Kann die Mail an einen dieser Empfänger nicht ausgeliefert werden, sendet der
zuständige Mailserver eine entsprechende Fehlermeldung an die über MAIL FROM: angegebene
Rücksendeadresse (falls diese angegeben ist).
Sofern der Körper der Mail keine weiteren Informationen enthält, werden die Empfänger und der
tatsächliche Sender in den Informationsfeldern der Mail eingetragen (den Inhalt dieser Felder sehen
Sie meist im oberen Bereich, wenn Sie eine E-Mail in einem E-Mail-Client öffnen).
Sie können den Mailkörper jedoch auch mit speziellen Informationen versehen. Dazu verwenden Sie
die Felder Date, From, To, Cc und Subject. Diese Felder werden in den ersten Zeilen der Mail
angegeben und über eine Leerzeile von dem eigentlichen Text der Mail getrennt. Über Date können
Sie das Datum bestimmen. Wenn Sie dieses nicht angeben, trägt der Server das aktuellen Datum ein.
Im From-Feld können Sie die E-Mail-Adresse oder einen beliebigen Namen eintragen, der im
entsprechenden Feld der Nachricht ausgegeben werden soll. Im To-Feld tragen Sie die normalen
Empfänger der Mail ein. Einzelne Empfänger trennen Sie durch Semikola. Das Feld Cc (Carbon
Copy) spezifiziert die Empfänger, die lediglich eine Kopie der Nachricht erhalten (was nur als
Information für die Empfänger gedacht ist) und folglich nicht darauf reagieren müssen. Eine blinde
Kopie einer Mail (Bcc = Blind Carbon Copy) erreichen Sie, indem Sie den Empfänger wohl über
RCPT TO: angeben, diesen aber nicht im To- oder Cc-Feld aufführen. Den Betreff der Nachricht
geben Sie schließlich im Subject-Feld an. Ein typischer Körper einer Mail an drei Empfänger sieht
dann etwa so aus:
From: [email protected]
To: [email protected];[email protected]
Cc: [email protected]
Subject: Mal wieder Zeit für eine Reise
Hallo Zaphod, hallo Ford,
ich will mal wieder irgendwo im Universum snowboarden. Lust mitzukommen?
.
Die wichtigsten höheren Protokolle 36
#
# '
Der SMTP-Server antwortet auf jeden Befehl mit einem Statuscode in der Form Nummer Text.
Statuscodes, die mit der Ziffer 2 beginnen, signalisieren eine positive Rückmeldung bei einfachen
Befehlen, Statuscodes, die mit 3 beginnen, eine positive Rückmeldung bei mehrstufigen Befehlen.
Beginnt der Statuscode mit der Ziffer 4, handelt es sich um einen vorübergehenden Server-Fehler, der
eine eventuelle Wiederholung ermöglicht. Die Ziffer 5 signalisiert einen allgemeinen Fehler, der keine
Wiederholung des Befehls erlaubt. Tabelle 11.9 zeigt die wichtigsten SMTP-Statuscodes.
Statuscode
Bedeutung
211
liefert den aktuellen Systemstatus nach NOOP oder eine Antwort auf den HELP-Befehl.
220
wird als Begrüßungsmeldung nach einem HELO oder EHLO gemeldet um anzuzeigen,
dass der Server bereit ist.
221
wird als Bestätigung des QUIT-Befehls gemeldet um anzuzeigen, dass der Server die
Verbindung geschlossen hat.
250
wird gesendet, wenn ein Befehl erfolgreich abgesetzt wurde.
354
wird nach DATA gesendet, um anzuzeigen, dass das Senden der Nachricht nun beginnen
kann.
421
zeigt an, dass der SMTP-Dienst zurzeit nicht verfügbar ist. Das kann der Fall sein, wenn
der Server gerade heruntergefahren wird.
450
zeigt an, dass die Mailbox des Empfängers zurzeit nicht erreichbar ist, was der Fall sein
kann, wenn die Mailbox gerade sehr beschäftigt ist.
500
zeigt einen Syntaxfehler in der Befehlszeile an.
501
zeigt einen Syntaxfehler in den Argumenten der Befehlszeile an.
Tabelle 11.9: Die wichtigsten SMTP-Statuscodes nach RFC 2821
Die wichtigsten höheren Protokolle 37
Autorativer DNS-Server 9
LIST (FTP) 31
CDUP (FTP) 31
localhost 6
CIX 2
MAIL FROM
CONNECT (HTTP) 26
(SMTP) 35
CWD (FTP) 31
Medientyp 12
DATA (SMTP) 35
Methoden (HTTP) 25
Datagramm 16
MKD (FTP) 31
DELE (FTP) 31
MODE (FTP) 31
DELETE (HTTP) 26
Name Service 8
DE-NIC 8
Nameserver 8
DNS 9
NIC 8
DNS-Server 9
NLST (FTP) 31
Domain Name Service 9
NOOP (SMTP) 35
DSE 2
OPTIONS (HTTP) 25
EHLO (SMTP) 35
Paket-Sniffer 21
E-Mails
PASS (FTP) 31
Grundlagen 15
PASV (FTP) 31
über SMTP versenden 34
Point of Precence 2
EXPAND (SMTP) 35
PoP 2
Extranet 5
POP-Server 15
Fragmentierung 16
PORT (FTP) 31
FTP 15
Ports 10
FTP-Protokoll 31
POST (HTTP) 25
Gateway 3
Primary-Nameserver 9
Gateways 3
Private IP-Adressen 6
GET (HTTP) 25
Protokolle
HEAD (HTTP) 25
FTP 31
HELO (SMTP) 35
HTTP 25
HELP (FTP) 31
IP 16
HELP (SMTP) 35
SMTP 34
HTTP
TCP 18
Anforderung 28
Antwort 29
UDP 17
PUT (HTTP) 25
HTTP-Protokoll 25
PWD (FTP) 32
IMAP-Server 15
QUIT (FTP) 32
Intranet 4
QUIT (SMTP) 35
IP-Adresse 6
RCPT TO
IP-Adressklassen 6
IP-Namensauflösung 8
(SMTP) 35
Request (HTTP) 25
IP-Ports 10
Response 29
IP-Protokoll 16
Response (HTTP) 25
Klasse-A/B/C-Adresse 6
RETR (FTP) 32
Index 38
RMD (FTP) 32
Telnet 23
RNFR (FTP) 32
Toplevel-Domäne 9
Router 3
TRACE (HTTP) 26
RSET (SMTP) 35
Transfer-Typ (FTP) 33
Simple Mail Transfer Protocol 15
Transmission Control Protocol 18
SMTP 15
TYPE (FTP) 32
SMTP-Protokoll 34
UDP-Protokoll 17
SMTP-Server 15
URI 11
Sniffer 21
URL 11
Socket-Dienste 20
URN 11
STAT (FTP) 32
USER (FTP) 32
STOR (FTP) 32
User Datagram Protocol 17
STOU (FTP) 32
VRFY (SMTP) 35
Subnetze 7
Well Known Port 10
Subnetzmasken 7
Winsock-Schnittstelle 20
TCP-Protokoll 18
World Wide Web 14
Index 2