Newest Viewed Downloaded

Lez. 6 * Reti di Calcolatori Applicazioni distribuite OSI Vedi: M.T. Rose, The open book, Prentice Hall, sez. 10 (intro e 10.4), pagg. 379-380 e 420-440. ITU-T, Rec. X.219 - Remote Operations: Model, Notation and Service Definition. Copyright © 2006-2011 by Claudio Salati Alma Mater Studiorum - Universita' di Bologna Sede di Cesena II Facolta' di Ingegneria

Lez. 6 * Reti di Calcolatori Applicazioni distribuite OSI Vedi: M.T. Rose, The open book, Prentice Hall, sez. 10 (intro e 10.4), pagg. 379-380 e 420-440. ITU-T, Rec. X.219 - Remote Operations: Model, Notation and Service Definition. Copyright © 2006-2011 by Claudio Salati Alma Mater Studiorum - Universita' di Bologna Sede di Cesena II Facolta' di Ingegneria

* OSI Upper Layers Infrastructure Composta di 3 livelli (del modello di riferimento OSI): Livello 5 - Sessione Livello 6 - Presentazione Livello 7 - Applicazione Per quanto ci riguarda il livello di Sessione fornisce un servizio sostanzialmente equivalente a quello fornito da TCP di Internet: Trasferimento affidabile e trasparente di byte end-to-end tra due processi ovunque localizzati sulla rete. Setup di un’unica connessione a fronte di due richieste di apertura di connessione incrociate. Gestione "ben educata" della connessione, ed in particolare della fase di disconnessione (disconnessione ordinata).

* Livello di Presentazione Il servizio di presentazione fornisce gli strumenti per scambiare informazione tra due moduli di una applicazione distribuita in modo tale che il suo significato sia conservato inalterato indipendentemente dalla codifica utilizzata per rappresentare l'informazione durante il trasferimento dalla codifica utilizzata per rappresentare localmente l'informazione sui due moduli / End-System (per i quali possono essere diversi piattaforma HW, sistema operativo, linguaggio di programmazione, sistema di programmazione) Problemi elementari di rappresentazione dell'informazione: Elaboratori big-endian vs. elaboratori little-endian Diversi linguaggi di programmazione utilizzano diverse strutture dati per rappresentare lo stesso tipo di informazione (e.g. anche i numeri interi!) Il valore di sizeof(int) puo' differire anche in diversi sistemi di programmazione per uno stesso linguaggio Regole di allineamento in memoria delle strutture dati diverse in diversi sistemi di programmazione per uno stesso linguaggio

* Informazione vs. sua encodifica concreta Interi rappresentati con 4 byte Trascuriamo la differenza big-endian vs. little-endian Rappresentazione concreta del numero intero senza segno 1093: binaria: 0000 0000 0000 0000 0000 0100 0100 0101 BCD: 0000 0000 0000 0000 0001 0000 1001 0011 Rappresentazione concreta del numero intero con segno -1093: complemento a 2: 1111 1111 1111 1111 1111 1011 1011 1011 complemento a 1: 1111 1111 1111 1111 1111 1011 1011 1010 segno+BCD: 1000 0000 0000 0000 0001 0000 1001 0011 Rappresentazione concreta del numero intero con segno 1: complemento a 2: 0000 0000 0000 0000 0000 0000 0000 0001 complemento a 1: 0000 0000 0000 0000 0000 0000 0000 0001 Rappresentazione concreta del numero intero con segno - 1: complemento a 2: 1111 1111 1111 1111 1111 1111 1111 1111 complemento a 1: 1111 1111 1111 1111 1111 1111 1111 1110

* Informazione vs. sua encodifica concreta Booleani rappresentati alla C, come un intero (su 4 byte) tutti a 0, se FALSE almeno 1 bit !=0 se TRUE alla Pascal, come 1 byte 0000 0000 se FALSE 0000 0001 se TRUE

* Sintassi Astratta Un dialogo applicativo coinvolge strutture dati arbitrariamente complesse (e che evolvono nel tempo: e.g. Mail) message { envelope { source address { sender id, mail address, ... }, list of destination addresses { ... }, cc { ... }, bcc { ... }, date of submissal { ... }, message priority, acknowledge request } content { date of compilation { ... }, subject { ... }, text { ... } } attachments { ... } ... } Insieme dei tipi di strutture dati coinvolti nel dialogo applicativo tra due moduli di una applicazione distribuita ::= sintassi astratta Come definire in modo non ambiguo una sintassi astratta? Come trasferire sulla rete una istanza di un tipo di struttura dati della sintassi astratta (un valore tipizzato) senza perdere informazione?

