Upload
camden
View
47
Download
0
Embed Size (px)
DESCRIPTION
Servizi applicativi in Internet. Prof. Alfio Lombardo. Problematiche inerenti al livello applicativo. Differenze sintattiche. Differenze Semantiche. Affinchè due processi applicativi possano cooperare devono possedere: Un Universo del Discorso comune 2. Uno schema concettuale - PowerPoint PPT Presentation
Citation preview
Servizi applicativi in Internet
Prof. Alfio Lombardo
Problematiche inerenti al livello applicativo
•Differenze sintattiche
•Differenze Semantiche
Affinchè due processi applicativi possano cooperare devono possedere:
1. Un Universo del Discorso comune
2. Uno schema concettuale
3. Un linguaggio comune
cioè qualcosa di cui parlare
cioè una descrizione comprensibile dell'universo del discorso
cioè una sintassi comune con cui esprimere le interazioni da svolgeree gli eventi che devono accadere nell'universo del discorso
CLIENTE10=1010
SERVENTE10=1010
!
Conversione asimmetrica
0101
0101
Conversione Simmetrica:Sintassi di trasferimento in Internet
XDR: eXternal Data Representation
(rfc 1014)Lunghezza costante
Tagging implicito
CLIENTSintassi Loc. A
Sintassi Trasferimen.
SERVERSintassi Loc. B
Sintassi Trasferimen.
Sintassi Trasferimento
Differenze semantiche Affinche’ due processi possano comunicare occorre definireun "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:
1. Un Universo del Discorso comune
2. Uno schema concettuale
3. Un linguaggio comune
cioè qualcosa di cui parlare
cioè una descrizione comprensibile dell'universo del discorso
cioè una sintassi comune con cui esprimere le interazioni da svolgeree gli eventi che devono accadere nell'universo del discorso
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);
Service provider
utente utente
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
protocollo
Entità di
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
protocollo
Entità di
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
protocollo
Entità di
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
On/OFFOn=1volt/off=2 volt
On=255 / Off=0
On=ctrl_A_D/off=Alt_K
Boolean: True=On,False=Off
Esempio: indipendenza dalla sintassi locale
C code:Printer::=Boolean
Esempio: indipendenza dalla sintassi di trasferimento
Codificaaltolivello
(8 bit) 11111111=true00000000=false
Codificabassolivello
In rete
(16 bit) 1111111111111111=true00000000000000=false
In rete
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
Rappresentazione delle strutture dati: ASN1
Siniziale
in
out
Sfinale
Descrizione delle procedure
FDT:Formal Description Techniques
FSM, Finite State Machine, 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
Esempio:Alternating bit protocol
Entità Tx
User
Entità Tx
New Message
(dati)
Pack(m,bit)
Ack(bit)
New Message
(dati)
m=dati
Pack(m,0)
Start
T1=20ms
Wait for Ack 0
Esempio:Alternating bit protocol
Entità Tx: 1/3
User
Entità Tx
IDLE
New Message
(dati)
Pack(m,0)
Prepare
pack(m,0)
Wait for New
Message
New Message
(dati)
m=dati
Pack(m,1)
Start
T1=20ms
Wait for Ack1
Prepare
pack(m,1)
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
Y
m=datibit=B
Specification Description Language (SDL)
Procedure: EFSM
Strutture dati: ASN1
Esempio: sistema Bancomat
Block: Terminale Block: Gestore ServizioProcessoInterfacciaUtente
ProcessoAttuatore
ProcessoSaldo
ProcessoControlloFunzione
ProcessoControlloUtente
Ch3Ch1
Ch5
Ch4
Ch6Ch2
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 nellasede 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
Canale ::= [APPLICATION 0] CHOICE {ch1 Ch1 ch2 Ch2 ch3 Ch3 ch4 Ch4 ch5 Ch5 ch6 Ch6 ch7 Ch7}
Definizione canali
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 {articoloSuccessivo[1] DatiArticolo, totale[2] INTEGER}, datiResoMerce[3] IMPLICIT SEQUENCE { datiArticolo DatiArticolo, dataAcquisto Data}, messaggio[4] IMPLICIT PRINTABLE STRING}
DatiArticolo ::= SEQUENCE {codiceArticolo OBJECT ID, quantità INTEGER}
Ch2 [APPLICATION 2] ::= datiLetturaCard IMPLICIT SEQUENCE {letturaCorretta BOOLEAN, datiCard DatiCard OPTIONAL} }
Su Ch2 (interfaccia dispositivo lettura card / processo_lettura_carta): datiLetturaCard: dati della card letti dal dispositivo e forniti al processo
Lettura Carta;
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}
}
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)}
}
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;
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},
rispostaReso[4] IMPLICIT BOOLEAN}
Data ::= GENERALIZED TIME
Ch6::= [APPLICATION 6] CHOICE { aggiornaCreditoCliente[1] IMPLICIT SEQUENCE { spesaAttualeCliente INTEGER,
datiCard DatiCard}, aggiornamentoEseguito[2]IMPLICIT SEQUENCE {
scontoAttuale INTEGER, speseTotali INTEGER}
}
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;
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
Programma Applicativo (C code):Printer::=Booleanprinter Boolean:= true
Esempio: la programmazione
Codificaaltolivello
(8 bit) 11111111=true
Codificabassolivello
In rete
On=1volt/off=2 volt
Interprete del Protocollo:
True=1 volt (ON)
(8 bit) true=11111111
On=255 / Off=0