Session Initiation Protocol: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Luki-Bot (discussione | contributi)
m Bot: grammatica, ortografia, entity, typo (ver 0.2)
Nessun oggetto della modifica
Riga 1:
{{wikificare}}
[[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.
È unIl protocollo relativamentee' ''giovane'',stato sviluppato a partire dal 1999 ([[Request for Comment]] 2543 e 3261) per iniziativa di [[IETF]] e fa parte della ''[[Internet Multimedia Conferencing Suite]]''.
 
Il protocollo SIP ha fondamentalmente le seguenti funzioni:
Riga 15 ⟶ 14:
* Cancellare la sessione in qualunque momento si desideri.
 
SIP è un protocollo text-based, orientato al Web, ''simile'' ad HTTP, con una struttura [[client-server]]. Per instaurare una sessione, avviene un three-way handshaking (vediconcettualmente simile a quello che avviene con il protocollo [[TCP]]).
Alcune delle sue caratteristiche importanti del protocollo SIP:
* èe' impiegabile sia in contesti client-server sia in contesti [[peer to peer]].
* èe' facilmente estendibile e programmabile
* lavora sia con server 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.
 
SIP è inoltre unIl protocollo cheSIP supporta la mobilità ed èe' dialog-oriented: un ''dialogo'' è una relazione persistente tra entità paritetiche che si scambiano richieste e risposte in un contesto comune.
 
== Esempio di un messaggio SIP ==
Riga 31 ⟶ 32:
*...
 
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:
'''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''
 
===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.
 
==Architettura di una rete SIP==
Le entità essenziali di una rete SIP sono:
*'''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'''.
*'''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.
*'''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.
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]] contentente informazioni sull'utente, come il profilo, l'indirizzo IP, l'URL.
 
==Links utili==