* Risposta 1: Abstract Syntax Notation Un linguaggio capace di descrivere Una sintassi astratta Valori tipizzati appartenenti alla sintassi astratta (purtroppo, non sempre) senza introdurre o considerare alcun vincolo machine-dependent e/o di rappresentazione. "A level of indirection is placed between the application protocol and how a particular (virtual) machine might represent the data exchanged by that protocol. A protocol specified using an abstract syntax notation is machine independent." (Rose) In OSI e' definita un'unica abstract syntax notation: ASN.1. Nel mondo Internet esistono diversi linguaggi (piu' o meno) analoghi: XDR, Corba IDL, XML schema, . . . N.B. Java si basa su un principio diverso: tutte le macchine virtuali Java utilizzano la stessa rappresentazione concreta delle informazioni.

* Senza vincoli machine-dependent o di rappresentazione Approccio OSI (e un po’ anche C) Il range degli interi varia (in matematica e considerando tutti i possibili linguaggi di programmazione, attuali e futuri) da - a +, e quindi i valori interi che dobbiamo poter trasferire in rete devono poter essere di lunghezza variabile. Questo ci rende indipendenti dalla sizeof(int) di ogni particolare sistema di programmazione, ma cosa succede se dobbiamo trattare un valore intero di dimensione maggiore di quella supportata dal nostro sistema di programmazione? Approccio Java/XDR Anziche’ considerare un solo tipo intero, consideriamo una famiglia (finita) di tipi interi, ciascuno corrispondente ad un sub-range diverso degli interi della matematica. Ogni tipo avra’ sizeof() diversa ma fissa, e sceglieremo dei subrange corrispondenti a sizeof() effettivamente significative nei sistemi di programmazione reale, e.g. sizeof()=1, 2, 4, 8. Diversi sistemi di programmazione dovranno attrezzarsi per gestire tutti questi diversi sottotipi. Anche questa strategia ci rende indipendenti dalla sizeof(int) dei particolari sistemi di programmazione ed e’ piu’ semplice ed efficiente.

* Risposta 2: Transfer Syntax Notation Lo scopo di una transfer syntax notation e' di rappresentare in modo non ambiguo i valori dei tipi di strutture dati definiti in una sintassi astratta quando essi sono trasferiti sulla rete. Applicare una sintassi di trasferimento consiste in: Prendere una struttura dati locale che in qualche modo rappresenta un valore di un tipo di struttura informativa definito nella sintassi astratta. Serializzare l'informazione tipizzata (tipo e valore? E’ veramente necessario trasferire esplicitamente l’informazione di tipo?) in una stringa contigua di ottetti (secondo una particolare regola di codifica, la sintassi di trasferimento). Trasmettere in rete al pari remoto la stringa di ottetti (encodifica) utilizzando i servizi del livello di Sessione. (e fare il percorso inverso al momento della ricezione di una stringa contigua di otteti dal livello di Sessione)

* Transfer Syntax Notation Il risultato dell'applicazione della sintassi di trasferimento e' una rappresentazione concreta (di rete), che implica convenzioni su: Bit e byte order Lunghezza dei campi Encodifica di quanti di informazione ... In OSI sono definite diverse transfer syntax notation, ma una sola e' rilevante, BER (Basic Encoding Rules). BER utilizza un approccio TLV. Un valore tipizzato e' codificato come una tripla [ Tag, Length, Value ] Dove il campo Tag identifica esplicitamente il tipo di struttura dati di cui si rappresenta una istanza. XDR definisce sia una abstract syntax notation che una transfer syntax notation (quest’ultima non e’ TLV: in particolare non trasmette esplicitamente sulla rete l’informazione di tipo).

* Transfer Syntax Notation: esempio TCP Quale e’ la rappresentazione concreta di rete di un numero di porta nel protocollo TCP? Binaria (unsigned) 16 bit (2 byte) Big-endian Come facciamo a sapere che una certa coppia di byte del segmento TCP rappresenta un valore di tipo “numero di porta”? Lo devo sapere a priori. In un segmento TCP le prime due coppie di byte rappresentano la porta mittente e quella destinazione.

* Transfer Syntax Notation: esempi Valore booleano TRUE in BER e' rappresentato come un byte !=0 in XDR: N.B.: tipo e lunghezza non sono trasportati esplicitamente 0000 0000 0000 0000 0000 0000 0000 0001 Valore booleano FALSE in BER e' rappresentato come un byte ==0 in XDR: 0000 0000 0000 0000 0000 0000 0000 0000     00 0 1 1 1 tag: BOOLEAN length content     00 0 1 1 0 tag: BOOLEAN length content

* Transfer Syntax Notation: esempi Valore intero con segno 263 in BER in XDR: Consideriamo il tipo int su 32 bit: 0000 0000 0000 0000 0000 0001 0000 0111 Valore intero con segno -1 in BER in XDR: 1111 1111 1111 1111 1111 1111 1111 1111     00 0 2 2 0000 0001 tag: INTEGER length -------- content -------     00 0 2 1 1111 1111 tag: INTEGER length content 0000 0111

* XDR: Problema (finto) XDR definisce sia una abstract syntax notation che una sintassi di trasferimento. La transfer syntax notation XDR non e' di tipo TLV. Non contiene l'indicazione esplicita del tipo del valore Non contiene l'indicazione esplicita della lunghezza dell'encodifica Contiene solo la parte content (V) di una codifica TLV Ricevendo la stringa di bit 0000 0000 0000 0000 0000 0000 0000 0001 come fa il ricevente a discriminare se ha ricevuto il valore intero (con o senza segno?) 1 oppure il valore booleano TRUE? In XDR bisogna che il ricevitore conosca a priori il tipo del valore di cui riceve la encodifica di rete! Se so che mi sto aspettando un valore booleano allora so decodificare il valore ricevuto come TRUE.

* Accordi a priori Detti anche: shared knowledge. Non c’e’ niente di strano nel fatto che una protocol entity ricevente conosca a priori la struttura dell’informazione che deve ricevere. TCP sa che deve ricevere un segmento TCP, di cui conosce a priori la struttura. UDP sa che deve ricevere un datagram IP, di cui conosce a priori la struttura. IP sa che deve ricevere un datagram IP, di cui conosce a priori la struttura. Consentono di semplificare i programmi di rete perche’ riducono le informazioni che devono essere scambiate e gli accordi che devono essere presi esplicitamente (e dinamicamente!). Controesempio: quale dei 5 protocolli devono utilizzare due protocol entity di trasporto connection oriented OSI? Forse che e’ anche per questo che l’OSI e’ stato un fallimento?

* Servizi del Livello di Presentazione OSI Il Livello di Presentazione combina La capacita' di convertire informazione in stringhe di ottetti (e viceversa) Con il servizio di tasferimento affidabile di byte offerto dal Livello di Sessione per offrire un servizio di trasferimento affidabile di informazione La funzionalita’ di conversione dell’informazione da/verso stringhe di ottetti si articola in: Context Management in internet non esiste, quando necessario e’ implementato a Livello 7 o addirittura a Livello Utente Syntax Matching esiste anche in internet, vedi XDR, IDL, XML Schema, … In realta’ il Servizio di Presentazione puo’ appoggiarsi anche al Servizio di Trasporto connectionless.

* Livello di Presentazione OSI: Context Management Nel colloquio tra due moduli di una applicazione distribuita possono essere utilizzate simultaneamente diverse sintassi astratte Ogni sintassi astratta descrive infatti i PDU di un particolare protocollo applicativo Ad ogni sintassi astratta possiamo poi appicare (in teoria) una diversa sintassi di trasferimento Lo scopo del Context Management e' di gestire: Quali sintassi astratte sono usate in un colloquio applicativo Quale sintassi di trasferimento e' associata a ciascuna sintassi astratta Ciascuna coppia [1 + 2] e' identificata nel Livello di Presentazione da un Presentation Context Ogni P-SDU e' associata ad un Presentation Context che identifica univocamento quale e' il protocollo applicativo cui essa e' relativa.

* Livello di Presentazione: Syntax Matching Lo scopo del servizio di Syntax Matching e' di mappare avanti/indietro tra la rappresentazione locale (potenzialmente diversa per ciascun modulo dell'applicazione distribuita) di un valore della sintassi astratta e la sua rappresentazione concreta sulla rete (comune per tutti i moduli, e detta quindi "canonica")

