Session Initiation Protocol: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m varie
m Correzione URI
 
(185 versioni intermedie di oltre 100 utenti non mostrate)
Riga 1:
'''Session Initiation Protocol''' (in acronimo SIP), nelle [[telecomunicazioni]], indica [[protocollo di rete]] di controllo del [[livello applicativo]] usato per creare, modificare, e terminare [[sessione|sessioni]] tra uno o più partecipanti.<ref>[https://tools.ietf.org/html/rfc3261 Nota RFC 3261 del ''Network Working Group''.]</ref>
[[categoria:protocolli di rete]]
 
Il protocollo '''SIP''' ('''Session Initiation Protocol''') instaura, modifica e rilascia una sessione. Esso trova applicazione non solo nella telefonia su IP e nei servizi telefonici supplementari, ma anche nella video-comunicazione, nei giochi interattivi, nella messaggistica instantanea.
Queste sessioni includono chiamate telefoniche via [[Internet]] ([[Voip]]), distribuzioni [[multimedialità|multimediali]], e [[videoconferenza|videoconferenze]]. SIP viene comunemente usato per instaurare o terminare chiamate [[video]] o vocali e permette di modificare le caratteristiche di chiamate in corso come l'[[indirizzo IP]] e la [[porta (reti)|porta]], l'invito di ulteriori partecipanti e aggiungere o cancellare media stream. Gli elementi principali della rete SIP sono: [[user agent]], [[proxy server]], [[registrar]], redirect server, session border controller, [[Gateway (informatica)|gateway]]. Gli URI identificano ogni elemento di una rete SIP usando lo schema: <code><nowiki>sip://username:password@host:port</nowiki></code> oppure <code><nowiki>sips://username:password@host:port</nowiki></code> (nel caso si usi la crittografia TLS).
Il protocollo è stato sviluppato a partire dal 1999 ([[Request for Comment]] 2543 e 3261) per iniziativa di [[IETF]] e fa parte della ''[[Internet Multimedia Conferencing Suite]]''.
 
==Descrizione==
SIP gestisce in modo generale una [[sessione]] di comunicazione tra due o più entità, ovvero fornisce meccanismi per instaurare, modificare e terminare (rilasciare) una sessione. Attraverso il protocollo SIP possono essere trasferiti dati di diverso tipo ([[audio]], [[video]], [[testo|messaggistica testuale]] ecc). Inoltre, il SIP favorisce un'architettura modulare e [[scalabilità|scalabile]], ovvero capace di crescere con il numero degli utilizzatori del servizio. Queste potenzialità hanno fatto sì che il SIP sia, oggi, il protocollo VoIP più diffuso nel mercato residenziale e business, sorpassando di molto, altri protocolli quali [[H.323]] ed [[MGCP]].
 
Intorno al SIP sono sorti diversi tipi di utilizzatori, pensati per facilitare la fruizione della telefonia VoIP da parte di tutte le categorie di persone. Alcuni esempi sono gli ATA ([[Analog Telephone Adapter]]), capaci di convertire la segnalazione elettrica di un normale [[telefono]] analogico in un flusso di dati IP, e, dall'unione tra telefono tradizionale e ATA, gli [[IP Phones]], telefoni dalle funzionalità elevate ai quali non arriva il [[doppino telefonico]] ma i cavi di rete. Evoluzione ulteriore sono i [[soft-phones]], applicazioni [[software]] per [[personal computer]] che emulano le funzioni di un telefono VoIP.
 
== Panoramica del protocollo ==
SIP supporta cinque sfaccettature per l'avvio e la terminazione di una connessione:
* '''Locazione dell'utente''': determinazione degli end system usati nella comunicazione;
* '''Disponibilità dell'utente''': identificazione della disponibilità delle parti ad impegnarsi in una comunicazione;
* '''Capacità dell'utente''': identificazione di media e parametri utilizzati;
* '''Impostazione della sessione''': avviso, instaurazione dei parametri di una sessione su chiamate;
* '''Gestione della sessione''': trasferimento e terminazione di una sessione, modifica dei parametri della sessione, e invocazione dei servizi.
 
SIP non è un sistema per le comunicazioni integrato verticalmente, ma piuttosto può essere usato come componente in altri protocolli IETF per costruire un'architettura multimediale completa (di solito includono il protocollo [[Real-time Transport Protocol|RTP]] per la comunicazione trasparente in [[sistema real-time]] e fornitura di [[Retroazione|feedback]] in [[Qualità di servizio|QoS]], oppure RTSP per il controllo della consegna di contenuti in [[streaming]]). SIP non fornisce servizi, ma primitive per implementarli. Per esempio esso può individuare un utente e consegnargli un oggetto opaco alla sua locazione corrente.
 
=== Caratteristiche ===
Storicamente SIP utilizza il protocollo di trasporto [[User Datagram Protocol|UDP]] con porta di [[default (informatica)|default]] 5060.
Recenti revisioni di questo standard permettono anche l'utilizzo attraverso [[Transmission Control Protocol|TCP]] e [[Transport Layer Security|TLS]]
 
Il protocollo SIP ha fondamentalmente le seguenti funzioni:
* Localizzazione degli utenti
** acquisire le preferenze degli utenti
* Invitare gli utenti a partecipare ad una sessione:
** negoziare le capability
** localizzare gli utenti
** acquisire le preferenze degli utenti
** negoziare le capabilities
** trasportare una descrizione della sessione
* Instaurare le connessioni di sessione
Riga 14 ⟶ 33:
* Cancellare la sessione in qualunque momento si desideri.
 
SIPIl èmodello unusato per la sintassi del protocollo SIP è text-based, orientato al Web,derivato dall''simile'' ad HTTP, con una struttura [[client-server]]. Per instaurare una sessione, avviene un three-way [[handshake|handshaking]] (concettualmente simile a quello che avviene con il protocollo [[Transmission Control Protocol|TCP]]).
Alcune delle caratteristiche importanti del protocollo SIP:
* è impiegabile sia in contesti client-server sia in contesti [[peer to peer]].
* è facilmente estendibile e programmabile
* lavoraeventuali siaserver conpossono serveressere sia [[stateless]] sia con server [[stateful]].
* e'è indipendente dal protocollo di trasporto.
 
Un messaggio SIP è una ''richiesta'' o una ''risposta''; una sequenza di una richiesta e una o più risposte è detta ''transazione'': una transazione è identificabile da un ''transaction-ID'', un identificativo che ne specifica la sorgente, la destinazione e il numero di sequenza.
 
Il protocollo SIP supporta la mobilità ed è dialog-oriented: un ''dialogo'' è una relazione persistente tra entità paritetiche che si scambiano richieste e risposte in un contesto comune.
 
== EsempioArchitettura di ununa messaggiorete SIP ==
Le entità essenziali di una rete SIP sono:
Gli utenti SIP sono risorse identificabili o localizzabili mediante [[URI]] o [[URL]] che contengano informazioni sul dominio, sul nome-utente, sull'[[host]] o il numero col quale l'utente partecipa alla sessione. Gli indirizzi sono ''stile e-mail''. Esempi fittizzi possono ad esempio essere:
* ''SIP [[User Agent]]'': [[File:SIP User Agents.jpg|thumb|Schema di chiamata tra User Agents]] è un end-point e può fungere da client o da server; i due ruoli sono dinamici, nel senso che nel corso di una sessione un client può fungere da server e viceversa. Quando funge da client, dà inizio alla transazione originando richieste. Quando funge da server, ''ascolta'' le richieste e le soddisfa, se possibile.
*sip:salvatore@mioDominio.it
Uno User Agent è in sostanza una macchina a stati, che evolve in dipendenza di messaggi SIP, e registra informazioni rilevanti del dialogo. Il dialogo ha inizio quando si risponde positivamente al messaggio di ''Invite'' e termina con un messaggio di ''Bye''.
*sip:salvatore@194.150.20.21:5068
* ''Registrar Server'': è un server dedicato o collocato in un [[proxy]]. Quando un utente è iscritto ad un dominio, invia un messaggio di registrazione del suo attuale punto di ancoraggio alla rete ad un Registrar Server.
*sip:+39-81-12345@mioGateway.com
* ''Proxy Server'': è un server intermedio; può rispondere direttamente alle richieste oppure inoltrarle ad un client, ad un server o ad un ulteriore proxy. Un proxy server analizza i parametri di instradamento dei messaggi e "nasconde" la reale posizione del destinatario del messaggio - essendo quest'ultimo indirizzabile con un nome convenzionale del dominio di appartenenza.
*...
I proxy possono essere [[stateless]] o [[stateful]]. Quando uno User Agent invia sistematicamente le proprie richieste ad un proxy "vicino" (di default) allora il proxy viene detto ''Outbound-Proxy''. Viceversa, un ''Inbound-Proxy'' è un proxy che instrada le chiamate entranti in un dominio. Infine un ''Forking-Proxy'' può instradare una stessa richiesta in parallelo o in sequenza a più destinazioni.
* ''Redirect Server'': reinstrada le richieste SIP consentendo al chiamante di contattare un set alternativo di URIs.
* ''Location Server'': è un [[database]] contenente informazioni sull'utente, come il profilo, l'indirizzo IP, l'URL.
 
== Applicazioni ==
Un messaggio SIP è costituito da un'intestazione e da un corpo (rispettivamente detti ''header'' e ''body''). A titolo esemplificativo, consideriamo il seguente messaggio di ''Invite'', in cui header e body sono separati da una riga vuota:
Esso trova applicazione nella [[Voice over IP|telefonia su IP]] e nei servizi telefonici supplementari, nella video-comunicazione, nei giochi interattivi, nella [[messaggistica istantanea]]. Il protocollo è stato sviluppato, ufficialmente, a partire dal 1999 ([[Request for Comments|RFC]] 2543 e 3261) per iniziativa di [[Internet Engineering Task Force|IETF]] e fa parte della ''[[Internet Multimedia Conferencing Suite]]''.
<pre>
INVITE sip:utente@___domain.com SIP/2.0
Via: SIP/2.0/UDP 134.102.18.1
From: <sip:zioMauro@dominio.com>; tag = 4711 ''//identifica l'originatore della richiesta ''
To: Michele <sip:utente@___domain.com> ''//identifica la destinazione logica di una richiesta''
Call-Id: 12345678@134.102.18.1 ''//è un valore costante che identifica l'invito''
Cseq: 49 Invite ''//ordina le transazioni (..la prossima richiesta avrà Cseq=50)''
Content-Length: 117 ''//il body consiste in 117 byte ''
Content-Type: application /sdp ''//tipo di media descritto secondo il protocollo [[SDP]]''
Subject: felicitazioni! ''//l'oggetto del messaggio''
Contact: sip:zioMauro@134.102.18.1:4050 ''//l'indirizzo al quale si desidera ricevere richieste''
transport = udp ''//specifica il protocollo di trasporto, nell'esempio [[UDP]]''
v = 0 ''//indica la versione in uso''
o = jack 7564657 9823872 IN IP4 134.102.18.1 ''//l'owner della risorsa con un ID di sessione''
c = IN IP4 134.102.18.1 ''//tipo di rete, la versione del protocollo IP e l'IP stesso ''
t = 0 0 ''//tempo di start e di stop''
m = audio 4754 RTP/AVP 0 ''//tipo di media, num. di porto, protocollo di trasporto e formato ''
a = rtpmap: 0 PCMU/8000 ''//attributi audio\video.. se ce ne fossero ''
s = festa ''//subject della sessione''
</pre>
 
Ad oggi l'utilizzo prevalente è nella telefonia su IP, per cui SIP è spesso sinonimo di un sistema dedicato a questa applicazione.
===Cenni ai messaggi SIP più frequenti===
Altri messaggi SIP frequenti sono:
*''Register'': messaggi inviato da uno User Agent quando vuole registrare presso un Registrar Server il proprio punto di ancoraggio alla rete.
*''Bye'': utilizzato per porre fine ad un dialogo SIP
*''Cancel'': per terminare un dialogo se la sessione non ha ancora avuto inizio.
*''Invite'': già discusso in precedenza, serve ad invitare un utente a partecipare ad una sessione.
*''Ack'': è un messaggio di riscontro
*''Trying'' e ''Ringing'': messaggi provvisori;mantengono i parametri della richiesta a cui rispondono.
*''Subscribe'' e ''Notify'': utilizzati in contesti peer to peer.
 
== Software che sfrutta il protocollo SIP ==
==Architettura di una rete SIP==
Esistono diversi software in grado di sfruttare il protocollo SIP:
Le entità essenziali di una rete SIP sono:
*[https://www.voispeed.com VOIspeed UCloud]
*''SIP [[User Agent]]'': è un end-point e può fungere da client o da server; i due ruoli sono dinamici, nel senso che nel corso di una sessione un client può fungere da server e viceversa. Quando funge da client, dà inizio alla transazione originando richieste. Quando funge da server, ''ascolta'' le richieste e le soddisfa, se possibile. Uno User Agent è in sostanza una macchina a stati, che evolve in dipendenza di messaggi SIP, e registra informazioni rilevanti del dialogo. Il dialogo ha inizio quando si risponde positivamente al messaggio di ''Invite'' e termina con un messaggio di ''Bye''
*[[Gizmo5]]
*''Registrar Server'': è un server dedicato o collocato in un [[proxy]]. Quando un utente è iscritto ad un dominio, invia un messaggio di registrazione del suo attuale punto di ancoraggio alla rete ad un Registrar Server.
* [[openSIPS]]
*''Proxy Server'': è un server intermedio; può rispondere direttamente alle richieste oppure "ruotarle" ad un client, ad un server o ad un ulteriore proxy. Un proxy server analizza i parametri di instradamento dei messaggi e "nasconde" la reale posizione del destinatario del messaggio - essendo quest'ultimo indirizzabile con un nome convenzionale del dominio di appartenenza.
* [[Asterisk PBX|Asterisk]]
I proxy possono essere [[stateless]] o [[stateful]]. Quando uno User Agent invia sistematicamente le proprie richieste ad un proxy "vicino" (di default) allora il proxy viene detto ''Outbound-Proxy''. Viceversa, un ''Inbound-Proxy'' è un proxy che instrada le chiamate entranti in un dominio. Infine un ''Forking-Proxy'' può instradare una stessa richiesta in parallelo o in sequenza a più destinazioni.
* [[Ekiga]]
*''Redirect Server'': reinstrada le richieste SIP consentendo al chiamante di contattare un set alternativo di URIs.
* [[Wengo]]
*''Location Server'': è un [[database]] contentente informazioni sull'utente, come il profilo, l'indirizzo IP, l'URL.
* [[Fring]]
* [[Google Talk]]
* [[Microsoft Lync]] (rinominato poi in [[Skype for Business]] che terminerà il suo ciclo di vita nel 2021)
* {{cita web|http://www.3cx.com|3CX}}
 
Solo alcuni di questi sono [[software libero]].
 
Per lo stack Android sono mantenuti i seguenti progetti open source:
* {{cita web|https://code.google.com/p/imsdroid/|IMDDroid}}
* {{cita web|https://code.google.com/p/de-tiny-sip/|SipUA}}
* {{cita web|https://code.google.com/p/sipdroid/|SipDroid}}
* {{cita web|https://code.google.com/p/csipsimple/|CSipSimple}}
 
==Note==
<references/>
 
== Voci correlate ==
* [[Sessione]]
* [[H.323]]
* [[Real-time Transport Protocol]]
* [[SIP Trunking]]
 
== Altri progetti ==
==Collegamenti esterni==
{{interprogetto}}
*http://www.cs.columbia.edu/~hgs/sip/index.html
 
== Collegamenti esterni ==
[[Categoria:Protocolli di rete]]
* {{cita web |1=http://www.radvision.com/Resources/WhitePapers/ims_sip.htm |2=IMS SIP Overview |accesso=31 maggio 2006 |urlarchivio=https://web.archive.org/web/20060614125715/http://www.radvision.com/Resources/WhitePapers/ims_sip.htm# |dataarchivio=14 giugno 2006 |urlmorto=sì }}
* {{cita web|http://www.cs.columbia.edu/~hgs/sip/index.html|CS Columbia}}
* {{cita web | 1 = http://www.en.voipforo.com/SIP/SIP_architecture.php | 2 = SIP Protocol Overview | accesso = 9 maggio 2006 | dataarchivio = 27 giugno 2020 | urlarchivio = https://web.archive.org/web/20200627142418/http://www.en.voipforo.com/SIP/SIP_architecture.php | urlmorto = sì }}
{{IPstack}}
{{Controllo di autorità}}
[[Categoria:Protocolli di Internet]]
[[Categoria:Protocolli livello applicazione]]
[[Categoria:Voice over IP]]