Capitolo 5 L`architettura WAP

Transcript

Capitolo 5 L`architettura WAP
Capitolo 5 – L’architettura WAP: background
Capitolo 5
L’architettura WAP
Il Wireless Application Protocol (WAP) è il risultato degli sforzi del WAP Forum per
promuovere specifiche largamente appoggiate dagli ambienti industriali, riguardanti la tecnologia
per lo sviluppo di applicazioni e servizi che operano su reti di comunicazione wireless: WAP,
insomma, definisce strutture applicative e protocolli di rete per dispositivi wireless (telefoni
cellulari, PDA, ecc.).
Le specifiche estendono e influenzano sia le tecnologie delle reti mobili (come gli standard per
le reti di dati digitali) sia le tecnologie Internet (come XML, URL, i linguaggi di scripting e vari
formati di contenuto): tutti questi sforzi hanno come obiettivo quello di aiutare gli operatori, gli
industriali e gli sviluppatori a fronteggiare le sfide che si presentano nella costruzione di servizi
avanzati e differenziati e nella loro implementazione veloce e flessibile.
Gli obiettivi del WAP Forum sono:
• portare contenuti Internet e servizi avanzati sui telefoni cellulari ed altri terminali wireless;
• creare specifiche globali del protocollo che possano essere valide per differenti tecnologie di
rete;
• abilitare la creazione di contenuti ed applicazioni adattabili ad una grande varietà di portatori
e dispositivi;
• abbracciare ed estendere gli standard e le tecnologie esistenti.
Le specifiche riguardanti l’architettura WAP (liberamente scaricabili all’indirizzo
www.wapforum.org) si propongono di presentare il sistema e l’architettura del protocollo essenziali
per realizzare gli obiettivi del WAP Forum: esse rappresentano il punto di partenza per la
comprensione della tecnologia WAP.
5.1. Background
WAP si posiziona come punto di convergenza di due tecnologie di rete in rapida evoluzione:
comunicazioni wireless e Internet. Entrambi i mercati del wireless e di Internet stanno crescendo
molto velocemente e stanno continuamente raggiungendo nuovi clienti; la crescita esplosiva di
Internet ha alimentato la creazione di nuovi servizi di informazione, ma la maggior parte della
tecnologia sviluppata per Internet è stata progettata per computer desktop potenti, connessi a reti
affidabili dotate di banda di ampiezza medio-alta.
I dispositivi wireless presenti sul mercato di massa, al contrario, sono caratterizzati da un
ambiente computazionale primitivo, se confrontato con quello dei desktop: a causa delle loro
limitazioni tendono ad avere CPU deboli, poca memoria (ROM e RAM), severe limitazioni sul
consumo di potenza (batterie limitate), display piccoli (se non piccolissimi), e scomodi meccanismi
di immissione dati (ad esempio il tastierino alfanumerico). Analogamente, le reti per le
comunicazioni wireless presentano un ambiente di comunicazione ristretto, se confrontato alle reti
wired: a causa di limitazioni di base riguardanti l’energia delle onde, lo spettro delle frequenze
1
Capitolo 5 – L’architettura WAP: background
disponibile e la mobilità, le reti wireless tendono ad avere minore ampiezza di banda, maggiore
latenza, minore stabilità di connessione, disponibilità di servizio meno predicibile.
Le reti mobili stanno crescendo in complessità insieme al costo per l’approvvigionamento di
servizi a valore aggiunto. Per venire incontro alle richieste degli operatori delle reti mobili, le
soluzioni devono rispettare i seguenti principi:
• interoperabilità: terminali di diversi produttori devono poter comunicare attraverso reti
diverse tramite WAP;
• scalabilità: gli operatori delle reti mobili devono poter adattare i servizi alle necessità dei
clienti;
• efficienza: gli sviluppatori devono garantire qualità di servizio, compatibilmente con il
comportamento e le caratteristiche della rete mobile;
• affidabilità: gli operatori devono fornire un servizio consistente la cui disponibilità sia
predicibile;
• sicurezza: gli sviluppatori devono abilitare l’estensione dei servizi a reti potenzialmente non
protette, preservando comunque l’integrità e la privacy dei dati dell’utente;
• disponibilità: gli sviluppatori devono proteggere gli utenti da problemi come la negazione
del servizio.
Molte delle attuali reti mobili rendono disponibili agli utenti servizi avanzati: gli operatori delle
reti mobili si sforzano di presentarli in modo semplice ed allettante, anche per promuovere un
aumento nell’uso dei servizi stessi e per evitare che le adesioni calino. Funzioni standard, come il
controllo di chiamata, possono essere potenziate usando la tecnologia WAP, per fornire
un’interfaccia personalizzabile, mentre, per esempio, il suo utilizzo in servizi come il trasferimento
di chiamata può fornire la possibilità di scegliere, tramite un’interfaccia, se accettare la chiamata,
inviarla ad un’altra persona o a una casella vocale ecc.
Le specifiche WAP sono indirizzate agli operatori delle reti mobili e agli sviluppatori del
software, che potrebbero anche aver bisogno di adattare l’esistente tecnologia alle particolari
richieste del mercato di massa, ai dispositivi wireless commercialmente disponibili, eventualmente
introducendo nuove soluzioni tecnologiche, quando ciò possa rivelarsi utile.
Gli imperativi individuati dal WAP Forum per favorire il successo del protocollo WAP sono:
• sfruttamento degli standard esistenti dove sia possibile;
• definizione di una architettura a livelli, scalabile ed estensibile;
• supporto di quante più reti wireless sia possibile;
• ottimizzazione per portatori con banda ristretta ed alta latenza;
• ottimizzazione per un uso efficiente delle risorse del dispositivo;
• garanzia di supporto per applicazioni e comunicazioni sicure;
• abilitazione della creazione di MMI (Man Machine Interface) con la massima flessibilità e
controllo;
• garanzia di accesso alle funzionalità del dispositivo, come l’indicazione del controllo di
chiamata;
• facilitazione dell’approvvigionamento del servizio proveniente dall’operatore di rete e da
terze parti;
• supporto all’interoperabilità, con la definizione degli elementi obbligatori e facoltativi nelle
specifiche;
• creazione di un modello di programmazione e integrazione per i servizi di telefonia vera e
propria.
5.1.1. L’architettura WWW
L’architettura Internet WWW (World Wide Web) fornisce un modello di programmazione
flessibile e potente, basato su quello client/server, come si può vedere in Figura 5.1. Le applicazioni
e i contenuti sono presentati in formati di dati standard e sono gestiti da applicazioni note come
2
Capitolo 5 – L’architettura WAP: background
Web browser, che inviano sulla rete richieste di oggetti identificati da nomi precisi ai server di rete,
i quali a loro volta rispondono con dati codificati, usando formati standard.
Gli standard WWW specificano la maggior parte dei meccanismi necessari per costruire una
applicazione general purpose, includendo tra essi:
• modello di naming standardizzato: tutti i server e i loro contenuti sul Web sono nominati
univocamente attraverso lo standard Internet URL (Uniform Resource Locator):
• tipizzazione dei contenuti: a tutti i contenuti presenti sul Web viene assegnato un tipo
particolare, permettendo così ai Web browser di elaborare in modo corretto il contenuto
basandosi sul tipo;
• formati standardizzati: tutti i Web browser supportano un insieme di formati di contenuto
standard, che includono HTML (Hyper Text Markup Language), il linguaggio di scripting
JavaScript e una grande numero di altri formati;
• protocolli standardizzati: i protocolli di rete sono standardizzati e permettono a qualsiasi
Web browser di comunicare con qualsiasi Web server; il protocollo più comunemente usato
su WWW è HTTP (Hyper Text Transfert Protocol).
Tale infrastruttura permette agli utenti di raggiungere facilmente un grande numero di
applicazioni e servizi prodotti da terze parti e agli sviluppatori di creare facilmente applicazioni e
contenuti per una grande comunità di utenti.
Figura 5.1: modello WWW client/server.
Il Web definisce tre classi di entità di rete:
• server di origine: server sul quale una data risorsa (contenuto) risiede o viene creata;
• proxy: programma intermedio che agisce sia come server sia come client, con l’obiettivo di
rispondere a richieste da parte di altri client. Il proxy tipicamente si trova tra un client e un
server che non hanno la possibilità di comunicare in modo diretto, ad esempio a causa di un
firewall, e allora si provvede alla gestione delle richieste tramite il proxy o passandole oltre,
con un’eventuale traduzione, ad altri server;
• Gateway: server che si comporta da intermediario per conto di altri server. Diversamente dal
proxy, un Gateway riceve richieste come se fosse il server di origine per le risorse cercate: il
3 ruolo del Gateway.
Figura 5.2: il
Capitolo 5 – L’architettura WAP: background
client che ha fatto la richiesta può non essere consapevole di stare comunicando con un
Gateway. Il Gateway è un elemento fondamentale dell’architettura WAP, come si può
facilmente capire osservando la Figura 5.2.
5.1.2. L’architettura WAP
Il modello di programmazione WAP è simile al modello di programmazione tradizionale del
Web, che, da parte sua, fornisce tutta una serie di benefici alla comunità degli sviluppatori, essendo
un modello di programmazione intuitivo, con una architettura collaudata e la capacità di sfruttare
tool esistenti (ad esempio Web server, tool XML, ecc.). Naturalmente è stata messa a punto una
serie di ottimizzazioni ed estensioni per adattare le caratteristiche dell’ambiente wired a quelle
dell’ambiente wireless, ma, dove è stato possibile, sono stati adottati gli standard esistenti o sono
comunque stati usati come punto di partenza della tecnologia WAP.
Il formato di applicazioni e contenuti WAP è stato scelto in modo da risultare simile al classico
formato utilizzato sul Web; il contenuto è trasportato usando un insieme di protocolli di
comunicazione standard concettualmente simili ai protocolli di comunicazione WWW e un
microbrowser nel terminale wireless coordina l’interfaccia utente, risultando, così, analogo ad un
Web browser.
Anche WAP definisce un insieme di standard che abilitano la comunicazione tra i terminali
mobili e la rete, includendo tra essi:
• modello di naming standardizzato: per identificare il contenuto WAP sui server di origine
sono usati i medesimi URL del WWW;
• tipizzazione dei contenuti: tutti i contenuti WAP sono dotati di uno specifico tipo,
consistente con la tipizzazione WWW; questo permette all’interfaccia utente (User Agent)
WAP di trattare correttamente il contenuto, basandosi sul suo tipo;
• formati standardizzati: i formati WAP hanno preso spunto dalla tecnologia utilizzata sul
Web, includendo marcatori per la formattazione del contenuto su schermo (nel linguaggio
WML), il set di caratteri (UNICODE: www.unicode.org), un linguaggio di scripting
(WMLScript), informazioni sul calendario (Electronic Calendaring and Scheduling
Exchange Format: vCalendar) e immagini (formato WBMP);
• protocolli di comunicazione standardizzati: i protocolli di comunicazione WAP abilitano la
comunicazione tramite le richieste effettuate dal browser del terminale mobile verso il Web
server di rete. I tipi di contenuto WAP e i protocolli sono stati ottimizzati per il mercato di
massa dei dispositivi mobili, sfruttando la tecnologia dei Gateway per connettere il dominio
wireless con il WWW e spostando su essa molto del peso computazionale necessario per
l’ottimizzazione. Il WAP è caratterizzato dai seguenti componenti software:
Ø convertitore di protocollo: traduce le richieste provenienti dallo stack del
protocollo WAP (WAE, WSP, WTP, WTLS e WDP) per adattarle allo stack
del protocollo WWW (HTTP e TCP/IP) e viceversa;
Ø codificatori e decodificatori di contenuto: i codificatori traducono il
contenuto WAP in un formato codificato compatto, per ridurre la
dimensione dei dati da far viaggiare sulla rete mobile; questa traduzione
assicura che gli utenti dei terminali mobili possano accedere ad una
grande varietà di contenuti ed applicazioni WAP e che, nello stesso
tempo, lo sviluppatore possa costruire servizi ed applicazioni supportati
da una larga base di dispositivi mobili.
L’intermediazione effettuata dal Gateway WAP permette a contenuti ed applicazioni di essere
ospitati su server WWW standard e di essere sviluppati usando tecnologie collaudate, come lo
scripting CGI.
4
Capitolo 5 – L’architettura WAP: background
WAP
Gateway
Web
Server
HTML
Filter
Client WAP
WTA
Server
Figura 5.3: esempio di rete WAP.
Mentre l’uso classico di WAP prevede un Web server, un Gateway e un client WAP,
l’architettura WAP può anche supportare altre configurazioni: ad esempio è possibile creare un
server di origine che includa le funzionalità del Gateway. Un tale server potrebbe essere usato per
facilitare la realizzazione di soluzioni di sicurezza end-to-end o applicazioni che richiedono un
miglior controllo degli accessi o una garanzia di responsabilità.
Nell’esempio di Figura 5.3 il client WAP comunica con due server della rete mobile: una di esse
è il Gateway WAP, che traduce le richieste WAP in richieste WWW, permettendo quindi al client
WAP di dialogare con un qualsiasi Web server, e codificando le risposte provenienti dal Web server
nel formato binario compatto comprensibile dal client. Se il Web server fornisce contenuto WAP
(ad esempio WML), il Gateway WAP lo recupera direttamente dal Web server, mentre invece, se il
Web server fornisce contenuto WWW (come HTML), viene utilizzato un filtro per tradurre il
contenuto WWW in contenuto WAP: per esempio un filtro HTML può trasformare HTML in
WML.
Il server WTA (Wireless Telephony Application), invece, è un esempio di server di origine o di
Gateway che risponde direttamente a richieste provenienti dal WAP client: viene usato
generalmente per fornire un accesso WAP alle infrastrutture di telecomunicazione del provider della
rete wireless.
Figura 5.4: architettura WAP.
WAP abilita una infrastruttura di sicurezza flessibile che si focalizza non solo sul compito di
fornire sicurezza alla connessione in sé tra un client WAP e un server, ma anche attraverso tecniche
crittografiche applicate ai contenuti stessi. Se un browser e un server di origine vogliono una
sicurezza end-to-end, essi possono comunicare direttamente usando il protocollo WAP: la sicurezza
end-to-end, però, può essere realizzata solamente se lo stesso Gateway WAP è affidabile, ad
esempio essendo situato nello stesso luogo fisicamente sicuro in cui è situato anche il server di
origine.
5
Capitolo 5 – L’architettura WAP: background
L’architettura WAP fornisce un ambiente scalabile ed estensibile, adatto allo sviluppo di
applicazioni per dispositivi di comunicazione mobili: questo obiettivo è raggiunto attraverso una
progettazione a livelli dell’intero stack del protocollo, come si può vedere dalla Figura 5.4.
Ognuno dei 5 livelli dell’architettura è accessibile dai livelli superiori, così come anche da altri
servizi ed applicazioni: infatti, questa architettura a livelli abilita altri servizi all’utilizzo delle
potenzialità dello stack WAP, attraverso un insieme di ben definite interfacce, in modo tale che
applicazioni esterne possano accedere direttamente ai livelli di sessione, transazione, sicurezza e
trasporto.
5.2. WAE (Wireless Application Environment)
Il WAE è un ambiente per applicazioni general purpose basato sulla combinazione di tecnologie
World Wide Web e Mobile Telephony. L’obiettivo primario di WAE è quello di stabilire un
ambiente di interoperabilità che permetta agli operatori e ai fornitori di costruire applicazioni e
servizi che possano raggiungere una larga varietà di differenti dispositivi wireless in modo
efficiente e semplice. WAE include un microbrowser che fornisce le seguenti funzionalità:
• Wireless Markup Language (WML): linguaggio a marcatori leggero, simile a HTML, ma
ottimizzato per l’uso in terminali mobili per non congestionare il canale di comunicazione,
normalmente così ristretto, tra un client mobile e un server. Il protocollo WAP prevede la
codifica di WML in una forma bytecode binaria a token, che può portare ad una consistente
diminuzione della dimensione delle informazioni trasmesse al dispositivo client. Il
Codificatore WML esegue la conversione del formato WML nel formato compresso
chiamato WAP Binary XML (WBXML). Questa conversione in WBXML può essere
realizzata al volo sul server, ma più spesso viene fatta off- line, se il contenuto non ha la
necessità di essere cambiato dinamicamente durante una richiesta da parte di uno User Agent
WAP. Naturalmente può essere utile agli sviluppatori essere in grado di decodificare un
codice WML codificato in formato binario per fargli assumere una forma plaintext leggibile
da un essere umano: questo obiettivo può essere raggiunto grazie all’utilizzo di un
decodificatore.
• WMLScript: linguaggio di scripting leggero, simile a JavaScript™, anche se tra i due ci
sono tante differenze che, come al solito, servono per ottimizzare la comunicazione su un
canale di trasmissione wireless. La differenza maggiore consiste nel fatto che nelle
specifiche di WMLScript sono stati definiti sia un formato bytecode sia il relativo interprete;
WMLScript viene trasformato in bytecode e poi trasmesso al client mobile, mentre dal lato
client c’è un interprete in grado di eseguire il bytecode stesso. WMLScript è un linguaggio
tipato dinamicamente nel senso che è in grado di eseguire una conversione del tipo delle
variabili, è case sensitive, permette l’uso delle funzioni, contiene vari controlli di flusso.
• Wireless Telephony Application (WTA) e Wireless Telephony Application Interface
(WTAI): servizi di telefonia ed interfacce di programmazione; questa estensione fornisce
una interfaccia alle classiche applicazioni telefoniche dei telefoni mobili, come ad esempio
metodi per il controllo di chiamata, per l’invio di messaggi, per la manipolazione di rubriche
telefoniche, ecc.
• Supporto per ben precisi formati di dati: immagini, rubriche telefoniche e calendario.
Il WAE è stato costruito senza fare alcuna assunzione sul tipo di modello MMI (Man Machine
Interface) supportato, in modo da fornire agli sviluppatori solo un metodo generico per progettare le
applicazioni WAP. La mappatura di una applicazione WAP in un particolare MMI diventa un
compito specifico dello User Agent, che si occupa dell’interfaccia utente sul microbrowser.
L’architettura WAE è rivolta principalmente agli aspetti client side dell’architettura WAP, cioè
tutto ciò che riguarda l’interfaccia utente: è definita principalmente in termini di schemi di rete,
formato dei dati, linguaggio di programmazione e servizi condivisi. Internet ed il mondo WWW
6
Capitolo 5 – L’architettura WAP: WAE (Wireless Application Environment)
hanno ispirato e motivato molti aspetti delle specifiche del WAE: ne segue, quindi, un approccio
simile.
5.2.1. Il modello
WAE adotta un modello molto simile a quello WWW: tutti i dati sono specificati in formati
simili; per quanto riguarda il trasporto degli stessi si utilizza un protocollo standard nel dominio
WWW ed un protocollo HTTP- like nel dominio wireless. WAE migliora alcuni standard WWW in
modo da preservare le caratteristiche dei terminali e della rete mobile.
WAE assume l’esis tenza di un Gateway con funzionalità di codifica e decodifica dei dati verso e
da il client mobile, come si può vedere in Figura 5.5: lo scopo della codifica dei dati è quello di
minimizzarne la dimensione in modo da ridurre la banda occupata e l’energia richiesta in fase di
computazione dei dati dal lato client.
Figura 5.5: modello logico di WAE.
I principali elementi del modello WAE sono:
• WAE User Agent (interfaccia utente): software client-side che permette la visualizzazione
dei dati sul dispositivo dell’utente finale. L’interfaccia utente è integrata nell’architettura
WAP ed è a tutti gli effetti come un browser: serve per la visualizzazione di WML
codificato e WMLScript compilato;
• generatore di contenuto: applicazione o servizio di un server di origine (come ad esempio un
CGI script) che produce dati in formati standard, in risposta ad una richiesta proveniente
dallo User Agent del terminale mobile. WAE non specifica un generatore di contenuto
standard, ma si aspetta che sia uno dei tanti server di origine comunemente usati oggi nel
mondo WWW;
• decodificatore standard dei dati: un insieme ben definito di codifiche dei dati permette allo
User Agent (browser) di interpretare correttamente i dati. Lo standard di codifica include la
codifica compressa del WML, la codifica dei bytecode per WMLScript ed un formato
standard per le immagini ed altri tipi di dati.
7
Capitolo 5 – L’architettura WAP: WAE (Wireless Application Environment)
Figura 5.6: modello di Push WAE.
Non è sempre vero, però, che tutti i dati ricevuti dal terminale arrivino in risposta a particolari
richieste dell’utente: il WTA, per esempio, è in grado di generare un meccanismo che permette al
server di origine di distribuire dati al terminale senza che questi ne abbia fatto specifica richiesta: si
tratta del modello basato sul Push illustrato in Figura 5.6. (si consulti il Capitolo 7 per ulteriori
dettagli).
In alcuni casi, inoltre, ciò che il server di origine invia al terminale dipende dalle caratteristiche
del dispositivo stesso: queste sono comunicate al server di origine attraverso un meccanismo
standard di negoziazione che permette alle applicazioni di determinare le qualità peculiari dello
User Agent (come ad esempio la versione WML/WMLScript supportata, il formato delle immagini
supportato, eventuali supporti per il floating point, ecc.).
La situazione in cui un browser deve connettersi attraverso un proxy per raggiungere un server
di origine è molto simile al caso dei dispositivi wireless in cui l’accesso al server avviene attraverso
il Gateway. La maggior parte delle comunicazioni tra il browser ed il Gateway avviene usando
WSP, disinteressandosi del protocollo di comunicazione del server di destinazione. L’URL, usato
per trovare il contenuto desiderato, specifica sempre il protocollo di comunicazione usato dal server
di origine ed è indipendente da quello usato tra il browser del dispositivo mobile ed il Gateway. Il
Gateway è il responsabile delle conversioni di protocollo: in fase di richiesta traduce da WSP in un
altro protocollo (quello del server) ed in fase di risposta dal protocollo usato dal server a WSP.
Come esempio pensiamo ad un utente con un telefono WAP che effettua una richiesta usando uno
specifico URL. Il browser del terminale si connette al Gateway attraverso il protocollo WSP ed
invia una richiesta GET per quell’URL specifico. Il Gateway individua, attraverso l’URL,
l’indirizzo dell’host e crea con questo una sessione HTTP. Il server HTTP contattato esegue la
richiesta ed invia una risposta al Gateway che la codifica e la restituisce al browser, tramite la
sessione precedentemente aperta sul protocollo WSP.
L’esistenza del Gateway è obbligatoria, ma è concepibile immaginare un server di origine che
inglobi al proprio interno il WAP Gateway, con il relativo Codificatore WML e il relativo
compilatore WMLScript; inoltre è possibile memorizzare staticamente (o in cache) servizi del
server direttamente sottoforma di token WML e/o sottoforma di bytecode WMLScript per evitare la
conversione al volo del deck.
L’interazione tra l’utente ed il server d’origine avviene per mezzo di WML: quando un utente
desidera accedere ad un particolare servizio del server di origine, gli invia una richiesta attraverso lo
User Agent usando uno schema URL (ad esempio utilizzando il metodo HTTP GET). Il server
risponde inviando un singolo deck (normalmente in formato testuale). Il codificatore WML
(Encoder in Figura 5.7) residente nel Gateway (il Gateway in questo esempio è inglobato all’interno
del server di origine) converte ogni deck WML nel corrispettivo formato binario che viene restituito
al client, in modo che questi possa interpretarlo e visualizzarlo. Inoltre il Gateway può eseguire
alcune ottimizzazioni, basandosi sulle caratteristiche del client (ciò avviene solo se vi è stata una
effettiva negoziazione tra il client ed il Gateway).
8
Capitolo 5 – L’architettura WAP: WAE (Wireless Application Environment)
Nel caso di WMLScript il concetto è del tutto analogo, con la sola differenza che il Gateway ha
al suo interno un compilatore che compila la risposta del server in bytecode da inviare al client
(WMLScript Compiler, in Figura 5.7).
Figura 5.7: architettura logica dello User Agent con Gateway inglobato nel server di origine.
5.2.2. I componenti
WAE è diviso in due livelli logici, come si può vedere in Figura 5.8:
• User Agent: include elementi come il browser, un editor dei messaggi, una rubrica, ecc.;
• servizi e formati: include gli elementi ed i formati accessibili dal browser quali il WML, il
WMLScript, il formato delle immagini, ecc.
WAE separa i servizi dallo User Agent pensando ad un ambiente con più di un User Agent.
Questo punto di vista logico, però, non preclude né forza nessuna implementazione standard: è
possibile riunire tutti i servizi in un unico User Agent o distribuirne uno per ogni User Agent. La
scelta è lasciata agli sviluppatori.
5.2.2.1. User Agent
Lo User Agent fondamentale per il WAE è il WML User Agent. Il WAE permette inoltre
l’integrazione di un User Agent WTA per consentire l’accesso e le interazioni con le caratteristiche
dei telefoni mobili, come ad esempio il controllo di chiamata.
Figura 5.8: componenti del client.
I servizi e i formati supportati dagli User Agent sono:
• WML
• WMLScript
• Formato dei dati supportati dal WAE
9
Capitolo 5 – L’architettura WAP: WAE (Wireless Application Environment)
5.2.2.2. WML
WML è un linguaggio basato sui tag ed è specificato come tipo di documento XML; inoltre è
ottimizzato per l’interazione con utenti che hanno a disposizione dei terminali aventi display
piccoli, possibilità di input limitate, connessioni aventi a disposizione una banda ridotta, limitate
risorse di memoria e limitate risorse computazionali.
Il WML risultante ha un’implementazione basata su card e deck. Una interazione con un utente
è descritta da un insieme di card, raggruppate insieme in un unico documento (deck). Dal punto di
vista logico un utente naviga attraverso un insieme di card: può spostarsi da una card all’altra, può
effettuare delle scelte, può richiedere informazioni. Le istruzioni presenti in una singola card
possono invocare servizi che necessitano di particolari interazioni con il server di origine.
I deck WML possono essere memorizzati in un file statico o in un server di origine o possono
essere generati dinamicamente dal server. Ogni card in un deck contiene una specifica per una
particolare interazione con l’utente. Il WML lascia ampia libertà di azione agli sviluppatori per
quanto riguarda l’implementazione dell’interfaccia MMI (Man Machine Interface): è libera la scelta
dell’implementazione della richiesta da parte dell’utente ed inoltre lo User Agent deve decidere
come presentare gli elementi all’interno di una card in base alle caratteristiche del dispositivo stesso
(se si ha a disposizione un display ampio si può scegliere di visualizzare tutte le informazioni della
card, altrimenti le si frammenta in più unità). Il WML include inoltre le seguenti caratteristiche:
• supporto per testi ed immagini: il WML lascia una ampia libertà di scelta per quanto
riguarda la rappresentazione dei dati all’utente finale. Il WML fornisce vari elementi di testo
(come ad esempio il grassetto, il corsivo, le maiuscole, ecc.); vari modelli di line break (line
wrapping, line wrapping suppression, ecc.); vari modelli di tabulazione;
• supporti per l’input utente: WML include un piccolo insieme di meccanismi di input; per
esempio supporta la classica modalità della casella di testo da riempire con i propri dati,
oppure una option selection che presenta una lista di opzioni selezionabili;
• navigazione e Stack History: la navigazione include link ipertestuali stile HTML, elementi di
navigazione tra le card, storia degli elementi navigati;
• supporto internazionale: l’insieme dei caratteri presenti nei documenti WML è UNICODE:
questo abilita la rappresentazione della maggior parte delle lingue e dei dialetti;
• ottimizzazioni per connessioni a banda ristretta: il WML include un’ampia varietà di
tecnologie per ottimizzare la comunicazione. Queste comprendono la possibilità di
specificare un insieme di pagine utente in un unico trasferimento di rete. Inoltre sono
supportati una serie di meccanismi che velocizzano il tempo di risposta e diminuiscono la
quantità dei dati scambiati;
• gestione dello stato e del contesto: ogni controllo di input WML può introdurre delle
variabili. Lo stato delle variabili può essere utilizzato per modificare il contenuto o
parametrizzare una card senza dover comunicare con il server. Inoltre il tempo di vita di una
variabile può essere maggiore del singolo deck e può essere condiviso tra più deck senza
dover usare un server per salvare lo stato intermedio tra due invocazioni a deck.
Un esempio di codice WML è il seguente:
<?xml version=“1.0”?>
<!DOCTYPE wml PUBLIC”//WAPFORUM//DTD WML 1.1//EN”
“http://www.wapforum.org/DTD/wml_1.1.xml”>
<wml>
<template>
<do type=“prev”>
<noop/>
</do>
</template>
10
Capitolo 5 – L’architettura WAP: WAE (Wireless Application Environment)
<card id=“Orario”title=“Orario”>
<p align=“center”>
<img src=“logo.gif”alt=“Logo”align=“top”/>
</p>
<p align=“left”>
<b>Inserire il codice:</b>
<br/>
<input maxlength=“5”type=“text”name=“Cod”/>
<do type=“accept”>
<go href=“$(Cod).wml”></go>
</do>
</p>
</card>
</wml>
Per una descrizione più ricca di WML si consulti il Capitolo 6.
5.2.2.3. WMLScript
WMLScript è un sottoinsieme del linguaggio JavaScript (ovviamente ne ridefinisce alcune
caratteristiche per adattarlo ai dispositivi mobili) e permette di aggiungere una logica procedurale ai
deck del WML. In particolare il WMLScript consente di abilitare:
• un controllo validità dell’input utente senza dover inviarlo prima al server di origine;
• un semplice accesso al dispositivo e alle periferiche;
• una interazione con l’utente senza dover continuamente far riferimento al server.
WMLScript è in grado di trattare diversi tipi di dato: boolean, integer, floating point e stringhe;
supporta diversi tipi di operazioni, quali:
• operazioni di assegnazione;
• operazioni aritmetiche;
• operazioni logiche;
• operazioni di confronto;
e fornisce inoltre una serie di categorie di funzioni, quali:
• funzioni di script locali;
• funzioni di script esterne;
• funzioni di librerie standard.
Un esempio di codice WML che richiama funzioni WML Script è il seguente:
<?xml version=“1.0”?>
<!DOCTYPE wml PUBLIC”//WAPFORUM//DTD WML 1.1//EN”
“http://www.wapforum.org/DTD/wml_1.1.xml”>
<wml>
<card id=“card1”title=“Stato”newcontext=“true”>
<p>
Seleziona un paese:
<select name=“nome_paese”tabindex=“2”>
<optgroup title=“PaesiScandinavi”>
<option value=“Danimarca”>Danimarca</option>
<option value=“Finlandia”>Finlandia</option>
<option value=“Norvegia”>Norvegia</option>
<option value=“Svezia”>Svezia</option>
11
Capitolo 5 – L’architettura WAP: WAE (Wireless Application Environment)
</optgroup>
<optgroup title=“EuropaOccidentale”>
<option value=“Francia”>Francia</option>
<option value=“Germania”>Germania</option>
<option value=“Italia”>Italia</option>
<option value=“Spagna”>Spagna</option>
</optgroup>
</select>
<br/>La capitale di<br/>
$(nome_paese)<br/>
è: <u>$(capitale)</u><br/>
<!Vengono inviati ad uno script WML il simbolo dello stato,
una variabile per lo stato e una per il nome della capitale.
Lo script determinerà la capitale dello stato specificato
e la memorizzerà nella variabile “capitale”.>
<do type=“accept”label=“Trova capitale”>
<go href=“getCapitale.wmls#getCapitale(‘capitale’, ‘$(nome_paese)’)”/>
</do>
<do type=“help”label=“Help”>
<go href=“#helpCard”/>
</do>
</p>
</card>
<card id=“helpCard”title=“Help”>
<do type=“prev”label=“Back”><prev/>
</do>
<p>
Seleziona il nome dello stato e ne verrà determinata
la capitale.
</p>
</card>
</wml>
/*
* Codice dello script: dato un nome di stato e una variabile, pone
* in questa la capitale dello stato.
*/
extern function getCapitale(capitale, stato) {
var returnCapitale=“Sconosciuto;
if (“Danimarca”== stato) {
returnCapitale =“Copenhagen”;
} else if (“Finlandia”== stato) {
returnCapitale =“Helsinki”;
} else if (“Norvegia”== stato) {
returnCapitale =“Oslo”;
12
Capitolo 5 – L’architettura WAP: WAE (Wireless Application Environment)
} else if (“Svezia”== stato) {
returnCapitale =“Stoccolma”;
} else if (“Germania”== stato) {
returnCapitale =“Berlino”;
} else if (“Francia”== stato) {
returnCapitale =“Parigi”;
} else if (“Spagna”== stato) {
returnCapitale =“Madrid”;
} else if (“Italia”== stato) {
returnCapitale =“Roma”;
}
WMLBrowser.setVar(capitale, returnCapitale);
/*
* e poi si accerta che il browser aggiorni il display.
*/
WMLBrowser.Refresh();
};
5.2.2.4. Formato dei dati supportati dal WAE
Come abbiamo visto, i due più importanti formati definiti nel WAE sono il WML e il
WMLScript, ma questi due non sono gli unici supportati. Infatti il WAE definisce ed adotta altri
formati, quali:
• immagini: il loro formato è caratterizzato da una codifica molto ridotta e richiede poca
memoria e bassi utilizzi della CPU;
• messaggi multipart: uno schema di codifica multipart è ottimizzato per permettere lo
scambio di dati di tipi diversi su WSP;
• formati specifici dell’interfaccia utente: sono due formati specifici aggiuntivi per lo scambio
di dati sia tra il client ed il server sia direttamente tra due client.
5.2.2.5. Caratteristiche dello User Agent
Per ottimizzare il modello client server, lo User Agent può spedire al WAP Gateway e al server
di origine un certo numero di sue caratteristiche che permettono così al server di rispondere solo
con dati appropriati, correttamente interpretabili dal client.
Come detto in precedenza, lo User Agent per comunicare con la rete mobile usa il protocollo
WSP (in particolare i dati e le intestazioni sono nella forma WSP/HTTP 1.1). L’intestazione del
WSP/HTTP 1.1 è usata per definire la negoziazione del formato dei dati nonché il set di caratteri ed
il linguaggio usato dallo User Agent. Per ogni tipo di dato incluso nell’intestazione Accept del
WSP/HTTP, lo User Agent può includere un parametro (uaprof) specificando l’URI che contiene un
profilo delle sue caratteristiche.
Un esempio di intestazione Accept potrebbe essere:
Accept: application/xWAP.wmlc; uaprof=http://www.vendor.com/phone1,
application/xWAP.wmlscriptc; uaprof=http://www.vendor.com/phone1,
text/xvcard,
text/xvcal
dove wmlc significa WML codificato, analogamente wmlscriptc significa WMLScript compilato,
xvcal specifica il formato per il calendario, ecc.
13
Capitolo 5 – L’architettura WAP: WAE (Wireless Application Environment)
Per i tipi di dato WAP, il parametro uaprof, insieme alle intestazioni Accept WSP/HTTP,
AcceptLanguage e AcceptCharset, descrive completamente tutti i parametri del dato negoziabili. La
combinazione di queste tre viene generalmente indicata come intestazione delle caratteristiche.
Si noti infine che alcuni Gateway hanno una cache per memorizzare gli ultimi dati ricevuti dal
server di origine. Se lo User Agent invia una richiesta al Gateway specificando le sue caratteristiche
ed i dati richiesti sono in cache, il Gateway li può spedire direttamente al client senza passare dal
server solo se questi hanno caratteristiche identiche a quelle specificate dallo User Agent, altrimenti
occorre demandare la richiesta al server (specificandogli le caratteristiche desiderate).
5.2.2.6. Il trattamento delle immagini
WAE introduce un formato bitmap ottimizzato, il Wireless BitMaP(WBMP), per il trattamento
delle immagini sui terminali mobili (che come visto hanno display limitati, poca memoria, CPU
ridotte, ecc.). Una immagine WBMP ha le seguenti caratteristiche:
• codifica binaria compatta;
• ottimizzazioni per bassi costi computazionali sul client.
Il formato WBMP è indipendente dal terminale e contiene solo le informazioni grafiche. Le
specifiche del formato WBMP si dividono in due parti:
• una intestazione generica che contiene le seguenti informazioni (comuni a tutti i tipi di
formato delle immagini):
Ø tipo (fino ad oggi ne è stato specificato solo uno: il tipo 0);
Ø larghezza e lunghezza;
Ø numero versione WBMP.
• formato dei dati per quel particolare tipo di immagine WBMP.
Il formato WBMP è configurato in accordo con il valore del campo Type (TypeField) che rivela
le più importanti informazioni riguardo la codifica delle informazioni quali ad esempio:
• organizzazione dei pixel e codifica;
• organizzazione delle palette e codifica;
• caratteristiche di compressione;
• codifica delle animazioni.
Quando si inizia una sessione con il server lo User Agent comunica tutti i tipi WBMP supportati
usando Accept o ContentType. Ad esempio:
Accept: image/vnd.WAP.wbmp; level = 0; (oppure)
ContentType: image/vnd.WAP.wbmp; level = 0;
Per ora è supportato solo il tipo 0 (codifica in bianco e nero senza compressione).
La codifica delle immagini WBMP usa per i valori interi una rappresentazione multibyte, che
consiste in una serie di ottetti in cui il bit più significativo è il flag di prosecuzione (usato per
indicare se l’ottetto presente è l’ultimo della sequenza multibyte), mentre i restanti sette contengono
un valore scalare. Un singolo valore intero è codificato in una sequenza di N ottetti, in cui i primi
N-1 ottetti hanno il bit di prosecuzione a 1, mentre l’ultimo ottetto lo ha a zero. I rimanenti sette bit
sono codificati seguendo la codifica big-endian, nella quale i bit più significativi sono trasmessi per
primi.
Il campo dell’header contiene un identificatore numerico del tipo di immagine codificato a
multi-byte (Type Field), un ottetto di informazioni generali sull’header stesso (FixHeaderFiled),
zero o più campi di header aggiuntivi (ExtField), infine due campi di specifica della larghezza e
della lunghezza dell’immagine, sempre codificati a multi-byte (Width e Height).
L’intestazione di un’immagine WBMP è mostrata in Tabella 5.1.
14
Capitolo 5 – L’architettura WAP: WAE (Wireless Application Environment)
Data Type
TypeField
FixHeaderField
ExtHeaderField
Width
Height
Lunghezza in bit (h e k sono interi arbitrari)
8
8
0
8...8*h
8...8*k
Tabella 5.1. Intestazione di una immagine WBMP.
WBMP di tipo 0 ha le seguenti caratteristiche:
• no compressione;
• colore: 1 bit (bianco = 1, nero = 0);
• profondità: 1 bit di profondità (monocromatico, non a livelli di grigio);
L’immagine WBMP è organizzata in righe di pixel, ognuna rappresentata da una sequenza di
ottetti. Il singolo bit rappresenta l’intensità del pixel (1=bianco).
5.3. WSP (Wireless Session Protocol)
Il WSP fornisce al livello di applicazione una interfaccia consistente per due differenti servizi di
sessione : il primo è un servizio connection oriented che opera sopra il protocollo di livello
transazionale (WTP), mentre il secondo è un servizio connectionless che opera sopra il servizio
datagram (WDP). La differenza essenziale tra le due classi di servizio è che il servizio connection
oriented usa il protocollo WTP per realizzare un servizio affidabile, in cui non vengono persi i dati,
attraverso un paradigma richiesta/risposta con ritrasmissione di dati perduti, ritrasmissioni selettive,
segmentazione e riassemblamento di pacchetti voluminosi, indirizzamento con numero di porta,
metodi per il controllo di flusso, connessioni di lunga durata con scambio di dati bidirezionale. Il
servizio connectionless, invece, lascia viaggiare le informazioni in maniera completamente
indipendente, disordinata, in cui i dati possono essere persi o duplicati.
Il WAP Gateway negozia le sessioni WSP con i terminali, consentendo a tutti i terminali
abilitati di creare una sessione. Ovviamente ad un servizio connectionless non è associata alcuna
informazione di sessione: ciò significa che non può essere usato nessun header per ottimizzare
l’utilizzo della banda. Entrambi i servizi possono operare su un canale sicuro (WTLS).
Il WSP consiste di servizi adatti per applicazioni di browsing (WSP/B) garantendo le seguenti
funzionalità:
• funzionalità e semantica HTTP/1.1 in codifica OTA (Over The Air) compatta;
• sessioni di lunga durata attraverso scambio di token tra il client e il server;
• possibilità di interrompere le transazioni processate sul server;
• sospensione e ripresa della sessione con eventuale migrazione della stessa su un’altra
macchina, per l’implementazione del meccanismo di bilanciamento del carico (load
balancing);
• gestione di push dal server al client;
• estensione dei metodi di richiesta/risposta;
• gestione delle chiavi e autenticazione;
• negoziazione delle caratteristiche del protocollo e dei tipi di contenuto;
• negoziazione per il supporto di transazioni multiple, simultanee, asincrone;
WSP è ottimizzato per reti a banda ristretta con latenza relativamente lunga, attraverso un uso
efficiente della banda stessa (codifica binaria compatta di header e tipi di contenuto) ed è progettato
per permettere ad un Gateway WAP di connettere un client WSP ad un server HTTP standard.
WSP fornisce un mezzo per lo scambio organizzato di dati tra applicazioni client/server. In
particolare fornisce alle applicazioni un mezzo per:
15
Capitolo 5 – L’architettura WAP: WSP (Wireless Session Protocol)
• stabilire una sessione stabile tra il client e il server e rilasciarla in modo ordinato;
• accettare attraverso la negoziazione un livello comune di servizi tra il client ed il server;
• scambiare dati tra il client ed il server usando una codifica compatta;
• sospendere e ripristinare la sessione.
L’implementazione del WSP segue fedelmente l’HTTP/1.1 per quanto riguarda la negoziazione
delle modalità di trasmissione: di conseguenza tutti i suoi metodi sono supportati e inoltre le
richieste spedite dal client al server e le corrispondenti risposte includono sia un’intestazione
(header: sono usati generalmente per definire i tipi di dati utilizzati, il set di caratteri usato, la
lingua, ecc.) sia i dati.
È prevista una codifica binaria compatta per tutti gli header generici (cioè gli header usati nella
maggioranza dei casi) per ridurre l’overhead del protocollo.
Una delle caratteristiche principali del WSP è quella che riguarda il tempo di vita di una
sessione: questo tempo non è infatti legato in alcun modo al livello di trasporto sottostante (ad
esempio una sessione può essere sospesa mentre si trova nello stato di idle per liberare le risorse di
rete e salvaguardare il consumo della batteria del dispositivo wireless). Inoltre una sessione può
essere ripristinata su una rete di un portatore diverso da quello che era attivo prima della
sospensione della stessa.
Tra le novità portate dal WSP vi è l’introduzione di tre meccanismi di push per il trasferimento
dei dati:
• push confermato all’interno di una sessione esistente;
• push non confermato all’interno di una sessione esistente;
• push non confermato all’esterno di una sessione esistente.
Nel primo caso il server riceve una conferma dal client che i dati (non richiesti) che gli ha
consegnato sono arrivati, mentre nel secondo non vi è nessuna conferma. Entrambi i meccanismi,
però, operano su una sessione esistente e stabile. Nel terzo caso invece vi è un meccanismo di push
all’esterno di una sessione esistente: in questo caso si assume che esista una sessione di default.
Il WSP supporta richieste asincrone, cosicché il client può inviare simultaneamente al server più
di una richiesta. Questa opzione permette di migliorare l’utilizzo della banda in quanto è possibile
riunire in pochi messaggi richieste o risposte multiple.
5.3.1. Tipi di primitive e parametri
La comunicazione tra i livelli e tra le entità all’interno di una sessione è compiuta per mezzo di
primitive di servizio. Le primitive di servizio rappresentano in modo astratto lo scambio logico di
informazioni e controlli tra il livello di sessione e i livelli adiacenti.
Le primitive di servizio sono un mezzo per illustrare i servizi forniti da un livello di protocollo
ai livelli superiori. La sintassi generale di una primitiva è la seguente: X-Servizio.tipo(parametri)
dove X definisce il livello del servizio. I tipi di primitive definiti sono descritti in Tabella 5.2.
Tipo
Request
Indication
Response
Confirm
Abbreviazione
req
ind
res
cnf
Descrizione
Un’entità richiede che il servizio faccia qualcosa.
Un’entità viene informata di un evento.
Un’entità vuole rispondere a un evento.
È arrivata la risposta a una richiesta precedente.
Tabella 5.2. Tipi.
Le primitive di servizio sono definite usando tabelle indicanti quali parametri e di che tipo è
possibile usare con i diversi tipi di primitive. In seguito ana lizzeremo le primitive di servizio (ed i
loro parametri) utilizzate dalle due modalità operative previsti dal WSP: quello con connessione e
quello senza connessione.
16
Capitolo 5 – L’architettura WAP: WSP (Wireless Session Protocol)
5.3.2. Servizi di sessione con connessione
Una sessione con connessione è composta da una serie di servizi (alcuni dei quali opzionali)
asimmetrici (le operazioni disponibili per il client ed il server connessi dalla sessione sono
differenti). I principali servizi sono:
• Session Management: permette ad un client di connettersi con un server e di concordare le
opzioni del protocollo da usare. Un server può rifiutare il tentativo di connessione o
ridirigere il client ad un altro server. Se accetta, durante la costituzione della sessione il
client ed il server si scambiano delle informazioni e negoziano dei parametri che si aspettano
siano validi per tutta la durata della sessione. Sia il server che il client possono poi terminare
la sessione.
• Method Invocation: permette al client di chiedere ad un server l’esecuzione di una
operazione e la restituzione del risultato.
• Exception Reporting: permette al fornitore del servizio di notificare all’utente il verificarsi di
eventi che non causano il cambiamento di stato di una sessione.
• Push: permette al server di inviare al client informazioni non richieste: questo servizio non è
confermato.
• Confirmed Push: come sopra, ma in questo caso il client conferma la ricezione delle
informazioni.
• Session Resume: mezzo attraverso il quale è possibile sospendere la sessione preservandone
lo stato; è usato ad esempio quando il fornitore del servizio scopre che le future
comunicazioni non potranno avere luogo fino a che non vengono effettuate delle azioni
correttive dall’utente o dalle entità di gestione della sessione.
I primi due tipi di servizi sono sempre disponibili, gli altri sono definiti dalla negoziazione tra il
client ed il server in fase di costituzione della sessione.
5.3.3. Variabili di connessione o capabilities
Durante la costituzione della sessione vengono negoziati tra il client ed il server le
caratteristiche della connessione o capabilities (Tabella 5.3).
17
Capitolo 5 – L’architettura WAP: WSP (Wireless Session Protocol)
Nome capability
Aliases
Tipo
Lista di indirizzi
Client SDU Size
Intero positivo
Extended Method
Insieme di nomi di
metodi
Descrizione
Indica una lista di indirizzi alternativi attraverso
i quali è possibile accedere allo stesso servizio.
Indica la massima dimensione che può
assumere una SDU (Service Data Unit) spedita
dal client durante la sessione.
Insieme di metodi supplementari che il client
ed il server possono supportare durante questa
sessione.
Numero massimo di metodi invocati che
possono essere attivi nello stesso istante
durante la sessione.
Numero massimo di data push da confermare
che possono essere attive nello stesso istante
durante la sessione.
Abilita caratteristiche e servizi opzionali
Maximum Outstanding Intero positivo
Method Request
Maximum Outstanding Intero positivo
Push Request
Protocol Options
Server SDU Size
Insieme di
caratteristiche e
facilitazioni
Intero positivo
Indica la massima dimensione che può
assumere una SDU (Service Data Unit) spedita
dal server durante la sessione
Tabella 5.3. Capabilities.
Per ulteriori dettagli si rimanda all’Appendice B.
5.4. WTP (Wireless Transaction Protocol)
Il WTP svolge le sue funzioni al di sopra del servizio datagram: si tratta di un protocollo leggero
ed orientato alla transazione, adeguato per una implementazione su client poco potenti. WTP opera
in modo efficiente su reti datagram wireless sicure e non sicure.
A differenza del TCP, che trasmette una grande quantità di informazioni per ciascuna
transazione richiesta/risposta, il WTP non mantiene traccia dell’instradamento, perché esiste una
unica possibile strada tra il WAP Gateway e il microbrowser wireless.
Il protocollo di transazione è definito per fornire i servizi necessari al browsing interattivo
(richiesta/risposta). Durante una sessione, il client richiede informazioni ad un server, fisso o
mobile, che risponde con i dati richiesti. WTP si appoggia direttamente al livello datagram (nel caso
di connessioni non sicure), oppure al livello sicurezza WTLS (nel caso di connessioni sicure).
I benefici derivanti dall’utilizzo del WTP sono:
• miglioramento dell’affidabilità su servizi datagram. WTP solleva i livelli più alti dal compito
delle ritrasmissioni e degli acknowledgement che sono necessari quando si opera su servizi
datagram.
• miglioramento dell’efficienza su servizi connection oriented.
Il WTP è “message oriented” ed è progettato per servizi orientati alla transazione, quali ad
esempio il browsing; le due entità fondamentali che, dialogando tra loro, permettono la
comunicazione su tale protocollo sono:
• Initiator: provider WTP che dà inizio effettivamente una transazione;
• Responder: provider WTP che risponde ad una richiesta di inizio transazione.
18
Capitolo 5 – L’architettura WAP: WTP (Wireless Transaction Protocol)
5.4.1. Caratteristiche
Le caratteristiche principali del WTP sono di seguito riportate:
• tre classi di servizi di transazione:
Ø Classe 0: richieste unidirezionali non affidabili con invocazione di
messaggi in modo instabile e senza messaggi di ritorno;
Ø Classe 1: richieste unidirezionali affidabili con invocazione di messaggi in
modo stabile e senza messaggi di ritorno;
Ø Classe 2: transazioni bidirezionali richiesta/risposta affidabili con
invocazione di messaggi in modo stabile ed esattamente un messaggio di
ritorno;
• stabilità e resistenza della transazione ottenuta attraverso identificatori, acknowledgement,
rimozione dei duplicati e ritrasmissioni;
• affidabilità tramite conferma di ogni messaggio ricevuto da parte dell’utente (opzionale);
• utilizzo della concatenazione (dove possibile) per trasmettere Protocol Data Unit (PDU)
multipli in un unico Service Data Unit (SDU) di un datagram; la concatenazione è una
procedura che permette di trasportare PDU multiple in un’unica SDU, mentre la separazione
è la procedura che permette di estrarre PDU multiple da un’unica SDU;
• orientamento dei messaggi: l’unità base di scambio è un intero messaggio e non un flusso di
byte;
• minimizzazione del numero di transazioni: trasmissione di dati fuori banda e
acknowledgement ritardati per ridurre il numero di messaggi inviati;
• supporto dell’abort di transazioni pendenti: l’abort può essere provocato dall’utente
cancellando una richiesta di servizio;
• utilizzo transazioni asincrone: il Responder invia indietro il risultato appena il dato diventa
disponibile.
5.4.2. Relazione con gli altri protocolli
La Tabella 5.4 illustra il tipo di servizi forniti al WTP user (ad esempio il livello WSP).
WTP user
WSP
WTLS
(opzionale)
WDP Datagram
Transport
Bearer Network
(IP, GSM/SMSUSSD)
Servizio garantito dal livello WTP
Gestione transazioni, ritrasmissione e rimozione
duplicati, concatenazione e separazione
Compressione, crittografia, autenticazione
Port number addressing, segmentazione e
riassemblaggio, rilevazione errori
Instradamento, Device addressing (IP address,
numero di telefono), segmentazione e
riassemblamento, rilevazione errori.
Tabella 5.4. Servizi forniti al WTP user
WTP è specificato per funzionare sopra un servizio di trasporto datagram: poiché i datagram
sono instabili, al WTP è richiesto di eseguire eventuali ritrasmissioni necessarie e inviare
acknowledgement per fornire così un servizio stabile al WTP user. Inoltre il WTP è anche
responsabile della concatenazione di molteplici PDU in un unico SDU.
Il Datagram Transport è richiesto per instradare i datagram in arrivo ai corretti WTP user.
Normalmente il WDP user (ad esempio il livello WTP) è identificato da un unico numero di porta.
Il compito del WDP è quello di fornire un servizio datagram all’user WTP il quale non deve curarsi
19
Capitolo 5 – L’architettura WAP: WTP (Wireless Transaction Protocol)
assolutamente delle capacità del tipo di rete mobile sottostante. Fortunatamente, il servizio
datagram è un semplice meccanismo di trasporto e la maggior parte dei portatori lo fornisce già
come un servizio (ad esempio l’IP utilizza l’UDP per questo servizio).
Il portatore è responsabile dell’instradamento dei datagram ai dispositivi destinazione.
L’indirizzamento dipende dal tipo di rete (indirizzamento IP o numero del telefono). Inoltre alcune
reti utilizzano l’allocazione dinamica degli indirizzi ed un server deve essere coinvolto nel cercare
l’indirizzo corrente di un dispositivo specifico.
Il WTP non prevede meccanismi di sicurezza: tale gestione è interamente svolta dal livello
WTLS (se presente).
5.4.3. Entità di gestione
L’entità di gestione WTP è usata come interfaccia tra il livello WTP e l’ambiente del dispositivo
(WAE). Questa entità fornisce informazioni al livello WTP riguardo ai cambiamenti dell’ambiente
del dispositivo che potrebbero influire sulle corrette operazioni del WTP stesso.
Il protocollo WTP è progettato con l’assunzione che l’ambiente in cui opera sia in grado di
ricevere e trasmettere dati. Questa semplice assunzione richiede che:
• il dispositivo mobile sia all’interno di una zona di ricezione;
• il dispositivo mobile abbia sufficiente potenza;
• il dispositivo mobile abbia sufficienti risorse (CPU e memoria);
• il protocollo WTP sia correttamente configurato;
• l’utente voglia ricevere/trasmettere dati.
L’entità monitorizza queste caratteristiche e notifica al WTP eventuali cambiamenti. Per
esempio, se il dispositivo esce da una zona di copertura (non c’è ricezione) l’entità di gestione del
portatore comunica all’entità di gestione del WTP che la trasmissione/ricezione su quella rete non è
più possibile. Di conseguenza l’entità di gestione del WTP gli comunica di chiudere tutte le
connessioni attive con quel portatore.
5.4.4. Requisiti necessari del livello sottostante
Il servizio datagram (che è il livello sottostante al WTP) deve trattare le seguenti funzioni:
• instradare i datagram in arrivo al livello WTP;
• aggiungere informazioni alle SDU sfuggite al livello WTP;
• individuare errori (ad esempio utilizzando il checksum).
Inoltre il WTP si aspetta che i livelli sottostanti forniscano la segmentazione ed il
riassemblaggio (SAR). Normalmente questo tipo di servizio è fatto dal livello sottostante al
datagram (ad esempio nelle reti IP il protocollo IP supporta il SAR).
Per ulteriori dettagli sul protocollo WTP si rimanda all’Appendice B.
5.5.WTLS(Wireless Transport Layer Security)
WTLS è un protocollo di sicurezza che trova il suo fondamento nel protocollo industriale
standard Transport Layer Security (TLS), formalmente noto come Secure Sockets Layer (SSL).
WTLS viene proposto insieme ai protocolli di trasporto WAP, dopo essere stato ottimizzato per
l’uso su canali di comunicazione con banda ristretta. WTLS garantisce le seguenti funzionalità:
• integrità dei dati: il dato spedito tra il terminale e il server non deve essere modificato o
corrotto;
• privacy: il dato spedito tra il terminale e il server è privato e non deve essere compreso da un
qualunque intermediario che intercetti il flusso dei dati;
• autenticazione: il protocollo stabilisce l’autenticità del terminale e dell’applicazione server;
20
Capitolo 5 – L’architettura WAP: WTLS (Wireless Transport Layer Security)
•
protezione con negazione del servizio: WTLS contiene funzioni per il controllo ed il rigetto
di dati che non siano stati verificati con successo e attua in caso di bisogno la negazione del
servizio per proteggere i livelli superiori del protocollo da attacchi indesiderati.
Le applicazioni possono abilitare o disabilitare selettivamente WTLS a seconda dei requisiti di
sicurezza e delle caratteristiche della rete sottostante (ad esempio la privacy può essere disabilitata
su reti che già garantiscano questo servizio ad un livello più basso).
5.5.1. Il modello di sicurezza WAP
L’architettura WAP però non è completamene adattabile al modello di sicurezza del Web per i
seguenti due motivi:
• il protocollo SSL è stato progettato per comunicazioni di tipo wired (ampia banda a
disposizione e basse latenze) che vedono coinvolti desktop con elevate capacità di calcolo e
memorizzazione: una transazione SSL con un terminale WAP comporterebbe notevoli
ritardi nella comunicazione andando a incidere enormemente sia sulle prestazioni sia sui
costi della comunicazione);
• il mondo WAP non prevede una comunicazione diretta tra il client ed il Web Server: tra loro
vi è sempre il WAP Gateway che fa da tramite tra il terminale mobile ed il Web Server.
Per risolvere il problema delle prestazioni è stato progettato un nuovo protocollo (il WTLS)
appositamente progettato per i terminali mobili, tenendo in considerazione i loro limiti fisici: tale
protocollo garantisce comunque un buon livello di sicurezza riducendo enormemente gli overhead
del protocollo SSL. Il problema legato alla presenza del WAP Gateway è stato invece risolto
facendo utilizzare a quest’ultimo il protocollo SSL per comunicare in modo sicuro con il Web
Server, mentre per comunicare con il WAP browser utilizza il protocollo WTLS. La necessità di
passare da WTLS a SSL (e viceversa) è resa obbligatoria dalla natura delle comunicazioni wireless,
che sono caratterizzate da una banda di trasmissione ristretta ed una elevata latenza. Il modello di
sicurezza WAP attuale è mostrato in Figura 5.9.
Si noti che tale soluzione non porta alla realizzazio ne di un unico canale sicuro tra il client ed il
Web Server (come avviene nel mondo WWW quando si utilizza il protocollo SSL), ma si creano
due canali sicuri separati: il primo, tramite il protocollo WTLS, collega il WAP Browser al WAP
Gateway, mentre il secondo, tramite il protocollo SSL, collega il WAP Gateway al Web Server. Il
punto critico di tale modello è proprio il WAP Gateway. Il WAP Gateway, infatti, è il punto di
Figura 5.9: il modello di sicurezza WAP.
collegamento tra i due canali ed è il responsabile delle traduzioni WTLS/SSL (e viceversa): qui i
dati, seppur per brevi istanti, passano in chiaro, perché per tradurre, ad esempio, il WTLS in SSL
occorre prima decifrare i dati in WTLS portandoli in chiaro e poi cifrarli in SSL. Tali traduzioni,
necessarie al fine di permettere una connessione sicura e virtuale tra i due protocolli, richiedono
21
Capitolo 5 – L’architettura WAP: WTLS (Wireless Transport Layer Security)
tempo e necessitano di una memorizzazione (seppur temporanea) nella memoria del WAP Gateway.
Affinché un certo livello di sicurezza sia garantito, diventa allora assolutamente indispensabile che:
• i WAP Gateway non memorizzino mai informazioni decrittografate su mezzi di
memorizzazione secondari;
• il processo di traduzione sia il più veloce possibile in modo da eliminare velocemente i dati
residenti nella memoria volatile interna del WAP Gateway;
• si garantisca una sicurezza fisica del WAP Gateway, in modo che vi possano accedere solo
amministratori autorizzati;
• siano limitati gli accessi remoti al WAP Gateway per effettuare operazioni di manutenzione.
Per evitare i problemi legati alle traduzioni WTLS/SSL la tendenza attuale da parte dei fornitori
di servizio è quella di inglobare il WAP Gateway all’interno del proprio Web Server: tale soluzione,
se da una parte aumenta il livello di sicurezza, dall’altra limita le prestazioni della navigazione
Internet.
Prendiamo infatti in considerazione il Nokia 7110 (il primo cellulare entrato in commercio con
supporto WAP): per effettuare la navigazione Internet occorre settare, prima di cominciare il
collegamento, l’indirizzo IP del WAP Gateway attraverso il quale le richieste saranno trasferite in
HTTP al Web Server specificato. Una volta settato l’indirizzo IP del WAP Gateway si può
effettuare il classico collegamento Internet specificando il numero del fornitore di servizio, con il
quale abbiamo l’accesso alla rete, e la classica coppia username e password, attraverso le quali ci
autentichiamo con il provider stesso. A questo punto se non si è interessati ad una comunicazione
sicura ed il WAP Gateway specificato prima del collegamento ha una visone globale della rete, la
navigazione Internet avviene in modo del tutto analogo a come la conosciamo. Supponiamo invece
di voler comprare un libro e di voler effettuare una operazione di trading on- line: non possiamo fare
le due operazioni in un unico collegamento, se si desidera che queste siano realizzate in modo
sicuro e che i due Web server interessati incorporino anche due diversi WAP Gateway. Infatti prima
settiamo il 7110 con l’indirizzo IP del Gateway gestito dal server che vende i libri, ci colleghiamo
ed acquistiamo il libro. Dopodiché siamo costretti a disconnetterci, cambiare l’indirizzo IP del
WAP Gateway inserendo quello gestito dalla banca con cui fare l’operazione di trading on- line, e
infine ci colleghiamo ed eseguiamo l’operazione.
Oltre al discorso della sicurezza va notato che un particolare ISP che gestisce un Gateway ne
può anche limitare la visibilità nei confronti della rete. Un portale, ad esempio, che gestisce anche
un WAP Gateway può avere particolari interessi economici a limitare la visibilità della rete solo nei
confronti di alcuni siti/servizi con i quali ha stipulato particolari contratti di sponsorizzazione.
L’alternativa rimane quella della gestione completa e accurata del WAP Gateway e delle traduzioni
che esso deve effettuare rispettando i vincoli sopra descritti. Tale soluzione ha sicuramente il grande
vantaggio di disaccoppiare il Gateway da un particolare fornitore di servizi (evitando i problemi di
prestazioni esistenti per la soluzione che prevede l’accoppiamento Gateway/Web Server) ma
richiede una amministrazione più difficoltosa.
A prescindere comunque dalla gestione dei WAP Gateway, rimane immutata la fiducia che il
client deve avere nei loro confronti. Ovviamente il client, prima di riporre la propria fiducia (e
magari il proprio denaro) verso un particolare WAP Gateway, deve accertarsi della sua identità
analizzandone accuratamente il certificato. È bene chiarire inoltre che l’unico certificato che il
client riceve è proprio quello del WAP Gateway con cui comunica e non quello del Web Server che
restituisce i servizi richiesti. Anche l’autenticazione infatti è spezzata dalla presenza del WAP
Gateway: il client sceglie il WAP Gateway e ne verifica l’attendibilità, mentre il WAP Gateway a
sua volta verificherà l’attendibilità dei siti con cui il client vorrà comunicare.
Supponiamo, per chiarire la situazione, che un client debba acquistare on-line un libro su
Amazon appoggiandosi al WAP Gateway di O.T.Consulting: il client non può verificare
direttamente che il sito cui destina il proprio denaro sia proprio Amazon e non uno shadow server;
tale verifica, infatti, la può svolgere solo il WAP Gateway. È proprio ora che entra in gioco il
rapporto di fiducia client/WAP Gateway: il client, una volta che ha verificato che il WAP Gateway
22
Capitolo 5 – L’architettura WAP: WTLS (Wireless Transport Layer Security)
con cui comunica è proprio quello di O.T.Consulting, non si pone il problema della veridicità dei
dati che questi gli fornisce.
Il WTLS fornisce tutta una serie di meccanismi che permettono la mutua autenticazione tra il
client ed il WAP Gateway (anche quest’ultimo, infatti, può richiedere il certificato del client per
controllarne l’identità). L’autenticazione del client da parte del WAP Gateway è però ancora poco
utilizzata per via dell’impossibilità da parte dei dispositivi wireless attualmente in commercio di
memorizzare certificati. In futuro tale problema sarà superato integrando dispositivi di
memorizzazione simili alle Smartcard nei terminali mobili.
Le problematiche relative al modello di sicurezza WAP attuale sono allo studio del WAP Forum
e l’obiettivo prefissato è quello di realizzare un meccanismo di sicurezza punto-punto tra WAP
Browser e Web Server. Fino a che non verrà raggiunto tale obiettivo il WTLS fornirà una
connessione sicura solo tra il WAP Gateway ed il WAP Browser garantendo privacy, integrità e
autenticazione tra se stesso ed il client WAP. Inoltre i fornitori di WAP Gateway possono
implementare dei meccanismi per permettere l’utilizzo della certificazione del client (se il
dispositivo lo consente) e dell’uso di firma digitale per garantire anche il concetto di non ripudio.
5.5.2. Il funzionamento su datagram
Il WTLS, come detto in precedenza, si basa sulle specifiche dell’SSL, ma a differenza di
quest’ultimo funziona anche su protocolli di trasporto datagram. Tali protocolli sono caratterizzati
dal fatto che i dati viaggiano in maniera completamente indipendente tra di loro e inoltre possono
essere persi, arrivare non in ordine o addirittura essere duplicati.
Queste caratteristiche rendono non utilizzabile il protocollo SSL, così come è stato progettato,
su un protocollo di trasporto datagram. Si pensi infatti alla fase di handshake tra un client ed un
server: non è pensabile che possa avere un buon esito se, ad esempio, il messaggio di Client Hello
non giunge mai al server o se l’accettazione di un certificato da parte di una delle due entità non
arriva mai all’altra.
Per poter supportare i datagram sono stati allora introdotti nel WTLS una serie di meccanismi
che fronteggiano l’eventualità che i dati non arrivino mai o arrivino in disordine o siano duplicati.
In particolare, per superare questi problemi, il WTLS si basa su una macchina a stati asimmetrica
(cioè una per il client ed una diversa per il server), sull’uso dei time out per non bloccare una delle
due entità nell’attesa infinita della risposta dell’altra, sul controllo della validità del numero di
sequenza dei pacchetti in arrivo e sulla concatenazione di più messaggi di handshake che viaggiano
nella stessa direzione in un unico pacchetto da spedire.
Si rimanda, per ulteriori dettagli in proposito, all’Appendice B.
5.6. WDP (Wireless Datagram Protocol)
Il protocollo a livello di trasporto nell’architettura WAP è il Wireless Datagram Protocol (WDP)
che opera a stretto contatto con i servizi di trasporto dei portatori supportati dalle diverse tecnologie
di rete wireless. Configurandosi come servizio di trasporto a carattere generale, WDP offre un
servizio consistente agli strati superiori del protocollo, comunicando, in modo trasparente, con uno
dei tanti portatori (bearer) disponibili. Grazie al fatto che il protocollo WDP fornisce una interfaccia
comune ai protocolli di livello più alto, i protocolli di sicurezza, sessione e applicazione sono in
grado di funzionare in modo indipendente dalla rete wireless sottostante: questo risultato viene
raggiunto adattando il livello di trasporto alle specifiche caratteristiche del portatore sottostante.
Conservando consistente l’interfaccia del livello di trasporto e le sue caratteristiche basilari, pur
cambiando l’implementazione interna (in un’ottica simile a quella ad oggetti), si può raggiungere
l’obiettivo di una interoperabilità globale. Nella Figura 5.10 è mostrato un modello di architettura
per il WDP.
23
Capitolo 5 – L’architettura WAP: WDP (Wireless Datagram Protocol)
Il protocollo WAP è progettato per operare su una varietà di differenti servizi forniti dai
portatori (GSM, CDPD, Mobitex, CDMA), inclusi quelli per gli Short Message (SMS), per i dati a
commutazione di circuito e per i dati a pacchetto (GPRS). I portatori offrono differenti livelli di
qualità di servizio nel rispetto di parametri quali lo throughput, la frequenza di errore e i ritardi: i
protocolli WAP sono progettati proprio per compensare o tollerare questa variabilità nel livello del
servizio.
Figura 5.10: architettura del Wireless Datagram Protocol.
Dal momento che il livello WDP porta alla convergenza tra il servizio del portatore e il resto
dello stack WAP, le specifiche WDP devono fornire la lista dei portatori supportati e le tecniche
usate per permettere ai protocolli WAP di funzionare sopra qualsiasi portatore. Naturalmente la lista
dei portatori supportati cambia nel tempo, con l’aggiunta di nuovi portatori, man mano che il
mercato wireless si evolve. L’architettura a livelli di WAP permette anche ad altri servizi ed
applicazioni di utilizzare le caratteristiche dello stack WAP attraverso un insieme di interfacce ben
definite. Le applicazioni esterne possono accedere ai livelli di sessione, transazione, sicurezza e
trasporto direttamente: questo permette allo stack WAP di essere usato per applicazioni e servizi
non correntemente specificati da WAP, ma giudicati validi per il mercato wireless. Per esempio, le
applicazioni come la posta elettronica, i calendari, le rubriche telefoniche e il commercio
elettronico, o i servizi, come le pagine gialle, possono essere sviluppati per l’uso sul protocollo
WAP. Questo è in linea con i principi enunciati dal WAP Forum, secondo i quali la tecnologia
WAP dovrà essere utile per applicazioni e servizi anche al di là di quelli specificati nelle specifiche.
Il livello di trasporto nell’architettura WAP consiste nei livelli WTP (Wireless Transaction
Protocol) e WDP (Wireless Datagram Protocol).
In Figura 5.10 sono evidenziati le differenti funzioni (diverse altezze nella Figura 5.10) offerte
dai portatori e quindi i diversi protocolli WDP necessari per garantire lo stesso livello di servizi.
WDP supporta diverse istanze simultanee di comunicazione da un livello superiore ad un
singolo servizio portatore sottostante. Il numero di porta identifica l’entità del livello superiore
sopra il WDP: questa entità può essere un altro protocollo (come il WTP o il WDP) o una
applicazione (come ad esempio la posta elettronica). Il livello Adaptation è il livello del WDP che
mappa le funzioni del protocollo direttamente sopra le caratteristiche specifiche del portatore; il
livello Adaptation inoltre è diverso per ogni tipo di portatore.
Esiste una entità di gestione del WDP che è usata come interfaccia tra il livello WDP e
l’ambiente del dispositivo: questa entità fornisce informazioni al livello WDP riguardo eventuali
cambiamenti avvenuti nell’ambiente del dispositivo che potrebbero influire sul corretto
funzionamento del WDP stesso. L’entità di gestione del WDP svolge le stesse funzioni ed ha le
stesse caratteristiche dell’entità di gestione del WTP. Il WDP inoltre utilizza il Wireless Control
Message Protocol (WCMP) per la gestione ed il trattamento degli errori in modo da migliorare le
prestazioni del protocollo WAP e delle applicazioni.
24
Capitolo 5 – L’architettura WAP: WDP (Wireless Datagram Protocol)
5.6.1. I profili del WDP a seconda del tipo di portatore
sottostante
Figura 5.11: WDP su GSM-SMS.
Figura 5.12: WDP su GSM-USSD.
Come detto in precedenza il WDP assume un particolare comportamento a seconda del tipo di
portatore su cui opera.
25
Capitolo 5 – L’architettura WAP: WDP (Wireless Datagram Protocol)
I portatori principali attualmente operativi sono GSM-SMS (vedi Figura 5.11), GSM-USSD
(vedi Figura 5.12), GSM-CSD (Figura 5.13), GSM-GPRS, CDPD, IS-136 GUTS, CSD, Packet
Figura 5.13: WDP su GSM-Circuit Switched Data Channel
Data, CDMA, iDEN ed altri ancora. Per ognuno di loro il WDP assume un profilo particolare con
comportamenti specifici a seconda del portatore. Per brevità e al solo scopo illustrativo di seguito
sono riportati i profili WDP sui portatori GSM.
Per ulteriori dettagli sulle primitive di servizio WDP si consulti l’Appendice B.
5.7. Interoperabilità e futuri sviluppi
Il WAP Forum vede l’interoperabilità tra diversi venditori come un importante elemento per il
successo di WAP. Per fornire la più alta probabilità tecnicamente possibile che due prodotti WAP
sviluppati indipendentemente da due diversi venditori possano interoperare con successo, deve
essere sviluppata una rigorosa definizione di conformità e di adesione e deve essere sviluppato un
testing comune. Per raggiungere questo obiettivo il WAP Forum ha creato una specifica di
conformità per WAP e sta lavorando per mantenere le informazioni correnti in relazione con tutti i
punti chiave dell’interoperabilità di WAP. Un’interoperabilità di successo può essere raggiunta
solamente con attività di testing del prodotto. Il testing può essere suddiviso nelle due categorie
principali:
• testing statico;
• testing dinamico.
Il testing statico consiste in un resoconto del costruttore delle capacità e funzionalità del
prodotto: esso identifica aree ovvie di incompatibilità tra due prodotti (ad esempio dove uno
implementa una funzione che l’altro non supporta): tutte le specifiche WAP forniscono i mezzi per
il testing statico sottoforma di un Protocol Implementation Conformance Statement (PICS).
Il testing dinamico è l’unico che possa dare la garanzia che due prodotti interagiranno con
successo; esso include l’utilizzo di un prodotto sul campo, dimostrando definitivamente se il
prodotto si comporta oppure no come dichiarato nel test statico. Ci sono generalmente diversi
approcci generali al testing dinamico, ma conviene usarne uno di riferimento che serva per
esaminare tutti i prodotti; è importante definire un insieme di test formali per verificare il
comportamento di un prodotto in laboratorio. Il WAP Forum promuoverà il metodo con il miglior
rapporto prezzo/prestazioni, che possa condurre al più alto grado di confidenza di interoperabilità
tra prodotti WAP disponibili sul mercato in un determinato momento. Questo è un approccio
evolutivo che naturalmente cambierà nel tempo, man mano che l’industria del WAP maturerà. Nelle
specifiche redatte dal WAP Forum è contenuta anche una lista di futuri sviluppi, non ordinata in
base alle priorità in nessun modo: aree di lavoro possono essere aggiunte o tolte in ogni mo mento. È
26
Capitolo 5 – L’architettura WAP: interoperabilità e futuri sviluppi
interessante scorrerla, poiché dà un’idea di quello che manca e quindi fornisce una migliore
comprensione delle direzioni che saranno date allo sviluppo:
• trasporto di dati connection oriented;
• integrazione del SIM Toolkit e di Smartcard in WAP;
• integrazione di MExE (ETSI) in WAP;
• integrazioni addizionali con la rete telefonica;
• librerie WMLScript scaricabili via Internet;
• compressione WTLS;
• sicurezza a livello applicazione (librerie di script con crittografia);
• portata più ampia della architettura di sicurezza, incluso il supporto per Smartcard, il
miglioramento della gestione della sicurezza end-to-end, gerarchie di CA;
• supporto di flussi di contenuto multimediale per portatori a banda più ampia, ad esempio
GPRS;
• supporto per dati multicast (uno a molti);
• supporto per servizi mobili dipendenti dalla localizzazione;
• possibilità di fare il download di applicazioni;
• API (Application Programming Interfaces) per programmi vocali e per ogni livello dello
stack WAP;
• Test di interoperabilità.
27