Ein einfacher SIP-Anruf ist ein INVITE/200/ACK-Drei-Wege-Handshake, gefolgt von Medien und einem BYE. Der Anrufer sendet INVITE (mit einem SDP-Offer); der Angerufene antwortet mit 100 Trying, 180 Ringing, dann 200 OK (mit der SDP-Answer); der Anrufer sendet ACK; RTP-Medien fließen; und beide Parteien beenden den Anruf mit BYE, beantwortet durch 200 OK.
Den Anruf aufbauen
Der Anruf beginnt damit, dass der UAC des Anrufers ein INVITE in Richtung des Angerufenen sendet und ein SDP-Offer trägt, das die gewünschten Medien beschreibt. Während der Request Proxies durchquert, kann jeder 100 Trying zurückgeben, um Neuübertragungen zu stoppen. Wenn das Telefon des Angerufenen zu klingeln beginnt, fließt ein 180 Ringing zurück — das erzeugt den Rückrufton. Werden Early Media benötigt (Netzansagen, Rückrufton vom fernen Netz), kann ein 183 Session Progress mit SDP den Medienpfad vor der Annahme öffnen.
Annahme und der Drei-Wege-Handshake
Wenn der Angerufene annimmt, gibt sein UAS ein 200 OK zurück, das die SDP-Answer trägt, die die Medienaushandlung abschließt. Der Anrufer bestätigt mit einem ACK — dem dritten Schenkel des INVITE-Handshakes — und der Dialog ist nun vollständig aufgebaut, identifiziert durch Call-ID plus beide Tags. Der Drei-Wege-Austausch INVITE/200/ACK, statt einer einfachen Request/Response, macht den SIP-Anrufaufbau selbst über verlustbehaftetes UDP zuverlässig.
Alice (UAC) Bob (UAS)
│ INVITE (SDP offer) ─────────▶ │
│ ◀───────── 100 Trying │
│ ◀───────── 180 Ringing │ (Bob's phone rings)
│ ◀───────── 200 OK (SDP answer) │ (Bob answers)
│ ACK ─────────▶ │
│ ◀═══════ RTP media (both ways) ═▶ │ (the conversation)
│ BYE ─────────▶ │ (Alice hangs up)
│ ◀───────── 200 OK │Medien und Mid-Call-Änderungen
Sobald ACK den Aufbau abschließt, fließen RTP-Medien direkt zwischen den Endpunkten (oder über ein Media-Relay) auf den vom SDP ausgehandelten Ports, unabhängig vom Signalisierungspfad. Mid-Call-Änderungen erfolgen mit einem re-INVITE oder UPDATE, das ein neues SDP trägt — so werden Halten (a=sendonly), Fortsetzen (a=sendrecv), Codec-Neuaushandlung und das Hinzufügen von Video umgesetzt, alles innerhalb des bestehenden Dialogs, ohne den Anruf abzubrechen.
Den Anruf beenden — BYE
Beide Parteien beenden einen aufgebauten Anruf durch Senden von BYE, das die andere mit 200 OK bestätigt; der Dialog wird dann geschlossen und die Medien stoppen. BYE ist ein In-Dialog-Request und trägt daher die aufgebaute Call-ID, das From-Tag, das To-Tag und die nächste CSeq. Da es eine normale Transaktion ist, wird ein verlorenes BYE bis zur Bestätigung neu übertragen, sodass beide Seiten darin konvergieren, dass der Anruf beendet ist.
Einen laufenden Anruf abbrechen — CANCEL
Gibt der Anrufer auf, bevor der Angerufene annimmt — der Anruf klingelt noch —, sendet der UAC CANCEL, nicht BYE, weil noch keine finale Response eingetroffen ist. Der Angerufene stoppt das Klingeln und gibt 487 Request Terminated für das ursprüngliche INVITE zurück, das der Anrufer mit ACK bestätigt. CANCEL ist nur in diesem Fenster vor der Annahme gültig; sobald ein 200 OK empfangen wurde, ist der Anruf aufgebaut, und BYE ist der Weg, ihn zu beenden.
| Situation | Methode | Ergebnis |
|---|---|---|
| Anruf angenommen, jetzt auflegen | BYE | 200 OK; Dialog geschlossen |
| Es klingelt immer noch, der Anrufer gibt auf | CANCEL | 487 Request Terminated auf den INVITE |
| Angerufener lehnt ab, während es klingelt | (Antwort) 486/603 | Busy Here / Decline; Anrufer sendet ACK |
Häufig gestellte Fragen
Was ist der grundlegende SIP-Anrufablauf?
INVITE (mit SDP-Offer) → 100 Trying → 180 Ringing → 200 OK (mit SDP-Answer) → ACK, dann fließen RTP-Medien, und der Anruf endet mit BYE → 200 OK. Der Drei-Wege-Handshake INVITE/200/ACK baut den Dialog auf; BYE reißt ihn ab.
Warum nutzt SIP einen Drei-Wege-Handshake für INVITE?
Das ACK bestätigt, dass der Anrufer das finale 200 OK empfangen hat, und macht den Anrufaufbau selbst über verlustbehaftetes UDP zuverlässig. Da ein 200 OK auf ein INVITE bis zum ACK neu übertragen wird, garantiert der Drei-Wege-Austausch, dass beide Seiten sich einig sind, dass der Anruf steht, bevor Medien vertraut werden.
Wie lege ich einen SIP-Anruf auf Halten?
Senden Sie ein re-INVITE (oder UPDATE) innerhalb des aufgebauten Dialogs, das ein neues SDP trägt, das die Medienrichtung auf a=sendonly setzt (und a=sendrecv zum Fortsetzen). Der Dialog und der Anruf bleiben bestehen; nur die Medienrichtung ändert sich, womit auch Music-on-Hold geliefert wird.
Wann sende ich CANCEL statt BYE?
Senden Sie CANCEL, wenn der Anruf noch klingelt und keine finale Response eingetroffen ist — es bricht das anstehende INVITE ab und ergibt ein 487. Senden Sie BYE nur, nachdem der Anruf aufgebaut ist (ein 200 OK empfangen wurde). Die falsche Methode lässt die beiden Seiten außer Takt geraten.
Folgen die Medien demselben Pfad wie die SIP-Nachrichten?
Meist nicht. Die SIP-Signalisierung kann mehrere Proxies durchqueren, doch RTP-Medien fließen auf separat ausgehandelten Ports, typischerweise direkt zwischen den Endpunkten oder über ein dediziertes Media-Relay oder einen SBC — weshalb die Signalisierung gelingen kann, während die Medien (Audio) unabhängig scheitern.
Quellenspezifikationen
Diese Seite basiert auf den veröffentlichten Standards. (Wird in einem neuen Tab geöffnet.)