Modello ISO/OSI Un metodo di studio Vallì Rossella Carando 2006 SIS.
-
Upload
crispino-fantini -
Category
Documents
-
view
230 -
download
1
Transcript of Modello ISO/OSI Un metodo di studio Vallì Rossella Carando 2006 SIS.
Modello ISO/OSI Modello ISO/OSI
Un metodo di studio Un metodo di studio
Vallì Rossella Carando 2006 SIS Vallì Rossella Carando 2006 SIS
Livello data linkLivello data link
Compiti:Compiti: Framing Framing Accesso al mezzo trasmissivo (MAC)Accesso al mezzo trasmissivo (MAC) Controllo erroriControllo errori Controllo del flussoControllo del flusso
pdu: frame
rete rete
Compiti:Compiti: Determinazione percorso nella sottoreteDeterminazione percorso nella sottorete Indirizzamento (compatibilità)Indirizzamento (compatibilità) Enumerazione pacchetti Enumerazione pacchetti Controllo congestione Controllo congestione
pdu:pacchetto
trasportotrasporto
Compiti:Compiti: Accetta dati dal livello superiore Accetta dati dal livello superiore Passa al livello rete Passa al livello rete Controllo trasmissioneControllo trasmissione Regolazione del flussoRegolazione del flusso
pdu:segmento
sessionesessione
Compiti:Compiti: Permette l’instaurarsi delle sessioniPermette l’instaurarsi delle sessioni Ad es. trasferimento archiviAd es. trasferimento archivi Gestione dei token Gestione dei token Sincronizzazione Sincronizzazione
Esempio: nel trasferimento di filesEsempio: nel trasferimento di files
Pdu: SPDU
presentazione presentazione
Compiti:Compiti: Calcolatori differenti hanno formati diversiCalcolatori differenti hanno formati diversi Strutture dati astratte Strutture dati astratte Codifica di dati in un formato riconosciutoCodifica di dati in un formato riconosciuto
Pdu: PPDU
Applicazione Applicazione
Compiti:Compiti: Interfaccia utente Interfaccia utente File transferFile transfer Mail Mail Terminali virtuali remotiTerminali virtuali remoti
Pdu: APDU
Data link
Rete
Trasporto
Sessione
Applicazione
Presentazione
Trasporto
Sessione
Applicazione
Presentazione
Modello ISO-OSI Modello ISO-OSI
fisico
Data link
Rete
fisico
dl
Rete
fisico
dl
Rete
fisico
Data Link: il framingData Link: il framing
Per framing si intende il frazionamento Per framing si intende il frazionamento di un insieme di bytes in porzioni adatte di un insieme di bytes in porzioni adatte al trasporto sulla linea.al trasporto sulla linea.
1.1. Conteggio caratteriConteggio caratteri
2.2. Character stuffingCharacter stuffing
3.3. Bit stuffing Bit stuffing
Dove lo collochiamo?Dove lo collochiamo?
Sulla scheda di reteSulla scheda di rete Gira insieme al livello fisico Gira insieme al livello fisico Entrambi possono essere visti come Entrambi possono essere visti come
procedure chiamate dal livello networkprocedure chiamate dal livello network Noi assumiamo che siano Noi assumiamo che siano processi processi
indipendentiindipendenti
Caratteristiche Caratteristiche
Il DL vede il prossimo computer sulla rete Il DL vede il prossimo computer sulla rete
Cosa succede ?Cosa succede ?
Pacchetto da livello rete header trailer
Relazioni con gli altri Relazioni con gli altri livelli…..livelli…..
Rete
Data link
fisico
Rete
Data link
fisico
Come è fatto un frame?Come è fatto un frame?
Assumiamo che vi siano i seguenti campi:Assumiamo che vi siano i seguenti campi:
tipo seq ack Informazioni
Funzioni e livelliFunzioni e livelli
Il DL comunica attraverso funzioni e Il DL comunica attraverso funzioni e strutture dati:strutture dati:
al_livello_fisicoal_livello_fisicodal_livello_fisicodal_livello_fisico
al_livello_reteal_livello_retedal_livello_retedal_livello_rete
Strutture datiStrutture dati
Pacchetto ( struttura livello rete)Pacchetto ( struttura livello rete) Frame ( struttura livello data link)Frame ( struttura livello data link)
Immagino che siano strutture o recordImmagino che siano strutture o record
Lo schema del frame è quello già vistoLo schema del frame è quello già visto
Se arriva un frame…Se arriva un frame…
Definiamo una funzione attesa_evento in Definiamo una funzione attesa_evento in grado di segnalare l’arrivo di un framegrado di segnalare l’arrivo di un frame
attesa_evento
Primo protocollo Primo protocollo (heaven)(heaven)
Ipotesi: Ipotesi: unidirezionalitàunidirezionalità Livelli sempre pronti Livelli sempre pronti Tempo di elaborazione Tempo di elaborazione 00 Canale perfetto senza errori Canale perfetto senza errori
HeavenHeaven
trasmettitoretrasmettitore
while (true)while (true){{
dal_livello_retedal_livello_rete
(pacchetto);(pacchetto);
frame.info=pacchettframe.info=pacchetto;o;
al_livello_fisico(frameal_livello_fisico(frame););
}}
RicevitoreRicevitore
while (true)while (true){{
attesa_evento;attesa_evento;
dal_livello_fisico(framedal_livello_fisico(frame););
pacchetto=frame.info;pacchetto=frame.info;
al_livello_rete(pacchettal_livello_rete(pacchetto);o);
}}
Irrealizzabile, perché?Irrealizzabile, perché?
Si dà per certa una velocità di Si dà per certa una velocità di elaborazione molto bassa (tendente a 0)elaborazione molto bassa (tendente a 0)
I buffer non sono mai pieniI buffer non sono mai pieni Non ci sono erroriNon ci sono errori
L’esempio che segue (stop and wait) cerca L’esempio che segue (stop and wait) cerca di essere più realistico …di essere più realistico …
stop and wait stop and wait
trasmettitoretrasmettitore
while (true)while (true){{
dal_livello_retedal_livello_rete
(pacchetto);(pacchetto);
frame.info=pacchetto;frame.info=pacchetto;
al_livello_fisico(frame);al_livello_fisico(frame);
aspetta_evento(ack);aspetta_evento(ack);
}}
RicevitoreRicevitorewhile (true)while (true){{attesa_evento();attesa_evento();dal_livello_fisico(framdal_livello_fisico(fram
e);e);pacchetto=frame.info;pacchetto=frame.info;al_livello_rete(pacchetal_livello_rete(pacchet
to);to);al_livello_fisico(ack);al_livello_fisico(ack);}}
Irrealizzabile, perché?Irrealizzabile, perché?
Si dà per certa il fatto che i frame arrivino Si dà per certa il fatto che i frame arrivino sempre giustisempre giusti
E se usassimo un timer?E se usassimo un timer?
Si potrebbe pensare di inviare un riscontro ogni Si potrebbe pensare di inviare un riscontro ogni volta che arriva un frame corretto.volta che arriva un frame corretto.
Se il trasmettitore non riceve nulla, dopo un certo Se il trasmettitore non riceve nulla, dopo un certo tempo rispedisce.tempo rispedisce.
ma anche questo non ma anche questo non funzionerebbe….funzionerebbe….
E se si perde il frame di ack?E se si perde il frame di ack?
In assenza di numerazione dei frame In assenza di numerazione dei frame verrebbe rispedito lo stesso frame verrebbe rispedito lo stesso frame spedito prima, creando una duplicazione spedito prima, creando una duplicazione dannosa…….dannosa…….
Infatti non abbiamo uno strumento per Infatti non abbiamo uno strumento per avvertire il livello rete che una cosa è già avvertire il livello rete che una cosa è già arrivata!arrivata!
Per esempio …..Per esempio …..
Rimando un frame perché è andato perso
ack!Risultato:
frame duplicato
stop and wait per canale stop and wait per canale disturbatodisturbato
Inserisco un numero di sequenza e un Inserisco un numero di sequenza e un timer timer
Se il ricevitore riceveSe il ricevitore riceve il frame atteso manda il frame atteso manda l’ack, il trasmettitore spedisce il prossimol’ack, il trasmettitore spedisce il prossimo
Se non arriva l’ack il trasmettitore Se non arriva l’ack il trasmettitore rispedisce rispedisce
stop and wait per canale stop and wait per canale disturbatodisturbato
trasmettitoretrasmettitoreNum_seq=0;Num_seq=0;dal_livello_rete(pacchettdal_livello_rete(pacchett
o);o);while (true)while (true){{frame.info=pacchetto;frame.info=pacchetto;Frame.seq=Num_seq;Frame.seq=Num_seq;al_livello_fisico(frame);al_livello_fisico(frame);Inizio_timer;Inizio_timer;aspetta_evento(ack);aspetta_evento(ack);
Se Se (evento==arrivo_ack) (evento==arrivo_ack) {{
dal_livello_rete(pacchettdal_livello_rete(pacchetto);o);
Pacchetto=frame.info;Pacchetto=frame.info;
Al_livello_rete Al_livello_rete (pacchetto);(pacchetto);
}}
}}
stop and wait per canale stop and wait per canale disturbatodisturbato
ricevitorericevitoreNum_seq=0;Num_seq=0;while (true)while (true){{aspetta_evento(arrivo_frame);aspetta_evento(arrivo_frame);Se (evento==arrivo_frame) {Se (evento==arrivo_frame) {dal_livello_fisico(frame); dal_livello_fisico(frame); Se (frame. Se (frame. Seq==num_seq)Seq==num_seq)Al_livello_rete(frame.info);Al_livello_rete(frame.info);Num_seq++;Num_seq++;} }} }
criticitàcriticità
I protocolli precedenti presentavano I protocolli precedenti presentavano criticitàcriticità
UnidirezionaliUnidirezionali Se usiamo un collegamento full duplex Se usiamo un collegamento full duplex
uno dei due canali porta solo ack (è uno dei due canali porta solo ack (è quindi sprecato)quindi sprecato)
Invece, usando un canale solo in half Invece, usando un canale solo in half duplexduplex
Il piggybacking Il piggybacking
Significa letteralmente “viaggiare a Significa letteralmente “viaggiare a scrocco”scrocco”
Invece di mandare l’ACK separato..Invece di mandare l’ACK separato.. Si attende che il ricevente debba inviare Si attende che il ricevente debba inviare
un frameun frame Si appende l’ack al frame risparmiando Si appende l’ack al frame risparmiando
ack
problemiproblemi
C’è un timeout per inviare l’ACK?C’è un timeout per inviare l’ACK?
Si, se non c’è necessità impellente di Si, se non c’è necessità impellente di inviare un frame di risposta si manda inviare un frame di risposta si manda l’ack separatamentel’ack separatamente
Se il timer scatta troppo presto cosa Se il timer scatta troppo presto cosa succede?succede?
Viene rispedito il frame, con ovvio Viene rispedito il frame, con ovvio dispendio di bandadispendio di banda
Riassumendo su un Riassumendo su un canale unico….canale unico….
A B
dati da A a B dati da A a Back da A a B
dati da B ad A dati da B ad A ack da B ad A
Sliding windowsSliding windows
Letteralmente finestre scorrevoliLetteralmente finestre scorrevoli Ack contiene il numero dell’ultimo frame Ack contiene il numero dell’ultimo frame
ricevuto senza erroriricevuto senza errori Gli stop and wait per canale disturbato Gli stop and wait per canale disturbato
hanno finestra 1hanno finestra 1
In cosa consiste:In cosa consiste:parte mittenteparte mittente
Ogni frame spedito contiene un numero progressivo (0-2n-1)
Il campo dedicato ad ack è grande n bit Mittente ha una finestra in cui
mantiene la sequenza dei frame che può
trasmettere finestra vi sono gli indici, in un buffer i
frame
Inoltre…Inoltre…
Se arriva un ack (numerato) viene tolto l’indice Se arriva un ack (numerato) viene tolto l’indice corrispondente dalla finestracorrispondente dalla finestra
Se dal livello network arriva un nuovo Se dal livello network arriva un nuovo pacchettopacchetto
si fa avanzare la finestra di una posizione si fa avanzare la finestra di una posizione (entra un nuovo indice)(entra un nuovo indice)
Se i buffer sono pieni si ferma il livello networkSe i buffer sono pieni si ferma il livello network
Cosa succedeCosa succedeparte destinatarioparte destinatario
Il destinatario mantiene una finestra Il destinatario mantiene una finestra Questa non è necessariamente uguale a Questa non è necessariamente uguale a
quella del mittentequella del mittente Se arriva un frame il cui indice è fuori Se arriva un frame il cui indice è fuori
dalla finestra è scartato (non si invia dalla finestra è scartato (non si invia l’ack)l’ack)
Se arriva un frame il cui indice è dentro Se arriva un frame il cui indice è dentro la finestra è accettato ( si invia l’ack)la finestra è accettato ( si invia l’ack)
Nella finestraNella finestra
Frame inviati ma non ancora confermatiFrame inviati ma non ancora confermati Frame da inviare Frame da inviare
1 2 3 4 5 6 7 8 9 10111
ricevitorericevitoreAvanza solo se arriva il frame giustoAvanza solo se arriva il frame giusto Se arriva un frame il cui indice è fuori dalla Se arriva un frame il cui indice è fuori dalla
finestra è scartato (non si invia l’ack)finestra è scartato (non si invia l’ack)
1 2 3 4 5 6 7 8 9 10111
E se volessimo E se volessimo ottimizzare?ottimizzare?
Si mandano più frame in cascata, senza Si mandano più frame in cascata, senza aver ricevuto ack del primoaver ricevuto ack del primo
Questo metodo è detto pipeliningQuesto metodo è detto pipelining Ho due metodi per il controllo: go-back-nHo due metodi per il controllo: go-back-n
e selective repeat e selective repeat
Go-back-nGo-back-n
È in effetti un metodo a finestra 1È in effetti un metodo a finestra 1 Usato per comunicazioni satellitariUsato per comunicazioni satellitari Se arriva un frame danneggiato o fuori Se arriva un frame danneggiato o fuori
sequenza non si manda acksequenza non si manda ack Il mittente va in timeout, quindi Il mittente va in timeout, quindi
ritrasmette a partire dal primo di cui non ritrasmette a partire dal primo di cui non ha avuto l’ACKha avuto l’ACK
Selective repeat Selective repeat
Il destinatario, invece di scartarli, Il destinatario, invece di scartarli, mantiene i frame successivi a quello non mantiene i frame successivi a quello non arrivato in un bufferarrivato in un buffer
Non appena arriva il frame atteso si Non appena arriva il frame atteso si manda tutto il contenuto del buffer a manda tutto il contenuto del buffer a livello networklivello network
Per ogni frame arrivato bene, viene Per ogni frame arrivato bene, viene mandato un ack con il numero più alto mandato un ack con il numero più alto ricevuto fino ad allora.ricevuto fino ad allora.