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 svolgere e gli eventi che devono accadere nell'universo del discorso
CLIENTE 10=1010 SERVENTE 10=1010 ! Conversione asimmetrica 0101
Conversione Simmetrica: Sintassi di trasferimento in Internet XDR: eXternal Data Representation (rfc 1014) Lunghezza costante Tagging implicito CLIENT Sintassi Loc. A Sintassi Trasferimen. SERVER Sintassi Loc. B Sintassi Trasferimen. Sintassi Trasferimento
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: 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 svolgere e gli eventi che devono accadere nell'universo del discorso
Il progetto di un protocollo Prof. Alfio Lombardo
Componenti di unentità 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 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 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 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 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 nellambito del livello di Presentazione OSI
On/OFF On=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 Codifica alto livello (8 bit) =true =false Codifica basso livello In rete (16 bit) =true =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
S iniziale in out S finale 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: S in x I -> S fin ; una funzione di uscita g: S in 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=dati bit=B
Specification Description Language (SDL) Procedure: EFSM Strutture dati: ASN1
Esempio: sistema Bancomat Block: Terminale Block: Gestore Servizio Processo Interfaccia Utente Processo Attuatore Processo Saldo Processo Controllo Funzione Processo Controllo Utente Ch3 Ch1 Ch5 Ch4 Ch6 Ch2
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: lamministrazione 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 dellAmministrazione che riceve e risponde alle richieste di tutte le casse
Blocco Cassa · Gestisce il dispositivo necessario per leggere la Card dellutente. Se i dati vengono letti correttamente vengono trasferiti al terminale, altrimenti viene indicato di ripetere loperazione. Gestisce linterazione 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 laccredito 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 Ch1Ch1 ch2 Ch2 ch3 Ch3 ch4 Ch4 ch5 Ch5 ch6 Ch6 ch7 Ch7}Ch2Ch3Ch4Ch5Ch6Ch7 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 ( linizio 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::=Boolean printer Boolean:= true Esempio: la programmazione Codifica alto livello (8 bit) =true Codifica basso livello In rete On=1volt/off=2 volt Interprete del Protocollo: True=1 volt (ON) (8 bit) true= On=255 / Off=0