Nello scorso articolo (che trovi qui) abbiamo illustrato brevemente il funzionamento del protocollo SIP. Ora vedremo nello specifico il metodo INVITE

A cosa serve il metodo INVITE

Il metodo INVITE è un metodo SIP che specifica l’azione che il richiedente (colui che chiama) chiede al server di eseguire, è definito nel documento RFC3261 e contiene una serie di campi di intestazione (Message Header). I campi di intestazione sono attributi che forniscono informazioni aggiuntive su un messaggio.

Ad esempio:

Analisi pacchetto INVITE con Wireshark
Pacchetto INVITE

Com’è composto?

Nella prima riga è contenuto il nome del metodo INVITE, mentre le righe che seguono sono una lista di campi di intestazione:

  • Via: Contiene l’indirizzo (192.168.77.16) al quale l’interno 210 si aspetta di ricevere risposte alla richiesta. Il campo Branch contiene l’identificativo della transazione;
  • Contact: Contiene un URI SIP che rappresenta una rotta diretta per contattare il chiamante (Gianluca). Solitamente è composto da un nome utente su un “Fully Qualified Domain Name” (FQDN). Spesso non si hanno domini registrati, quindi si utilizza l’indirizzo IP;
  • Max-Forwards: Come si può intuire dal nome, limita il numero di salti che una richiesta può fare durante l’instradamento;
  • To: Contiene il nome visualizzato (Display name) dell’utente chiamato (in questo caso è assente, in quanto è stato chiamato un cellulare) e un URI SIP (sip:cellulare@dominio.it);
  • From: Contiene il nome visualizzato di chi chiama (Gianluca) e un URI SIP (sip:210@dominiopbx.it);
  • Call-ID: Contiene un identificativo univoco globale, formato da una combinazione casuale di righe;
  • CSeq (Command Sequence): Contiene un numero intero ed il nome del metodo. Il numero viene incrementato per ogni nuova richiesta all’interno della sessione;
  • Content-Type: Contiene una descrizione del corpo del messaggio;
  • Content-Lenght: Indica di quanti Byte è il messaggio.

Re-INVITE

Durante la sessione, Gianluca o il suo interlocutore possono decidere di cambiare caratteristiche della sessione multimediale. Per fare ciò, si utilizza il metodo Re-INVITE che contiene una nuova descrizione multimediale. Questo Re-INVITE fa riferimento alla sessione già stabilita, in modo tale che l’interlocutore sappia che deve modificare la sessione in corso, e non crearne una nuova.

In seguito ad un INVITE e Re-INVITE, ci si aspetta sempre di ricevere una risposta. Se va bene, il chiamato invia un “200 Ok”, altrimenti, ad esempio, un “488 Not Acceptable”. In entrambi i casi, il chiamante invierà un ACK di conferma.

Nel prossimo articolo spiegheremo nel dettaglio come funziona il metodo ACK