Alma Mater Studiorum - Universita' di Bologna
Sede di Cesena
Reti di Calcolatori
Il Modello di Riferimento OSI
Vedi:
• A.S. Tanenbaum, Computer Networks, 4th ed., Prentice Hall,
sez. 1.3 e 1.4, pagg. 26-49.
• M.T. Rose, The open book, Prentice Hall, sez. 2, pagg. 17-32.
• ISO, IS 8072 - OSI Transport Service Definition.
Copyright © 2006-2014 by Claudio Salati.
Lez. 1
1
Rete: rete reale
PC di Alice
File server
Alice
2
Rete: modello astratto
.1
• Rete
• un insieme di sottoreti,
• interconnesse da sistemi intermedi,
 detti intermediate system (IS) o router
(nel passato, anche gateway),
• che interconnette (serve a interconnettere) un insieme di sistemi
finali
 detti end system (ES) o host
• Scopo della rete
• Interconnettere tra loro gli ES
• Gli IS sono presenti solo per consentire l’interconnessione degli
ES
• Su ogni nodo della rete (ES o IS) e’ presente una istanza del
protocollo di (inter-) rete: IP (Internet Protocol)
3
Rete: modello astratto
.2’
• Sottorete
• Una infrastruttura di comunicazione connessa e omogenea.
• Puo' offrire una interfaccia con servizio di livello (layer) Data Link o
con servizio di livello di Rete.
• Il layer di Data Link si occupa del trasferimento di (pacchetti di)
dati tra sistemi fisicamente (direttamente) connessi.
• Il layer di Rete si occupa del trasferimento di (pacchetti di) dati
tra due sistemi qualunque di una rete connessa.
• In ogni caso tutti i nodi di una stessa sottorete (in particolare, ES e
IS delle nostra rete che si affacciano alla sottorete) possono
comunicare tra loro tramite il servizio offerto dalla sottorete.
• Dal punto di vista di IP due nodi di rete, ES e/o IS, che si
affacciano ad una stessa sottorete possono comunicare tra loro
tramite i servizi della sottorete, che e’ quindi vista da IP come
un servizio di livello Data Link.
• Esempio di sottorete:
IP over avian carriers, RFC 1149 (RFC, Wikipedia).
4
Rete: modello astratto
.2”
• Sottorete
• IP assume che tutte le sottoreti siano in grado di offrire un
servizio di comunicazione connectionless.
 Si assume quindi che sia supportata una funzione del tipo
Send_IPDatagram(IPDstAddr, IPSrcAddr, Dgram)
• N.B. se la sottorete non offre un servizio di comunicazione
connectionless (e.g. reti ATM, SDH, OTN) e’ necessario
introdurre uno stub di adattamento!
• Lo stub di adattamento e’ necessario anche per mappare gli
indirizzi di livello IP nei corrispondenti indirizzi di sottorete.
• Internet = Interconnection of Networks
5
Rete: modello astratto
IS
sottorete
sottorete
IS
sottorete
IS
sottorete
Sottorete
ES
ES
ES
Sottorete
IS
6
Nodi della rete (da: Rose)
• INTERMEDIATE-SYSTEM (IS)
• An IS is simply a single node, connected to more than one
subnetwork, which is capable and is allowed to forward data from
one subnetwork to another (non basta essere dual-homed!).
• An IS performs 2 tasks:
• it forwards data from one subnetwork to another (switching);
• in order to make the forwarding decision (where to send data
next), it usually participates in a distributed routing algorithm.
• END-SYSTEM (ES)
• An ES is a node in the network containing
• the end-to-end services necessary for data transfer,
• the application services necessary for information transfer,
• le applicazioni finali
(nel nostro caso, applicazioni di rete / distribuite).
• An ES is where the applications live.
• A node in the network may function both as an IS and as an ES.
7
Applicazioni finali e architettura layerizzata
•
Chi e’ che realizza un’applicazione?
• Un programma in esecuzione, cioe’ un processo.
• Nel nostro caso il programma e’ distribuito su diversi nodi della rete,
quindi e’ costituito di diversi processi che devono interagire tra loro.
•
Quindi tra chi deve consentire il colloquio (scambio di informazioni) la rete?
• Tra processi utente distribuiti su macchine diverse (i moduli del
programma distribuito).
•
Perche’ due processi su macchine diverse riescano a parlarsi tra loro e’
necessario che prima ci riescano le macchine su cui essi sono allocati.
 2 “conseguenze”:
 Organizzazione layerizzata delle funzionalita’ di rete :
• Colloquio all’interno di una sottorete vs. colloquio a livello di rete.
• Colloquio a livello di rete tra macchine vs.
colloquio tra processi allocati su queste macchine.
 Necessita’ di indirizzare gli interlocutori a diversi livelli:
• Indirizzo di una macchina a livello di sottorete.
• Indirizzo della macchina a livello di rete.
• Indirizzo di un processo.
8
Applicazioni di Rete: Esempi
• VNC (consolle remota ), costituita da 2 tipi di moduli:
• viewer
• server
• telnet (terminale remoto), costituita da 2 tipi di moduli:
• client
• server
• FTP / TFTP (file transfer), costituita da 2 tipi di moduli:
• client
• server
• NFS (network file system), costituita da 2 tipi di moduli:
• client
• server
• WWW (web), costituita da 2 tipi di moduli:
• browser
• server
• ...
 N.B.: appare sempre il paradigma client-server (anche se questo non
9
significa che tutte le applicazioni distribuite siano client-server)!
Modello astratto alternativo (client-server)
.1
IS
sottorete
sottorete
IS
sottorete
IS
sottorete
Sottorete
Server
Server
Client
Sottorete
IS
10
Modello astratto alternativo
ES
.2
ES
ES
ES
ES
11
Modello astratto alternativo
Client
.3
Server
Server
Server
Client
12
Modello astratto alternativo: cloud-computing
Client
Client
Client
Client
Client
Client
Client
Client
Client
Client
13
Modelli
• Il modello Internet e’ intrinsecamente peer-to-peer: qualunque ES
puo interagire con qualunque ES.
• Il modello client-server estremizzato, in cui alcune macchine sono
destinate ad ospitare solo il lato server delle applicazioni ed altre
solo il lato client, non e’ peer-to-peer:
due macchine client non possono interagire tra loro.
• Nel modello cloud-computing le macchine server sono addirittura
annegate dentro la rete: quando richiedo un servizio non so
nemmeno chi me lo stia fornendo!
• L’avere distinto tra macchine client e macchine server e’ quello
che ha poi consentito di utilizzare all’interno della rete (delle sue
intranet) indirizzi IP privati.
 Ma e’ anche una delle ragioni che hanno reso problematico le