* Syntax Matching e Sistemi di Programmazione ASN.1 L'utilizzo di una abstract syntax notation formale consente di automatizzare i due processi di mapping impliciti nel servizio di syntax matching Fase 1, off line: ASN.1 compiler (definisce il mapping internal form  abstract syntax) input: un modulo ASN.1 che definisce una sintassi astratta output: La definizione dei tipi di strutture dati locali (e.g. tramite typedef del C) che devono essere usate per rappresentare i tipi di strutture dati definiti nella sintassi astratta Una descrizione tabellare dei tipi di strutture dati della sintassi astratta e delle corrispondenti rappresentazioni locali (e.g. tramite variabili const del C)

* Syntax Matching e Sistemi di Programmazione ASN.1 Fase 2, on line: ASN.1 run-time system (interprete) (realizza, valore per valore, il mapping internal form  transfer syntax) input: La descrizione tabellare dei tipi di strutture dati della sintassi astratta e delle corrispondenti rappresentazioni locali (output 2 della fase 1) In caso di encodifica (il caso di decodifica e' simmetrico): una struttura dati locale (e.g. una variabile C) che rappresenta un valore della sintassi astratta, e l'identita' del relativo tipo di struttura dati ASN.1 output: In caso di encodifica (il caso di decodifica e' simmetrico): la stringa di ottetti che contiene il PDU applicativo (cioe' il P-SDU) encodificato secondo BER

Showing 1 - 20 of 52 items Details

Name: 
L06OSIDISTAPP
Author: 
Salati
Company: 
Siemens ICN
Description: 
Lez. 6 * Reti di Calcolatori Applicazioni distribuite OSI Vedi: M.T. Rose, The open book, Prentice Hall, sez. 10 (intro e 10.4), pagg. 379-380 e 420-440. ITU-T, Rec. X.219 - Remote Operations: Model, Notation and Service Definition. Copyright © 2006-2011 by Claudio Salati Alma Mater Studiorum - Universita' di Bologna Sede di Cesena II Facolta' di Ingegneria
Tags: 
the | 0000 | operation | rose | 1111 | invoke | ase | sintassi
Created: 
1/4/2001 12:43:13 PM
Slides: 
52
Views: 
5
Downloads: 
0
Rating: 
0


> Comment



Share this presentation
|

Comments

Share this presentation:

|
Sitemap