Zusammenfassung:
1. RFC: Request For Comments
2. TCP/IP
2.1.
IP - Internet Protocol
2.1.1. Die IP-Adresse
2.2.2.
IPv6
2.2. TCP - Transmission Control Protocol
3. DNS - Domain Name Service
4. HTTP - Hyper Text Transfer Protocol
5. MIME-Types - Multipurpose Internet Mail Extension
6.
SMTP - Simple Mail Transfer Protocol
7. NNTP - Network News Transfer Protocol
8. FTP - File Transfer Protocol
RFC ist die
Abkürzung für Request For Comments. Durch sie werden alle Standards und
Protokolle im Internet beschrieben. Sie sind jedem im Internet zugänglich. Die
zugehörige Nummer (z.B. RFC793 für TCP - s.u.) ist eindeutig, wird nur einmal
vergeben und nach der Vergabe wird auch das zugehörige Dokument nicht mehr
verändert.
Da es keine Organisation gibt, die für das Internet an sich verantwortlich ist,
sind Arbeitsgruppen entstanden, die über RFCs versuchen Standards in den
verschiedenen Bereiche festzulegen und somit die Entwicklung zu vereinfachen und
zu beschleunigen.
Die wichtigste dieser Organisationen die sich mit diesen Standards beschäftigt
ist "Internet Activities Board" (IAB). Sie ist für die Internet-Standards und
die Verwaltung der RFCs zuständig.
Das IAB hat zwei Unterorganisationen gebildet, die IETF (Internet Engineering
Task Force), die für die Funktion des Internets sowie die Lösung aller
Protokoll- und Architekturfragen verantwortlich ist, sowie die IRTF (Internet
Research Task Force), deren Schwerpunkt auf der Forschung und Entwicklung von
neuen Technologien liegt.
Die RFCs sind als Arbeitspapiere für die Gemeinschaft der Internet-Entwickler zu
sehen und behandeln thematisch jedes Gebiet der Computer-Kommunikation. Der
Status kann dabei von einem einfachen Informationspapier bis hin zur
Spezifikation eines Standards variieren.
Sie lassen sich in folgende Kategorien einteilen:
- Required: Vorraussetzung für das Internet
- Recommended/Suggested: wird sehr empfohlen (üblicherweise auch implementiert)
- Elective: der Entwurf ist anerkannt aber kein Standard, Implementierung offen
- Limited Use: keine generelle Nutzung empfohlen
- Not recommended: veraltet, nicht implementieren
- Obsolete: nicht ausgearbeitet, keine Implementierung empfohlen
Wie man an der Aufteilung sieht, wird zwar jeder Standard als RFC
veröffentlicht, aber nicht alle RFCs sind Standards. Jeder kann eine Publikation
als RFC vorschlagen, dieser Vorschlag wird von entsprechenden Experten vor der
Veröffentlichung geprüft. Die offiziellen Standards für die Veröffentlichung
sind in RFC 1140 (IAB Official Protocol Standards) enthalten.
Bei der Prüfung als RFC werden folgende Stufen durchlaufen:
- Experimental: in einer Testphase
- Proposed Standard: im Test der IAB
- Draft Standard: Entwurf, Modifikationen möglich
- Internet Standard: offizieller Standard
- Historic: veraltet
Da die RFC-Nummer einmalig vergeben wird, erhält ein überarbeitetes Dokument
eine neue Nummer. Eine Neuerscheinung wird über die RFC-DIST-Mailinglist bekannt
gegeben. In diese Liste kann man sich Eintragen indem man z.B. eine Email an
majordomo@zephyr.isi.edu mit dem Body-Text "subscribe rfc-dist" schickt.
Die Suche nach RFCs beziehungsweise das Anfordern bekannter RFCs geht auch per
Email an die Adresse rfc-info@isi.edu. Mit bestimmten Anweisungen, die man beim
Anmelden per Email zugeschickt bekommt, kann man Daten suchen und anfordern. Das
gleiche gilt auch für mailserv@ds.internic.net (weitere Möglichkeiten siehe
Vortragsfolie RFC). Über die Webseite
http://www.rfc-editor.org
sind alle verfügbaren RFCs und zugehörige HOWTOs über einen herkömmlichen
Browser abrufbar.
Auch über FTP hat man über folgende Server Zugang zu RFCs:
|
Server |
Verzeichnis |
|
ds.internic.net |
rfc
|
|
nis.nsf.net |
internet/documents/rfc |
|
nisc.jvnc.net |
rfc |
|
ftp.isi.edu |
in-notes |
|
wuarchive.wustl.edu |
info/rfc |
|
src.doc.ic.ac.uk |
rfc |
Im entsprechenden Verzeichnis sind die RFCs dann als .txt- oder .ps-Dateien mit
folgenden Befehlen abrufbar:
GET RFC-INDEX.TXT local_name (RFC Index)
GET RFCxxxx.TXT local_name (Textversion)
GET RFCxxxx.PS local_name (Postscriptversion)
Im Index-File sind alle RFCs erfasst es beinhaltet eine Übersicht über z.Zt.
etwa 3300 Dokumente. Das erste aufgeführte Dokument ist aus dem Jahr 1969 und
hat als Titel "Host Software". Nicht alle RFCs unter der Nummer 698 (Juli 1975)
sind online verfügbar.
Als Alternative zu den inzwischen umfangreichen und unübersichtlichen RFCs gibt
es die im März 1992 eingeführten STDs (Standards). Sie sind Internetstandards
auf dem neuesten Stand und beziehen sich auf die aktuellsten RFCs. Ihre
Nummerierung bleibt gleich und der Inhalt wird jeweils auf den aktuellen Stand
gebracht. Die STD-Bezeichnung eines NetBIOS Service Protocols würde dann lauten:
STD-19/RFC-1001/RFC-1002, da sich u.a. auf 2 RFCs bezieht.
Im folgenden werden RFCs angeführt, die sich hauptsächlich mit den
unterschiedlichen Netzwerkprotokollen des Internets beschäftigen.
TCP/IP:
Bei Protokollen im
Allgemeinen handelt es sich um festgelegte Standards für einen Datenaustausch.
Sie regeln das Verhalten beim Transfer und machen eine Kommunikation erst
möglich. Meist werden für diese Vorgänge mehrere Protokolle benötigt, die dann
nacheinander in Aktion treten. Die Informationseinheit durchläuft mehrere
Schichten, die jeweils eine bestimmte Aufgabe erfüllen. Werden Daten gesendet,
durchlaufen sie diese schichten von oben nach unten, beim Empfang werden diese
in umgekehrter Reihenfolge verarbeitet und so wieder in den ursprünglichen
Zustand gebracht.
Open
Systems
Interconnection Referenzmodell:
|
senden
\/ |
Anwendungsschicht |
empfangen
/\ |
|
Darstellungsschicht |
|
Sitzungsschicht |
|
Transportschicht |
|
Vermittlungssschicht |
|
Datensicherungsschicht |
|
Bitübertragungsschicht |
Das US-Verteidigungsministerium wollte in den sechziger Jahren eine
Netzwerktechnologie entwickeln, die mit Teilausfällen von genutzten Leitungen
zurechtkommt. Aus diesem Grund war eine direkte Datenübertragung zwischen Sender
und Empfänger nicht möglich. Die Advanced Research Projects Agency (ARPA), ein
Zusammenschluss mehrerer Wissenschaftler und Universitäten, wurde 1957 mit der
Entwicklung eines neuen Systems beauftragt.
Die Grundidee war ein paketvermittelndes Netzwerk (packet-switched network) zu
organisieren. D.h. es werden keine direkte Verbindung zwischen zwei Rechnern
aufgebaut, die Information wird in Pakete aufgeteilt und auf bestmöglichem Wege
übertragen. Nach Ankunft aller Pakete beim Empfänger werden diese wiederum in
richtiger Reihenfolge zusammengesetzt.
Durchgesetzt hat sich die Kombination von TCP/IP, die 1974 offiziell eingeführt
wurde.
Bei TCP/IP handelt es sich um die Zusammenarbeit von zwei Protokollen. Das
Transmission Control Protocol (TCP - RFC793) und das Internet Protocol (IP -
RFC791) bilden die Grundlage für die Informationsübertragung im Internet. Alle
unten aufgeführten Netzwerkprotokolle bauen auf diesen beiden auf. Sie sind an
sich plattformunabhängig und erfüllt somit ein wichtiges Kriterium für die
Datenübertragung im Internet zwischen unterschiedlichen Systemen.
Das Schichtmodell für die Datenübertragung über TCP/IP ist an das OSI-Modell
angelehnt. Das Open System Interconnection Referenzmodell besteht aus sieben
Schichten (Application, Presentation, Session, Transport, Network, Data Link und
Physical Layer). Jede Schicht hat die Aufgabe der übergeordneten Schicht
bestimmte Funktionen bereitzustellen. Vorraussetzungen für eine einzelne Schicht
ist u.a. ein eigener Abstraktionsgrad, eine genau definierte Funktion,
international genormte Protokolle sollen berücksichtigt werden, die
Schnittstellen zu anderen Schichten sollen so wenig Daten wie möglich benötigen,
wobei dennoch die Anzahl der Schichten gering zu halten ist.
Das OSI-Referenzmodell ist erst nach der TCP/IP Entwicklung entstanden. Somit
ist das OSI-Modell bereits an den TCP/IP-Aufbau angelehnt, wobei das
TCP/IP-Modell nur aus vier Schichten besteht.
Die oberste Schicht ist die Application Layer, danach folgt die Transport Layer,
hier ist das TCP zu finden, gefolgt von der Internet Layer mit dem IP und
schließlich die Network Layer.
Die Application Layer beinhaltet höherliegende Protokolle, die das TCP/IP
nutzen. Dazu gehören z.B. TELNET, FTP, SMTP, DNS, HTTP und mehr. Die wichtigsten
werden im folgenden näher beschrieben.
Die Transport Layer bereitet die Information für den Weg vom Host zum Zielhost
vor. Hier kann neben TCP das User Datagram Protocol (UDP) als Protokoll
eingesetzt werden.
Der Unterschied liegt darin, dass bei UDP im Gegensatz zu TCP keine
Empfangsbestätigung vom Zielhost zurückgeschickt wird. Das UDP wird dort
eingesetzt, wo die Geschwindigkeit wichtiger als die Übertragungssicherheit ist,
dies ist z.B. bei Video- oder Audiostreaming der Fall.
Die Internet Layer besteht aus dem IP. Dieses Protokoll ist für die richtige
Adressierung und Zustellung (Routing) der Informationspakete im Netz zuständig.
Die unterste Schicht, die network layer, ist für die physikalische Übermittlung
von Daten übers Netzwerk(kabel) zuständig (z.B. Firewire, Ethernet).
Um ihre Aufgabe erfüllen zu können hängt jede Schicht einen s.g. HEADER an die
eigentliche Informationseinheit. Hier sind entsprechende Informationen abgelegt,
die der Funktionalität und der Kontrolle dienen.
Das Internet
besteht aus mehreren Netzen die über die ganze Welt verteilt sind. Die
"Hauptadern" des Internets sind die s.g. Backbones (Rückgrat). Sie bestehen aus
Routern und sind über Hochleistungsleitungen miteinander verbunden. So kann man
z.B. ein US-Backbone und ein European-Backbone unterscheiden. Diese sind über
sehr leistungsfähige Transatlantic-Leitungen miteinander verbunden.
An die Backbones schließen dann weitere Netzwerke an, z.B. die von Universitäten
oder Providern. Über das IP wird der Datenfluss zwischen den Routern gesteuert
und kontrolliert. Die Hauptaufgabe besteht somit darin, aus großen
Informationseinheiten kleinere Pakete zu bilden und diese auf verschiedenen
Wegen sicher vom Host zum Zielhost zu übertragen. Die Daten wandern so über
verschiedene Netzwerke. Das IP an sich besitzt aber keinerlei Kontrolle über die
Zustellsicherheit der einzelnen Pakete. Diese werden einfach vom Host ins
Netzwerk gesendet. Das IP hat folgende konkrete Aufgaben: die Aufteilung in
Pakete, Zuordnung zu einer Adresse nach einem festgelegten Schema (IP-Adresse -
s.u.), die Übertragung der Daten an die Netzwerkschicht, die Weiterleitung der
Daten über die einzelnen Router und Netzwerke (Routing) und die Zusammensetzung
der empfangenen Daten beim Zielhost.
Ein solches Packet wird Datagram genannt. Es besteht aus der zu übertragenden
Information und einem ihr vom IP angefügten HEADER. Der Header hat eine feste
Größe von 20 Byte und enthält alle notwendigen Informationen für den
Datentransport.
Der Body mit den eigentlichen Daten kann von IP aus bis zu 64kByte groß sein,
durch die zugrundeliegende Ethernet-Technik ist die Größe auf etwa 1500 Byte
beschränkt.
Version: gibt die Versionsnummer des IP (V4, V6) an
Type of Service: legt Prioritäten für die Paketbearbeitung fest
Length: Länge des Headers (Grundgröße 20 Byte + weitere Optionen)
Total Length: gesamte Paketgröße
Identification: Zuordnung von einzelnen Fragmenten
Fragment Offset: Datagram-Nummer im gesamten Datenkontext
Time to Live: Lebensdauer eines Pakets
Protocol: bestimmt das Protokoll in der Transport Layer (TCP = 6, UDP = 17)
Header Checksum: Prüfsumme für den Header (Time To Live, Flg und Fragment
Offset)
Flags: DF - Don't Fragment und MF - More Fragments
Source Address/Destination Address: 32bit lange IP-Adressen
Options: optionale Informationen (z.B. Sicherheit)
Padding: Auffüllfunktion
Das IP ist auch in der Lage beim Transport der Daten über verschiedenen
Netzwerke die Datenpakete entsprechend anzupassen. Bei der s.g. Fragmentierung
wird u.U. ein Paket, das die maximale Paketgröße eines Netzwerks überschreitet,
in kleinere Pakete aufgeteilt. So zerteilt das IP eines Netzwerkknotens das
ursprüngliche Paket in kleinere Pakete. Diese werden entsprechend mit einem
Header versehen, mit dessen Hilfe sie wieder an beliebiger Stelle im Netz über
das IP zusammengesetzt werden können.
Zur Fehlerdiagnose wird zusätzlich das Internet Control Message Protocol (ICMP -
PING) im Datagram eingebaut. Dies ermöglicht die Anforderung von
Diagnoseinformationen von einem Router bzw. Zielhost, die dann an den Sender
zurückgeschickt werden (über IP).
U.a. werden folgende Informationen zurückgeschickt: Destination Unreachable,
Source Quench (Paketanzahl übersteigt Kapazität, Sender muss Anzahl verringern),
Parameter Problem (Header ist fehlerhaft, Paket noch mal senden), Redirect
(falsch weitergeleitete Pakete, Route ändern), Time Exceed (Lebensdauer
abgelaufen), Echo Reply/Echo Request (Erreichbarkeit eines Hosts - ein Request
wird gesendet und bekommt als Antwort die Reply-Meldung), Timestamp
Request/Timestamp Reply (wie zuvor, jedoch mit Ankunfts- und Sendezeiten
versehen).
Die
IP-Adresse:
Jeder Host und
Router im Internet bekommt eine eindeutige IP-Adresse zugewiesen. Ist ein System
an mehreren Netzwerken angeschlossen hat es in jedem Netzwerk eine eigene
Adresse. Somit identifiziert eine IP-Adresse nicht unbedingt einen Rechner,
sondern dessen Zugang zum Netz.
Beim Routing-Vorgang sucht der Router nach Einträgen in seiner Routing-Tabelle
die die IP-Adresse (Netzwerk ID und Host ID) des Ziels beinhaltet. Ist ein
Eintrag vorhanden, wird das Datagramm an den entsprechenden Router zur direkten
Übermittlung übergeben.
Ist dies nicht der Fall, sucht der Router lediglich nach der Netzwerk-ID. Ist
hier ebenfalls kein Eintrag vorhanden wird der Standard-Router ("default")
gesucht und das Paket an diesen übergeben. Sonst ist das Datagramm nicht
zustellbar.
Es gibt zwei Routing-Verfahren. Statisches Routing legt einen Weg vor. Beim
dynamischen Routing kommunizieren die Router über Protokolle wie RIP (Router
Information Protocol) oder IGRP (Interior Gateway Routing Protocol) über den
Verlauf.
Für die Verwaltung von IP-Adressen ist die IANA (Internet Assigned Numbers
Authority) zuständig. Weltweit ist sie in drei regionale Organisationen
unterteilt.
Nord- und Südamerika ARIN
Europa RIPE
Asien APNIC
Die Vergabe von IP-Adressen wird in RFC 2050 beschrieben. In der Praxis erfolgt
die Reservierung von einer oder mehreren IP-Adressen immer über einen Internet
Provider.
Die IP-Adresse an sich hat eine Länge von 32 Bit und wird als Dezimalzahl
dargestellt, die der Übersichtlichkeit halber in 4 Blöcke (=Byte) aufgeteilt
wird. Die 32-Bit große Zahl 01111111111111111111111111111111 entspricht der
IP-Adresse 126.255.255.255. Die Adressbereich erstrecken sich von 0.0.0.0 bis
255.255.255.255.
Die Adressen werden in Klassen unterteilt. Bei der Adressklasse A wird das
Netzwerk über die erste Stelle bestimmt. Die folgenden drei Stellen beziehen
sich auf einzelne Hosts in diesem Netzwerk. Die Anzahl der Hosts liegt bei etwa
16 Mio. (2hoch24) verteilt auf 126 Netze. Das erste Bit ist eine Null.
Bei der Klasse B bezeichnen die ersten beiden Byte-Blöcke ein Netzwerk und die
folgenden einen Host in diesem Netzwerk (etwa 64000 Hosts = 2hoch16). Der Wert
für das erste Byte liegt unter 192, der Anfang in Bits lautet 10. Die Klasse C
hat lediglich die letzte Stelle für Hosts frei (254 Hosts/Netzwerk, Bitfolge
110...). Der erste Byte-Block geht bis zum Wert 223.
Darüber hinaus kommt man in die Klasse D Adressen, s.g. Multicast-Adressen. Sie
dienen dazu ein Datagram an mehrere Hosts zu versenden. Dazu wird ein spezielles
Protokoll genutzt, das Internet Group Management Protocol (IGMP; RFC1112).
Dieses arbeitet mit Anfrage- und Antwort-Paketen, um zu erfahren welche Hosts
einer Gruppe angehören bzw. welcher Gruppe ein Host angehört. Dazu werden
spezielle Router (M-Router) benötigt. Die Multicast - Adressen können nur zum
Adressieren genutzt werden. Sie werden von Internetorganosationen genutzt
(224.0.0.2 - alle multicastfähigen Knoten).
Der Bereich über 240 ist z.Zt. reserviert.
Einige Bereiche haben weitere Sonderfunktionen. So sind die Adressen 10.0.0.0
bis 10.255.255.254 für ein privates (RFC 1918) Klasse A-Netz reserviert. Ein
privates Klasse B-Netz nutzt die Adressen von 172.16.0.0 bis 172.31.0.0 mit bis
zu 65.000 Hosts. Adressen die mit 192.168.0.. beginnen sind Klasse C-Adressen,
die für eine private Nutzung reserviert sind und bis zu 254 Hosts enthalten.
Privat bedeutet, dass diese Adressen beliebig genutzt werden können, ohne
Adressenkonflikte im Internet zu verursachen. Sie werden nicht weiter über das
Internet übertragen.
Über die 255 bei der Hostadresse (Broadcast-Adresse) werden alle Hosts in einem
Netzwerk adressiert. Die Netznummer 0 steht für das für den Host aktuelle
Netzwerk. D.h. der Host muss die eigene Netzwerkadresse nicht wissen.
Die 127 steht für den s.g. Loopback Device und wird auf dem System lokal
verarbeitet.
IPv6:
Durch das starke
Wachstum des Internets und die Annäherung der Hostzahlen an die momentane
Möglichkeiten der IP-Adressierung soll in Zukunft die momentane Version 4 durch
eine leistungsstärkere abgelöst werden.
Ipv6 (1995/96 zum Standard RFC1883) soll der wachsenden Leistungsanforderung im
Internet gewachsen sein.
Zu Anfangszeiten des Intenets schienen bei etwa 1000 aktiven Rechnern die
Möglichkeiten mit über 4 Milliarden Adressen vollkommen ausreichend. Durch das
wachsen des Internets ist dies zwischenzeitlich nicht der Fall. Hierzu wird die
Adressauflösung von 32 auf 128 Bit erhöht. Dadurch können in Zukunft etwa
2hoch128 bzw. 3.4*10hoch38 Adressen verwaltet werden. Die Anzahl der Felder im
Header sinkt von 13 auf 7 um die Routing-Geschwindigkeit zu erhöhen. Weitere
Informationen werden auf zusätzliche Header ausgelagert.
Ipv6 soll in Zukunft auch bestimmte Dienste im Internet besser unterstützen.
V.a. bei Video- und Audiodaten sollen Möglichkeiten einer Echtzeitübertragung
geschaffen werden. Hinzu kommen Funktionen, die die Sicherheit der
Datenübertragung stützen sollen.
die Adresse sieht dann wie folgt aus:
xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx
Nullen können zusammengefasst werden:
1234:0000:0000:0000:0000:0000:0000:1234 = 1234:0:0:0:0:0:0:1234 = 1234::1234
bzw.
63.254.4.0.2.128.0.0.0.0.0.0.0.0.0.1 = 3ffe:400:280:0:0:0:0:1 = 3ffe:400:280::1
Kompatibilität zu IPv4:
195.26.159.14 -> ::ffff:195:26:159:14 = ::ffff:c31a:9fe
Die Loopback Adresse:
::1 (anstelle 127.0.0.1)
Möglichkeiten von IPv6:
- Quality of Service
Multimedia-Anwendungen, wie Video und Sound, werden optimierter übertragen. Bei
IPv4 können einzelne Pakete verworfen werden und somit auch aufgrund
unterschiedlicher Wege in einer anderen Reihenfolge eintreffen, was bei einer
normalen Datenübertragung nicht auffällt.
IPv6 besitzt im Header einen Flow Label. Dadurch werden solche Pakete
gekennzeichnet, merken sich die Route und werden bevorrechtigt behandelt.
Dadurch kommt zumindest eine kontinuierliche Leitung zustande.
- Authentisierung und Verschlüsselung
Bei IPv4 wir der Sicherheitsaspekte z.Zt. durch Zusatzdienste https oder Telnet
und SSH abgedeckt. Bei IPv6 wird ein Sicherheitsstandard auf der Protokollebene
möglich zur Authentisierung und Verschlüsselung von Daten. Hierzu werden zwei
zusätzliche Header eingesetzt:
Authentication-Header: Empfänger kann feststellen, ob das Paket
wirklich vom angegebenen
Absender stammt oder ob es auf dem Weg verändert wurde
Encapsulating Security Payload Header: verschlüsselt Daten und sorgt
für die korrekte Übertragung
- IPv6 Address Privacy
Gewährleistung der Sicherheit bei Geräten mit eindeutiger Seriennummer. Um das
Übertragen von Informationen über den einzelnen User zu verhindern wird von der
IETF ein System entwickelt das über Zufallszahlen eine temporäre Verbindung
aufbaut. Der Webserver besitzt dabei eine feste Adresse.
- Mobile IPv6
Bei GPRS und UMTS-Übertragungen werden mobile Geräte eine feste IP-Adresse
bekommen und überall auf der Welt erreichbar sein. Der Mobility Support in IPv6
teilt einem mobile Gerät zusätzlich eine zweite, sogenannten care-of Adresse,
zu. Das erste Paket geht an den Heimatrouter und wir dann weitergeleitet. Der
Router schickt aber zusätzlich die care-of zurück. Weitere Pakete werden an die
care-of Adresse geschickt.
- Router Discovery
Einzelne Rechnern suchen automatisch nach Routern im Netz. D.h. keine Einwahl
nötig.
- statuslose Autokonfiguration
Durch IPv6 ist es Geräten in einem Netz möglich, sich vollkommen selbständig zu
konfigurieren, d.h. ihre IP-Adresse auszuhandeln.
TCP:
Das TCP liegt im
Schichtmodell in der Transport Layer und somit über dem IP. Es baut eine
zuverlässige end-to-end-Verbindung auf. Zuverlässig heißt, dass die Pakete nicht
einfach ins Netz geschickt werden, wie beim oben erwähnten UDP. Es wird eine
Verbindung zum Zielhost aufgebaut, die bestätigt werden muss. Hinzu kommt eine
Prüfsumme im TCP-Header zur Überprüfung von Fehlern im Datenabschnitt der
Pakete, die auf der Ebene des TCP als Segmente bezeichnet werden. Ist die
Prüfsumme nicht korrekt, d.h. sind Pakete verloren gegangen oder beschädigt,
wird keine Empfangsbestätigung versendet. Erhält der Sender nach einer Zeit
keine Empfangsbestätigung, sendet er ein Paket erneut.
Bereits vor dem Senden der eigentlichen Daten wird eine Verbindung über den s.g.
Three-Way-Handshake aufgebaut. Hier wird zuerst ein Segment gesendet, dessen
SYN-Flag im Header aktiviert ist. Dadurch wird dem Zielhost mitgeteilt, dass
eine Verbindung aufgebaut werden soll und zwar mit der Sequenznummer, die
ebenfalls im Header festgelegt ist. Der Empfänger kann die Verbindung aufnehmen,
indem er ein Bestätigungssegment zurückschickt in dem zusätzlich das ACK-Bit
aktiviert ist. Die Sequenznummer wird zur Bestätigung im Feld Acknowledgement
Number abgelegt und dann um Eins erhöht, damit der Senderhost weiß, mit welcher
er fortfahren soll.
Der Sender bestätigt die zustande gekommene Verbindung indem er erneut ein
Segment an den Empfänger schickt (aktives ACK-Feld und die vom Empfänger
angegebenen Sequenznummer als Acknowledgement Number). An dieses Paket können
bereits die ersten Daten angehängt werden. Am Ende der Datenübertragung wird das
FIN-Bit aktiviert. Es kommt meistens vor, dass die einzelnen Datenpakete nicht
in der gleichen Reihenfolge ankommen in der sie verschickt wurden, da sie über
verschiedene Wege weitergeleitet wurden. Somit sind die Hauptaufgaben von TCP
sicherzustellen, dass diese Daten beim Empfänger ankommen und dort wieder in der
richtigen Reihenfolge zusammengesetzt werden.
Über das TCP kann auch eine s.g. Portnummer (16bit, 65.535 Ports) angegeben
werden. Dadurch ist es möglich eine Applikation auf dem Zielsystem direkt
anzusprechen. Beispiele für Portnummern sind: TELNET auf Port 23, FTP auf 21,
SQL auf 14333.
Der TCP-Header ist 20 Byte groß, daran können weitere Optionen angehängt werden.
Die Informationseinheit und der Header müssen in das Datenfeld des IP-Fragments
passen.
Die einzelnen Felder werden wie folgt definiert:
· Source Port:
Portnummer des Senders
· Destination Port: Portnummer des Empfängers
· Sequence und Acknowledgement Number: zur Kontrolle der Reihenfolge der
einzelnen Pakete
· Offset: Länge des gesamten Headers
· Flags
o URG: urgent
pointer - dringend
o ACK: Bestätigung wird mitverschickt
o PSH: Daten werden nicht gepuffert, sondern sofort verarbeitet
o RST: Verbindung wird zurückgesetzt. V.a. bei Übertragungsfehlern, beim
ungültigen Segment oder beim Zurückweisen einer Verbindung
o SYN: Verbindungsaufbau
o FIN: Verbindungsende
· Window: Anzahl
Bytes die in beide Richtungen gesendet werden dürfen. Ist z.B. das Feld auf 0
gesetzt heißt das das Pakete bis zur Acknoledgement Number minus Eins empfangen
wurden, aber der Empfänger nun keine Daten mehr empfangen kann. Ein Paket mit
gleicher Acknowledgement Number und einem Wert ungleich 0 bedeutet eine
Wiederaufnahme des Empfanges.
· Checksum: Enthält eine algorithmisch erzeugte Summe anhand der Daten auf ihre
Richtigkeit überprüft werden
· Urgent Pointer: weist zusammen mit der Sequenznummer auf die Stelle hin, in
der dringende Daten abgelegt sind
· Options: weitere Felder, u.a. für die maximale Segmentgröße
· Padding: sichert die Headerlänge von max. 32 Bit und den Anfang der
eigentlichen Daten
PORTS:
· Well known Ports: 0 bis 1023 werden von der IANA bestimmt, sind fest
und sind nur vom System nutzbar (FTP: 21, SSH: 22, TELNET: 23, SMTP: 24, http:
80)
· Registered Ports: 1024 bis 49151 ebenfalls von der IANA verwaltet,
können von Entwicklern beantragt werden und auf USER-Ebene nutzbar (MS SQL:
1433, mySQL: 3306)
· Dynamic/Private Ports: 49151 bis 65535 keine Kontrolle
DNS:
Ein wichtiges
Protokoll für das Web das TCP/IP nutzt ist der Domain Name Service (RFC1034,
RFC1035). Dieser wandelt ASCII-Zeichenketten in IP-Adressen um. Die
Notwendigkeit für DNS ergibt sich aus der Tatsache heraus, dass begriffliche
Namen für den User besser zu handhaben sind.
Rechner, die für diese Zuordnung von Namen zu IP-Adressen und umgekehrt
verantwortlich sind, heißen Domain Name Server oder auch Name Server. Mehrere
Domains können einer IP-Adresse zugeordnet werden.
Eine Domain wir wie folgt aufgelöst:
129.187. 214.81
\/
/\
Rechnername.Subdomain. Toplevel-Domain.Domain
www.pms.informatik. uni-muenchen.de
Die Toplevel-Domain entspricht der Landeskennung (.de, .ch, .at) bzw. der Art
der Organisation (.otg, .edu, .com). Wobei eine systematische Zuordnung der
Länderkennung erst in V6 vorgesehen ist. Da das System aus den USA stammt waren
die ersten Endungen .com (Company), .edu (Education), .org (non-commercial
organisation) bzw. .net (Network).
Für die Vergabe von Domanis ist das Network Information Center zuständig (NIC -
für Deutschland: deNIC). Hier wird auch der Name der Domain zuerst beantragt,
bevor er genutzt werden kann. Als Rechnername wird standardmäßig WWW eingetragen
um zu zeigen, dass ein Webserver angesprochen wird. Es könne aber auch
Rechnernamen oder weitere Subdomain vorangestellt werden.
HTTP:
Das Hyper Text
Transfer Protokoll (V1.1 - RFC2616) basiert ebenfalls auf TCP/IP und ist somit
auch verbindungsorientiert. Das HTTP ist das zugrundeliegende Protokoll für das
WWW in der Aplication-Layer. HTTP übermittelt Daten vom Webserver zum Webbrowser
und umgekehrt. Übertragen werden HTML-Dokumente (Hypertext Markup Language)
sowie einige Erweiterungen wie Bilddateien, Audiodateien etc. Dateien werden im
Zusammenhang mit HTTP als Ressourcen bezeichnet. Die Spezialisierung der
zusätzlichen Formate finden auf Browser und Server über die s.g. MIME-Types
statt (s.u.). Zwischen Browser (Client) und Server wird über das TCP/IP eine
Verbindung hergestellt und über die URL (Unified Ressource Locators - Format für
Pfadangaben im Internet -
http://www.pms.informatik.uni-muenchen.de/lehre/seminar/client-server/01ss/index.htm)
wird eine bestimmte Datei aufgerufen. Diese Datei besteht meistens aus einem
HTML-Code und anderen implementierten Datenformaten wie z.B. .jpg, .png oder
.gif als typische Bildformate im Internet.
Sind die Daten an den Browser übermittelt, wird die Verbindung zum Server wieder
beendet. Um Daten vom Server anzufordern wird zuerst die Initial Request Line
gesendet. Diese besteht aus dem Aufruf einer bestimmten Methode. Die Methode zum
Anfordern von Daten heißt GET. Anschließend folgt die Pfadangabe auf dem Server
für das gesuchte File, dann die benutzte HTTP-Version.
GET /path/to/file/index.html HTTP/1.0
Um größere Datenmengen zu übergeben wird die POST-Methode verwendet. Hier werden
die Daten nicht über die URL sondern im Kontext der Anfrage übertragen.
Mit der PUT-Methode können Daten unter der angegebenen URL abgelegt werden, wenn
dieses der Server zulässt.
Der angesprochene Server sendet dann die s.g. Initial Response Line (Status
Line) die ebenfalls aus 3 Teilen besteht. Zuerst die HTTP-Version, dann der
response status code und die zugehörige Kurzbeschreibung.
http/1.0 404 Not Found
Der Response Status Code besteht aus einer dreistelligen Zahl. Aufgrund der
ersten Ziffer kann er in folgende Gruppen eingeteilt werden.
1xx - zur Information
2xx - Erfolgsmeldung
3xx - Client wird umgeleitet auf eine andere URL
4xx - Fehler clientseitig
5xx - Fehler serverseitig
Beispiele sind:
200 OK: Erfolgreiche Anfrage
404 Not Found: das angeforderte File konnte nicht gefunden werden
301 Moved Permanetly: Umleitung
302 Moved Temporarily: vorübergehende Umleitung
400 Bad Request: Anfrage enthält falsche Syntax
500 Server Error: Fehler beim abrufen der Datei auf dem Server
Danach können mehrere Headerlines folgen in denen weitere Informationen vom
Client oder Server abgelegt werden. HTTP 1.0 kennt 16 verschiedene Headerlines,
diese sind für eine reguläre Verbindung nicht erforderlich.
Beispiele:
Client:
Accept: MIME-Types des Browsers
From: gibt Emailadresse des Benutzers an
User-Agent: gibt das Programm an, dass diese Anfrage macht (User-agent:
Mozilla/3.0Gold)
Server:
Server: gibt die Serversoftware an (Server: Apache/1.2b3-dev)
Last-Modified: das Datum der letzten Änderung (Sun, 11 Feb 2001 20:34:54 GMT)
Content-Length: Länge des Body-Inhalts
Content-Type: MIME-Type des Body
Abschließend folgt eine Leerzeile und danach der Body mit den Daten für den
User.
Vom Client aus können ebenfalls Daten, die vom User eingegeben wurden,
übertragen werden. Über eine Angabe im Feld Content-Type des Headers wird der
MIME-Type (s.u.) des Bodys übertragen (Content-Type: text/html für ein
HTML-Dokument) und über Content-Length die Größe der Datei.
Verwendet man statt GET die HEAD-Methode, so werden nur die Header-Daten
ausgetauscht. Mit der POST-Methode werden Daten an ein Script auf dem Server
geschickt. Als Pfad ist dann das entsprechende Script anzugeben, die Antwort ist
das Auswertungsergebnis dieses Skripts (CGI, Pearl etc.).
Die Version 1.1 des HTTP wird seit etwa 1997 verwendet und ist zur Version 1.0
abwärtskompatibel. V1.1 ist durch eine Datenkompression und kleinere Pakete bis
zu 10mal schneller als V1.0. Sie unterstützt die CSS und das Bildformat PNG.
Weitere Vorteile sind u.a. die Möglichkeit mehrere Aktionen über eine bestehende
Verbindung durchzuführen. Ein zusätzlicher Cache-Support. Bei dynamischen Seiten
besteht die Möglichkeit diese zu versenden ohne die Gesamtgröße zu kennen
(Chunked-Transfer-Encoding).
Im Gegensatz zur V 1.0 werden aber bestimmte Header-Felder benötigt.
Clientseitig und Serverseitig ist es die Angabe des Zielhosts (Host)
erforderlich, da man mehrere Hosts einer IP-Adresse zuordnen kann (multi-homed
Server). Die Aufforderung die Verbindung nach dem Transfer zu schließen
(Connection: close) muss ebenfalls explizit angegeben werden, da hier die
Verbindung sonst bis zu einem Timeout von Seiten des Servers offen bleibt.
In der Anfangszeit
der Internets wurden lediglich Emails im ASCII-Format verschickt. Inzwischen
werden aber weitere Dateiformate sowohl per Email versendet, als auch über einen
Webserver angefordert. Die Multipurpose Internet Mail Extension (RFC 1521)
ermöglicht auch die Übertragung von Daten im anderen Format. Diese werden dann
entsprechend ihrer Dateiendung an ein weiterverarbeitendes Programm geleitet
bzw. könne vom Browser entsprechend angezeigt werden. Handelt es sich um ein
zusätzliches Programm das auf Browser-Ebene ausgeführt wird, spricht man beim
Browser von einem Plug-In. Ist das Format nicht eingetragen bzw. nicht
zugeordnet wird die Möglichkeit eines Downloads angeboten.
Es werden folgende Felder im Header hinzugefügt:
· Mime-Version: Version für MIME bisher nur 1.0
· Content-Type: gibt das Datenformat an. Besteht aus Typ und Untertyp
(text/plain - ASCII Text, test/html für HTML, image/jpeg oder image/gif für die
gängigsten Bildformate, multipart/mixed - aus mehreren Teilen bestehend). Sowohl
beim Absender als auch Empfänger muss der Mime-Type eingetragen sein, um eine
eindeutige Zuordnung zu ermöglichen.
· Content-Transfer-Encoding: gibt das Codierungsformat an (z.B. 7bit für
normalen ASCII-Text (Standard), 8bit für 8bit ASCII, quoted-printable für Text
in dem Sonderzeichen speziell codiert werden). Der benötigte Zeichensatz wird
als ISO-Format angegeben (Content-Type: text/plain; charset=iso-8859-1).
· Content-ID: stellt bei Emails eine Beziehung zu einer anderen Email her
(optional).
· Content-Description: kurze Beschreibung des Inhalts (optional).
Bei einer Webpage werden Inhalte wie Bilder etc. als neue Nachricht an den
Browser verschickt. Anhand des Dateitypes erkennt der Browser, wie die Datei zu
verarbeiten ist. D.h. ob er sie direkt anzeigen soll, an ein anderes Programm
schicken oder zum Download anbieten soll.
Das Simple Mail
Transfer Protocol ist das Protokoll für das Versenden von Email (electronic
mail) und ebenfalls in der Application Layer über Port 25 zu finden. Zum Emails
versenden werden zusätzlich zwei Komponenten benötigt. Zum einen der Message
Transfer Agent und zum anderen der User Agent. MTA sorgt für die Übermittlung im
Internet und benutzt dazu SMTP. UA wird vom User zum erstellen und Verwalten von
Emails auf dem Rechner benutzt und kontaktiert zum Senden und Empfangen der
Emails einen MTA (lokaler MTA). Ankommende Emails werden in entsprechende
Mailboxes ablegt.
Nach einem Verbindungsaufbau wartet der Sender-MTA auf eine Nachricht "220 READY
FOR MAIL". Danach wird der Befehl HELO zurückgesendet und es wird eine
Identifikation des Empfänger-Servers erwartet. Danach beginnt die eigentliche
Datenübertragung.
Einige Commandos (alle auf 4 Buchstaben beschränkt):
· HELP Liste aller verfügbaren Befehle
· HELO Senderidentifikation
· MAIL Beginn der Transaktion
· RCPT Identifikation des Empfängers
· VRFY Bestätigung der Benutzeridentifikation
· DATA Beginn des Datentransfers
· NOOP No Operation (OK erwartet)
· QUIT Ende der Verbindung
Nach Aufbau einer Verbindung wird das MAIL-Commando (MAIL <SP>
FROM:<reverse-path> <CRLF>) mit der Absenderidentifikation geschickt. Die
Absenderadresse (reverse-path) dient zum Versenden von Fehlermeldungen. Werden
Emails vom angegebenen Sender akzeptiert, folgt vom Empfänger das OK (Report:
250 OK). Danach kommt wiederum vom Sender das RCPT-Commando (RCPT <SP>
TO:<forward-path> <CRLF>) mit dem entsprechenden Empfängernamen (forward-path).
Ist der Name auf dem Zielsystem registriert, wird vom Empfänger erneut ein OK
gesendet. Ansonsten wird der Empfänger zurückgewiesen. Es können auch mehrere
Empfänger angegeben werden (jeweils ein RCPT Befehl).
Ist ein Empfänger unbekannt wird das "550 Failure reply" zurückgesendet. Wird
mindestens ein Empfänger akzeptiert beginnt der Sender mit dem Befehl DATA die
eigentliche Datenübertragung. Nach Empfang der Daten kommt vom Zielserver ein OK
zur Bestätigung. Die Daten, also der eigentliche Messagebody, enthalten einen
Header der die bekannten Felder Date,Subject,To,Cc,From enthält (siehe Folien).
Ein SMTP-Server kann auch Informationen speichern, die zur Weiterleitung einer
falsch adressierten Email dienen. Als Rückmeldung kommt hier "251 User not
local; will forward to <forward-path>" bei einer zuverlässigen Weiterleitung,
bzw. "551 User not local; please try <forward-path>" bei einem Versuch, hier
muss allerdings der Sender die Weiterleitung übernehmen.
zusätzliche Commandos sind:
· VRFY gibt bei einer Anfrage nach einem User dessen vollständigen Namen bzw.
die bekannte Email-Adresse
· EXPN gibt die User einer Mailingliste an
Unter "mailing" versteht man die Zuordnung einer Email in eine Mailbox.
"Sending" ist die Lieferung zum entsprechenden Rechner.
Die Email-Nachricht an sich besteht ebenfalls aus einem Header und dem
eigentlichen Inhalt, der durch eine Leerzeile getrennt ist.
Im Header sind u.a. folgende Felder enthalten:
· Date : Zeitpunkt des Absendens
· From : Absender (dieses Feld oder das Sender-Feld müssen vorhanden sein)
· Subject : Betreff, Überschrift.
· Sender : ist optional wenn From ausgefüllt ist
· Reply-to : Angabe einer gesonderten Antwortadresse
· To : Hauptempfänger
· cc : weitere Empfänger der Mail (Kopie)
· Comment : Optionaler Kommentar zur Nachricht
· In-Reply-To : vorangegangene Mails, auf die geantwortet wurde
· Message-ID : eindeutige ID einer Mail
· Return-Path : Informationen über die genutzte Route
· bcc : weitere Empfänger, bleiben für To: und cc: unsichtbar
Die Adressierung erfolgt über DNS indem vor den Domainnamen der Username
(Empfänger) gefolgt von einem @ angegeben wird. Die Email wird dann an den
zugehörigen Mailserver geleitet. Da nicht jeder einen eigenen MTA besitzt und
nicht jeder Server für Emails verantwortlich ist, müssen die Mailserver vom
Empfänger kontaktiert werden. Das Verwalten der Emails läuft dann über POP3 (RFC
1225) auf Port 110.
NNTP:
Das USENET ist das größte Newsnetzwerk das am das
Internet hängt. Die einzelnen News werden zwischen den s.g. Newsservern über das
Network News Transfer Protocol (RFC977) ausgetauscht. Es ist von den
Grundfunktionen an das SMTP (s.o.) angelehnt. Die Nachrichten werden aber nicht
zwischen einzelnen Personen, sondern zwischen Newsservern ausgetauscht.
Hier besteht die Möglichkeit über Newsgroups, bestehend aus Experten eines
Themengebietes, Informationen anzufordern bzw. eigene Fragen zu stellen. Dazu
benötigt man einen Newsreader (z.B. Forteagent oder auch Email-Programme wie MS
Outlook oder NS Messanger) und einen Newsserver. Es wird der nächstgelegene
Server zugeteilt der die Newsgroup hostet. Über das NNTP erfolgt die Verteilung
der News auf die zuständigen Newsserver. Für das Senden von neu eingegangenen
News sind die Daemons NNTPSEND und NNTPXMIT zuständig (push). NNTPD und NNTPXFER
sind für das Empfangen von News auf einem Server zuständig (pull). Der
Sytemadministrator legt die gewünschten Newsgroups auf dem Server fest und kann
auch bestimmen, wie lange eine News auf dem Server abrufbereit ist. Bei Ankunft
einer News wird diese jedem weiteren bekannten Newsserver angeboten. Der
angesprochene Server überprüft anhand einer Liste, ob er vom Sender News
empfangen darf. Ist dies nicht der Fall wird angenommen, dass es sich um einen
Client handelt, der News abrufen will.
Die News werden auf dem entsprechenden Newsserver gespeichert. Der Name einer
Newsgroup besteht im Allgemeinen aus deren Themengebieten, die in hierarchischer
Form einen Punkt getrennt sind. Am Anfang kann die Landeskennung verwendet
werden, um die Newsgroup lokal zu spezifizieren (de.comp.lang.javascript ist
eine JavaScript-Newsgroup).
Weitere Kategorien sind u.a.:
· Comp : Computerfragen
· Misc : nicht zuordenbar
· News : Themen zu News selbst
· Rec : Freizeit
· Sci : Wissenschaft
· Soc : Soziales und Kulturelles
· Alt: Alternativen für alle Themenbereiche
Über lokale Kategorien wird auch die Ausbreitung der News auf den einzelnen
Newsservern entsprechend beschränkt:
· De : deutsche Gruppen
· Eunet : europäische Gruppen
· Etc.
Über jede neue Newsgroup wird auf der Ebene der Kategorie abgestimmt. Eine
Ausnahme ist die Kategorie ALT. Hier können alle Themen eingerichtet werden.
Eine News (RFC1036) hat den Aufbau einer Email (RFC822) mit folgenden
Header-Angaben:
· FROM: Email-Adresse vom Verfasser
· Newsgroups: Newsgroup in der veröffentlich wird (Mehrfachangabe möglich)
· Subject: kurze Beschreibung der News (wichtig, da von den Usern zuerst
gelesen)
· Reply-To: Emailadresse für eine Antwort an den Verfasser
· Followup-To: Newsgroup in denen Kommentare oder Antworten auf die gepostete
News erscheinen
· Expires: Angabe eines Verfallsdatums
· Keywords: Schlüsselbegriffe
· Summary: Zusammenfassung
Häufig gestellte Fragen und Probleme werden in den s.g. FAQs (Frequently Asked
Questions) zusammengestellt, um übermäßige Wiederholungen von Themen zu
vermeiden.
Für den direkten
Austausch von Dateien wird das File Transfer Protocol verwendet. FTP wird oft
bei File-Archiven eingesetzt und ermöglicht auch nichtregistrierten Usern
Dateien vom Server zu kopieren.
Format für Anfrage:
ftp [IP_address|host_name]
Ein registrierter User hat über einen Login und ein Passwort Zugang auf für ihn
freigegebenen Daten. Bei einem öffentlichen Fileserver kann man sich mit Login
"ftp" und der Email-Adresse anmelden bzw. auch mit dem Login "anonymous" .
Folgende Befehle stehen nach der Verbindung u.a. zur Verfügung:
· open: Neue Verbindung zum Host
· close: Beendet die bestehende Verbindung
· user: Anmelden mit Username (nach fehlgeschlagener Anmeldung)
· dir, ls: Anzeigen des Verzeichnisinhaltes
· cd: Verzeichniswechsel
· pwd: Anzeige des aktuellen Verzeichnisses
· get: kopiert ein File vom FTP-Server (get remote_file_name local_file_name)
· put: kopiert ein File auf den FTP-Server
· quit: beendet FTP