comunicazioni tra due ES qualunque.
• Una intranet è un insieme di sottoreti di internet che sono gestite
da una unica organizzazione (amministrazione) e che può essere
14
ad accesso ristretto da/verso il resto della rete.
Modello “non piatto” di rete
IS
sottorete
sottorete
intranet
IS
sottorete
IS
sottorete
Sottorete
ES
ES
ES
Sottorete
intranet
IS
15
Dati (stringhe di bit/byte) vs. informazioni
• Vedi:
Beau Lotto: Optical illusions show how we see, TED Talks, July 2009;
http://www.ted.com/talks/beau_lotto_optical_illusions_show_how_we
_see.html, 4min & 30sec iniziali.
• Terminologia:
Corso Reti di Calcolatori
Beau Lotto
dati
information
informazioni
meaning
16
Dati (stringhe di bit/byte) vs. informazioni
• Un dato (cioe’ una stringa di bit o di byte)
e' una rappresentazione concreta (cioe’ una encodifica) di una
informazione (un valore di un certo tipo).
• Non esiste una associazione biunivoca intrinseca
dato  informazione.
• In quanti modi possiamo pensare di rappresentare l’informazione
“valore booleano true”?
• Dato un testo, con quanti alfabeti diversi puo’ essere scritto?
• Alfabeto ANSI ASCII
• Alfabeto ISO 8859-1
• Alfabeto Unicode
• Anche fissando l’alfabeto, in quante maniere diverse posso pensare
di codificare i caratteri di quell’alfabeto? Esempio Unicode:
• UTF-8
• UTF-16 big-endian
17
• UTF-16 little-endian
Tabella ASCII (7 bit per char)
18
Dati (stringhe di bit/byte) vs. informazioni
• Cosa rappresenta il dato (la stringa di bit) 01110110 ?
N.B.: assumiamo: most significant bit first (piu' a sinistra)!
• il numero +118 (con segno) in rappresentazione complemento-a-2
• il numero 118 (senza segno) in rappresentazione binaria
• il numero 76 (senza segno) in rappresentazione BCD
• il valore booleano TRUE (come in C: stringa con almeno un bit 0;
se tutti i bit sono 0 allora il valore rappresentato e' FALSE)
• Il carattere 'v' secondo l'alfabeto ASCII (esteso?)
• +118, 118, 76, TRUE, 'v' rappresentano informazioni
• Quando voglio usare un'informazione su un calcolatore (o trasferirla in
rete) la devo codificare (rappresentare concretamente) tramite una
stringa di bit o di byte (un dato)
• Se voglio risalire da un dato all'informazione da esso rappresentata
devo sapere:
• di quale tipo di informazione si tratta
• quale e' la regola di encodifica utilizzata per quel tipo di
19
informazione (nel contesto specifico)
Value notation
• Quando diciamo che +118, 118, 76, TRUE, 'v' rappresentano
informazioni, intendiamo che la notazione che usiamo ci consente
(obbliga) a indicare dei valori tipizzati.
• Quando in C scriviamo 5 intendiamo “valore di tipo int, 5”.
• Se volessimo il “valore di tipo unsigned, 5”, dovremmo scrivere 5U o
5u.
• Se volessimo il “valore di tipo long, 5”, dovremmo scrivere 5L o 5l.
• Analogamente, quando in C scriviamo 123.4 intendiamo “valore di
tipo double, 123.4”.
• Se volessimo il “valore di tipo float, 123.4”, dovremmo scrivere
123.4F o 123.4f.
• Nei linguaggi di programmazione ogni valore e’ sempre tipizzato
(appartiene ad uno ed un solo tipo).
• I linguaggi di programmazione prevedono una notazione che
consente di esprimere valori tipizzati.
20
Dati (stringhe di bit/byte) vs. informazioni
• Quando ricevo dei dati (e.g. un file) attraverso il web, come faccio a
capire quale tipo di informazioni essi rappresentano, e quindi quale e’
il programma adatto per trattarli?
• Testo HTML  il Browser si occupa direttamente del rendering
sullo schermo.
• Programma eseguibile  il sistema operativo lo prende in carico
per eseguirlo o per salvarlo in un file.
• Testo PDF  viene aperto con Acrobat Reader.
• Testo semplice (plain text)  viene aperto Wordpad o Notepad.
• ...
• Il PDU HTTP (qualunque cosa questo significhi) riporta il tipo
dell’informazione da esso trasportata, e.g.:
• Content-Type: text/html; charset=ISO-8859-4
• Content-Type: text/plain; charset=us-ascii
• Content-Type: image/gif
21
Dati vs. informazioni e architettura layerizzata
• Due moduli di una applicazione distribuita, tra loro, vogliono
scambiarsi informazioni.
• Ma le informazioni “in astratto” non esistono, esistono solo in quanto
incarnate in una rappresentazione concreta, in dati.
• Quindi, se due moduli di una applicazione distribuita vogliono
scambiarsi delle informazioni devono prima riuscire a scambiarsi tra
loro dei dati e poi essere in grado di associare quei dati in modo
corretto all’informazione che si vuole scambiare.
• Due funzionalita’ diverse, due layer diversi:
• Scambio di dati tra due moduli di una applicazione distribuita.
• Scambio di informazioni tra due moduli di una applicazione
distribuita.
22
Una architettura layerizzata
• Scambiare dati tra due moduli del programma distribuito e’
condizione necessaria (ma non sufficiente) per potere scambiare
informazione tra i due moduli.
• Scambiare dati tra due ES e’ condizione necessaria (ma non
sufficiente) per potere scambiare dati tra i due moduli di un
programma distribuito residenti su di essi.
• Scambiare dati tra due nodi di una sottorete e’ condizione
necessaria (ma non sufficiente) per potere scambiare dati tra i
due nodi della rete.
• Devo poter indirizzare
• Processi in esecuzione su un ES
• ES sulla rete
• Nodi sulle sottoreti
23
Una architettura gerarchica a livelli
• La costruzione di una rete di calcolatori e' un problema
complesso.
• La strategia normale per risolvere un problema complesso e' di
scomporlo in sotto-problemi piu' semplici.
• Una maniera per organizzare tra loro i sotto-problemi e' quella di
• definire una architettura gerarchica a livelli (layer)
• in cui ciascun livello e' realizzato sfruttando le funzionalita'
offerte dal livello (in generale, dai livelli) inferiore della
gerarchia.
• Ogni livello offre un insieme ben definito di servizi, che il livello
superiore puo' utilizzare senza doversi preoccupare di come
questi servizi sono implementati.
• ogni livello rappresenta una macchina virtuale.
• ogni livello rappresenta un dato astratto (ADT, classe).
24
Una architettura gerarchica e distribuita
Layer 5
Layer 4
Layer 3
Layer 2
Layer 1
25
Una architettura distribuita
• Una rete di calcolatori e' realizzata tramite l'interconnessione fisica
di diversi nodi che interagiscono tra loro.
• Ciascun layer dell'architettura di rete, per poter realizzare la propria
funzionalita', deve essere presente (istanziato) su piu' (alcuni o tutti
i) nodi della rete (a seconda del layer e del tipo di nodo).
 Ciascun layer e' cioe' realizzato in modo distribuito.
• Per poter realizzare la propria funzionalita' il layer n su un nodo
deve poter interagire con il layer n di uno o piu' altri nodi.
• Le regole dell'interazione tra le diverse istanze del layer n (in
particolare, la sintassi dell’informazione scambiata) e la logica di
evoluzione dello stato di ciascuna istanza a seconda degli eventi
che la coinvolgono sono complessivamente indicate come
protocollo del layer n.
• Una istanza del layer n e' chiamata protocol entity del layer n.
• Due protocol entity che dialogano tra loro si riferiscono come peer
26
entity (pari).
Protocollo
• Le strutture informative scambiate tra due istanze del layer n per
dialogare tra loro sono dette nPDU (Protocol Data Unit di livello
n).
• "Dialogare tra loro" significa "sviluppare il loro protocollo di
dialogo“, fare evolvere il proprio stato e il proprio
comportamento in base allo stato del pari ( scambio di
informazioni con il pari) e alle richieste del cliente.
• Perche' il dialogo sia efficace il protocollo (e in particolare la
struttura dell'informazione scambiata) deve essere condiviso, e
quindi standardizzato.
• La definizione di cosa fa
• azioni (e.g. inviare un certo PDU al pari) e
• transizioni di stato (protocol entity implementate come MSF)
una protocol entity di un layer che si trova in un certo stato a fronte
degli eventi che possono intervenire e' indicata come insieme delle
27
procedure del protocollo.
+---------+ ---------\
active OPEN
| CLOSED |
\
----------+---------+<---------\
\
create TCB
|
^
\
\ snd SYN
passive OPEN |
|
CLOSE
\
\
------------ |
| ---------\
\
create TCB |
| delete TCB
\
\
V
|
\
\
+---------+
CLOSE
|
\
| LISTEN |
---------- |
|
+---------+
delete TCB |
|
rcv SYN
|
|
SEND
|
|
----------|
|
------|
V
+---------+
snd SYN,ACK /
\
snd SYN
+---------+
|
|<---------------------------------->|
|
|
SYN
|
rcv SYN
|
SYN
|
|
RCVD |<-----------------------------------------------|
SENT |
|
|
snd ACK
|
|
|
|------------------------------------|
|
+---------+
rcv ACK of SYN \
/ rcv SYN,ACK
+---------+
|
-------------|
|
----------|
x
|
|
snd ACK
|
V
V
| CLOSE
+---------+
| ------| ESTAB |
| snd FIN
+---------+
|
CLOSE
|
|
rcv FIN
V
------|
|
------+---------+
snd FIN /
\
snd ACK
+---------+
| FIN
|<---------------------------------->| CLOSE |
| WAIT-1 |-----------------|
WAIT |
+---------+
rcv FIN \
+---------+
| rcv ACK of FIN
------|
CLOSE |
| -------------snd ACK
|
------- |
V
x
V
snd FIN V
+---------+
+---------+
+---------+
|FINWAIT-2|
| CLOSING |
| LAST-ACK|
+---------+
+---------+
+---------+
|
rcv ACK of FIN |
rcv ACK of FIN |
| rcv FIN
-------------- |
Timeout=2MSL -------------- |
| ------x
V
-----------x
V
\ snd ACK
+---------+delete TCB
+---------+
------------------------>|TIME WAIT|------------------>| CLOSED |
+---------+
+---------+
TCP Connection State Diagram
28
Layer e loro interazioni: colloquio tra pari
• I layer di un’architettura di rete sono normalmente numerati da 1 a
N, dove N dipende dalla particolare architettura di rete
(N=7 nel caso del modello di riferimento OSI, Open Systems
Interconnection,
ma in realta’ al di sopra del Layer 7 c’e’ l’applicazione utente vera e
propria, l’applicazione finale).
• Nel modello di riferimento OSI ad ogni layer sono associati anche
un nome ed un acronimo.
• Il layer 1 e' normalmente indicato come layer Fisico (Ph).
• In realta', eccetto che per il livello Fisico, non e' possibile un
colloquio diretto tra pari su nodi diversi.
• Per parlare con il proprio pari sul nodo B, l'istanza del layer n+1
(n1) presente sul nodo A deve (non ha altro strumento per farlo!)
utilizzare i servizi forniti dal layer n residente sul proprio nodo.
29
Accesso ai servizi del layer n
• L'accesso ai servizi del layer n da parte di un cliente (protocol entity
del layer n+1) avviene attraverso un nSAP (Service Access Point
del layer n)
• Ogni cliente del layer n utilizza un proprio nSAP per accedere ai
servizi di questo layer
• Lo nSAP di un cliente (di una entita’ di livello n+1) e’ distinguibile da
tutti gli altri nSAP
 non solo da quelli allocati sullo stesso nodo, ma da tutti gli altri
