11.2 Aufbau von Netzwerken
Um es Ihnen gleich deutlich zu machen, Sie erfahren in diesem Kapitel einiges zur Netzwerkprogrammierung. Grundkenntnisse zum Thema Netzwerke allgemein wären hier auf jeden Fall von Vorteil (aber nicht unbedingt vonnöten). Ich werde zwar versuchen, die Themen so umfangreich und detailliert wie möglich aufzurollen, dennoch kann nicht auf jedes einzelne Thema – speziell die Grundlagen – bis ins Detail eingegangen werden.
11.2.1 ISO/OSI und TCP/IP – Referenzmodell
Dass die Kommunikation zwischen verschiedenen Rechnern (mit unterschiedlicher Hardware) auf den verschiedenen Betriebssystemen nicht mit einem Rutsch zu realisieren ist, dürfte wohl selbst dem Laien klar sein. Für diese Zwecke wurde daher das Problem in mehrere kleine Schichten aufgeteilt. Dabei baut jede Schicht auf die Fähigkeiten der darunter liegenden Schicht auf. Dazu wurde das ISO/OSI-Schichtenmodell entworfen. Es muss natürlich erwähnt werden, dass dieses Schichtenmodell keine Norm ist, das heißt, die Entwickler von Hard- und Software müssen sich nicht unbedingt daran halten. Aber gewöhnlich unterstützen alle Hersteller mittlerweile u. a. das OSI-Schichtenmodell. Denn was nützt dem Anwender eine Netzwerkkarte, die sich nicht mit anderen Netzwerkkarten in einem Netzwerk verständigen kann. Irgendwie muss man ja einiges auf den gleichen Nenner bringen. Des Weiteren ist das OSI-Schichtenmodell auch nur ein Modell, das die Rechnerkommunikation veranschaulichen soll.
Hierzu sollen die in Abbildung 11.1 dargestellten Schichten ein wenig genauer erläutert werden:
|
Schicht 1: Physical Layer (Bitübertragungsschicht) – Die Aufgabe dieser Schicht besteht aus der Übertragung der Daten in Form von einzelnen Bits, die gewöhnlich über ein Kabel (oder auch über Funk) erfolgt. Beim Sender erhält diese Schicht die Daten von der darüber liegenden Schicht und beim Empfänger werden die Daten eben an die darüber liegende Schicht weitergegeben. |
|
Schicht 2: Data Link Layer (Sicherungsschicht) – Bei dieser Schicht wird sichergestellt, dass die Übertragung von Daten korrekt ist. Entdeckt diese Schicht einen Bitübertragungsfehler zwischen zwei Rechnern, so muss dieser Fehler von der Sicherungsschicht behoben werden. |
|
Schicht 3: Network Layer (Vermittlungsschicht) – Die Vermittlungsschicht ist dafür verantwortlich, dass alle Rechner, die verbunden sind, miteinander kommunizieren können. Die Hauptaufgabe besteht darin, die direkte Verbindung auszuwählen und sie zu einer festen Verbindung zusammenzusetzen, um den eigentlichen Zielrechner zu erreichen. |
|
Schicht 4: Transport Layer (Transsportschicht) – Wurde mit der Schicht 3 eine feste Verbindung zwischen zwei vernetzten Rechnern hergestellt, ist die Transportschicht für die Kommunikation zweier Anwendungsprozesse verantwortlich – wobei jeweils ein Prozess auf einem der verbundenen Rechner läuft. |
Die nun noch folgenden drei Schichten können Sie auch gerne in einer Schicht zusammenfassen (was andere Schichtenmodelle auch tun). Alle oben genannten Schichten zählen zum Anwendungsprozess.
|
Schicht 5: Session Layer (Kommunikationsschicht) – Durch diese Schicht werden zwei Prozesse, die miteinander kommunizieren, erst einmal strukturiert. Hierbei können so genannte Synchronisationspunkte gesetzt werden, wodurch bei einem auftretenden Fehler beide Prozesse wieder auf einen von ihnen bekannten Zustand wiederhergestellt werden können. |
|
Schicht 6: Presentation Layer (Präsentationsschicht) – In der Darstellungsschicht werden die Anwendungsdaten in ein lesbares Format gebracht (kodiert). Dabei werden die unterschiedlichen Größenangaben verschiedener Bytelängen wie z. B. eine Integer-Variable berücksichtigt – die ja auf den verschiedenen Systemen unterschiedlich »groß« sein kann. Sie werden es sicherlich erahnen, diese Schicht spielt in den noch folgenden Abschnitten eine wichtige Rolle. |
|
Schicht 7: Application Layer (Anwendungsschicht) – In der Anwendungsschicht werden Ihnen häufig verwendete Dienste wie die Datenübertragung oder Funktionsaufrufe zur Verfügung gestellt. |
Aufgliedern lassen sich die einzelnen Schichten recht einfach. Schicht 1 und 2 dienen vorwiegend der Hardware wie den Netzwerkkarten oder dem Netzwerkadapter und dem Kabel. Ab der Schicht 3 dreht sich alles rund um die Software. Die Datenübertragung zwischen Soft- und Hardware wird mit so genannten Device Drivers erledigt. Ein Device Driver ist eine Software, die als Schnittstelle zwischen der eigentlichen Software und der Hardware fungiert. Die eigentliche Netzwerkprogrammierung, die Sie in der Praxis verwenden, finden Sie in den Schichten 4 bis 7. Sie geschieht mit den Funktionsbibliotheken, die Ihnen zur Verfügung stehen.
Es ist nicht immer notwendig, dass auf einem Rechner alle sieben Schichten benötigt werden. Bei einem Rechner, der nur die Aufgabe hat, Datenpakete an einen anderen Rechner zu verschicken, sind die ersten drei Schichten völlig ausreichend. Solche Vermittlungsrechner sind sehr häufig in Intranets anzutreffen.
Da die Aufteilung des ISO/OSI-Schichtenmodells für viele Dinge zu detailliert ist, wird in der Praxis ein etwas einfacher strukturiertes Referenzmodell verwendet – das TCP/IP-Schichtenmodell. Im Gegensatz zum OSI-Schichtenmodell ist dies in nur vier Schichten aufgeteilt.
Dieses Referenzmodell deckt den Großteil der Kommunikation ab, die über das Internet abläuft.
11.2.2 Das World Wide Web (Internet)
Das Internet ist nicht wie häufig angenommen ein Netzwerk, sondern eine Ansammlung von mehreren Computer-Netzwerken weltweit. Dass diese Netzwerke so gut miteinander harmonieren, verdanken sie dem TCP/IP-Protokoll. Das TCP/IP-Protokoll bietet Dienste wie das WWW (http), FTP, SMTP usw. an. Aufteilen lässt sich das TCP/IP-Protokoll in zwei Teile, in das Internet Protocol (IP) und in die darüber liegenden Transportprotokolle. Die bekanntesten Transportprotokolle sind erstens das TCP, das eine zuverlässige Übertragung des IP-Bytestroms garantiert, und zweitens das UDP, das zwar keine zuverlässige Übertragung garantiert, aber dafür um einiges schneller als TCP ist. Beide Transportprotokolle werden Sie in diesem Buch noch häufiger einsetzen.
Das IP-Protokoll siedelt im OSI-Modell an Schicht 3 der Vermittlungsschicht an, und TCP und UDP arbeiten auf der Transportschicht – wobei es beim TCP eigentlich keine Kommunikations- und Darstellungsschicht mehr gibt. Es wird bei TCP alles in einer Anwendungsschicht zusammengefasst (wie beim TCP/IP-Schichtenmodell (Abb. 11.3) dargestellt).
Im Internet wird jede Netzwerkkarte im Rechner mit einer eigenen IP-Adresse versehen. Dabei kann ein Rechner durchaus mehrere IP-Adressen besitzen, sofern auch mehrere Netzwerkkarten eingebaut sind (man kann auch mehrere IPs für eine Karte haben). Die IP-Adresse hat eine Speichergröße von vier Bytes (bei IPv4). Jedes dieser Bytes kann dabei eine dezimale Zahl von 0 bis 255 darstellen (da ja ein Byte eine dezimale Zahl von 0 bis 255 fassen kann). Getrennt werden diese Dezimalzahlen von einem Punkt. Eine IP-Adresse könnte daher wie folgt aussehen: 129.154.53.98
Einige dieser Adressen sind allerdings für bestimmte Zwecke reserviert. Aufgeteilt wird diese IP-Adresse in einen Netzwerk- und in einen Hostteil. Je nachdem, ob es sich um ein A-, B- oder C-Klassennetz handelt, wird der Netzwerkteil von dem ersten Byte, den ersten zwei oder ersten drei Bytes gekennzeichnet. Die restlichen Bytes stehen immer dem Rechner (Host) selbst zur Verfügung. Somit muss in einem physikalischen Netz die Bytefolge des Netzteils immer gleich sein – der Hostanteil hingegen muss zur eindeutigen Identifikation unterschiedlich sein. So sind z. B. 192.11.55.1 und 192.11.55.2 beides IP-Adressen im gleichen physikalischen Netzwerk, aber mit unterschiedlichem Hostteil, was bedeuten kann, dass es sich hierbei um zwei verschiedene Rechner oder in einem Rechner um zwei verschiedene Netzwerkkarten (oder gar um eine Netzwerkkarte mit zwei IPs) handelt.
Wenn Sie also eine Nachricht oder Daten an einen Rechner verschicken oder von diesem Daten empfangen wollen, benötigen Sie lediglich die IP-Adresse dieses Rechners. Dass Computer gut mit Zahlen umgehen können, ist bekannt, aber wenn Sie statt der Adresse www.pronix.de die Adresse 213.131.254.130 eingeben müssten, wäre das Internet wohl nicht mehr so erfolgreich. Wie es nun auch für die IP-Notation Regeln gibt, gibt es auch für die Namensnotation gewisse Regeln. Nur stehen dann zwischen den Punkten keine Dezimalzahlen, sondern Namen.
Damit aus dem Namen auch wieder eine echte IP-Adresse wird, werden die lokale Netzdatenbank und übergeordnete Domain Name Services (DNS) verwendet. Dabei fragen DNS-Clients beim DNS-Server nach den Adressauflösungen (Name – zu IP) oder, falls benötigt, auch nach den Reverse Mappings (IP – zu Name).
Viele dieser Punkte werden zwangsläufig im passenden Moment und zum passenden Thema genauer erläutert.
|