Service Access Point
# Service Access Point

Service Access Point (auch Dienstzugangspunkt) ist ein Fachbegriff aus der Telekommunikation. Man bezeichnet damit die Schnittstelle zur Interaktion mit einer Kommunikationsschicht an der oberen Grenze einer solchen Schicht.

Traditionell modelliert man in der Telekommunikation Kommunikationssysteme und -protokolle mit Schichtenmodellen wie dem OSI-Modell. Funktionen, die zur Kommunikation notwendig sind, werden dabei in übereinander liegenden Schichten modelliert und dargestellt. Jede Schicht erfüllt eine spezifische Aufgabe (z. B. eine Datenkodierung/-dekodierung). Anders ausgedrückt, jede Schicht erbringt einen gewissen Dienst für das Gesamtsystem, welcher von der nächsthöheren Schicht genutzt wird. Eine Schnittstelle, die von einer Schicht für ihren Dienst nach oben hin angeboten wird, ist ein Service Access Point. Der Dienstbenutzer (die höhere Schicht, service user) greift nur über den Service Access Point auf den Dienst der niedrigeren Schicht (den Diensteanbieter, service provider) zu.

Zur Kommunikation werden dabei Dienstelemente (service primitives) verwendet. Dies sind vorgegebene Protokolle, mit dem z. B. die höhere Schicht Anforderungen an die niedrigere Schicht sendet oder von ihr Daten erhält.

In der Praxis kann eine Schicht durchaus mehrere identische oder unterschiedliche Dienste gleichzeitig anbieten – z. B., wenn mehrere Verbindungen gleichzeitig abgewickelt werden. Dies bedeutet, eine Schicht kann mehrere Service Access Points besitzen. In vielen Protokollen ist es dann üblich, diese Service Access Points durch eine Nummerierung, Namen oder ähnliches zu bezeichnen, um sie zu unterscheiden. Ein solcher Bezeichner wird Service Access Point Identifier (SAPI) genannt. Höherliegende Schichten adressieren einen Dienst dann über einen entsprechenden SAPI, um z. B. sicherzustellen, dass die Anfrage derjenigen Verbindung zugeordnet werden kann, für die sie bestimmt ist.

## Primitive

Primitive (Primitives, auch Dienstprimitive oder Dienstelemente genannt) sind abstrakte, implementierungsunabhängige Vorgänge zur Nutzung eines schichtenspezifischen Dienstes (vgl. OSI-Referenzmodell), vor allem zur Beschreibung von Kommunikationsabläufen. Bei der Definition der Schnittstelle dienen Primitive als abstraktes Konzept und vermeiden so die strikte Vorgabe etwa einer API anhand von Funktionsprototypen. Damit wird lediglich definiert, welche Daten ausgetauscht werden, jedoch nicht, auf welche Weise die Übergabe abläuft.

Die Primitive unterteilen sich in vier Gruppen:

* REQ (Request, Anforderung),
* IND (Indication, Meldung),
* RESP (Response, Antwort) und
* CONF (Confirmation, Bestätigung).

Mit dem Dienstelement REQ wird durch eine Instanz der Schicht N ein Dienst der darunterliegenden Schicht N-1 angefordert. Nachdem ein Request abgearbeitet wurde, antwortet in der Regel die bearbeitende Schicht mit CONF. Ein Dienstelement IND wird dagegen von einer Instanz der unteren Schicht N-1 ausgelöst und durch die darüberliegende Schicht N in der Regel mit RESP beantwortet.

In der Regel entsteht eine Indication als Folge des Empfangs einer von einem Kommunikationspartner durch REQ initiierten und gesendeten Nachricht. Beantwortet der Empfänger diese Nachricht z. B. per RESP, so löst das dann beim ursprünglichen Absender die Reaktion via CONF aus. Diese Betrachtungsweise ist dabei jeweils auf eine Schicht bezogen.