nSAP della rete!
• Un nSAP individua univocamente nella rete una entita’ di livello n+1
• Un nSAP consente alle altre entita’ di livello n+1 di indirizzare una
entita’ di livello n+1
• Un nSAP e’ formato dalla concatenazione dell’indirizzo della entita’ di
protocollo di livello n che fornisce il servizio (n-1SAP) con un nSEL
(selettore di livello n): l’nSEL identifica univocamente (a livello locale)
un particolare cliente dell’entita’ rispetto a tutti i suoi altri clienti
• N.B. di conseguenza gli indirizzi delle diverse entita’ dei diversi
layer sono strutturati ad albero.
30
OSI Reference Model
i
n
f
o
Layer
end-to-end,
presenti
solo sugli
ES
d
a
t
i
31
L’Architettura OSI “in soldoni”
Funzioni dei diversi layer dell’architettura di rete OSI:
• Layer 1, Physical, Ph: scambio di bit tra nodi adiacenti della rete.
• Layer 2, Data Link, Dl: scambio di pacchetti di dati (frame) tra nodi
adiacenti della rete.
• Layer 3, Network, N: scambio di pacchetti di dati (datagram) tra
nodi qualunque della rete, anche se non adiacenti.
• Layer 4, Transport, T: scambio di dati tra i moduli di una
applicazione distribuita.
• Layer 5, Session, S: ???.
• Layer 6, Presentation, P: scambio di informazioni tra i moduli di una
applicazione distribuita.
• Layer 7, Application, A: protocolli applicativi specifici (e.g. HTTP) e
supporti per la costruzione di applicazioni distribuite.
 E sopra il livello 7 ci sta la nostra applicazione, il programma utente
