Protokollstapel
# Protokollstapel

Ein Protokollstapel oder Protokollturm (vom englischen protocol stack, auch Protokollstack, Netzwerkstack oder Netzwerkstapel genannt) ist in der Datenübertragung eine konzeptuelle Architektur von Kommunikationsprotokollen. Anschaulich sind die einzelnen Protokolle dabei als fortlaufend nummerierte Schichten (layers) eines Stapels (stacks) übereinander angeordnet. Jede Schicht benutzt dabei zur Erfüllung ihrer speziellen Aufgabe die jeweils tiefere Schicht im Protokollstapel, indem sie diese über deren Service Access Point anspricht.

Daten, die über ein Netz übertragen werden, werden von einem Netzwerkprotokoll des Stapels nach dem anderen verarbeitet. Beim Senden fügt jedes Protokoll den Daten bestimmte Steuerinformationen hinzu, bevor sie dem nächsttieferen Netzwerkprotokoll übergeben werden – eine Nachricht trägt also auf der Leitung sämtliche Header der darüberliegenden Schichten. Eine HTTP-Nachricht, die via Ethernet versandt wird, lässt sich wie folgt veranschaulichen (detailliertere Darstellung unter Datenframe #Der Datenframe bei Ethernet (IEEE 802.3)):

Beim Empfang entfernt jedes Netzwerkprotokoll aus den Daten wieder diejenigen Steuerinformationen, die nur für dieses Protokoll selbst bestimmt sind, und übergibt die verbliebenen Daten dem nächsthöheren Netzwerkprotokoll.

## Beispiel Ethernet

Untergliedert man die Funktionen einer Protokollschicht in einzelne Abläufe, die unabhängig voneinander und nacheinander ablaufen, so kann man sie in Teilschichten aufteilen.

Die Abbildung zeigt als Beispiel für einen Protokollstapel auf der rechten Seite die Teilschichten von Ethernet. Als Referenz dazu ist links das OSI-Modell abgebildet. Während Ethernet nur Funktionen besitzt, die im OSI-Modell der Schicht 1 (Physical Layer) und der Schicht 2 (Data Link Layer) zugeordnet sind, werden diese beiden Schichten bei genauer Betrachtung beim Ethernet-Protokollstapel in 7 Teilschichten aufgelöst.

Dieses Beispiel zeigt einen Protokollstapel, der beim gegenwärtigen Stand der Technik, der Übertragungsgeschwindigkeiten von 100 Mbit/s und mehr erlaubt, vollständig in einem Integrierten Schaltkreis (IC), also in Hardware, realisiert wird. Verfahren wie ATM sind für noch wesentlich höhere Übertragungsgeschwindigkeiten entworfen: Bei ihnen wird auch die Vermittlungsschicht (Schicht 3) in Hardware realisiert.

Das Beispiel zeigt außerdem zwei Schnittstellen zwischen den Protokollschichten:

* das Media Independent Interface MII
* das Media Dependent Interface MDI.

Die Aufteilung der Teilschichten von Ethernet wurde so gewählt, dass die Schichten oberhalb des MII unabhängig vom Übertragungsmedium sind, also unabhängig davon, ob Ethernet z. B. über ein Koaxialkabel oder einen Lichtwellenleiter übertragen wird. Damit wurde es möglich, ICs mit einer standardisierten Schnittstelle MII herzustellen, die für unterschiedliche Übertragungsmedien geeignet sind und deswegen kostengünstig in höherer Stückzahl produziert werden können.

## Beispiel AmiTCP

| Erzeugungsmuster | Abstrakte Fabrik | Erbauer | Fabrikmethode | Prototyp | Singleton | Multiton | Objektpool |
| - | - | - | - | - | - | - | - |
| Strukturmuster | Adapter | Brücke | Decorator | Fassade | Fliegengewicht | Kompositum | Stellvertreter |
| Verhaltensmuster | Beobachter | Besucher | Interpreter | Iterator | Kommando | Memento | Schablonenmethode | Strategie | Vermittler | Zustand | Zuständigkeitskette | Interceptor | Nullobjekt | Protokollstapel |
| Muster für objektrelationale Abbildung | Datentransferobjekt | Table Data Gateway | Row Data Gateway | Active Record | Unit of Work | Identity Map | Lazy Loading | Identity Field | Dependent Mapping | Embedded Value | Serialized LOB | Inheritance Mapper | Metadata Mapping | Query Object | Command-Query-Responsibility-Segregation |
| Nachrichtenübermittlungsmuster | Message | Command Message | Document Message | Event Message | Request-Reply | Return Address | Correlation Identifier | Message Sequence | Message Expiration | Format Indicator | Message Channel | Point-to-Point Channel | Publisher-Subscriber Channel | Datatype Channel | Invalid Message Channel | Dead Letter Channel | Guaranteed Delivery | Channel Adapter | Messaging Bridge | Message Bus | Pipes-and-Filters | Message Router | Content-based Router | Message Filter | Dynamic Router | Recipient List | Splitter | Aggregator | Resequencer | Composed Message Processor | Scatter-Gather | Routing Slip | Process Manager | Message Broker | Message Translator | Envelope Wrapper | Content Enricher | Content Filter | Claim Check | Normalizer | Canonical Data Model | Message Endpoint | Messaging Gateway | Messaging Mapper | Transactional Client | Polling Consumer | Event-driven Consumer | Competing Consumers | Message Dispatcher | Selective Consumer | Durable Subscriber | Idempotent Receiver | Service Activator | Control Bus | Detour | Wire Tap | Message History | Message Store | Smart Proxy | Test Message | Channel Purger |
| Andere | Application Controller | Business Delegate | Data Access Object | Dependency Injection | Extension Interface | Fluent Interface | Inversion of Control (IoC) | Lock | Model View Controller (MVC) | Model View Presenter (MVP) | Model View Update (MVU) | Model View ViewModel (MVVM) | Page Controller | Registry | Remote Facade | Repository | Service Locator | Session State | Table Module | Template View | Threadpool | Transaction Script | Transform View | Two-Step View | Value Object |
