Servizi applicativi in Internet
Prof. Alfio Lombardo
Problematiche inerenti al
livello applicativo
•Differenze sintattiche
•Differenze Semantiche
Affinchè due processi applicativi possano cooperare devono possedere:
cioè qualcosa di cui parlare
1. Un Universo del Discorso comune
cioè una descrizione comprensibile dell'universo del discorso
2. Uno schema concettuale
cioè una sintassi comune con cui esprimere le interazioni da svolgere
e gli eventi che devono accadere nell'universo del discorso
3. Un linguaggio comune
Conversione asimmetrica
CLIENTE
10=1010
0101
0101
SERVENTE
10=1010
!
Conversione Simmetrica:
Sintassi di trasferimento in Internet
CLIENT
SERVER
Sintassi Loc.
A
Sintassi Loc.
B
Sintassi
Trasferimen.
Sintassi
Trasferimento
Sintassi
Trasferimen.
XDR: eXternal Data Representation
(rfc 1014)
Lunghezza costante
Tagging implicito
Differenze semantiche
Affinche’ due processi possano comunicare occorre definire
un "universo del discorso" comune, cioè l'insieme di concetti
su cui si baserà la comunicazione (semantica comune) .
Universo del Discorso: esempio
Oggetto: volo
Attributi: n° del volo, ora partenza, ora arrivo,
luogo di partenza, luogo di arrivo, n° posti in business,
n° posti in economy, …
Azioni: prenotazioni posti in classe x,
disdetta prenotazione posti in classe x
Semantica virtuale dello FTAM
Affinchè due processi applicativi possano cooperare devono possedere:
cioè qualcosa di cui parlare
1. Un Universo del Discorso comune
cioè una descrizione comprensibile dell'universo del discorso
2. Uno schema concettuale
cioè una sintassi comune con cui esprimere le interazioni da svolgere
e gli eventi che devono accadere nell'universo del discorso
3. Un linguaggio comune
Il progetto di un protocollo
Prof. Alfio Lombardo
Componenti di un’entità di protocollo
Il progetto di un protocollo (1)
1.definizione delle funzioni eseguite dal protocollo
( il servizio fornito all'utente dal protocollo che si sta definendo);
utente
utente
Service provider
Es.1: scambio affidabile di dati di dimensione qualsiasi tra utenti remoti
Es.2: accesso “sicuro” ai dati del proprio c/c
Il progetto di un protocollo (2)
2. La definizione delle PDUs, (la loro struttura
ed eventualmente la loro codifica)
utente
utente
Entità di
Entità di
protocollo
protocollo
Il progetto di un protocollo (3)
3.gli elementi di procedura (le operazioni attraverso cui il
protocollo permette lo scambio delle strutture dati per
espletare le funzionalità definite nel punto 1)
utente
utente
Entità di
Entità di
protocollo
protocollo
Il progetto di un protocollo (4)
4.il "mapping" delle suddette PDU e procedure coi servizi
sottostanti (come le entità scambiano le PDUs)
utente
utente
Entità di
Entità di
protocollo
protocollo
Servide provider
Rappresentazione delle strutture
dati: ASN1
Permette di rappresentare i dati in modo astratto
ovvero
di descrivere i dati in modo indipendente
dalla rappresentazione concreta interna alla macchina
(sintassi locale)
dalla sintassi di trasferimento utilizzata per trasferire i dati
all'esterno (sintassi di trasferimento).
ASN1 e’ stata definita nell’ambito del livello di
Presentazione OSI
Esempio: indipendenza dalla sintassi locale
On=1volt/off=2 volt
On/OFF
Boolean: True=On,
False=Off
On=255 / Off=0
On=ctrl_A_D/off=Alt_K
Esempio: indipendenza dalla
sintassi di trasferimento
Codifica
C code:
alto
livello Printer::=Boolean
Codifica
basso
livello
(8 bit)
11111111=true
00000000=false
(16 bit)
1111111111111111=true
00000000000000=false
In rete
Rappresentazione delle strutture
dati: ASN1
Dichiarazioni di tipo
[type name] ::= [type definition].
Ad esempio Married ::= BOOLEAN
Dichiarazioni di valore
[value name] [type name] ::= [value definition]
Ad esempio single Married ::= FALSE
Descrizione delle procedure
FDT:Formal Description Techniques
FSM, Finite State Machine,
Siniziale
in
un insieme di stati S;
un insieme di messaggi di input I;
un insieme di messaggi di output O;
una funzione di transizione di stato f: Sin x I -> Sfin;
una funzione di uscita g: Sin x I -> O.
Transizione (atomica) di stato
out
Sfinale
Esempio:Alternating bit protocol
Entità Tx
User
New Message
(dati)
Entità Tx
Pack(m,bit)
Ack(bit)
IDLE
Esempio:Alternating bit protocol
New Message
Entità Tx: 1/3
(dati)
m=dati
Prepare
pack(m,0)
User
New Message
(dati)
Pack(m,0)
Entità Tx
Start
T1=20ms
Wait for Ack 0
Pack(m,0)
Wait for New
Message
New Message
(dati)
m=dati
Prepare
pack(m,1)
Pack(m,1)
Start
T1=20ms
Wait for Ack1
S= Idle, Wait for Ack 0,
Wait for New Message
Wait for Ack 1
In Messages =
NewMessage (),
Ack( ), Timer
Out Messages:
Pack ( )
Extended FSM: Esempio
m=dati
bit=B
Y
Specification Description
Language (SDL)
Procedure: EFSM
Strutture dati: ASN1
Esempio: sistema Bancomat
Block: Terminale
Ch1
Processo
Interfaccia
Utente
Ch2
Block: Gestore Servizio
Processo
Controllo
Funzione
Ch3
Ch5
Ch6
Ch4
Processo
Attuatore
Processo
Saldo
Processo
Controllo
Utente
Esempio: Sistema di gestione di
card per acquisti
sistema diffuso nei grandi magazzini;
consiste nel rilascio al cliente di una Card con banda magnetica
con la quale:
l’amministrazione ha uno strumento di controllo della clientela e
dei flussi di denaro che ne provengono.
la clientela ha degli sconti particolari sui loro normali acquisti quando
le somme degli acquisti effettuati superano una determinata soglia.
Struttura del sistema
Rappresenta il terminale utilizzato dal cassiere.
E’ collegato ad un lettore di schede magnetiche,
ad un dispositivo di stampa nonché al blocco
Amministrazione
rappresenta il terminale remoto presente nella
sede dell’Amministrazione che riceve e
risponde alle richieste di tutte le casse
Blocco Cassa
· Gestisce il dispositivo necessario per leggere
la Card dell’utente.
Se i dati vengono letti correttamente vengono
trasferiti al terminale, altrimenti viene indicato
di ripetere l’operazione.
Gestisce l’interazione tra il cassiere ed il
terminale (verosimilmente composto da tastiera
e monitor) tramite il canale Ch1, comunica le
richieste del cassiere al blocco Amministrazione
tramite il canale Ch5, invia dei comandi al
processo Lettura Card e al processo Stampa
rispettivamente attraverso Ch3 e Ch4
gestisce il dispositivo di
stampa del terminale
Ch5
Blocco Amministrazione
Riceve le richieste dal blocco Cassa,
quali l’accredito della spesa effettuata dal titolare
di una card, gli estremi relativi ad un acquisto
per della merce che un cliente chiede di restituire,
ecc.
Dialoga col Processo Gestione Archivi tramite
Ch6.
gestisce tutte le informazioni relative ai clienti, alla merce venduta,
alle condizioni di garanzia o di restituzione della merce, alle statistiche
e previsioni delle vendite, alle norme che regolano la vendita, ecc
Definizione canali
Canale ::= [APPLICATION 0] CHOICE
{ch1 Ch1
ch2 Ch2
ch3 Ch3
ch4 Ch4
ch5 Ch5
ch6 Ch6
ch7 Ch7}
Su Ch1 (interfaccia cassiere / processo_interfaccia_cassiere):
funzioneCassa:
usato dal cassiere per indicare al Processo Interfaccia
Cassiere quale sarà la prossima operazione che vuole effettuare ( l’inizio di un nuovo conteggio
di articoli, la lettura della Card del cliente, ecc…);
comandoConteggio: usato dal cassiere per effettuare il conteggio degli
articoli oppure per visualizzare il totale dovuto dal cliente per i suoi acquisti;
datiResoMerce: usato dal cassiere per effettuare un reso merce e
consegnare al cliente buono spese del corrispondente importo;
Messaggio:
generico messaggio visualizzato sul terminale di cassa;
Ch1::=[APPLICATION 1] CHOICE{
funzioneCassa[1]IMPLICIT ENUMERATED
{ nuovoConteggio(1),
letturaCard(2),
resoMerce(3),
pagamentoArticoliInContanti(4)},
comandoConteggio[2] CHOICE {
DatiArticolo ::= SEQUENCE {
articoloSuccessivo[1] DatiArticolo,
codiceArticolo OBJECT ID,
totale[2] INTEGER},
quantità INTEGER}
datiResoMerce[3] IMPLICIT SEQUENCE {
datiArticolo DatiArticolo,
dataAcquisto Data},
messaggio[4] IMPLICIT PRINTABLE STRING}
Su Ch2 (interfaccia dispositivo lettura card / processo_lettura_carta):
datiLetturaCard:
dati della card letti dal dispositivo e forniti al processo
Lettura Carta;
Ch2 [APPLICATION 2] ::= datiLetturaCard IMPLICIT SEQUENCE
{letturaCorretta BOOLEAN,
datiCard DatiCard OPTIONAL}
}
DatiCard ::= SEQUENCE {numeroCard OBJECT IDENTIFIER,
titolare PRINTABLE STRING,
scadenza Data}
Su Ch3 (interfaccia processo_lettura_card / processo_interfaccia_cassiere):
richiestaLetturaCard: richiesta di lettura della Card inviata al Processo Lettura Carta
da parte del Processo Interfaccia cassiere;
rispostaDispositivoLetturaCard:
invio dei dati della Card al Processo Interfaccia Cassiere
parte del Processo Lettura Carta;
Ch3 ::= [APPLICATION 3] CHOICE
{richiestaLetturaCard[1] IMPLICIT BOOLEAN,
rispostaDispositivoLetturaCard [2] IMPLICIT SEQUENCE {
letturaCorretta BOOLEAN,
datiCard DatiCard OPTIONAL}
}
Su Ch4 (interfaccia processo_stampa / processo_interfaccia_cassiere):
richiestaStampa: richiesta di stampa inviata al Processo Stampa da parte del
Processo Interfaccia Cassiere;
rispostaDispositivoStampa: informazioni sul funzionamento del dispositivo
inviate al Processo Interfaccia Cassiere da parte del Processo Stampa;
Ch4 ::= [APPLICATION 4] CHOICE {
richestaStampa[1] IMPLICIT SEQUENCE {
modelloStampa ModelloStampa,
datiStampa OCTET STRING },
rispostaDispositivoStampa [2] IMPLICIT ENUMERATED
{ stampaCorretta(0),
cartaEsaurita(1),
inchiostroEsaurito(2),
altriProblemi(3)}
}
ModelloStampa ::= ENUMERATED {normale (0),
finanziamento (1),
buonoSpesa (2)}
Su Ch5 (interfaccia processo_Raccolta_Richieste / processo_interfaccia_cassiere):
richiestaAccredito: richiesta di accredito della somma spesa del cliente, inviata al
Processo Raccolta Richieste dal Processo Interfaccia cassiere;
richiestaReso: richiesta di effettuare un reso merce;
rispostaAccredito: indicazione dello sconto di cui attualmente può usufruire il cliente
e del totale delle spese che ha effettuato finora, inviata al Processo
Interfaccia Cassiere dal Processo Raccolta Richieste;
rispostaReso: indicazione della possibilità di effettuare il reso merce richiesto dal cliente,
inviata al Processo Interfaccia Cassiere dal Processo Raccolta Richieste;
Ch5::= [APPLICATION 5] CHOICE {
richestaAccredito[1] IMPLICIT SEQUENCE {
importo INTEGER,
datiCard DatiCard},
richestaReso[2] IMPLICIT SEQUENCE {
datiArticolo DatiArticolo,
dataAcquisto Data},
rispostaAccredito[3] IMPLICIT SEQUENCE {
scontoAttuale INTEGER,
speseTotali INTEGER}, Data ::=
GENERALIZED TIME
rispostaReso[4] IMPLICIT BOOLEAN}
Su Ch6 (interfaccia processo_Raccolta_Richieste / processo_getione_archivi):
aggiornaCreditoCliente: comando inviato al Processo Gestione Archivi dal Processo
Raccolta Richieste per aggiornare il credito del cliente i cui dati si trovano nel
database contenente le informazioni di tutti i clienti titolari della Card;
aggiornamentoEseguito: messaggio di conferma dell'avvenuto aggiornamento inviato
al Processo Raccolta Richieste dal Processo Gestione Archivi;
Ch6::= [APPLICATION 6] CHOICE {
aggiornaCreditoCliente[1] IMPLICIT SEQUENCE {
spesaAttualeCliente INTEGER,
datiCard DatiCard},
aggiornamentoEseguito[2]IMPLICIT SEQUENCE {
scontoAttuale INTEGER,
speseTotali INTEGER}
}
Su Ch7: (interfaccia dispositivo di stampa / processo_stampa):
avvioStampa: comando inviato al dispositivo di stampa dal Processo Stampa
per effettuare la stampa di uno dei tre modelli possibili;
Ch7::= [APPLICATION 7] avvioStampa BOOLEAN
Macrolezione 3:
Progetto di un protocollo di comunicazione I
Approfondimento Macrolezione 3:
Sintassi di trasferimento
Macrolezione 4:
Progetto di un protocollo di comunicazione II
Esempio: la programmazione
On=1volt/off=2 volt
On=255 / Off=0
Codifica Programma
Applicativo (C code):
alto
livello Printer::=Boolean
printer Boolean:=
true
Codifica
basso
livello
(8 bit)
true=11111111
Interprete del
Protocollo:
True=1 volt (ON)
In rete
(8 bit)
11111111=true
Scarica

Lezione 10