32
(e.g. il browser o il web server)!
Dati vs. Info: definizione di un nPDU, n = 2..6
• Non c’e’ distinzione tra informazione e sua encodifica.
• Occorre indicare non solo quali sono le informazioni scambiate, ma
anche come esse sono encodificate nell’nPDU.
• Esempio (PDU IP):
33
Dati vs. Info: definizione di un 7PDU (APDU)
• E’ sufficiente descrivere quale e’ l’informazione che viene scambiata, senza
preoccuparsi di come essa viene encodificata da un pari, dall’altro o sulla rete.
• Esempio (PDU RPC):
struct rpc_msg {
unsigned int xid;
// transaction identifier
union switch (msg_type mtype) {
case CALL:
call_body cbody;
case REPLY: reply_body rbody;
}
body;
};
enum msg_type {
CALL = 0,
REPLY = 1
};
struct call_body {
unsigned int rpcvers;
// must be ==2
unsigned int prog;
// binding info
unsigned int vers;
// binding info
unsigned int proc;
// binding info
opaque_auth
cred;
// authen. info
opaque_auth
verf;
// authen. info
// procedure specific parameters start here
};
. . .
34
Definizione OSI di un layer
• Ogni layer puo' definire diversi insiemi di servizi
• Ad esempio i livelli 2, 3, 4 del modello di riferimento OSI
(rispettivamente, Data Link o Dl, Network o N, Transport o T
layer) definiscono ciascuno due insiemi di servizi:
• Connection Oriented (CO) n-layer Service
• ConnectionLess (CL) n-layer Service
• Ogni insieme di servizi e' implementato da uno o piu' protocolli.
• Nell'architettura di rete OSI ogni layer e' definito tramite:
• La definizione degli insiemi di servizi offerti dal layer.
• La definizione dei protocolli utilizzati per realizzare quegli
insiemi di servizi.
• Non e’ prevista (neanche nel mondo TCP/IP!) la definizione di
un’API standard per l’accesso ai servizi offerti da un layer.
35
Definizione OSI dei servizi di un layer
• La definizione OSI dei servizi di un layer non avviene tramite la
definizione di una API (Application Programming Interface o
interfaccia programmatica) standard.
• Del resto nemmeno nel mondo Internet le API sono soggette a
definizione standard. Per il layer di Trasporto:
• Non esiste nessun RFC che definisce l'API socket.
• Non esiste alcun RFC che definisce l'API TLI:
TLI (XTI) e' uno standard Unix System V/Posix, non Internet.
• Internet standardizza solo i protocolli!
 La standardizzazione dei protocolli garantisce la
interoperabilita' di diverse implementazioni dell'architettura
di rete.
• La definizione di API standard consentirebbe la portabilita' del
SW da un ambiente operativo all'altro.
36
API standard?
 Piu’ facile da dire che da fare.
 I diversi ambienti operativi incoraggiano stili di programmazione
diversi :
 Sincrono (il programma invoca le system call quando vuole lui):
 e’ lo stile tradizionale Unix.
 Asincrono (o event driven, basato su call-back):
 e’ lo stile tradizionale Windows, derivato dall’organizzazione
dei SW per GUI.
 Sequenziale:
 e’ lo stile tradizionale C.
 Concorrente:
 e’ lo stile tradizionale Java e Windows.
 Anche quando delle API sono state standardizzate (e.g. TLI) e’
capitato che nessuno le ha prese sul serio!
37
Definizione di un layer: parole chiave .1
Si applicano a diversi layer
 servizi Connection-Oriented (CO) vs. servizi ConnectionLess
(CL)
Servizio di trasmissione dei pacchetti che richiede che le entita' di
comunicazione stabiliscano una connessione (circuito virtuale)
prima di inviare i dati (CO) vs.
servizio di trasmissione dei pacchetti che tratta ciascun pacchetto
dati come un'entita' a se stante (CL).
Servizio telefonico (CO) vs. servizio postale (CL).
 indirizzamento
Metodo che consente l'identificazione e la localizzazione di una
entita' della rete.
Per quanto detto: basato sull’utilizzo degli nSAP.
Identificazione (e.g. codice fiscale o alias piu’ povero, come
nome+cognome) vs. localizzazione (e.g. numero di telefono).
38
Definizione di un layer: parole chiave .2
Si applicano a diversi layer
 controllo degli errori
Capacita' di riconoscere che e' avvenuto un errore nella trasmissione o
nella ricezione di un pacchetto dati, eventualmente con lo scopo di
recuperarlo.
Error detecting codes (e.g. checksum, CRC) vs. error correcting codes
(e.g. Reed-Solomon) .
 controllo di flusso
Controllo della velocita' con cui gli host e/o i router si inviano i
pacchetti dati.
Per evitare che il lato ricevente sia sommerso di dati che non riesce a
gestire.
• Nel Layer 3: troppi datagram, in genere relativi a diversi flussi di
comunicazione, attraversano il router.
• Nel Layer 4: un modulo dell’applicazione distribuita non riesce a smaltire i
dati inviatigli da un altro modulo della stessa applicazione.
E.g.: “prof, sta parlando troppo in fretta!”
39
Definizione di un layer: parole chiave .3
Si applicano a diversi layer
 multiplexing / de-multiplexing
