SIP - Messaggistica
I messaggi SIP sono di due tipi: requests e responses.
La riga di apertura di una richiesta contiene un metodo che definisce la richiesta e un Request-URI che definisce dove deve essere inviata la richiesta.
Allo stesso modo, la riga di apertura di una risposta contiene un codice di risposta.
Metodi di richiesta
SIP requestssono i codici utilizzati per stabilire una comunicazione. Per completarli, ci sonoSIP responses che generalmente indicano se una richiesta è riuscita o meno.
Queste richieste SIP, note come METODI, rendono utilizzabile il messaggio SIP.
I METODI possono essere considerati richieste SIP, poiché richiedono un'azione specifica che deve essere intrapresa da un altro agente utente o server.
I METODI si distinguono in due tipi:
Metodi fondamentali
Metodi di estensione
Metodi fondamentali
Esistono sei metodi principali come discusso di seguito.
INVITARE
INVITE viene utilizzato per avviare una sessione con un programma utente. In altre parole, un metodo INVITE viene utilizzato per stabilire una sessione multimediale tra i programmi utente.
INVITE può contenere le informazioni multimediali del chiamante nel corpo del messaggio.
Una sessione è considerata stabilita se un INVITO ha ricevuto una risposta positiva (2xx) o è stato inviato un ACK.
Una richiesta INVITE riuscita stabilisce un file dialog tra i due programmi utente che continua fino a quando non viene inviato un BYE per terminare la sessione.
Un INVITO inviato all'interno di una finestra di dialogo stabilita è noto come re-INVITE.
Re-INVITE viene utilizzato per modificare le caratteristiche della sessione o aggiornare lo stato di una finestra di dialogo.
INVITE Esempio
Il codice seguente mostra come viene utilizzato INVITE.
INVITE sips:[email protected] SIP/2.0
Via: SIP/2.0/TLS client.ANC.com:5061;branch = z9hG4bK74bf9
Max-Forwards: 70
From: Alice<sips:[email protected]>;tag = 1234567
To: Bob<sips:[email protected]>
Call-ID: [email protected]
CSeq: 1 INVITE
Contact: <sips:[email protected]>
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY
Supported: replaces
Content-Type: application/sdp
Content-Length: ...
v = 0
o = Alice 2890844526 2890844526 IN IP4 client.ANC.com
s = Session SDP
c = IN IP4 client.ANC.com
t = 3034423619 0
m = audio 49170 RTP/AVP 0
a = rtpmap:0 PCMU/8000
ADDIO
BYE è il metodo utilizzato per terminare una sessione stabilita. Questa è una richiesta SIP che può essere inviata dal chiamante o dal chiamato per terminare una sessione.
Non può essere inviato da un server proxy.
La richiesta BYE normalmente instrada end-to-end, bypassando il server proxy.
BYE non può essere inviato a un INVITO in attesa o a una sessione non stabilita.
REGISTRATI
La richiesta REGISTER esegue la registrazione di un agente utente. Questa richiesta viene inviata da un agente utente a un server di registrazione.
La richiesta di REGISTRAZIONE può essere inoltrata o inoltrata fino a quando non raggiunge un registrar autorevole del dominio specificato.
Porta l'AOR (Address of Record) in To intestazione dell'utente che si sta registrando.
La richiesta REGISTER contiene il periodo di tempo (3600sec).
Un agente utente può inviare una richiesta di REGISTRAZIONE per conto di un altro agente utente. Questo è noto comethird-party registration. Qui, ilFrom tag contiene l'URI della parte che presenta la registrazione per conto della parte identificata nel file To intestazione.
ANNULLA
CANCEL viene utilizzato per terminare una sessione non stabilita. I programmi utente utilizzano questa richiesta per annullare un tentativo di chiamata in sospeso avviato in precedenza.
Può essere inviato da un agente utente o da un server proxy.
ANNULLA è un file hop by hop request, cioè passa attraverso gli elementi tra il programma utente e riceve la risposta generata dal successivo elemento stateful.
ACK
ACK viene utilizzato per riconoscere le risposte finali a un metodo INVITE. Un ACK va sempre nella direzione di INVITE.ACK può contenere SDP body (caratteristiche dei media), se non è disponibile in INVITE.
ACK non può essere utilizzato per modificare la descrizione del supporto che è già stata inviata nell'INVITO iniziale.
Un proxy con stato che riceve un ACK deve determinare se l'ACK deve essere inoltrato o meno a valle a un altro proxy o agente utente.
Per le risposte 2xx, ACK è end-to-end, ma per tutte le altre risposte finali funziona hop per hop quando sono coinvolti proxy stateful.
OPZIONI
Il metodo OPTIONS viene utilizzato per interrogare un agente utente o un server proxy sulle sue capacità e scoprire la sua attuale disponibilità. La risposta a una richiesta elenca le capacità dell'agente utente o del server. Un proxy non genera mai una richiesta OPTIONS.
Metodi di estensione
sottoscrivi
SUBSCRIBE viene utilizzato dagli interpreti per stabilire un abbonamento allo scopo di ricevere notifiche su un particolare evento.
Contiene un file Expires campo di intestazione che indica la durata di un abbonamento.
Al termine del periodo di tempo, l'abbonamento terminerà automaticamente.
La sottoscrizione stabilisce un dialogo tra i programmi utente.
Puoi iscriverti nuovamente inviando un altro SUBSCRIBE all'interno della finestra di dialogo prima della scadenza.
Un 200 OK verrà ricevuto per un abbonamento dall'Utente.
Gli utenti possono annullare l'iscrizione inviando un altro metodo SUBSCRIBE con valore Expires 0 (zero).
NOTIFICARE
NOTIFY viene utilizzato dai programmi utente per ottenere il verificarsi di un particolare evento. Di solito una NOTIFICA si attiverà all'interno di una finestra di dialogo quando esiste una sottoscrizione tra l'abbonato e il notificatore.
Ogni NOTIFICA riceverà 200 risposte OK se viene ricevuto dal notificatore.
NOTIFY contiene un file Event campo di intestazione che indica l'evento e un file subscriptionstate campo di intestazione che indica lo stato corrente della sottoscrizione.
Una NOTIFICA viene sempre inviata all'inizio e alla fine di un abbonamento.
PUBBLICARE
PUBLISH viene utilizzato da un programma utente per inviare informazioni sullo stato dell'evento a un server.
PUBBLICA è utile soprattutto quando ci sono più fonti di informazioni sugli eventi.
Una richiesta PUBBLICA è simile a una NOTIFICA, tranne per il fatto che non viene inviata in una finestra di dialogo.
Una richiesta PUBLISH deve contenere un file Expires campo di intestazione e un file Min-Expires campo di intestazione.
FARE RIFERIMENTO
REFER è usato da un programma utente per indicare a un altro programma utente di accedere a un URI per la finestra di dialogo.
REFER deve contenere un file Refer-Tointestazione. Questa è un'intestazione obbligatoria per REFER.
REFER può essere inviato all'interno o all'esterno di una finestra di dialogo.
UN 202 Accepted attiverà una richiesta REFER che indica che un altro programma utente ha accettato il riferimento.
INFORMAZIONI
INFO viene utilizzato da un programma utente per inviare informazioni di segnalazione della chiamata a un altro agente utente con il quale ha stabilito una sessione multimediale.
Questa è una richiesta end-to-end.
Un proxy inoltrerà sempre una richiesta INFO.
AGGIORNARE
UPDATE viene utilizzato per modificare lo stato di una sessione se non viene stabilita una sessione. L'utente può modificare il codec con UPDATE.
SE viene stabilita una sessione, viene utilizzato un nuovo invito per modificare / aggiornare la sessione.
PRACK
PRACK viene utilizzato per confermare la ricezione di un trasferimento affidabile di risposta provvisoria (1XX).
Generalmente PRACK viene generato da un client quando riceve una risposta provvisoria contenente un file RSeq numero di sequenza affidabile e a supported:100rel intestazione.
PRACK contiene il valore (RSeq + CSeq) nel file rack intestazione.
Il metodo PRACK si applica a tutte le risposte provvisorie tranne la risposta 100 tentativi, che non viene mai trasportata in modo affidabile.
Un PRACK può contenere un corpo del messaggio; può essere utilizzato per lo scambio di offerte / risposte.
MESSAGGIO
Viene utilizzato per inviare un messaggio istantaneo tramite SIP. Un IM di solito consiste in brevi messaggi scambiati in tempo reale dai partecipanti impegnati in una conversazione di testo.
Il MESSAGGIO può essere inviato all'interno o all'esterno di una finestra di dialogo.
Il contenuto di un MESSAGGIO viene trasportato nel corpo del messaggio come un file MIME attaccamento.
UN 200 OK normalmente si riceve una risposta per indicare che il messaggio è stato recapitato a destinazione.