SIP ist eine Abkürzung und steht für Session Initiation Protocol. Wie der Name schon sagt, ist es dafür da, bei einem Anruf per VoIP den Anrufer mit dem passenden Ende zu verbinden.
Dieses Protokoll ist nicht nur für den Aufbau von Sprachübertragungen zuständig, sondern kann jegliche Arten von Kommunikation „vermitteln“. Denn sobald einmal die Verbindung über SIP initiiert wurde, erfolgt die eigentliche Kommunikation direkt zwischen den Partnern.
SIP basiert auf einer klassischen Client-Server-Architektur mit einem User Agent Client (UAC) und einem User Agent Server (UAS). Unter anderem ist auch das Session Description Protocol (SDP) eng mit dem SIP Protokoll verbunden, da dieses die Details der Verbindung an beide Partner schickt. Dabei wird zum Beispiel übermittelt welcher Codec beim Telefonieren genutzt wird oder auch welche Netzadresse verwendet wird.
Die eigentlichen Daten während des Gesprächs werden wiederum über das Real-Time Transport Protocol (RTP) übertragen. Dieses ist ein spezielles für die Sprache entwickeltes Protokoll welcher sicherstellen soll das die Kommunikation mit der kurz möglichsten Verzögerung abläuft. Hier finden Sie mehr Informationen zum Real-Time-Transport Protocol (RTP).
Mit SIP lassen sich Audio aber auch Videoverbindungen vermitteln. Die Adressierung erfolgt mit einem Uniform Ressource Identifier (URI) und Domain Name System (DNS). Beide Systeme finden heraus, wo sich das Ziel des Anrufes befindet.
SIP übertragt alle Informationen im Normalfall im Klartext. Hierdurch können Unbefugte, die Verbindungsinformationen relativ einfach mitlesen oder abfangen. Dadurch wurde auch eine verschlüsselte Variante entwickelt, das sogenannte Session Initiation Protocol Secure (SIPS).
Jeder SIP Teilnehmer hat eine eigene Adresse wodurch dieser identifiziert wird. Diese Adresse ähnelt einer E-Mail Adresse z.B. „teilnehmer-x@domain“. Der letzte Teil der Adresse zeigt, in welchem Netzwerk sich der Benutzer befindet und der vordere dann den genauen Benutzername oder Telefonnummer der Person.
Hierbei kann zwischen einer unverschlüsselten Verbindung „sip:teilnehmer-x@domain“ und einer verschlüsselten „sips:teilnehmer-x@domain“ leicht unterschieden werden durch „sip“ oder „sips“ vor der Adresse.
Durch die Trennung vom Verbindungsaufbau und Übertragung der Nutzerdaten können beide Datenströme unabhängig voneinander verschlüsselt werden. Im Zusammenhang einer verschlüsselten SIP Verbindung gibt es auch ein verschlüsseltes Übertragungsprotokoll. Anstatt RTP (Real Time Transport Protocol) das SRTP (Secure Real Time Transport Protokoll).
Das SIP kennt 6 folgende Anforderungen welche auch Requests genannt werden und für die Kommunikation genutzt werden.
Anforderung (Request) | Beschreibung |
---|---|
Invite | Die Gegenstelle wird zu einer Sitzung eingeladen. Dieser Vorgang entspricht der Signalisierung beim angerufenen, dessen Telefon klingelt. Invite ist der wichtigste Request. Mit ihm wird die Verbindung gestartet |
Ack | Mit diesem Request wird die Verbindung bestätigt |
Bye | Dieser Request wird ausgeführt, wenn einer der beiden Gesprächspartner die Verbindung beendet. |
Cancel | Dieser Request wird ausgeführt, wenn die Verbindung nach einer gewissen Zeit abgebrochen wird. |
Options | Mit diesem Request werden Zusatzinformationen des Anwenders übermittelt. |
Register | Mit diesem Request werden die Standort-Informationen des Clients an den Server übergeben, damit dieser den Client bei einem Anruf finden kann. |
Beispiel von einem SIP INVITE-Request:
INVITE sip:my@sip.server.com SIP/2.0
VIA:SIP/2.0/UDP 192.168.0.1
Call-ID:300f0gd090fgsa0f9da0gf0g@sip.server.com
From:<sip:my@sip.server.com>
To: Name <name@sip.server.com>
Call-ID:300f0gd090fgsa0f9da0gf0g@sip.server.com
CSeq:1 INVITE
Natürlich gibt es auch eine Vielzahl an SIP Rückmeldungen (Responses)
Kennung | Bedeutung |
---|---|
1 | Anruf erfolgt |
100 | Verbindung wird hergestellt |
180 | Verbindung etabliert, warten auf Gegenseite |
181 | Der Anruf wird zu einem anderen Bestimmungsort umgeleitet |
182 | Die Gegenstelle ist zurzeit nicht verfügbar, weist den Anrufer aber nicht zurück, sondern stellt ihn in eine Warteschleife. |
200 | OK |
300 | Die Rufnummer führt zu mehreren Zielen. Es folgt eine Auswahlmöglichkeit |
305 | Das Anrufziel ist nur über einen Proxy-Server zu erreichen |
400 | SIP-Syntaxfehler bei der Verbindungsaufnahme. |
404 | Die Gegenstelle teilt mit, dass das Anrufziel nicht existiert |
485 | Das Anrufziel ist vieldeutig. Der SIP-Server kann mögliche Alternativen nennen |
500 | Interner Server-Fehler, die Bearbeitung wurde abgebrochen |
501 | Das SIP-Gateway unterstützt die angeforderte Aktion nicht. |
504 | Timeout beim Warten auf einen anderen Server überschritten |
600 | Besetzt |
603 | Die Gegenstelle weist den Anruf ab. |
604 | Die Gegenstelle existiert nicht im angegebenen SIP-Netz |
605 | Der Session-Aufbau wurde ohne weitere Begründung nicht akzeptiert |
Die zwei Tabellen zeigen alle Requests und Responses, die in dem SIP Protokoll benutzt werden. Hierdurch wird die Verbindungen zwischen UAC und UAS vereinbart und die benötigten Infos bereitgestellt.
Hier kann man nun genau sehen, dass der UAC einen Verbindungsversuch durch ein INVITE einleitet. Bestätigt wird dies von dem UAC mit einem „Trying“. Mit „Ringing“ wird dem UAC bestätigt, dass dem Angerufenen der Verbindungswunsch signalisiert wird. Ist der Gesprächspartner belegt, dann schickt der UAS dem UAC ein „Busy here“.
Nimmt der gewünschte Gesprächspartner den Verbindungswunsch an, dann schickt der UAS dem UAC ein „OK“. In diesem Response werden auch die SDP-Verbindungsparameter mitgeschickt. Der UAC bestätigt dem UAS den Verbindungsaufbau und die Verbindungsparameter mit einem „ACK“. Das Gespräch ist aufgebaut.
Wenn einer der beiden Teilnehmer das Gespräch beendet schickt der User Agent ein „BYE“ und bekommt das von der Gegenseite mit einem „OK“ bestätigt.