Creazione di un unico segnale complesso a partire da piu' segnali
indipendenti / separazione di un unico segnale complesso nei suoi
segnali componenti e loro gestione indipendente.
Esempi TLC: segnale multiplato nel tempo TDM/PCM (PDH, SDH),
o nelle frequenze (FDM), o nelle  (rete ottica).
 Quality of Service (QoS)
Qualita' del servizio che una rete garantisce, in termini di bit-rate,
jitter, ritardo, errori residui.
Esempio Ethernet/IEEE 802.1q: priorita’ dei frame
Esempio IP: diffServ e campo ToS (Type of Service)
 end-to-end
Che si applica agli estremi di una comunicazione, senza interessare
i punti (nodi/layer) intermedi.
40
Quindi, in particolare, che e’ allocato solo sugli ES.
Parole chiave e datagram IP
Quality of Service
De/multiplexing
Controllo degli errori
Indirizzamento
41
Definizione di un layer: parole chiave .4
Si applicano a diversi layer
 affidabilita’ (reliability)
Una comunicazione si definisce affidabile se
 non perde
 non duplica
 non desequenzializza
 garantisce l’integrita’
dei dati (delle informazioni) trasmessi (trasmesse).
• Un servizio affidabile deve necessariamente essere CO?
No, ma TCP e’ CO e affidabile mentre UDP e’ CL e non affidabile.
• Un servizio affidabile deve essere confermato (a livello utente)?
No, non e’ la conferma del cliente che garantisce l’affidabilita’, ma il
fornitore del servizio.
• Come si fa a sapere che un dato e’ stato ricevuto dal pari?
Perche’ lo garantisce il servizio! Quello che eventualmente non si
sa e’ “quando” avviene la ricezione. Esempio: email.
42
OSI Reference Model: layer end-to-end
43
Layer OSI - Layer 4, Trasporto (da: Rose)
• The Transport Layer is responsible for reliability and multiplexing of
data transfer across the network (over and above that provided by
the Network Layer) to the level required by the application.
• The Transport Layer is a true end-to-end layer, all the way from the
source to the destination (e’ allocato solo sugli ES!).
 A program on the source machine carries on a conversation with
a similar program on the destination machine.
• In the lower layers the protocols are between each machine and its
adjacent neighbors, and not between the ultimate source and
destination machines.
• The Transport Layer determines what type of service to provide to
the users of the network:
•
reliable point-to-point channel (no errors, losses, duplication);
•
unreliable transfer of isolated messages.
• In ogni caso, il servizio di Trasporto si occupa di trasferimento di dati
44
(bit, byte).
Layer OSI - Layer 5, Sessione
• Responsible for adding control mechanisms to the data exchange.
(Rose)
• Consente di strutturare il dialogo applicativo:
• controllo del dialogo (half-duplex vs. full duplex)
• assegnazione di token
• creazione di checkpoint per un eventuale backtrack parziale
• 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.
• Gestione "ben educata" della connessione, ed in particolare della
fase di disconnessione.
• Gestione di richieste contemporanee incrociate di apertura di una
connessione.
45
Layer OSI - Layer 6, Presentazione
• Il livello di Sessione (Trasporto) ci consente di effettuare uno
scambio affidabile di bit/byte (dati) tra due moduli di una
applicazione distribuita.
 Ma le applicazioni non vogliono scambiare dei bit, vogliono
scambiare delle informazioni !
• Il servizio di presentazione fornisce gli strumenti per scambiare
informazione (e.g. “il numero intero con segno +5”) tra due moduli di
una applicazione distribuita in modo tale che il significato
dell'informazione sia conservato inalterato indipendentemente:
•
dalla codifica utilizzata per rappresentare l'informazione durante
il trasferimento.
•
dalla codifica utilizzata per rappresentare localmente
l'informazione su ciascuno dei due moduli/End-System.
(per i quali possono essere diversi piattaforma HW, sistema
operativo, linguaggio di programmazione, sistema di
programmazione: vogliamo essere liberi!)
46
Layer OSI - Layer 7, Applicazione
• The Application Layer is the ultimate responsible for managing the
communications between applications. (Rose)
• Il Layer Applicativo non rappresenta le applicazioni finali nel loro
complesso (il livello utente, che si trova sopra il Livello 7) ma il loro
aspetto di interazione con la rete:
 Layer 7 = insieme dei protocolli applicativi utilizzati per offrire i
servizi di comunicazione in rete ai programmi utente.
 Protocol entity HTTP vs. applicazione finale web browser
• Il Layer 7 e' quindi costituito da un insieme di servizi applicativi, che in
termini OSI sono chiamati ASE (Application Service Element).
 Ad esempio la classe URL di Java che consente ad un modulo
client di interagire con un web server tramite il protocollo HTTP.
• Ci sono
• ASE progettati per supportare applicazioni specifiche (e.g. file
transfer), anche se possono essere utilizzati anche in contesti
diversi (e.g. file transfer come parte di una applicazione di system
management), e
47
• ASE che nascono per essere di uso generale (e.g. RPC).
Layer OSI - Layer 7, RPC
• RPC sta per Remote Procedure Call.
• Le RPC rappresentano il metodo di elezione per costruire applicazioni
distribuite utilizzando i servizi del Layer 7.
• L’interazione tra due moduli del programma distribuito avviene tramite
chiamata di procedura, cosi’ come succede nella programmazione
concentrata.
• Come nella costruzione di un programma concentrato:
• Sara’ necessario bind-are l’interfaccia del modulo server.
(nella programmazione concentrata lo fa di norma il linker)
• Sara’ necessario indirizzare la singola procedura all’interno del
modulo server.
(nella programmazione concentrata lo fa di norma il linker)
• Sara’ necessario scambiare in modo coerente parametri di
ingresso/uscita tra procedura chiamante e procedura chiamata.
 E controllare che questo scambio sia corretto!
