5. SDP Specification (Specifica SDP)
Una descrizione di sessione SDP è rappresentata dal tipo di media "application/sdp" (vedere la Sezione 8).
Le descrizioni di sessione SDP sono interamente in forma testuale e usano il set di caratteri ISO 10646 con codifica UTF-8. I nomi dei campi SDP e i nomi degli attributi usano solo il sottoinsieme US-ASCII di UTF-8, ma i campi testuali e i valori degli attributi POSSONO usare l'intero set di caratteri ISO 10646. I campi e i valori degli attributi che usano l'intero set UTF-8 non vengono mai confrontati direttamente, quindi non è richiesta la normalizzazione UTF-8. La forma testuale, invece di una codifica binaria come ASN.1 o XDR, è stata scelta per aumentare la portabilità, supportare diversi metodi di trasporto e permettere l'uso di strumenti testuali flessibili per generare ed elaborare descrizioni di sessione.
Formato della descrizione SDP
Una descrizione di sessione SDP consiste in più righe di testo nel formato:
<type>=<value>
Dove <type> DEVE essere esattamente un carattere sensibile alle maiuscole e minuscole, e <value> è testo strutturato il cui formato dipende da <type>.
Struttura della descrizione SDP
Una descrizione di sessione SDP è composta da una sezione a livello di sessione e da zero o più sezioni a livello di media. Alcune righe della descrizione sono OBBLIGATORIE (REQUIRED), altre sono FACOLTATIVE (OPTIONAL), ma tutte le righe DEVONO apparire nell'ordine indicato qui. Gli elementi facoltativi sono contrassegnati con "*".
Descrizione di sessione (Session description):
v=(versione del protocollo)o=(originatore e identificatore della sessione)s=(nome della sessione)i=* (informazioni sulla sessione)u=* (URI della descrizione)e=* (indirizzo e-mail)p=* (numero di telefono)c=* (informazioni di connessione - non richieste se presenti in tutti i media)b=* (zero o più righe di informazioni sulla larghezza di banda)- Una o più descrizioni temporali (righe "t=" e "r=")
z=* (aggiustamenti di fuso orario)k=* (chiave di cifratura)a=* (zero o più righe di attributi di sessione)- Zero o più descrizioni di media
Descrizione temporale (Time description):
t=(periodo in cui la sessione è attiva)r=* (zero o più tempi di ripetizione)
Descrizione di media (Media description, se presente):
m=(nome del media e indirizzo di trasporto)i=* (titolo del media)c=* (informazioni di connessione - facoltative se presenti a livello di sessione)b=* (zero o più righe di informazioni sulla larghezza di banda)k=* (chiave di cifratura)a=* (zero o più righe di attributi di media)
Esempio SDP
v=0
o=jdoe 2890844526 2890842807 IN IP4 10.47.16.5
s=SDP Seminar
i=A Seminar on the session description protocol
u=http://www.example.com/seminars/sdp.pdf
[email protected] (Jane Doe)
c=IN IP4 224.2.17.12/127
t=2873397496 2873404696
a=recvonly
m=audio 49170 RTP/AVP 0
m=video 51372 RTP/AVP 99
a=rtpmap:99 h263-1998/90000
Sottosezioni
5.1 Protocol Version ("v=") (Versione del protocollo)
v=0
Il campo "v=" indica la versione del Session Description Protocol. Questo memo definisce la versione 0. Non esiste un numero di versione secondaria.
5.2 Origin ("o=") (Origine)
o=<username> <sess-id> <sess-version> <nettype> <addrtype> <unicast-address>
Il campo "o=" indica l'originatore della sessione, cioè il suo nome utente e l'indirizzo dell'host utente, oltre all'identificatore di sessione e al numero di versione.
5.3 Session Name ("s=") (Nome della sessione)
s=<session name>
Il campo "s=" è il nome testuale della sessione. Ogni descrizione di sessione DEVE avere uno e un solo campo "s=".
5.4 Session Information ("i=") (Informazioni sulla sessione)
i=<session description>
Il campo "i=" fornisce informazioni testuali sulla sessione. Ogni descrizione di sessione può avere al massimo un campo "i=" a livello di sessione, e ogni media può avere al massimo un campo "i=".
5.5 URI ("u=")
u=<uri>
Il campo "u=" contiene un URI che punta a ulteriori informazioni sulla sessione.
5.6 Email Address and Phone Number ("e=" and "p=") (Indirizzo e-mail e numero di telefono)
e=<email-address>
p=<phone-number>
Il campo "e=" contiene l'indirizzo e-mail della persona responsabile della conferenza. Il campo "p=" contiene il numero di telefono della persona responsabile della conferenza.
5.7 Connection Data ("c=") (Dati di connessione)
c=<nettype> <addrtype> <connection-address>
Il campo "c=" contiene le informazioni richieste per i dati di connessione.
5.8 Bandwidth ("b=") (Larghezza di banda)
b=<bwtype>:<bandwidth>
Il campo "b=" indica la larghezza di banda suggerita per la sessione.
5.9 Timing ("t=") (Tempi)
t=<start-time> <stop-time>
La riga "t=" specifica gli orari di inizio e fine della sessione.
5.10 Repeat Times ("r=") (Tempi di ripetizione)
r=<repeat interval> <active duration> <offsets from start-time>
La riga "r=" specifica i tempi per le sessioni ricorrenti.
5.11 Time Zones ("z=") (Fusi orari)
z=<adjustment time> <offset> <adjustment time> <offset> ...
La riga "z=" specifica aggiustamenti di fuso orario usati per compensare l'ora legale o altre variazioni di offset del fuso orario.
5.12 Encryption Keys ("k=") (Chiavi di cifratura)
k=<method>
k=<method>:<encryption key>
Il campo "k=" è usato per comunicare chiavi di cifratura.
5.13 Attributes ("a=") (Attributi)
a=<attribute>
a=<attribute>:<value>
Gli attributi sono il principale meccanismo per estendere SDP. Possono essere definiti a livello di sessione o a livello di media.
5.14 Media Descriptions ("m=") (Descrizioni di media)
m=<media> <port> <proto> <fmt> ...
Una descrizione di media inizia con una riga "m=" e contiene informazioni sufficienti a descrivere un flusso multimediale.
Nota: la Sezione 5 contiene numerosi dettagli tecnici e definizioni di sintassi ABNF. Per la specifica completa, vedere la documentazione ufficiale di RFC 4566.