In diesem Kapitel werden die unteren Schichten des Internets, also die Basis, auf der alle folgenden Kapitel aufbauen werden, vermittelt.
Man untergliedert die Protokolle des Internets in verschiedene Schichten, definiert schon 1982 durch das OSI3-Schichtenmodell (siehe Grafik
Je weiter "`oben"' ein Protokoll liegt, so abstrakter ist es. Mit diesen Protokollen werden wir uns am meisten beschäftigen. "`Unten"' liegt zum Beispiel die physische Schicht: Das entspräche praktisch dem Netzwerkkabel. Da uns aber nur die Software interessiert, wird hier darauf nicht eingegangen werden.
Auf der Transportschicht ist das Protokoll IP4angesiedelt. IP ist für die grundlegende Kommunikation aller Rechner im Internet zuständig. Eine Schicht höher (nicht abgebildet) liegt TCP5. Dieses Protokoll sorgt dafür, dass die mit IP versendeten Pakete am Ziel auch ankommen. Auf der Anwendungsebene schließlich sind alle "`hohen"' Protokolle angesiedelt, namentlich SMTP, POP3, HTTP und NNTP, denen je ein einzelnes Kapitel gewidment ist.
Heute sorgt für die Kommunikationsfähigkeit aller Knoten im Internet die Version 4 des IP.
IPv4 adressiert alle Rechner mit Hilfe eines vier Byte langen "`Words"',
untergliedert in vier Zahlen mit je einem Byte. Was sich hier etwas kompliziert
anhört ist ganz einfach: 66.35.250.209
ist zum Beispiel eine gültige
IP-Adresse. Jede Zahl darf (wegen der 1-Byte-pro-Zahl-Grenze) maximal 255 (die
0 wird mit einbezogen) betragen.
Besondere IP-Adressen sind solche, die
.0
enden. Diese IP-Adressen definieren ein ganzes Subnetz. So
definiert 10.0.0.0
zum Beispiel ein Subnetz, mit dem alle Rechner,
dessen IP-Adressen mit 10.
beginnen, gemeint sind.
.255
enden besonders: Diese
repräsentieren das gesamte Subnetz. Schickt man zum Beispiel einen Ping
(siehe
Jedes Paket wird auch mit einer TTL versehen, mehr dazu .
Ein gravierender Nachteil von IP ist allerdings die mangelnde Fehlertoleranz: Ist Netzlast hoch, kommen viele Pakete6nicht am Ziel an. Deswegen wurde ein weiteres Protokoll entworfen, TCP. TCP sorgt dafür, dass die via "`normalem"' IP versendeten Pakete auch am Ziel ankommen.
Dies erreicht TCP vereinfacht gesagt dadurch, dass es die Pakete nummeriert. Kommt dann ein Paket am Ziel nicht an, fordert der Zielrechner es erneut.
Auch ergänzt TCP IP um sogenannte Ports: Auf jedem der insgesammt
Ports (0 bis 65535) kann ein eigener Dienst (HTTP, SMTP, POP3, IMAP, DNS, etc.)
"`lauschen"'. Dadurch erst wird die Dienstevielfalt des Internets möglich.
Um zu einem TCP Port eines Hosts zu connecten, benutzt man unter guten System
(Linux, Hurd) den Kommandozeilenbefehl telnet
(siehe Screenshot
X
des Hosts Y
zu connecten,
gibt man ein:
telnet Y X
Will man eine Übersicht der offenen Ports (Ports, an denen ein Dienst lauscht) haben, verwendet man einen Portscanner.
Portscanner verbinden sich praktisch mit jedem möglichen Port des Zielsystems.
Wird die Verbindung aufgebaut, ist der Port offen und kann angezeigt werden.
Ein guter Portscanner unter Linux und anderen Unix-basierten Systemen ist
nmap
(siehe Screenshot
UDP ergänzt IP lediglich um die schon von TCP bekannten Ports, nicht aber um die Fehlertoleranz.
UDP kommt zum Beispiel bei der Übertragung von Audio- und Video-Streams zum Einsatz, da dort zum einen die häufige Neu-Übertragung von Paketen, was natürlich die verfürbare Bandbreite noch weiter schmälert, fehlt. Dies ist allerdings bei solchen Übertragungen nicht wichtig: Fehlt ein Frame, kommt schon sehr schnell der nächste. Dieses Fehlen ist dann nur als Knacken zu hören bzw. als kurze Pause zu sehen.
ICMP wird7 nur zur Statusübertragung für TCP/UDP/IP eingesetzt, zum Beispiel ob der Zielhost existiert, eine Route verfügbar ist usw.
Über ICMP werden auch sogennannte "`Pings"' übertragen. Pings sind kleine Pakete, die, am Zielrechner angekommen, von diesem sofort zurückgeschickt werden. So kann man die Erreichbarkeit von Hosts testen (siehe Screenshot
Eine Frage blieb bisher ganz unbeantwortet: Wie werden die Pakete nun
eigentlich von Rechner A
nach B
transportiert, wenn keine direkte
Leitung zum Ziel vorhanden ist?
Um nicht jeden Computer des Internet mit jedem anderem Computer zu vernetzen, benutzt man sogenannte Router.
Das Bild
Im Beispiel würde gelten:
A
:
X
, direkte Leitung benutzen
X
, den ISP9, weiterleiten
X
:
A
, direkte Leitung benutzen
Z
, direkte Leitung benutzen
Y
, direkte Leitung benutzen
Y
weiterleiten
Y
:
B
, direkte Leitung benutzen
X
, direkte Leitung benutzen
X
weiterleiten
Z
:
X
, direkte Leitung benutzen
X
weiterleiten
B
:
Y
, direkte Leitung benutzen
Y
, den ISP, weiterleiten
Jeder Router verringert die TTL10 jedes Pakets, welches ihn passiert.
Angenommen, der Startwert ist 255
(theoretisches Maximum) und ein Paket
wandert über 16 Router bis zum Ziel, so wird die entgültige TTL (die, die der
Zielrechner zu Gesicht bekommt), nur noch 239
betragen.
Erreicht die TTL zu irgendeinem Zeitpunkt 0
, so wird das Paket verworfen
und den Quellrechner via ICMP über das Problem informiert.
Viele Betriebssysteme verwenden dabei eine andere TTL als Startwert. Kennt man also die Start-TTL eines Rechners (ermittelbar via einem Ping (End-TTL wird geliefert) und Traceroute (siehe nächster Abschnitt; Anzahl der Hops (Router) zwischen Quell- und Zielrechner werden bekannt)), so kann man das eingesetzte Betriebssystem mit einiger Gewissheit vorhersagen (siehe Screenshot
Mit Hilfe des Befehls traceroute
(tracert
auf manchen schlechten
Systemen) wird die Route zu einem beliebigen Zielrechner angezeigt (siehe
Screenshot
Traceroute benutzt dabei keine Magie: Es setzt einfach die Start-TTL zuerst auf
1
. Damit kommt ein Paket also nur bis zum ersten Router, welches ein
ICMP-Time-to-Live-exceeded-Paket zurück sendet, womit der erste Hop bekannt
ist. Dann wiederholt traceroute
das Verfahren mit einer TTL von 2
,
erhält damit den nächsten Router, usf.
Zu diesem Zeitpunkt sollte folgenden klar sein, um die nächsten Kapitel zu verstrehen:
telnet
,
nmap
,
ping
und
file
?