(nella programmazione concentrata lo fa di norma il
48
compilatore)
Layer OSI
• Tutti i layer dal 4 compreso in su rappresentano interazioni e
funzionalita' end-to-end.
• Tanenbaum:
• Two of the OSI 7 layers are nearly empty (Session and
Presentation).
• The TCP/IP model does not have Session and Presentation
Layers. No need for them was perceived, so they were not
included. Experience with the OSI model has proven this view
correct: they are of little use to most applications.
• Salati:
• Falso: il Presentation Layer e' (concettualmente, e spesso anche
praticamente) essenziale.
• Il Session Layer e' meno rilevante, ma solo perche' le sue
funzionalita' possono essere meglio fornite da protocolli di Layer 7
(Application), e.g. RPC.
• Le funzioni del Layer 7 (Application), che non coincide con le
applicazioni finali ma che fornisce ad esse i servizi di
49
comunicazione (e.g. RPC), sono anch’esse essenziali.
Definizione OSI dei servizi di un layer
• La definizione OSI di un insieme di servizi di un layer avviene
listandone i singoli servizi componenti.
• Ogni servizio componente e' a sua volta definito in termini di primitive
(interazioni logiche) scambiate tra il layer stesso (il provider del
servizio) e il suo cliente.
• Sono previste 4 primitive (direzionali), che possono essere composte
secondo diverse ricette (3 ricette principali).
• Le 4 primitive sono:
• request
• indication
• response
• confirm
(layer cliente  layer servitore)
(layer servitore  layer cliente)
(layer cliente  layer servitore)
(layer servitore  layer cliente )
• Ogni primitiva ha associati una direzione (fissa, dal layer servitore a
quello cliente o viceversa) e un insieme di parametri (dipendente dal
particolare servizio in cui la primitiva e’ utilizzata).
• Il protocollo di un layer e’ descritto in termini di scambio di PDU con il
pari, di transizioni di stato e di scambio di primitive con i layer
50
adiacenti.
Servizi OSI: descrizione (ricetta 1)
Servizio Non Confermato
service user
service
provider
service user
NCS.req
NCS.ind
51
Servizi OSI: descrizione
•
•
•
I parametri passati dal service user nella primitiva .req (.resp)
• sono (possono essere) inseriti dal service provider nella
corrispondente primitiva .ind (.conf, rispettivamente),
• e sono (possono essere) cosi' trasmessi al service user
remoto.
Un parametro puo' anche avere un significato “locale”, che
coinvolge la protocol entity server, e quindi venire modificato da
questa e/o non essere trasmesso al pari.
Nella descrizione di un servizio sono indicati i parametri associati
alle primitive che lo implementano.
Service User
S.req(p1, …, pn)
Service
provider
Service User
S.ind(p1, …, pn)
52
Servizi e Protocolli
User
Service User
S.req
Service User
Protocol
S.conf
API
S.resp
S.ind
Provider
Service Provider
Protocol Entity
Protocol
Service Provider
Protocol Entity
Service
Provider
53
Servizi e Protocolli
kSAP
kSAP
k-1SAP
k-1SAP
54
Servizi OSI: descrizione (ricetta 2)
Servizio Confermato
service user
service
provider
service user
CS.req
CS.ind
CS.resp
CS.conf
55
Servizi OSI: descrizione (ricetta 3)
Servizio Iniziato dal Provider
service user
service
provider
service user
PS.ind
56
COTS, Connection Oriented Transport Service (ISO 8072)
 Servizi componenti:

T-CONNECT, confermato

T-DATA, non confermato

T-EXPEDITED-DATA, non confermato

T-DISCONNECT, non confermato o provider-initiated
 I servizi sono definiti in modo astratto: l'implementazione
dell'interfaccia deve solo essere funzionalmente "equivalente“.
 Quali sono le differenze tra il COTS OSI e il servizio offerto da TCP?

Basta fare l’analisi di questa specifica!
 Diverse API implementative possono essere associate ad una
stessa definizione di servizio/i. Nel caso del TS (in C):

socket

TLI
57
COTS: servizio T-CONNECT (ISO 8072)
 The Transport Connection (TC) establishment TS primitives can be
used to establish a TC, provided the TS users exist and are known to
the TS provider.
 Simultaneous T-CONNECT requests at the two TSAPs are handled
independently by the TS provider (N.B.: a differenza che in TCP, vedi
anche slide “TCP Connection State Diagram”).
 NOTE – Simultaneous T-CONNECT requests typically result in a
corresponding number of TCs.
 Nella descrizione del servizio sono descritti/e:
 i parametri di ciascuna primitiva che implementa il servizio.
 le sequenze, legittime e non, di utilizzo dei diversi servizi.
 La specifica del servizio e’ puramente funzionale: le primitive non
definiscono un’API.
 Come si implementa una indication?
 Request e confirm coincidono con chiamata e ritorno di una stessa
funzione o no?
 Response e’ una funzione? Non ha parametri di ritorno?
58
Scenari di Connessione
successful TC establishment
TS
provider
T-CONNECT.request
T-CONNECT.indication
T-CONNECT.response
T-CONNECT.confirm
59
Scenari di Connessione
rejection of TC establishment request by its user
TS
provider
T-CONNECT.request
T-CONNECT.indication
T-DISCONNECT.request
T-DISCONNECT.indication
N.B.: si tratta di una variante obsoleta della ricetta 2
60
Scenari di Connessione
rejection of TC establishment request by TS provider
TS
provider
T-CONNECT.request
T-DISCONNECT.indication
N.B.: si tratta di una variante obsoleta della ricetta 2
61
T-CONNECT: primitive e parametri (ISO 8072)
TS primitive
Parameter
T-CONNECT
request
T-CONNECT
indication
Called Address
X
X(=)
Calling Address
X
X(=)
Responding Address
T-CONNECT
response
T-CONNECT
confirm
X
X(=)
Expedited data option
X
X(=)
X
X(=)
Quality of Service
X
X
X
X(=)
X(U)
X(=)
X(U)
X(=)
TS user-data
X Mandatory parameter.
(=) The value of that parameter is identical to the value of the corresponding parameter of the
preceding TS primitive.
62
(U) Use of this parameter is a TS user option.
T-CONNECT: primitive e parametri (ISO 8072)
 Esempio: parametro “Expedited data option”
