3 Architektur von Kommunikationssystemen In diesem Kapitel werden grundlegende Modelle zur Strukturierung von Kommunikationssystemen und -architekturen vorgestellt. Das ISO/OSI-Basisreferenzmodell, das in Abschnitt 3.1.1 vorgestellt wird, konnte sich aufgrund seiner Komplexität, vor allem der anwendungsorientierten Schichten, nicht im praktischen Einsatz durchsetzen. Trotzdem besitzt es heute noch fundamentale Bedeutung zur logischen Einteilung der Funktionalität von Telekommunikationssystemen (TK-Systemen). Obwohl es nicht die angestrebte weit reichende Verbreitung erlangte, findet man die in diesem Modell vorgeschlagene Strukturierung von TK-Systemen in ähnlicher Form im Bereich der Telematik sehr häufig wieder. Heutzutage haben sich weitgehend die Techniken und Protokolle des Internets (TCP/IPReferenzmodell, vgl. Kapitel 13) als De-facto-Standard durchgesetzt. Die Architektur des Internets lässt sich zumindest in die unteren vier Schichten des ISO/OSI-Basisreferenzmodells gut einordnen, die weiteren Schichten sind dann anwendungsspezifisch und nicht mehr mit dem ISO/OSI-Modell vergleichbar. Die Architektur und Protokolle des Internets stellen jedoch ebenfalls eine Plattform für offene Systeme dar, d. h. es werden keine proprietären Lösungen im Netz eingesetzt, die nur von einem bestimmten Hersteller unterstützt werden. Der Entwicklungsprozess für neue Protokolle im Internet durch die Internet Engineering Task Force (IETF) ist außerdem für jeden offen und so gestaltet, dass sich die technisch besten und angemessensten Vorschläge durchsetzen können. 3.1 Schichtenbasierte Kommunikationsmodelle Telekommunikationssysteme überbrücken die räumliche Distanz zwischen verteilten Rechnern. Die Realisierung dieser Aufgabe ist aus den verschiedensten Gründen äußerst komplex, weshalb es nicht ratsam ist, eine monolithische Architektur einzusetzen, die sehr unflexibel und wartungsintensiv werden könnte [KrRe00]. In der Regel werden deshalb Kommunikationssysteme als geschichtete Architekturen entwickelt, in denen jede Schicht eine bestimmte Aufgabe besitzt und diese in Form von Diensten bereitstellt. Das ISO/OSI-Basisreferenzmodell ist das bekannteste Beispiel einer solchen Schichtenarchitektur. Zur Lösung ihrer Aufgabe kann eine Schicht N ausschließlich die Dienste der darunterliegenden Schicht (N − 1) benutzen. Sie erweitert dabei deren Eigenschaften und abstrahiert von deren Schwächen. Zu diesem Zweck kommuniziert die Instanz der Schicht N mit den Instanzen derselben Schicht auf anderen Rechnern. Somit steht in der obersten Schicht die gesamte Funktionalität des Kommunikationssystems zur Verfügung. Die Schichtung des Kommunikationssystems besitzt gegenüber einem monolithischen Aufbau zwar den Aufwand einer etwas umfangreicheren Implementierung, weist aber unschätzbare Vorteile auf, wie etwa das unabhängige Entwickeln der einzelnen Teilkomponenten, den einfachen Austausch einzelner Instanzen, die bessere Wartbarkeit sowie eine höhere Flexibilität [KrRe00]. 62 3 Endsystem Architektur von Kommunikationssystemen Vermittlungssystem Anwendung Anwendung Anwendung Anwendung Anwendung Anwendung Anwendung Anwendung Instanz Instanz (N+1) (N+1) Instanz Instanz (N+1) (N+1) Endsystem (N+1)-Protokolle Instanz Instanz (N+1) (N+1) (N)-Protokoll Instanz Instanz (N) (N) Instanz Instanz (N) (N) (N-1)-Protokoll Instanz Instanz (N-1) (N-1) Übertragungsmedium Instanz Instanz (N+1) (N+1) Instanz Instanz (N-1) (N-1) Schicht (N+1) Schicht (N) Schicht (N-1) Übertragungsmedium Abbildung 3.1: Kommunikation in geschichteten Systemen Es ergeben sich somit zwei zentrale Begriffe in schichtenorientierten Kommunikationsmodellen, die auch in Abschnitt 3.2 vertiefend behandelt werden: Die Kommunikation zwischen zwei Instanzen der gleichen Schicht unterschiedlicher Rechner wird durch vordefinierte Regeln festgelegt. Diese Regeln werden als Protokolle bezeichnet. Das Funktionsangebot einer Schicht N an ihre übergeordnete Schicht (N + 1) wird als Dienst bezeichnet. Die Schnittstelle, an der dieser Dienst angeboten wird, heißt Dienstschnittstelle. Eine Instanz ist somit die Implementierung eines Kommunikationsprotokolls und des zur Verfügung gestellten Dienstes innerhalb einer Schicht auf einem Rechner. Die theoretischen Grundlagen von Diensten und Protokollen werden in Abschnitt 3.2 sowie in [LoKK93] vertiefend behandelt. 3.1.1 Das ISO/OSI-Basisreferenzmodell Ende der siebziger Jahre zeichnete sich ab, dass das Zusammenschalten mehrerer Rechnernetze aufgrund herstellerspezifischer Eigenschaften solcher Netzwerke schwierig, wenn nicht sogar unmöglich war und somit die Interoperabilität zwischen den verschiedenen Netzen nicht gewährleistet werden konnte. Es bestand deshalb die Absicht, eine einheitliche und standardisierte Plattform für rechnerbasierte Kommunikationsnetzwerke zu schaffen. Die offene, herstellerunabhängige Kommunikation erfordert die Festlegung und Einhaltung von allgemeinen Standards. Das ISO/OSI-Basisreferenzmodell (kurz: ISO/OSI- 3.1 Schichtenbasierte Kommunikationsmodelle 63 Modell) der International Organization for Standardization (ISO) für die Kommunikation Offener Systeme (ISO-Standard 7498 [ITU-94]) beschreibt ein allgemeines abstraktes Modell für die Kommunikation zwischen rechnergestützten Systemen auf der Basis digitaler Daten. Es dient als Rahmen für die Entwicklung von Kommunikationsstandards, um offene Kommunikationssysteme zu erreichen. Das Referenzmodell hat den Charakter einer funktionalen Vorgabe für andere Normen und stellt damit keine Spezifikation für eine Implementierung dar, sondern bezieht sich nur auf die gegenseitige Anwendung genormter Verfahren für den Datenaustausch. Das ISO/OSI-Modell besteht aus sieben Schichten (siehe Abbildug 3.2), wobei eine Schicht der jeweils über ihr angeordneten Schicht bestimmte Dienstleistungen anbietet. Das ISO/OSI-Modell beschreibt keine reale Implementierung eines bestimmten Systems, sondern definiert lediglich die Aufgaben der einzelnen Schichten. Aus diesem Grund hat es sich in den letzten Jahrzehnten zum grundlegenden Modell von TKSystemen entwickelt, daher auch der Name Basisreferenzmodell. Die Kenntnis des ISO/OSI-Modells ist eigentlich immer die Grundlage für den Entwurf und die Strukturierung heutiger Rechnernetze, wobei es kein perfektes Modell ist. Es besitzt auch seine Stärken und Schwächen, wie sich im Vergleich zum schlankeren TCP/IP-Modell zeigen wird. ISO/OSI-Referenzmodell 7 Anwendung Anwendung 6 Darstellung Darstellung 5 Kommunikationssteuerung Kommunikationssteuerung 4 Transport Transport 3 Vermittlung Vermittlung 2 Sicherung Sicherung 1 Bitübertragung Bitübertragung Abbildung 3.2: Das ISO/OSI-Basisreferenzmodell Die sieben Schichten des ISO/OSI-Basisreferenzmodells besitzen die folgenden Aufgaben: Bitübertragungsschicht (physical layer): Die Bitübertragungsschicht regelt die Übertragung von einzelnen Bits über ein physisches Medium. Dabei werden vor allem Bitfolgen (ohne Strukturierung) in physische Signale umgewandelt und über ein physisches Medium (Kupferkabel, Glasfaser, Funk etc.) übertragen. Die Bitübertragungsschicht definiert spezielle Codierverfahren, Steckverbindungen und Medientypen. Sicherungsschicht (data link layer): Die Aufgabe der Sicherungsschicht ist die gesicherte Übertragung von Daten zwischen zwei direkt über ein Medium verbundenen Stationen. Vom sendenden System werden hierfür die Daten in Rahmen (frames) 64 3 Architektur von Kommunikationssystemen aufgeteilt und nacheinander gesendet. Falls dabei Fehler auftreten, ist es die Aufgabe der Sicherungsschicht, den Fehler zu erkennen und die Datenrahmen erneut zu übertragen. Des Weiteren sollte der Datenfluss zwischen den beiden Systemen geregelt werden, sodass der Empfänger nicht überlastet wird (Flusssteuerung). Protokollbeispiele für die Sicherungsschicht sind HDLC (High-level Data Link Control), SLIP (Serial Line IP) und PPP (Point to Point Protocol), wobei die letzten beiden nur eingeschränkt den eben beschriebenen Funktionsumfang bieten. In lokalen Netzwerken besitzt die Sicherungsschicht oft auch noch die Aufgabe, den Zugriff auf ein gemeinsam benutztes Medium (shared medium) zu regeln. In solchen Fällen wird die Sicherungsschicht in den Medium Access Control-(MAC-) und den Logical Link Control-(LLC-)Layer unterteilt. Netzwerkschicht (network layer): Die Netzwerkschicht (oft auch als Vermittlungsschicht bezeichnet) besitzt die Aufgabe, die Konnektivität zwischen allen Systemen eines Telekommunikationsnetzes herzustellen. Deshalb beschäftigt sich die Netzwerkschicht hauptsächlich mit der Vermittlung und Weiterleitung der Daten, z. B. mit der Wegewahl, der Anpassung der Dateneinheiten an die zulässige Größe der jeweiligen Sicherungsschicht (Fragmentieren) oder mit der Gewährleistung von verschiedenen Dienstgüten. Im Rahmen dieses Buches werden vor allem die InternetProtokolle der Version 4 und 6 als Vermittlungsschichtprotokolle betrachtet. Transportschicht (transport layer): Die Transportschicht regelt den Transport von Daten zwischen den Anwendungen, d. h. zwischen Sender- und Empfängeranwendung. Sie hat unter anderem die grundlegenden Aufgaben, Anwendungen zu adressieren und den Datenfluss zwischen den Endsystemen zu steuern und die Korrektheit und Reihenfolge der Daten sicherzustellen. Kommunikationssteuerungsschicht (session layer): Von der Kommunikationssteuerungsschicht wird der strukturierte Austausch von Nachrichten über Transportverbindungen geregelt. Beispielsweise kann in einer Sitzung gesteuert werden, ob der Transfer der Daten gleichzeitig in beide Richtungen erfolgen kann oder ob nur jeweils einer der Partner das Senderecht hat. Im letzteren Fall verwaltet die Kommunikationssteuerungsschicht das Senderecht. Darstellungsschicht (presentation layer): Die Darstellungsschicht regelt die Darstellung der zu übertragenden Daten in einer von Rechnersystemen unabhängigen Form. Viele Betriebssysteme verwenden unterschiedliche Darstellungsformen für Zeichenketten (z. B. ASCII, Unicode), Zahlen (Big-Endian, Little-Endian) usw. Damit diese Daten zwischen den Systemen ausgetauscht werden können, werden sie von der Darstellungsschicht auf eine standardisierte Weise übertragen (z. B. durch Abstract Syntax Notation (ASN.1) und Basic Encoding Rules (BER)). Anwendungsschicht (application layer): In dieser Schicht befinden sich die spezifischen Protokolle für verschiedenste Anwendungen, wobei diese die darunter liegenden Schichten für die Erfüllung ihrer Aufgaben benutzen. In der Anwendungsschicht befinden sich unter anderem Protokolle für die Dienste elektronische Post, Dateitransfer, entfernter Prozeduraufruf etc. 3.1 Schichtenbasierte Kommunikationsmodelle 65 3.1.2 Das TCP/IP-Referenzmodell Die Namensgebung des Internet-Referenzmodells richtet sich nach den beiden wichtigsten Internet-Protokollen – dem Transmission Control Protocol (TCP) und dem Internet Protocol (IP). Da das ISO/OSI-Modell später als das TCP/IP-Modell entwickelt wurde, entstehen Probleme bei der Einordnung der Protokolle. Im Gegensatz zum ISO/OSIModell besteht das TCP/IP-Modell lediglich aus vier Schichten (vgl. Abbildung 3.3): ISO/OSI-Referenzmodell 6 Anwendung Anwendung Darstellung Darstellung 5 Kommunikationssteuerung Kommunikationssteuerung 4 Transport Transport 3 Vermittlung Vermittlung 2 Sicherung Sicherung 1 Bitübertragung Bitübertragung 7 Internet-Referenzmodell Anwendung Anwendung (HTTP, (HTTP, SMTP, SMTP, SSH) SSH) Transport Transport (TCP/UDP) (TCP/UDP) Internet Internet (IPv4/v6) (IPv4/v6) Datenübertragung Datenübertragung (802.x, (802.x, PPP, PPP, SLIP) SLIP) Abbildung 3.3: Das ISO/OSI-Basisreferenzmodell im Vergleich mit dem TCP/IP-Referenzmodell Anwendungsschicht (application layer): Die Anwendungsschicht vereinigt alle anwendungsbezogenen Aufgaben, d. h. die Eigenschaften der Schichten fünf bis sieben des ISO/OSI-Modells. Zu den Protokollen der Anwendungsschicht zählen Telnet (für virtuelle Terminals), FTP (Dateitransfer) und SMTP (zur Übertragung von E-Mail). Im Laufe der Zeit kamen zu den etablierten Protokollen weitere Protokolle wie etwa DNS (Domain Name System) und HTTP (Hypertext Transfer Protocol) hinzu. Transportschicht (transport layer): Wie im ISO/OSI-Modell ermöglicht die Transportschicht die Kommunikation zwischen den Endsystem-Anwendungen. Im TCP/IP-Modell wurden hierfür zwei grundlegende Protokolle definiert: das Transmission Control Protocol (TCP) und das User Datagram Protocol (UDP). TCP ist zuverlässig, verbindungsorientiert und kann einen Bytestrom fehlerfrei über das Internet zu einem anderen Rechner übertragen. UDP arbeitet unzuverlässig und verbindungslos, wird aber in bestimmten Fällen dem komplizierteren TCP vorgezogen – beispielsweise bei der Übertragung von multimedialen Daten. Internet-Schicht (internet layer): Die Internet-Schicht im TCP/IP-Modell definiert das Internet Protocol (IP) inklusive der Hilfsprotokolle Internet Control Message Protocol (ICMP) und Internet Group Management Protocol (IGMP). Die InternetSchicht hat die grundlegende Aufgabe, IP-Pakete vom Sender zum Empfänger durch das Netz zu leiten. Dabei spielt die Wegewahl der Pakete eine wichtige Rolle. Das Internet Control Message Protocol (ICMP) ist fester Bestandteil jeder IP-Implementierung und dient zur Übertragung von Diagnose- und Fehlerinformationen für das Internet Protocol. Das Internet Group Management Protocol (IGMP) wird für die Verwaltung von Kommunikationsgruppen eingesetzt. 66 3 Architektur von Kommunikationssystemen Datenübertragungsschicht (interface layer): Diese Schicht fasst die beiden unteren Schichten des ISO/OSI-Modells zusammen. Auf ihr befinden sich im InternetModell die Netzwerkadapter und deren Treiber. Diese ermöglichen den Austausch von Datenpaketen einer bestimmten maximalen Länge im angeschlossenen lokalen Netzwerk (Ethernet, Token Ring etc.) oder über ein Weitverkehrsnetz (ISDN, ATM). 3.2 Dienste und Protokolle Dienste und Protokolle wurden bereits in Abschnitt 3.1 angesprochen. Sie sind grundlegende Elemente von geschichteten Kommunikationssystemen. Im Laufe dieses Abschnitts wird die Bedeutung dieser beiden Begriffe und ihrer Arbeitsweise intensiver behandelt. Sie dienen als theoretische Grundlage für die weiteren Ausführungen in diesem Buch, in dem es hauptsächlich um die Umsetzung von Diensten und Protokollen in einem realen System geht. Wie an den beiden vorangegangenen Modellen erläutert wurde, bestehen moderne Telekommunikationssysteme aus mehreren Schichten. Jede Schicht besitzt – je nach Referenzmodell – verschiedene Aufgaben, die sie in Form von Diensten der darüber liegenden Schicht bereitstellt. Beispielsweise bietet die IP-Schicht im TCP/IP-Modell den folgenden Dienst an: Weiterleitung einer Dateneinheit (ohne Garantie) vom lokalen Rechner zu einem anderen Rechner, der durch eine IP-Adresse spezifiziert wird. Dieser Dienst wird von der Transportschicht, beispielsweise von TCP, genutzt und so erweitert, dass ein Bytestrom fehlerfrei und reihenfolgetreu zwischen zwei Anwendungen übertragen werden kann. Ein Dienst beschreibt somit den Funktionsumfang, welcher der darüber liegenden Schicht angeboten wird. Des Weiteren definiert ein Dienst einzelne Dienstelemente, mit deren Hilfe auf die gesamte Dienstleistung zugegriffen werden kann. Vereinfacht gesagt werden in der Dienstdefinition der Umfang und die Art der Dienstleistung sowie die Schnittstelle zum Aufruf des Dienstes festgelegt. Die Definition eines Dienstes bezieht sich somit nur auf die Interaktion zwischen zwei direkt angrenzenden Schichten und den betroffenen Schnittstellen. In der Literatur wird dies oft als vertikale Kommunikation bezeichnet [LoKK93]. Wie ein Dienst tatsächlich von einer Schicht erbracht wird, ist dagegen nicht Bestandteil einer Dienstdefinition; es geht nur darum, was eine mögliche Implementierung an der Schnittstelle zum Dienstnutzer anbieten muss. Um die Dienste einer Schicht zu nutzen müssen die beteiligten Systeme die räumliche Trennung überwinden und sich untereinander koordinieren. Dies geschieht über Kommunikationsprotokolle, die in den einzelnen Systemen von Instanzen einer Schicht ausgeführt werden. Ein Protokoll regelt hierbei das Verhalten der verteilten Instanzen und definiert Regeln für deren Koordination. So werden unter anderem Nachrichten definiert, die zwischen den Instanzen ausgetauscht werden, um das verteilte Handeln zwischen den Instanzen zu regeln. Somit erfolgt die Erbringung des Dienstes einer Schicht N durch verteilte Algorithmen in den jeweiligen Instanzen der Schicht N und durch den Austausch von Protokollnachrichten zu deren Koordination (vgl. Abbildung 3.1). Die Koordination zwischen den Instanzen durch Protokollnachrichten wird auch 3.2 Dienste und Protokolle 67 als horizontale Kommunikation bezeichnet. Für den Austausch der Protokollnachrichten wird der Dienst der darunter liegenden Schicht (N − 1) in Anspruch genommen. Die Spezifikation eines Dienstes beschreibt somit das Verhalten einer Schicht gegenüber ihrer darüber liegenden Schicht (vertikale Kommunikation) und sagt nichts über die Implementierung eines Dienstes aus. Es werden lediglich das Format und die Dynamik an den Schnittstellen zu der Schicht definiert, die den Dienst nutzt. Ein Dienst wird durch Instanzen einer Schicht erbracht, die sich untereinander über Protokolle koordinieren (horizontale Kommunikation). Die Protokollspezifikation beschreibt die syntaktischen und dynamischen Aspekte eines Protokolls. Die Protokoll-Syntax beschreibt das Format der auszutauschenden Protokolldateneinheiten (Protocol Data Units – PDUs) und die Protokoll-Dynamik beschreibt das Verhalten des Protokolls. Das Ziel dieses Buches ist es zu veranschaulichen, wie die eben genannten Elemente in einem Kommunikationssytem entworfen und implementiert werden können. Am Beispiel des Betriebssystems Linux wird gezeigt, wie die Schnittstellen zwischen verschiedenen Schichten aussehen können und welche Entwurfsentscheidungen dabei eine Rolle spielen – vor allem unter den Gesichtspunkten Effizienz und Korrektheit der Protokolle. Des Weiteren wird anhand verschiedenster Protokolle, d. h. an deren Instanzen gezeigt, welche Techniken bei der Realisierung und Implementierung von Netzwerkprotokollen eingesetzt werden können. 3.2.1 Zusammenspiel der Schichten, Instanzen und Protokolle Nach der Einführung in Dienste und Protokolle wird in diesem Abschnitt aufgezeigt, welche Abläufe horizontal und vertikal bei der Erbringung eines Dienstes durch Protokollinstanzen auftreten. Die Beschreibung dieser Vorgänge bildet die Grundlage für das Verständnis der Arbeitsweise von Netzwerkprotokollen, vor allem der Prinzipien der horizontalen und vertikalen Kommunikation. Durch die eingeführten Begriffe können im Folgenden auch Strukturen und Parameter bei der Interaktion an den Schnittstellen verschiedener Schichten besser eingeordnet und unterschieden werden. Innerhalb einer Schicht sind Instanzen die diensterbringenden Komponenten. Zur Erbringung eines Dienstes kommunizieren die Instanzen einer Schicht untereinander (horizontal). Die Kommunikation erfolgt durch den Austausch von Protokolldateneinheiten (Protocol Data Units – PDU) der Schicht N. Der Datenaustausch erfolgt allerdings nicht direkt zwischen den beiden Instanzen, sondern indirekt, über die darunter liegende Schicht. D. h. die Instanz der Schicht N benutzt für den Austausch der PDU mit ihrer Partnerinstanz den Dienst der Schicht (N − 1). Abbildung 3.4 zeigt das Zusammenspiel der Schichten und der dabei auftretenden Elemente. Protokolldateneinheit (protocol data unit – PDU): Dies ist eine Nachricht, die zwischen zwei Instanzen einer Schicht ausgetauscht wird, um deren Verhalten zu koordinieren. Sie ist das Basiselement der horizontalen Kommunikation. Eine PDU besteht aus den beiden folgenden Elementen: Die Protokollkontrollinformation (protocol control information – PCI) enthält die Steuerinformation zur Koordination der beiden Protokollinstanzen und wird auch als Paketkopf bezeichnet. Die PCI enthält protokollspezifische Daten und 68 3 Architektur von Kommunikationssystemen wird von der sendenden Instanz, abhängig von deren Zustand, erzeugt. In der Empfängerinstanz werden die Informationen ausgewertet und von der PDU entfernt. (N+1)-Schicht (N)-IDU (N)-IDU (N)-Schicht (N)-PCI (N)-PCI (N)-SDU (N)-SDU (N)-PDU (N)-PCI (N)-SDU (N)-PCI (N)-SDU (N–1)-Schicht (N)-ICI (N)-ICI (N–1)-ICI (N–1)-ICI (N–1)-IDU (N–1)-IDU (N–1)-SDU (N–1)-SDU (N–1)-ICI (N–1)-ICI Abbildung 3.4: Dateneinheiten für die vertikale und horizontale Kommunikation Die Dienstdateneinheit (service data unit – SDU) enthält die Nutzdaten, die im Auftrag der übergeordneten Schicht übertragen werden sollen. Meist besteht die SDU der Schicht N aus der Protokollkontrollinformation der Schicht (N + 1) und einer Dienstdateneinheit der Schicht-(N + 1), d. h. aus der (N + 1)-PDU. In bestimmten Zuständen eines Protokolls kann es auch vorkommen, dass keine Dienstdateneinheit in der PDU enthalten ist, z. B. bei Verbindungsaufbau- oder reinen Bestätigungspaketen. In solchen Fällen werden lediglich Informationen zur Koordination der Protokolle ausgetauscht und keine Nutzdaten. Schnittstellenkontrollinformationen (interface control information – ICI) werden von einer Instanz erzeugt und zusammen mit einer Protokolldateneinheit an die darunter liegende Schicht übergeben (vertikale Kommunikation). Sie enthalten Informationen, die für den Diensterbringer (Schicht (N − 1)) nötig sind, um den Dienst zu erbringen. Eine ICI enthält beispielsweise die Adresse der Partnerinstanz, an welche die (N)-PDU ausgeliefert werden soll. Da für die Schicht (N − 1) die (N)-PDU reine Nutzdaten sind, kann sie die Elemente der (N)-PCI innerhalb der (N)-PDU nicht auswerten und ist somit auf den Inhalt der ICI angewiesen. Die Schnittstellendateneinheit (interface data unit – IDU) der Schicht (N − 1) setzt sich aus der PDU und der ICI der Schicht N zusammen. Die IDU wird am Dienstzugangspunkt der Schicht (N − 1) übergeben und bildet die Grundlage der horizontalen Kommunikation. Im Falle einer vertikalen Kommunikation zwischen zwei Schichten ist zu beachten, dass diese nur an festgelegten Dienstzugangspunkten (service access points – SAP) erfolgt, die der Unterscheidung verschiedener Dienstnutzer dienen. SAPs werden durch Dienstzugangspunktadressen identifiziert. Dabei gilt die Regel, dass ein Dienstzugangspunkt 3.2 Dienste und Protokolle 69 jeweils genau einen Dienstnutzer adressiert. Das Prinzip des Dienstzugangspunktes wird in den folgenden Kapiteln noch öfter auftreten, und zwar in verschiedenen Ausprägungen (bspw. IP-Adresse bei IP, Ports bei TCP etc.). Im weiteren Verlauf des Buches wird gezeigt, wie die dynamischen Aspekte eines Netzwerkprotokolls umgesetzt werden können, d. h. welche Programmierelemente existieren und bei Linux eingesetzt werden. Ebenso werden Schnittstellen und Datenstrukturen verschiedener Instanzen vorgestellt und es wird gezeigt, welche Parameter bei den jeweiligen Protokollen als Schnittstellenkontrollinformation eine Rolle spielen. Dabei wird an einer Reihe von Stellen ersichtlich, dass das zuvor beschriebene theoretische Modell einer Kommunikationsinstanz und die strikte Trennung einzelner Schichten aufgegeben werden müssen, um eine höhere Leistungsfähigkeit des gesamten Protokollstacks zu erzielen. Im Vergleich zu Standardwerken der Telekommunikation, wie z. B. [Tane97] befasst sich dieses Buch also nicht nur mit der Spezifikation von Protokollen und deren horizontaler Kommunikation, sondern zusätzlich mit der vertikalen Kommunikation sowie mit den Implementierungsaspekten der jeweiligen Netzwerkprotokolle.