11.3 TCP/IP – Aufbau und Struktur
Bei TCP/IP spricht man von einem verbindungsorientierten Protokoll – was bedeutet, dass vor der Übertragung von Daten erst eine Verbindung zu einem anderen Gerät aufgebaut werden muss. Einen Teil der Arbeit übernimmt dabei IP (Internet Protocol), was Dinge wie die Adressierung, das Überwachen oder das Versenden von Datenpaketen wären. Wie Sie schon erfahren haben, orientiert sich TCP/IP nur zum Teil an das ISO/OSI-Schichtenmodell – da bei TCP/IP lediglich vier Schichten existieren (Abbildung 11.3):
|
Netzwerkschicht |
|
Internetschicht |
|
Transportschicht |
|
Anwendungsschicht (HTTP, FTP, Telnet …) |
Hierzu folgt nun eine kurze Beschreibung der einzelnen Schichten im TCP/IP-Referenzmodell.
11.3.1 Netzwerkschicht (Datenübertragung)
Diese Schicht ist bei TCP/IP nicht unbedingt vorgeschrieben. Die Schicht ist verantwortlich, dass die Informationen von einem Rechner zur Gegenstelle übertragen werden – was auch die physikalische Übertragung einschließt. Weitere Aufgabe wäre das Aufteilen der Daten in einzelne Frames, und für den Fall, dass ein Fehler bei der Übertragung auftritt, muss diese Schicht für eine Neuübertragung sorgen. Wenn man den Kernel betrachtet, wird diese Schicht durch den Gerätetreiber der Netzwerkkarte realisiert.
11.3.2 Internetschicht
Diese Schicht entspricht derselben Schicht, die beim OSI-Schichtenmodell die Vermittlungsschicht darstellt. Das Protokoll, das in dieser Schicht am häufigsten anzutreffen ist, ist das IP-Protokoll. Der Eckpfeiler des IP-Protokolls ist, dass jedes Endgerät (Netzwerkknoten) direkt angesprochen werden kann – weshalb auch jeder Knoten über eine spezifische IP-Adresse verfügt –, wofür das IP-Protokoll selbst verantwortlich ist. Solch eine Adresse setzt sich aus dem Netzwerk selbst und dem entsprechenden Netzwerkknoten zusammen. So will man sichergehen, dass keine Netzwerkknoten zweimal auf der Welt existieren. Vom IP-Protokoll gibt es im Internet mittlerweile zwei Varianten, IPv4 und IPv6. Wenn hier gewöhnlich von IP-Verbindungen gesprochen wird, ist meistens IPv4 damit gemeint. IPv6 wird wohl in (noch ungewisser) Zukunft IPv4 ablösen. Eine weitere bedeutungsvolle Aufgabe des IP-Protokolls ist die Aufteilung des Netzwerkes in so genannte Subnetzwerke. Dabei werden verschiedene Adressklassen unterstützt (nicht zu vergleichen mit den Netzwerkklassen), die je nach Anforderung mehrere Millionen Rechner enthalten können.
11.3.3 Transportschicht (TCP, UDP)
Auch die Transportschicht ist mit der gleichnamigen Schicht des OSI-Referenzmodells zu vergleichen. Das wichtigste Protokoll dieser Schicht ist das TCP-Protokoll. Dieses Protokoll ist verantwortlich dafür, dass Daten zwischen zwei Rechnern fehlerfrei übertragen werden können – eine Ende-zu-Ende-Verbindung (man verzeihe die Eindeutschung – im Original heißt dies Peer-to-Peer-Verbindung (kurz P2P)). Die Schicht garantiert quasi den höheren Schichten eine fehlerfreie Übertragung der Daten. Dabei packt TCP eine bestimmte Anzahl von zu versendenden Bytes zu einem Datenpaket zusammen und überträgt diese Daten anschließend mithilfe des IP-Protokolls. Solch ein Paket besteht immer u. a. aus einer Sequenznummer, womit gesichert wird, dass die Daten in der richtigen Reihenfolge eingehen und doppelt versendete Datenpakete ignoriert werden. Es existiert aber auch das Protokoll UDP (User Data Protocol), das im Gegensatz zum TCP-Protokoll keine Flusskontrolle verwendet. Es ist daher auch nicht gesichert, dass die Daten fehlerfrei ankommen. Das UDP-Protokoll wird häufig bei Spieleservern verwendet, wo z. B. eine Nichtübertragung einer Spielerbewegung meist nicht weiter schlimm ist, da das nächste UDP-Paket sowieso wieder die korrekte Position enthält – die Abweichung, die andere Spieler wahrnehmen, ist somit relativ niedrig, sofern der Client nicht zu viel laggt. Natürlich nutzen nicht alle Spiele nur UDP. Wichtig bei der Transportschicht ist auch die Portnummer; denn jede Anwendung, die Daten aus einer IP-Schicht haben will, muss eine eindeutige Portnummer verwenden, um auf dem Zielsystem eindeutig identifiziert zu werden (oder kurz gesagt: IP kennt keine Ports). Ports sind Diensten zugeordnet. Die Kommunikation zwischen einem Webbrowser und einem Server verläuft z. B. über Port 80 (auf Serverseite); FTP verwendet den Port 21. Damit ist es möglich, dass mehrere Dienste auf dem gleichen Computer gleichzeitig ausgeführt werden können, obwohl diese dieselbe IP-Adresse besitzen. Die Portnummer wird üblicherweise mit einem Doppelpunkt von der IP-Adresse getrennt (wie 192.168.2.4:80). Um also die verschiedenen Dienste zu verwenden, ist die Angabe der IP-Adresse kombiniert mit der Portnummer nötig – was zusammengefasst als Socket bezeichnet wird.
Wobei generell die niedrigeren Ports (<1025) so genannte Standardports sind, die nur vom root geöffnet werden können (sollten). Gewöhnliche Clientanwendungen mit niedrigeren Privilegien verwenden meistens einen höheren (>1024) freien Port zum Arbeiten. Also gilt Client: (>1024) => Server: (<1025). Und auch dies nur im RFC empfohlenen Fall, weil immer mehr mit Port-Forwarding gearbeitet wird, um einen Serverdienst nicht als root starten zu müssen. Dies musste an dieser Stelle erwähnt werden, weil Ports meistens immer die Stelle sind, worüber Systeme angegriffen werden, und man so mit auf den Weg bekommt, dass niedere Ports als root verheerend sein können (Berechtigungssystem).
11.3.4 Anwendungsschicht
In der Anwendungsschicht läuft (wie der Name schon sagt) die eigentliche Kommunikation zwischen zwei Anwendungen ab. Da sich ein Webclient und ein Webserver anders unterhalten als ein Mailclient und ein Mailserver, wurden einige Standardprotokolle entwickelt – die gewöhnlich in Request for Comments(RFC)-Dokumenten festgelegt wurden.
Hinweis RFCs sind eine Reihe von technischen Dokumentationen zum Internet, die ihren Ursprung zu ARPANET-Zeiten 1969 hatten. Einen gewaltigen Fundus zur RFC-Sammlung finden Sie im Internet unter http://www.ietf.org/ (The Internet Engineering Task Force).
|
Anwendungen, die sich über ein solches Protokoll unterhalten wollen, müssen es logischerweise auch implementieren. Folgende Anwendungsprotokolle gehören zu den empfohlenen des TCP-Transports:
|
Telnet – Damit ist das Einloggen in ein Terminal über das Netzwerk möglich. Telnet stellt dabei eine Verbindung vom Telnet-Server zum Telnet-Client her – wobei beim Client der Terminal des Servers nur emuliert wird (Port 23; RFC 854 und RFC 855). |
|
FTP (File Transfer Protocol) – Dateiübertragung zwischen verschiedenen Rechnersystemen (Port 20 (data) und Port 21 (command); RFC 959), wobei Port 20 nur im aktiven Modus zutrifft. Hinter FWs und Routern wird der passive Modus genutzt, was fast zum Normalfall geworden ist. |
|
SMTP (Simple Mail Transfer Protocol) – Dieses Protokoll wird vorwiegend zur Übertragung von E-Mails verwendet (Port 25; RFC 821, 822 und 1651). |
Weitere empfohlene Protokolle für den UDP-Transport sind:
|
NTP (Network Time Protocol) – Das Protokoll wird vorwiegend zur Zeitsynchronisation zwischen zwei Computern verwendet (Port: 123; RFC 1305). |
|
SNMP (Simple Network Management Protocol) – Das Protokoll wird vorwiegend zur Verwaltung und Überwachung von Netzwerkgeräten verwendet (RFC 1065, 1066 und 1067). |
Von beiden Transportprotokollen UDP und TCP wird folgendes Protokoll zum Transport verwendet:
|
DNS (Domain Name Service) – Dabei handelt es sich um einen der wichtigsten Dienste im Internet. Dank dieses Protokolls können Sie eine URL im Internet beim Namen (www.pronix.de) anstatt mit der IP-Adresse (213.131.254.130) erreichen (Port 53; RFC 1034 und 1035). |
Weitere häufig verwendete Protokolle wären außerdem:
|
HTTP (TCP) (Hypertext Transfer Protocol) – DAS Protokoll des WWW, womit Hypermedia-Informationen übertragen werden (oder einfacher: HTML-Seiten). Das Protokoll wird von Webbrowsern verwendet, um auf Webserver zuzugreifen (Port 80; RFC 2616 und 2617). |
|
POP3 (TCP) (Post Office Protocol Version 3) und IMAP (TCP) – Das Protokoll wird vorwiegend von Mailclients verwendet, um eine E-Mail vom Mailserver abzuholen (Port 110/IMAP: 143; RFC 1081, 1082, 1225, 1460, 1725 und 1939, IMAP: xxxx). |
|
SSH (Secure Shell) – Über das Internet auf einem entfernten Computer einloggen – verschlüsselte und daher sicherere Alternative zu Telnet (Port 22). |
|
HTTPS – HTTPS (Hypertext Transfer Protocol Secure) ist ein Netzwerkprotokoll, das eine gesicherte HTTP-Verbindung zwischen Rechnern ermöglicht. Hierbei werden die Daten über SSL/TLS verschlüsselt, damit sie abhörsicher sind. HTTPS-Verbindungen laufen über TCP. Der Standardport für HTTPS-Verbindungen ist 443. Rein technisch gesehen ist HTTPS über TCP gleich HTTP über SSL über TCP. |
|