The Expedited Data option parameter indicates whether the
expedited (out-of-band in terminologia TCP) data option is to be
available on the TC.
If this service is declared not available, it cannot be used on the TC.
The value of the parameter is either “Expedited Data Service
selected” or “Expedited Data Service not selected”.
The values of the various primitives are related such that:
a) in the T-CONNECT request primitive, either of the defined
values may occur;
b) in the T-CONNECT indication primitive, the value is equal to the
value in the T-CONNECT request primitive;
c) in the T-CONNECT response primitive, the value is either
“Expedited Data Service not selected” or is equal to the value in
the T-CONNECT indication primitive;
d) in the T-CONNECT confirm primitive, the value is equal to the
63
value in the T-CONNECT response primitive.
T-CONNECT: primitive e parametri (ISO 8072)
 Esempio: negoziazione dell’opzione “Expedited data transfer”
The expedited TSDU transfer is only made available when
specifically requested and agreed to by both TS users when the TC
is established. When available this service is always bidirectional.
The procedure for negotiating the use of the expedited TSDU
transfer is as follows:
a) The calling TS user may request or not request the use of the
expedited TSDU transfer feature.
b) If the calling TS user does not request the use of the expedited
TSDU transfer feature, the called TS user is not allowed to
request its use.
c) If the calling TS user does request the use of the expedited
TSDU transfer feature, the called TS user may agree to the use
of expedited TSDU transfer on the TC, in which case the TS
provider is required to provide it.
The called TS user may refuse the use of expedited TSDU
transfer in which case the service will not be used on that TC. 64
T-CONNECT: primitive e parametri (ISO 8072)
Esercizio:
•
Come mai il parametro Expedited data option e’ uguale nelle
primitive .req e .ind del servizio T-CONNECT mentre il parametro
Quality of Service puo’ essere diverso?
•
E come mai, invece, entrambi i parametri sono uguali nella coppia
di primitive .resp / .conf del servizio T-CONNECT?
•
Come puo’ essere utilizzato il parametro TS user-data presente (in
forma opzionale) nelle primitive che implementano il servizio TCONNECT?
65
COTS: servizio T-DATA (ISO 8072)
 The TS provider provides for an exchange of TSDUs, in both
directions simultaneously.
 The TS provider preserves the integrity, the sequence and
boundaries of the TSDUs.
 N.B.:
TCP non preserva l’identita’ dei singoli SDU (i Ioro boundary, quali
byte fanno parte di un SDU e quali di un altro).
TCP e’ stream-oriented, non message-oriented.
Primitive
Parameter
TS user-data
X
(=)
T-DATA request
T-DATA indication
X
X(=)
Mandatory parameter.
The value of that parameter is identical to the value of the corresponding
parameter of the preceding TS primitive.
66
COTS: servizio T-DATA (ISO 8072)
 Notare che i parametri del servizio non consentono di specificare su
quale connessione si vogliono trasmettere i dati:
 Nella definizione di una interfaccia funzionale astratta non e’ un
problema.
(ricordiamoci che i servizi sono acceduti tramite un TSAP quindi:
• Le primitive sono scambiate tramite un TSAP.
• La connessione sulla quale si vogliono inviare i dati e’ quella
associata al TSAP a cui e’ stata inviata la primitiva TDATA.req.
Domanda: come e’ implementato un TSAP?)
 Nella definizione di un’API questa informazione e’ essenziale.
 La specifica OSI del servizio e’ puramente funzionale, non
implementativa.
 Il servizio T-DATA e’ non confermato.
 Il servizio T-DATA e’ affidabile.
67
Scenari di Data Transfer
normal data transfer
N.B.: il servizio T-DATA e' non confermato. Cio' non significa
che non sia affidabile!
TS
provider
T-DATA.request
T-DATA.indication
68
COTS: servizio T-EXPEDITED-DATA (ISO 8072)

The expedited data transfer service provides a further means of information
exchange on a TC in both directions simultaneously.

The transfer of expedited TSDUs is subject to different QOS and separate flow
control from that applying to TS user-data of the data transfer service .

The TS provider guarantees that an expedited TSDU will not be delivered after
any subsequently submitted normal TSDU or expedited TSDU on that TC .

The relationship between normal and expedited data flow is modelled by the
operation of reordering within queues ... In particular expedited data will be
delivered when the receiving TS user is not accepting normal data. However,
the amount of normal data bypassed by such reordering cannot be predicted.
Primitive
Parameter
TS user-data
X
(=)
T-EXPEDITED-DATA
request
T-EXPEDITED-DATA
indication
X
X(=)
Mandatory parameter.
The value of that parameter is identical to the value of the corresponding
parameter of the preceding TS primitive.
69
Scenari di Data Transfer
expedited data transfer
T-EXPEDITEDDATA.request
TS
provider
T-EXPEDITEDDATA.indication
70
COTS: servizio T-DISCONNECT (ISO 8072)
 The TC release TS primitives are used to release a TC. The release
may be performed:
a) by either or both of the TS users to release an established TC;
b) by the TS provider to release an established TC;
all failures to maintain a TC are indicated in this way;
c) by either or both the TS users to abandon TC establishment;
d) by the TS provider, to indicate its inability to establish a
requested TC.
 TC release is permitted at any time regardless of the current TC
phase.
 A request for release cannot be rejected (sarebbe anche impossibile
rigettarla visto che il servizio T-DISCONNECT e’ non confermato!).
 The Transport Service does not guarantee delivery of any TS userdata once the release phase is entered.
N.B.: a differenza del Trasporto OSI TCP garantisce invece la
chiusura morbida della connessione.
71
T-DISCONNECT: primitive e parametri (ISO 8072)
Primitive
Parameter
T-DISCONNECT request
Reason
TS user-data
T-DISCONNECT indication
X
X(U)
X(=)
X Mandatory parameter.
(=) The value of the parameter is identical to the value of the corresponding parameter of the
preceding TS primitive.
(U) Use of this parameter is a TS user option.
The Reason parameter gives information indicating the cause of the TC release.
 Remote TS user invoked.
 TS provider invoked. This reason may be of transient or permanent nature.
 lack of local or remote resources of the TS provider;
 called TS user unknown;
 called TS user unavailable;
 ...
72
Scenari di Disconnessione
TC release initiated by its user
TS
provider
T-DISCONNECT.request
T- DISCONNECT.indication
73
Scenari di Disconnessione
TC release initiated by its provider
TS
provider
T-DISCONNECT.indication
T- DISCONNECT.indication
74
Dati scambiati sull'interfaccia e PDU .1

Consideriamo la fase di data transfer:
Il layer n (server) e' richiesto di trasferire dati forniti dal suo layer
cliente, il layer n+1.
I dati da trasmettere sono passati dal layer n+1 come parametro in
una primitiva inviata al layer n tramite lo nSAP da lui utilizzato.
 E.g. il parametro TS user-data della primitiva T-DATA.request.

Questi dati rappresentano lo n+1PDU, ma dal punto di vista del
layer n sono opachi (payload):
 il layer n non li capisce, li deve solo trasportare al pari di livello
n+1 dall'altra parte della rete.

Dal punto di vista del layer n questi dati sono indicati da OSI come
nSDU (Service Data Unit di Layer n).

Per offrire il suo servizio il layer n deve parlare con il suo pari, cioe'
deve produrre un nPDU, e questo nPDU deve contenere lo nSDU,
cioe' lo n+1PDU.
75
Dati scambiati sull'interfaccia e PDU .2

Lo nSDU (user-data) rappresenta il campo informativo (payload)
dello nPDU, ma questo deve contenere anche uno header (o
overhead) per supportare il protocollo:
 e.g. per indicare che lo nPDU trasporta degli user-data.
 questo header e' chiamato da OSI PCI (Protocol Control
Information).

Per richiedere la trasmissione del proprio PDU un cliente puo'
dover fornire al layer servitore informazioni aggiuntive (e.g. QoS,
Quality of Service), oltre che indicare il servizio/primitiva richiesti:
 l'insieme di queste informazioni e' chiamato ICI (Interface
Control Information).
76
Dati scambiati sull'interfaccia e PDU .3

ICI +PDU nel loro complesso sono indicati da OSI come IDU
(Interface Data Unit).

Analogamente il PDU e' composto della coppia PCI+SDU.

Un IDU rappresenta una interazione tra due layer di livello
diverso, entrambi residenti su uno stesso nodo di rete.

Un PDU rappresenta una interazione tra due diverse protocol
entity dello stesso livello, residenti (in generale) su diversi nodi
della rete.
ICI
n+1 PDU
IDU
n Protocol
Machine
ICI
n SDU
PCI
n SDU
Layer n+1
Layer n
= n PDU
77
Comunicazioni virtuali vs. Comunicazioni reali
• Segmentazione e riassemblaggio di uno SDU
• 4PDU = 3SDU
78
Segmentazione e riassemblaggio
 Segmentazione e riassemblaggio, nel mondo OSI, sono funzioni
tipiche sia del layer 3 che del layer 4.
 In un mondo message based se c’e’ segmentazione deve esserci
anche riassemblaggio.
 IP, che e’ message based e supporta la segmentazione, deve di
conseguenza supportare anche il riassemblaggio
 TCP pero’ e’ stream based, non message based: quindi il servizio
TCP non e’ costretto a mantenere l’identita’ dei TSDU.
 Non ha senso parlare di riassemblaggio.
 La nozione di segmentazione assume un significato
completamente diverso come possibilita’ da parte della protocol
entity TCP mittente di segmentare e assemblare TSDU come e’
piu’ conveniente per ottimizzare l’utilizzo della rete.
 Esercizio: disegnare una serie di scenari che evidenzino come
TCP puo’ gestire liberamente la trasmissione in rete e il
prolungamento al cliente lato RX dei TSDU.
79
Servizi e Protocolli
 Un servizio rappresenta un insieme di operazioni che un layer
servitore mette a disposizione di un layer cliente.
 Un servizio e' correlato all'interfaccia tra due layer su uno stesso
nodo.
 Un protocollo e' un insieme di regole che governano il formato e il
significato (l'effetto) dei PDU che sono scambiati fra due entita' di
pari livello (in generale, su due nodi diversi).
 Le entita' di un layer utilizzano il protocollo per dialogare tra loro e
realizzare i servizi offerti dal layer.
 Le diverse protocol entity di un layer sono distribuite su piu’ nodi,
e per riuscire a fornire il servizio devono poter interagire tra loro.
 Dal punto di vista del cliente del layer, il protocollo puo' anche
cambiare, purche' non cambi il servizio offerto:
 se cambia il protocollo ma non il servizio offerto da un layer, il
ruolo del layer nell'architettura di rete rimane invariato.
80
Servizi e Protocolli
Tanenbaum:
 "The specification of a network architecture must contain enough
information to allow to implement each layer so that it will correctly
obey the appropriate protocol
(e quindi sara’ capace di interoperare con i suoi pari).
 Neither the details of the implementation nor the specification of
the interfaces (le API locali di ciascun layer che definiscono
implementativamente i servizi forniti o utilizzati dai diversi layer) is
part of the architecture because these are hidden inside the
machine and not visible from the outside.
 It is not even necessary that the interfaces on all machines in a
network be the same, provided that each machine can correctly
use all the protocols.”
81
Servizi e Protocolli
 In effetti molte interfacce di rete sono "difficilmente" accessibili al
normale programmatore (e.g. interfacce dei Layer 2 e 3).
 In realta’ sui sistemi operativi piu’ diffusi anche l’accesso ai
servizi di questi Layer avviene tramite l’API socket, ma questa
consente modalita’ di utilizzo del servizio molto piu’ complesse
di quelle utilizzate per il Layer di Trasporto
 Pero‘: ci sono interfacce (e.g. quella del Layer di Trasporto) che e'
essenziale siano standardizzate se si vuole ottenere la portabilita'
delle applicazioni di rete.
82
Domande e risposte
• Possono interagire correttamente tra di loro due clienti del Servizio
di Trasporto se
• Il primo usa l’API Socket di Java per accedere al Servizio di
Trasporto TCP mentre il secondo usa l’API socket in C? Si’.
• Il primo usa l’API TLI in C per accedere al Servizio di Trasporto
TCP mentre il secondo usa l’API socket in C? Si’.
• Entrambi usano l’API socket in C per accedere al Servizio di
Trasporto, ma uno utilizza quello TCP e l’altro quello UDP? No.
• Entrambi usano l’API socket in C per accedere al Servizio di
Trasporto, ma uno utilizza quello TCP e l’altro quello OSI
COTS? No.
• Perche’ il nome Open Systems Interconnection (OSI) e’
fuorviante?
Perche’ in realta’ stiamo parlando di una interconnessione aperta
(protocolli condivisi) di sistemi chiusi (le API dei layer sono definite
privatamente dai singoli sistemi)!
83
Scarica

X(=)