Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Sintesi corso Reti e Internet, Schemi e mappe concettuali di Reti Telematiche

Sintesi generale de corso reti e internet

Tipologia: Schemi e mappe concettuali

2024/2025

Caricato il 12/12/2025

andrea-rossi-48
andrea-rossi-48 🇮🇹

1 documento

1 / 64

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Reti e Internet
Introduzioni alle reti di calcolatori
Applicazioni sulle reti di computer:
Applicazioni aziendali condivisioni delle risorse (database aziendali), mezzo di comunicazione (e-mail,
voip, desktop sharing, tele-medicina), E-commerce, modello cliente – server;
Applicazioni domestiche connettività (accesso alle informazioni da remoto: web, notizie),
comunicazioni person to person (motello peer to peer), intrattenimento interattivo (IP-TV), E-learning,
Internt of things (IOT);
Applicazioni per utenti mobili connettività ovunque (smartphone, laptop), instant messages, sensori
sui dispositivi.
Infrastruttura di rete:
Bus, Anello, Mesh (ogni host è collegato agli altri), Stella, Albero e Albero a due livelli;
PAN (Personal Area Network) distanze limitate (computer connesso alle sue periferiche), paradigma
del master and slave, tecnologia di riferimento bluetooth;
LAN (Local Area Network) rete aziendale (estensione tipica di un edificio, connettere dei pc in
un’azienda, condivisione delle risorse), tecnologie di riferimento Wi-Fi (Access point) Ethernet
(commutatore);
MAN (Metropolitan Area Network) estensione cittadina (TV-via cavo), tecnologie di riferimento TV-via
cavo e WiMAX;
WAN (Wide Area Network) estensione a livello nazionale o oltre (reti telefoniche), tecnologie di
riferimento PSTN (Public Switch Telefon Network) e PLMN (Public Land Mobile Network), differenze con
la LAN:
o Gli host e la rete sono gestiti da persone differenti: network service provider;
o Diverse tecnologie di trasmissione: fili in rame, fibre, wireless, satelliti;
o Possono essere connessi singoli telefoni o PC oppure un’intera LAN.
Un insieme distinto di sottoreti, che sono interconnesse, formano una inter-rete o internet, vi è la presenza di un
gateway per l’interconnessione tra le diverse reti (interfacce).
Gerarchie protocollari:
Organizzazione del software di gestione di telecomunicazione attraverso protocolli stratificati e gerarchici,
importante stratificare in maniera gerarchica il software, definire interfacce con strati superiori e inferiori. I layer
prende i servizi degli strati inferiori esegue delle funzionalità tramite le primitive definite nello strato e fornisce
allo strato superiore un servizio. Per implementazioni posso sostituire un intero blocco (layer) lasciando invariate
le interfacce oppure posso sostituire sia i blocchi (layer) che il protocollo lasciando invariate le interfacce superiori
e inferiori. Il dato per passare dal layer superiore a quelli inferiori viene inviato allo strato inferiore li viene
incapsulato ed aggiunto un header successivamente passato allo strato inferiore ancora, a questo punto può
avvenire lo spacchettamento del dato e quindi la sua suddivisione con annessa aggiunta di header e anche trader
così fino allo strato più basso.
Progettazione degli strati:
Affidabilità della rete rilevazione e correzione degli errori, routing (più percorsi nella rete per giungere
a destinazione);
Evoluzione della rete stratificazione dei protocolli, indirizzamento (meccanismi per identificare
mittente e destinatario), riordino dei pacchetti, frammentazione e deframmentazione dei pacchetti;
Allocazione delle risorse multiplazione statica/statistica (mettere sulla stessa linea più flussi
appartenenti ad host diversi), controllo di flusso (evitare che un mittente veloce inondi di dati un
destinatario lento), congestione, QOS (Quality of Service), security (confidenzialità, autenticità, integrità).
Due tipi di servizi offerti dalla rete:
Servizio orientato alla connessione stabilire una connessione, trasmissione di dati, rilascio della
connessione. Servizi: flusso di messaggi affidabili, flusso di byte affidabili, connessione inaffidabile (voice
over IP)
o Commutazione di circuito mezzo fisico dedicato, multiplazione statica, messaggi in sequenza,
integrità temporale;
o Commutazione di pacchetto mezzo fisico condiviso, multiplazione statica, messaggi in
sequenza, flessibilità all’accesso (mancanza di integrità temporale);
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40

Anteprima parziale del testo

Scarica Sintesi corso Reti e Internet e più Schemi e mappe concettuali in PDF di Reti Telematiche solo su Docsity!

Reti e Internet

Introduzioni alle reti di calcolatori

Applicazioni sulle reti di computer:

  • Applicazioni aziendali → condivisioni delle risorse (database aziendali), mezzo di comunicazione (e-mail, voip, desktop sharing, tele-medicina), E-commerce, modello cliente – server;
  • Applicazioni domestiche → connettività (accesso alle informazioni da remoto: web, notizie), comunicazioni person to person (motello peer to peer), intrattenimento interattivo (IP-TV), E-learning, Internt of things (IOT);
  • Applicazioni per utenti mobili → connettività ovunque (smartphone, laptop), instant messages, sensori sui dispositivi. Infrastruttura di rete:
  • Bus, Anello, Mesh (ogni host è collegato agli altri), Stella, Albero e Albero a due livelli;
  • PAN (Personal Area Network) → distanze limitate (computer connesso alle sue periferiche), paradigma del master and slave, tecnologia di riferimento bluetooth;
  • LAN (Local Area Network) → rete aziendale (estensione tipica di un edificio, connettere dei pc in un’azienda, condivisione delle risorse), tecnologie di riferimento Wi-Fi (Access point) Ethernet (commutatore);
  • MAN (Metropolitan Area Network) → estensione cittadina (TV-via cavo), tecnologie di riferimento TV-via cavo e WiMAX;
  • WAN (Wide Area Network) → estensione a livello nazionale o oltre (reti telefoniche), tecnologie di riferimento PSTN (Public Switch Telefon Network) e PLMN (Public Land Mobile Network), differenze con la LAN: o Gli host e la rete sono gestiti da persone differenti: network service provider; o Diverse tecnologie di trasmissione: fili in rame, fibre, wireless, satelliti; o Possono essere connessi singoli telefoni o PC oppure un’intera LAN. Un insieme distinto di sottoreti, che sono interconnesse, formano una inter-rete o internet, vi è la presenza di un gateway per l’interconnessione tra le diverse reti (interfacce). Gerarchie protocollari: Organizzazione del software di gestione di telecomunicazione attraverso protocolli stratificati e gerarchici, importante stratificare in maniera gerarchica il software, definire interfacce con strati superiori e inferiori. I layer prende i servizi degli strati inferiori esegue delle funzionalità tramite le primitive definite nello strato e fornisce allo strato superiore un servizio. Per implementazioni posso sostituire un intero blocco (layer) lasciando invariate le interfacce oppure posso sostituire sia i blocchi (layer) che il protocollo lasciando invariate le interfacce superiori e inferiori. Il dato per passare dal layer superiore a quelli inferiori viene inviato allo strato inferiore li viene incapsulato ed aggiunto un header successivamente passato allo strato inferiore ancora, a questo punto può avvenire lo spacchettamento del dato e quindi la sua suddivisione con annessa aggiunta di header e anche trader così fino allo strato più basso. Progettazione degli strati:
  • Affidabilità della rete → rilevazione e correzione degli errori, routing (più percorsi nella rete per giungere a destinazione);
  • Evoluzione della rete → stratificazione dei protocolli, indirizzamento (meccanismi per identificare mittente e destinatario), riordino dei pacchetti, frammentazione e deframmentazione dei pacchetti;
  • Allocazione delle risorse → multiplazione statica/statistica (mettere sulla stessa linea più flussi appartenenti ad host diversi), controllo di flusso (evitare che un mittente veloce inondi di dati un destinatario lento), congestione, QOS (Quality of Service), security (confidenzialità, autenticità, integrità). Due tipi di servizi offerti dalla rete:
  • Servizio orientato alla connessione → stabilire una connessione, trasmissione di dati, rilascio della connessione. Servizi: flusso di messaggi affidabili, flusso di byte affidabili, connessione inaffidabile (voice over IP) o Commutazione di circuito → mezzo fisico dedicato, multiplazione statica, messaggi in sequenza, integrità temporale; o Commutazione di pacchetto → mezzo fisico condiviso, multiplazione statica, messaggi in sequenza, flessibilità all’accesso (mancanza di integrità temporale);
  • Servizio senza connessione → elevata efficienza, messaggi non in sequenza, maggiore overhead, traffico non prevedibile. Servizi: dati inaffidabili, dato riconosciuto, request-reply. Primitive: Le primitive specificano un servizio e gli permettono di eseguire alcune azioni. Servono sei primitive di servizio per implementare un servizio orientato alla connessione: LISTEN, CONNECT, ACCEPT, RECEIVE, SEND e DISCONNECT. Esempio un client esegue una CONNECT request il server che era in stato di LISTEN risponde con una ACCEPT response, a questo punto tra client e server inizia una serie di SEND e RECEIVE per lo scambio di dati ed una volta ultimato lo scambio si procede da ambo le parti ad effettuare il DISCONNECT. Relazione tra servizi e protocolli:
  • Servizi → insieme di primitive che uno strato fornisce allo strato superiore;
  • Protocollo → insieme di regole che controllano il formato e il significato dei pacchetti o messaggi scambiati tra entità di pari livello nello stesso strato. Le entità usano protocolli per implementare i loro servizi, nei servizi di strato troviamo: utenti, fornitori, entità, strato, interfaccia, service access poi (SAP). L’utente effettua una richiesta al fornitore che attraverso i SAP fornirà la risposta passando per le interfacce. Modello OSI:
  • Strato fisico → trasmissione di bit grezzi su un canale di comunicazione, adattamento dell’informazione al mezzo;
  • Strato di collegamento → fornire una trasmissione punto-punto senza errori, risolvere gli errori, perdita e duplicazione delle trame;
  • Strato di rete → fornire indirizzamento e instradamento delle informazioni, cercare di evitare congestioni e fornire QoS, fornire internetworking (connettere reti differenti) e frammentazione dei pacchetti;
  • Strato di trasporto → fornire una connessione da estremo a estremo nella rete, adattare le informazioni alle caratteristiche della rete, stabilire connessioni multiple per l’ottimizzazione, nascondere i problemi di rete all’utente;
  • Strato di sessione → permette a due dispositivi diversi di dialogare, organizzare (riordino dei dati) e temporizzare (sincronizzazione) la sessione di trasferimento, evitare problemi di stallo nella comunicazione;
  • Strato di presentazione → gestire la sintassi e la semantica dell’informazione trasmessa, eseguire essenzialmente delle traduzioni;
  • Strato applicazione → comprendere i protocolli ad alto livello per la compatibilità software negli host. Concetti chiave del modello: servizi, interfacce e protocolli. Critiche del modello: cattiva tempistica, tecnologia scadente (difetti nella definizione degli strati, funzionalità ripetute in più strati), implementazioni scadenti (sistemi troppo complessi), incapacità politica (il modello OSI appariva come una creatura Europea). TCP/IP:
  • Strato link → protocolli: DSL, SONET, 802.11, Ethernet;
  • Strato internet → protocolli: IP, ICMP (internet control message protocol);
  • Strato trasporto → protocolli: TCP, UDP;
  • Strato applicazione → protocolli: HTTP, SMTP, DNS, RTP. Critiche del modello: servizi, interfacce e protocolli non ben distinte, non è un modello generale, lo strato link non è un vero strato, non c’è una vera distinzione tra strato di collegamento e strato fisico (no ottimizzazione e gestione congestione), oltre ad IP e TCP sono presenti protocolli minori quindi difficili da sostituire.

Strato Fisico

Segnali a banda limitata: Un segnale binario passa dalla rappresentazione di un’onda quadra a un forma di tipo sinusoidale e tramite le serie di Fourier possiamo descrivere il segnale e trasmetterlo nel canale dei trasmissione. Il canale attenua differentemente le armoniche: ampiezza passabanda. I segnali con frequenza fuori banda dal canale o a ritmi maggiori sono distorti (difficoltà su trasmissioni con cambi frequenti). Massimo Data Rate (quante informazioni possono essere immesse nel canale):

  • Teorema di Nyquist → anche un canale perfetto ha una trasmissione limitata, se un segnale arbitrario di banda B è trasmesso allora può essere ricostruito completamente attraverso solo 2B campioni;
  • Teorema di Shannon → se è presente un rumore casuale sul canale di trasmissione il rito dati decresce.

Tipi di satellite:

  • Satelliti Geostazionari → alta latenza ma copro l’intero pianeta con pochi satelliti, locazione in orbite definite dall’ITU, necessaria funzione di station keeping (posizioni specifiche), le principali bande sono assegnate ai satelliti commerciali;
  • Satelliti ad orbita intermedia → media latenza ma copro il pianeta con più satelliti, impiegano circa sei ore per compiere un giro intorno alla terra, necessario il tracking, attualmente usati per il GPS;
  • Satelliti ad orbita bassa → bassa latenza ma copro l’intero pianeta con tanti satelliti, ritardi limitati. Confronto fibre ottiche versus satelliti:
  • Fibre ottiche → maggiore banda, traffico aggregato;
  • Satelliti → mercato di nicchia, connessioni per singoli utenti (antenna sul tetto di casa), comunicazioni per sistemi mobili globali, comunicazioni in zone in cui le infrastrutture terresti sono poco diffuse/sviluppate, quando il broadcast è essenziale. Modulazione: Per la trasmissione di informazione digitale, è necessario rappresentare i bit con i segnali analogici: modulazioni digitali. Nella trasmissione di banda base il segnale occupa la frequenza da zero fino a B/2 Hz per un ritmo binario di B bits/s. Al fine di rendere il segnale più adatto per la trasmissione nei mezzi trasmissivi o per poter trasmettere contemporaneamente più segnali, si esegue uno spostamento del segnale in banda base (baseband, i.e. che occupa le frequenze da 0 Hz a B/2 Hz) in un segnale a banda passante (passband, i.e. che occupa le frequenze da fC - B/2 Hz a fC+B/2 Hz), senza cambiare la quantità di informazione trasportata. Al ricevitore si esegue il processo inverso, spostamento da segnale in banda passante a segnale in banda base. Il segnale viene modulato per trasmettere informazioni, ci sono tre tipi di modulazione: modulazione per ampiezza, frequenza e fase. Multiplazione: La multiplazione è una tecnica che permette di trasmettere più segnali (appartenenti a diversi utenti) contemporaneamente sullo stesso mezzo fisico. Possibili tecniche:
  • Multiplazione a divisione di spazio (SDM, Space Division Multiplexing);
  • Multiplazione a divisione di frequenza (FDM, Frequency Division Multiplexing) → più segnali diversi vengono traslati di frequenza e successivamente concatenati uno dopo l’altro nel canale multiplo. o FDM Orthogonal Frequency Division Multiplexing (OFDM) → il segnale nel tempo è progettato al fine che il comportamento in frequenza sia nullo per la frequenza centrale delle singole sotto portanti adiacenti. Esatta relazione tra spaziatura in frequenza delle sotto portanti e durata temporale del simbolo. Nessuna necessità delle bande di guardia. Necessità di ricevitori migliori: solo gli sviluppi tecnici degli ultimi anni hanno permesso di utilizzare tale tecnica;
  • Multiplazione a divisione di tempo (TDM, Time Division Multiplexing) → canale suddiviso in tanti utenti e per un periodo di tempo limitato assegno un canale ad un unico utente, flessibilità maggiore: uso del TDM su ogni singola sotto portante, complessità maggiore (necessità di avere un canale di segnalazione comune a tutti gli utenti o associato al singolo canale dati). Asse temporale (continuo o suddiviso in slot (slotted), presenza o assenza di una struttura di trama): o TMD Unslotted → l’asse temporale è continuo; o TMD Slotted → l’asse temporale è suddiviso in slot temporali: ▪ Con trama → assegnazione periodica dello stesso slot al singolo utente; ▪ Senza struttura di trama → l’assegnazione degli slot non è fissa. Due modalità di realizzazione: o Statica → diversi segnali arrivano al multiplatore e in uscita vi sarà il primo pacchetto del primo segnale poi il primo pacchetto del secondo segnale e così via, successivamente il secondo pacchetto del primo segnale poi il secondo pacchetto del secondo segnale fino all’inserimento di tutti i pacchetti di tutti i segnali; o Dinamica → tempi di attesa variabili ma non vi è spreco di risorse, più canali in entrata il primo che arriva con il primo pacchetto invia subito dopo verrà inviato il pacchetto del segnale che è in coda e così via fino all’invio di tutti i segnali.
  • Multiplazione a divisione di codice (CDM, Code Division Multiplexing) → difficile da disturbare, un segnale a banda stretta è allargato in frequenza e trasmesso su una banda maggiore, il segnale codificato è ottenuto tramite la modulazione dei singoli bit con codici formati da una serie di impulsi temporali molto brevi (chip), ogni utente ha un proprio codice, che permette al ricevitore di riconoscerlo (gli utenti viaggiano sulla stessa banda ma a coppia/numero utilizzano lo stesso linguaggio es. in una stanza ci

sono 10 persone che parlano contemporaneamente ma a coppie parlano lingue diverse quindi più probabilità di capirsi). Commutazione: La commutazione ha lo scopo di connettere una delle N linee di ingresso con una delle M linee di uscita, ha due funzionalità: decisionale (scelta delle linee di destinazione, routing), esecutiva (prende l’informazione della linea di ingresso e la invia nella linea di uscita selezionata, forwording). Si possono dividere per:

  • Funzione decisionale → tecniche di routing che possono essere statiche oppure dinamiche (adattive);
  • Funzioni attuativa → divise a loro volta in: o A divisione di spazio →presenta diversi vantaggi (trasparenza temporale, accesso completo e non bloccante) e alcuni svantaggi (troppi N x M punti di incrocio, malfunzionamenti frequenti), diversi tipi: ▪ Matrice-S a 2 stadi → punti di incrocio inferiore di una singola matrice S, accesso completo, bloccante; ▪ Matrice-S a 3 stadi → punti di incrocio ridotti, accesso completo, non bloccante la condizione di Clos; o A connessione diretta → modulatore all’ingresso che dirama il segnale in una matrice-T che lo inoltra direttamente al demodulatore per essere consegnato al destinatario; o Store and Froward → i pacchetti vengono memorizzati, vengono accodati, al loro turno vengono processati ed infine instradati nella loro linea di uscita così che al loro turno possano essere inviati correttamente;
  • Commutazione di circuito → risorse assegnate attraverso la presenza di una connessione fisica tra la linea di ingresso e quella di uscita, necessità di una configurazione del dispositivo commutatore prima della trasmissione dei dati, fase di instaurazione e rilascio delle risorse, se però nessuno dei due parla una volta instaurata la comunicazione spreco di risorse. Per confronto: chiamata di setup richiesta, percorso fisico dedicato, tutti i pacchetti seguono lo stesso percorso, i pacchetti arrivano in ordine, la collisione dei pacchetti è impattante, larghezza di banda fissa, capitano congestione nel tempo di setup, possibilità di spreco di banda, non è previsto lo store and forword, trasparente;
  • Commutazione di pacchetto → non vi è un percorso predefinito, ogni pacchetto (completamente ricevuto) è prima esaminato per controllarne la correttezza e successivamente ritrasmesso (store and forword), il messaggio diviso in alcuni pacchetti permette di ridurre l’uso della linea (il primo pacchetto può essere trasmesso prima che il successivo sia stato completamente ricevuto, riduzione del ritardo e aumento del throughput), trasparenza temporale non garantita. Per confronto: chiamata di setup non richiesta, assenza di percorso fisico dedicato, non tutti i pacchetti seguono lo stesso percorso, i pacchetti non arrivano in ordine, la collisione dei pacchetti non è impattante, larghezza di banda dinamica, possono capitare congestione su ogni pacchetto, no spreco di banda, è previsto lo store and forword, non è trasparente.

Strato di Collegamento

Descrizione dello strato di collegamento: Obbiettivi → scopo principale fornire una comunicazione efficiente ed affidabile tra due macchine, di unità intere di informazione chiamate trame o frames, creare un canale logico tra sorgente e destinatario (consegnare i bit allo strato superiore nello stesso ordine in cui sono stati trasmessi). Problemi: (il canale fisico introduce degli errori, le connessioni hanno un ritmo dati di trasferimento finito, il canale di comunicazione introduce ritardi di propagazione) Funzionalità → fornisce servizi allo strato di rete, incapsula il flusso di bit in trame (framing → la sua gestione è una funzionalità fondamentale nello strato di collegamento, relazione tra pacchetti e trame), gestisce gli errori di trasmissione (error control), regola il flusso dati (flow control) i ricevitori lenti non devono essere inondati da trasmettitori veloci. Servizi forniti:

  • Servizio senza connessione e senza riscontro (unacknowledged): la macchina sorgente invia trame indipendenti alla macchina destinataria senza aspettare alcun riscontro (nessuna connessione logica, nessuna correzione nello strato di collegamento delle trame con errori, servizi in real-time, su canali affidabili);
  • Servizio senza connessione con riscontro (acknowledged): la macchina sorgente invia trame indipendenti alla macchina destinataria, la quale ritrasmette individualmente un riscontro (acknowledgement) per ogni

Protocolli Sliding Window: In una situazione reale si ha la necessità di trasmettere dati in entrambe le direzioni, il canale è bidirezionale (duplex):

  • Due canali full-duplex: ogni canale è composto da un canale diretto (‘‘forward’’ channel) per i dati e un canale di ritorno (‘‘reverse’’ channel) per i riscontri o acknowledgement (spreco di banda);
  • Due canali half-duplex: campo kind nell’intestazione della trama. Concetti di base dello SW sono la finestra di invio e la finestra di ricezione:
  • Finestra di invio → il mittente tiene in memoria i numeri di sequenza delle trame che può ancora trasmettere o che ha trasmesso ma delle quali non ha ancora ricevuto il riscontro;
  • Finestra di ricezione → insieme di trame che il destinatario può ancora accettare (fuori sequenza). Le finestre possono avere limiti inferiori e superiori differenti cioè diverse dimensioni oppure possono avere dimensioni fisse o variabili (aumentare o ridursi) se una trama è trasmessa o ricevuta. Le trame devono essere rilasciate in ordine allo strato di rete del destinatario, il canale di comunicazione trasmette le trame nello stesso ordine in cui sono state trasmesse (wire-like). Esempio di finestra scorrevole di dimensione 1, nella fase iniziale il sender non ha nessuna finestra attiva mentre il ricevitore mette a disposizione una finestra, successivamente il sender apre una finestra e invia i dati, il ricevitore a questo punto chiude la finestra precedente ed invia un ACK al sender che a sua volta chiuderà la prima finestra mentre in questo momento il ricevitore ha aperto la finestra successiva per la ricezione dei dati ed è in attesa del sender. Tecnica del Piggy-backing: l’ACK è incluso nella trama dati. Esempi di protocolli sliding window (SW):
  • Protocollo SW ad 1 bit (o one-bit) → il tempo di trasmissione della trama e dell’ACK non è trascurabile, la combinazione di canali con ritardi lunghi e banda elevata con trame corte diminuisce l’efficienza (soluzione permettere alla sorgente di inviare X trame, invece di 1, prima di bloccarla per aspettare l’arrivo dell’ACK), necessita di una finestra grande perché se la banda è alta la finestra si riempie velocemente oppure avviene la stessa cosa se il ritardo di propagazione è elevato;
  • Protocollo SW che usa il go-back-n → diverse strategie: o Con dimensione della finestra del destinatario uguale a 1; o Con dimensione della finestra del destinatario larga; o Ripetizione selettiva (dati in fuori sequenza memorizzati in un buffer); o Ripetizione selettiva + NAK (il NAK stimola la ritrasmissione prima che il timer vada in timeout). Problema del buffer: lato sorgente si ha questo problema perché le trame inviate devono essere memorizzate finché non vengono ricevuti gli ACK. Se arriva l’ACK n i buffer fino ad n sono rilasciati (ACK cumulativi), lo strato di rete è di nuovo abilitato ad inviare pacchetti allo strato di collegamento.
  • Protocollo SW che usa la ripetizione selettiva → con finestra di trasmissione da 0 a MAX_SEQ e finestra di ricezione fissa a MAX_SEQ vi è il problema della sovrapposizione dei numeri di sequenza la soluzione è impostare la massima dimensione della finestra al più della metà dell’intervallo dei numeri di sequenza, in questo caso no sovrapposizione dei numeri di sequenza nella finestra del ricevitore. Buffer e Timer: Il numero di memorie (buffer) del ricevitore è uguale alla dimensione della finestra (non ai numeri di sequenza delle trame), il numero dei timer è uguale al numero di buffer. Uso del Piggybacking → problema per la trasmissione degli ACK se non si ha traffico di ritorno (caso del protocollo 5), nel protocollo 6 è stato inserito un timer ausiliario (start_ack_timer). Nel protocollo 6, il destinatario invia un NAK se sospetta un errore (trama danneggiata, trama differente rispetto a quella attesa). Scelta del time out, ritardo di propagazione degli ACK:
  • Costante → Time out maggiore, ritardo costante.
  • Variabile → Time out basso: ritrasmissioni non necessarie (time out lungo, bassa efficienza, lunghi periodi di inattività dopo che si sia verificato un errore). Possibilità quindi di impostazione fissa o variabile del time out.

Strato di Rete

Scopo dello strato di rete: Trasportare i pacchetti dalla sorgente al destinatario lungo tutta la rete, conoscere la topologia della rete, scegliere il miglior percorso, evitare di sovraccaricare le linee e di lasciarne scariche altre, garantire una certa qualità se richiesta, gestire le connessioni se il mittente e il destinatario sono su reti differenti

Problematiche di progetto dello strato di rete:

  • Commutazioni di pacchetto (packet switching) ad immagazzinamento e rilancio (store and forward): o Commutazione di pacchetto store and forward → gli attori presenti nello stato di rete sono: host sorgente/destinatario, sottorete con i suoi router (i nodi implementano fino allo strato 4 OSI). La procedura per la trasmissione dei pacchetti tra due host avviene nella seguente maniera: 1) Il pacchetto viene inviato dal host sorgente al primo router; 2) Il router controlla l’integrità del pacchetto e lo inoltra al router successivo, fino all’inoltro all’ultimo router; 3) L’ultimo router inoltra il pacchetto all’host destinatario.
  • Servi forniti allo strato di trasporto;
  • Implementazione del servizio senza connessione (connectionless) → i pacchetti sono inoltrati nella sottorete indipendentemente l’uno dall’altro, ogni riga nella tabella di routing contiene due valori (una destinazione e una linea di uscita da usare per quella destinazione). A seconda dell’aggiornamento delle tabelle di instradamento un pacchetto (es 3°) può rimanere bloccato in un nodo mentre il pacchetto successivo (es 4°) secondo le nuove tabelle passerà da un altro percorso arrivando prima del suo predecessore, sarà poi compito dello strato di rete riordinare i pacchetti (no trasparenza, pacchetti in ordine non sequenziale). Confronto: o Non è necessario il setup del circuito virtuale, ogni pacchetto contiene l’indirizzo sorgente e destinatario, il router non conserva informazioni sullo stato delle connessioni, ogni pacchetto è indipendente nella scelta del percorso, nessun effetto per il mancato inoltro del pacchetto, QoS difficoltosa, controllo della congestione difficoltoso.
  • Implementazione del servizio orientato alla connessione (connection-oriented) → prima di inviare un pacchetto si deve instaurare una connessione (o circuito virtuale) tra il router sorgente e il router destinazione, ad ogni pacchetto si assegna un identificativo (label) del circuito virtuale questa tecnica si chiama label switching (possibilità di avere label diverse a seconda del host sorgente). Confronto: o È necessario il setup del circuito virtuale, ogni pacchetto contiene un campo che identifica il circuito virtuale, ogni circuito virtuale richiede uno spazio nella router table per la connessione, ogni pacchetto segue il circuito virtuale assegnato, tutti i circuiti virtuali che attraversano un router sbagliato vengono terminate con conseguente richiesta di creare nuova connesione, QoS semplice con tante risorse per circuito virtuale, controllo della congestione semplice con tante risorse per circuito virtuale. Servizi forniti allo strato di trasporto: Obiettivi:
  • Servizi indipendenti dalla tecnologia dei router.
  • Nascondere i dettagli della rete quali il numero, il tipo dei router attraversati e la topologia di rete.
  • Uso degli indirizzi di rete nello strato di trasporto con uno schema uniforme. Servizi offerti allo strato di trasporto:
  • Lo scopo del router è quello di muovere pacchetti da un punto ad un altro della rete (non sono forniti il controllo d’errore, né il controllo di flusso né il controllo della congestione) servizio senza connessione o connectionless service (non controlli dello strato di rete)
  • Lo scopo dei router/della rete è quello di fornire un servizio affidabile, i.e. con una certa qualità (difficile senza instaurare una connessione nella rete) servizio orientato alla connessione o connection-oriented service (rete instaura una connesione virtuale per essere affidabile). Algoritmi di routing: Scopo dello strato di rete → eseguire il Routing dei pacchetti da un host sorgente ad un host destinatario, algoritmi di routing:
  • Routing: gestire le tabelle di Routing.
  • Inoltro (o forwarding): operazione eseguita quando arriva un pacchetto (ricerca nella tabella e invio sulla linea indicata). Proprietà degli algoritmi di Routing:
  • Correttezza, semplicità, robustezza (reagire alle variazioni topologiche della rete), stabilità (assenza di loop), equo (fairness) e ottimizzazione (minimo ritardo, massimizzare il throughput complessivo di rete).
  • Algoritmi non adattivi (senza effettuare misure di traffico o di topologia della rete), routing statico.
  • Algoritmi adattivi (decisioni basate sul traffico e sulla correte topologia della rete)

uso della coppia [sender_ID, seq_num] per tenere traccia dei pacchetti inviati, per ogni pacchetto ricevuto: il router lo inoltra se il pacchetto è nuovo, il router lo scarta se il pacchetto è un duplicato, il router lo rigetta se il pacchetto ha un numero di sequenza inferiore (dati obsoleti). Problemi → Soluzioni: ▪ Numeri di seq ripetuti (wrapped) → Numeri di sequenza a 32 bit; ▪ Se un router si blocca (crash), perde traccia dei suoi numeri di sequenza, riiniziare con num_seq=0, il prossimo pacchetto che invia sarà rigettato come duplicato → L’età del pacchetto decresce ogni secondo (se il campo age=0, le informazioni del pacchetto sono scartate); ▪ Valore seq_num corrotto invece di ricevere 4, si riceve 65540, allora i pacchetti da 5 a 65540 sono considerati obsoleti → Età del pacchetto (scarta i dati del valore corrotto). Raffinamenti: ▪ Il pacchetto sullo stato dei collegamenti ricevuto è messo in un’area di attesa per un po' prima di essere inoltrato; ▪ ACK per i pacchetti ricevuti. o Calcolare il percorso minimo verso gli altri Router → non appena un router ha ricevuto un insieme completo di pacchetti sullo stato dei collegamenti, può costruire il grafo dell’intera sottorete l’algoritmo di Dijkstra può girare in locale e calcolare i percorsi minimi per tutte le possibili destinazioni. Problemi dovuti al Hardware/software: ▪ Per reti grandi, tempo di processamento elevato; ▪ Memoria richiesta per le tabelle di instradamento elevata; ▪ Se un router dichiara di avere un collegamento che non ha oppure non dichiara di avere un collegamento che ha ne consegue un grafo della rete non corretto; ▪ Se un router non riesce ad inoltrare i pacchetti o li corrompe durante l’inoltro, tale percorso non funzionerà come ci si aspetta; ▪ Se un router esaurisce la memoria o calcola in maniera errata le tabelle di instradamento; ▪ Prepararsi a limitare i danni. Una volta che il Router ha le informazioni della topologia completa della rete è in grado di calcolare il percorso più breve per ogni destinazione. Altri tipi di algoritmi di Routing: Per reti molto grandi non è possibile gestire lo scambio di dati tra Router (crescita delle tabelle, molta memoria, CPU consumata, molta banda per l’invio dei report), si attua quindi un Router gerarchico.

  • Routing gerarchico → Router diviso in regioni, il Router conosce bene tutti i dettagli della propria regione ma ignora Router e topologia delle altre regioni, quando un Router vuole trasmettere ad un Router fuori regione trasmette ad un Router predefinito (per reti enormi si può avere una gerarchia multilivello). Svantaggio possibilità di aumento della lunghezza dei percorsi avendo come router predefinito uno che passa da un percorso non ottimale. Se si ha la necessità di inviare messaggi a tutti i router/host si utilizza il routing broadcasting.
  • Routing broadcast → si possono utilizzare diversi metodi: o La sorgente invia semplicemente un pacchetto distinto ad ogni destinazione (comunicazioni singole punto-punto), la sorgente deve conoscere tutti gli indirizzi; o Uso del flooding: troppi pacchetti e spreco di banda; o Routing multi destinazione → ogni pacchetto contiene la lista dei destinatari, il router che lo riceve lo ritrasmette sulle linee indicate ma aggiunge solo le destinazioni su tali linee (il gruppo di destinazioni è partizionato su più linee), alla fine, il pacchetto avrà un’unica destinazione; o Uso dello spanning tree (è un tipo di sink tree che contiene tutti i router senza loop) → ogni router copia il pacchetto broadcast sulle linee dello spanning tree tranne che sulla linea di ricezione. Il problema è conoscere lo spanning tree; o Reverse path forwarding → si usa quando lo spanning tree non è noto, quando un pacchetto broadcast arriva ad un router, egli controlla se il pacchetto è ricevuto dal miglior percorso usato per inviare verso il mittente del pacchetto, se sì, il router lo inoltra su tutte le linee tranne quella di arrivo (il pacchetto non è una copia creata da altri router), se no (ad esempio il pacchetto broadcast è arrivato da un collegamento che non è il preferito per raggiungere il mittente), il pacchetto è scartato come probabile duplicato.

Se si ha la necessità di trasmettere ad una lista di nodi si usa il Multicast:

  • Routing Multicast → trasmetto il dato a un gruppo di host nella rete, gestione dei gruppi (inserimento/cancellazione degli host nel gruppo), gli host dovrebbero comunicare al proprio router se si sono iscritti ad un gruppo, successivamente si calcola lo spanning tree dei router interessati. Per gruppi densi si parte da algoritmi di broadcast e successivamente si cancellano. Altro tipo di routing è quello Anycast:
  • Routing Anycast → un pacchetto è inviato al membro di gruppo più vicino (usato per i servizi come: orario/data, news, DNS), il routing anycast trova il miglior percorso verso il nodo più vicino e vengono usati gli algoritmi del vettore delle distanze e stato dei collegamenti. Routing per host mobili: I problemi al routing verso gli host mobili o portatili sono diversi:
  • La rete deve sapere dove si trova l’host di destinazione;
  • L’algoritmo di routing invia pacchetti agli host mobili usando gli indirizzi fissi della rete di appartenenza;
  • I pacchetti devono raggiungere efficientemente gli host mobili ovunque essi si trovino. Tutti gli host mobili hanno una subnet/LAN di appartenenza permanente che non cambia nel tempo (home location), l’host in un’altra rete (non nella propria home location) acquisisce un nuovo indirizzo di rete, non si ha alcuna associazione tra il vecchio indirizzo e il nuovo indirizzo l’host può effettuare il browsing del Web ma altri host non riescono a inviargli pacchetti, si ha quindi la suddivisione in due indirizzi: l’indirizzo permanente (home- address) e l’indirizzo nella rete visitata (indirizzo locale o care-of-address) e grazie alla presenza di due agenti:
  • Un agente fisso (o fixed agent) → memorizza gli host mobili che hanno la home location nella sua area di interesse, i quali tuttavia sono momentaneamente fuori da questa area; ha il compito di inoltrare i pacchetti indirizzati agli host residenti nella sua home location verso l’area da loro visitata);
  • Un agente esterno (foreign agent) → memorizza gli host che visitano la sua area). I pacchetti arrivano a destinazione anche se un host non si trova nella sua rete di appartenenza. Algoritmo di routing Ad hoc On-demand Distance Vector (AODV): Nelle reti ad hoc o MANET (Mobile Ad hoc NETwork), i nodi sono router e host: i router sono anche mobili ciò che rende le reti ad hoc differenti dalle reti fisse è una topologia fissa, i nodi vicni, una relazione indirizzi/posizione, se un router ha un percorso valido per una destinazione tale percorso continua ad essere valido a meno di guasti. Possibili scenari: veicoli militari sul campo di battaglia: nessuna infrastruttura, una flotta di navi in mare aperto (tutte in movimento per tutta la traversata), squadra di emergenza in luoghi dopo un terremoto (l’infrastruttura di TLC distrutta), gruppi di persone che comunicano con i loro laptop in un area senza Access Point (tecnologia Wi-Fi in ad-hoc mode). Presenza di algoritmo di routing specifico: Ad hoc On-demand Distance Vector (AODV):
  • AODV Route Discovery → A causa della variabilità della topologia, la rotta (percorso) verso la destinazione è calcolato solo su richiesta, per scoprire la posizione della destinazione, la sorgente costruisce un pacchetto di route_request e lo invia in broadcast tramite il flooding, quando il pacchetto di route_request è ricevuto da un nodo intermedio possono avvenire le seguenti azioni: o Esso cerca la coppia (source address, request ID) in una tabella, verifica che la richiesta non sia un duplicato; o Se non è un duplicato, cerca la destinazione nella tabella di routing, se esiste una rotta recente, il nodo intermedio risponde al mittente con un pacchetto di route_replay; o Se non esiste alcuna rotta, esso incrementa il campo contatore hop counter e invia in broadcast la route_request, inoltre, memorizza i dati del mittente della route_request in una tabella di routing inversa (e avvia un timer per la permanenza della table entry). Formato del pacchetto di route_request: o Source address e destination address → indirizzi della sorgente e del destinatario; o Request ID → contatore locale incrementato per ogni pacchetto route_request inviato, ogni nodo ha anche un secondo contatore incrementato ad ogni pacchetto route_request (proprio o inoltrato); o Source sequence number → contatore di sequenza della sorgente; o Destination sequence number → indica quanto il percorso per la destinazione conosciuto dalla sorgente è vecchio, è confrontato nei nodi intermedi con le loro informazioni; o Hop counter → numero di salti fatti dal pacchetto. Formato del pacchetto di route_reply: o Source address e destination address: indirizzi del mittente e del destinatario; o Hop counter: numero di salti fatti dal pacchetto, è copiato dallo stesso campo del route_request;

altri choke packet, ridurrà il suo traffico di un altro x2% (<x1), dopo un intervallo di tempo senza ricevere alcun choke packet, l’host può incrementare di nuovo il flusso. o Diversi tipi di feedback inviati ai router congestionati: ▪ Explicit Congestion Notification (ECN) → il router congestionato imposta un bit nell’intestazione dei pacchetti inoltrati, quando questi arrivano al destinatario, egli provvede a far ridurre la trasmissione della sorgente attraverso il protocollo di strato di trasporto; ▪ Choke packet hop-by-hop → per lunghe distanze, il choke packet non funziona. Il choke packet influenza solo la sorgente, finché il choke packet arriva alla sorgente, non ci sarà una riduzione del traffico immesso nella rete. Ad ogni router, che riceve il choke packet, si richiede di ridurre il traffico in uscita, si ha una riduzione immediata del traffico nella rete. Svantaggio per questo caso: ogni router intermedio ha bisogno di buffer extra per memorizzare il traffico che non può essere inviato al router successivo a causa della congestione (ad esempio dei choke packet ricevuti).

  • Eliminare alcuni pacchetti dalla rete (load shedding): o Quando i router sono inondati da pacchetti che non riescono a gestire li buttano via usando diverse strategie basate sullo scarto casuale: ▪ Basato sull’applicazione → file transfer (scarto del pacchetto più nuovo, policy del vino), real-time multimedia data (scarto del pacchetto più vecchio, policy del latte); ▪ Cooperazione con il mittente → alcuni pacchetti sono più importanti di altri (riga di un’immagine è meno importante di una riga di testo, trama di routing piuttosto che trama dati), classi di priorità di pacchetti (con incentivi); ▪ Ammesso traffico extra se marcato in bassa priorità; ▪ Random Early Detection → il TCP nelle reti fisse considera congestionato un collegamento se si perde un pacchetto (differente nelle reti wireless), in risposta rallenta la sorgente, il router può eliminare alcuni pacchetti casualmente prima che la sorgente sia rallentata (scarto quando il riempimento della coda supera una soglia non quando è completamente piena) [segnalazione implicita della congest.]. Controllo del Jitter (variazione di tempo di transito nella rete) → Per alcune applicazioni (video on demand), non è un problema il ritardo ma è importante avere un basso jitter, l’algoritmo cerca di rilasciare i pacchetti con il ritardo massimo (trattiene i pacchetti in anticipo, invia il prima possibile i pacchetti in ritardo. In entrambi i casi il jitter decresce) Quality of Service (QoS): Requisiti delle applicazioni → i parametri principali che definiscono la qualità del servizio (QoS) di un flusso sono: affidabilità, ritardo, jitter e banda. Per flusso si intende un insieme di pacchetti da una sorgente ad una destinazione (definizione valida sia per un servizio orientato alla connessione che senza). Esempi di requisiti per applicazione:
  • E-mail → alta affidabilità - basso ritardo, jitter e banda;
  • File Transfer → alta affidabilità – basso ritardo e jitter – medio banda;
  • Web Access → alta affidabilità – basso jitter – medio ritardo e banda;
  • Videoconferenze → basso affidabilità – alto ritardo, jitter e banda. Tecniche per ottenere una buona qualità di servizio:
  • Overprovisioning → si ha talmente tanta capacità disponibile nei router e nelle linee che la richiesta di servizio può quasi sempre essere rispettata, la congestione non è un problema e la QoS è sempre garantita, costi elevati;
  • Uso di Buffer → i dati vengono memorizzati in un buffer al ricevitore prima di essere consegnati agli strati superiori, affidabilità e banda non risultano influenzate, ritardo aumenta, jitter quasi eliminato
  • Traffic Shaping → Il traffico intermittente (o bursty, non-uniform) è più difficile da gestire rispetto al traffico a bit rate costante perché si possono riempire i buffer e causare la perdita dei pacchetti. Traffic shaping è una tecnica per regolare il ritmo di emissione medio e l’intermittenza (burstiness) di un flusso che entra in rete. Accordo tra l’utente (o il cliente) e la sottorete (o l’operatore di telecomunicazioni), service level agreement (SLA), l’utente chiede di poter inviare dati con certe caratteristiche (bit rate medio, una certa deviazione standard), di consenguenza l’operatore dovrebbe essere in grado di controllare se il traffico dell’utente, rispetta quelle caratteristiche (traffic policing) ed eventualmente intraprendere delle azioni (costi maggiori, abbattere la connessione, segnare il traffico eccedente come low priority). Due tipi di Traffic Shaping:

o Algoritmo del leaky bucket → Non importa il ritmo con cui entra l’acqua nel secchio (bucket), il flusso di uscita ha un ritmo costante R. Funzionamento: una coda finita è inserita in ogni host, i pacchetti da inviare sono messi nel buffer di capacità B, se si eccede la capacità (il secchio è pieno), gli altri pacchetti sono scartati (l’acqua fuoriesce dal secchio), i pacchetti nel secchio sono estratti per la trasmissione ad un ritmo costante R. Modalità di estrazione: a pacchetti di dimensione costante, ad un ciclo di clock. Cosi facendo un flusso bursty è trasformato in un flusso regolare ed i picchi sono ridotti; o Algoritmo del token bucket → Più flessibile dell’algoritmo del leaky bucket, cerca di non perdere i dati e di avere un output maggiore quando arrivano grandi burst. Funzionamento: un token è generato ad ogni intervallo di clock, un pacchetto per essere inviato deve prendere un “token”. Nei periodi di inattività, l’host può accumulare token da usare quando altri pacchetti sono pronti per essere inviati, traffico meno regolare rispetto al leaky bucket, la dimensione del secchio indica la massima capacità di trasmissione quindi i pacchetti non sono scartati. Il token e il leaky bucket usati per regolarizzare il traffico tra i server.

  • Resource Reservation → Per regolarizzare il traffico si ha bisogno che i pacchetti seguano lo stesso percorso, impostare qualcosa di simile ad un circuito virtuale. Una volta che il percorso è stato impostato, è possibile riservare le risorse lungo di esso come ad esempio: banda, spazio nei buffer, cicli di CPU per il processing. Il carico di traffico offerto è prossimo ma inferiore alla massima capacità teorica di rete quindi aumento del ritardo. Due tecniche per riservare le risorse: o Asmission Control → La rete deve decidere se accettare un nuovo flusso in base alla sua capacità e agli impegni presi con altri flussi (e quindi garantire la QoS richiesta) o rifiutare, la rete riserva capacità in anticipo nei router oppure i nuovi flussi possono ancora essere accomodati nella rete ma senza scegliere il percorso migliore per evitare congestioni (QoS routing). Non solo disponibilità delle risorse (banda, buffer, cicli di CPU) ma anche negoziazione (flow specifications). Funzionamento: il mittente A descrive il flusso X, traduce questa descrizione nelle risorse del router B ed invia le specifiche ai router e al destinatario, i quali possono accettare o abbassare le richieste, alla fine del percorso, i parametri possono essere stabiliti. o Packet Scheduling → se un router ha più di un flusso, alcuni flussi possono consumare troppe risorse utilizzo quindi di algoritmi di packet scheduling che allocano banda e altre risorse del router determinando quale debba essere il prossimo pacchetto nel buffer da inviare sulla linea di uscita. Diverse tecniche: ▪ First-in-first-out: ogni router memorizza i pacchetti in un’unica coda per ogni linea di uscita, i pacchetti sono inviati nello stesso ordine di arrivo; ▪ Fair queueing: code separate per ogni flusso sulle linee di uscita basate sul round robin (maggiore banda agli host che inviano pacchetti più grandi, byte-by-byte round-robin, invece di un packet-by-packet round-robin); ▪ Weighted fair queueing: le code hanno differenti priorità. Internetworking: Lo scopo di unire delle reti è quello di permettere agli utenti di una rete di comunicare con gli utenti delle altre, ci sono dei problemi che si verificano quando si interconnettono insieme reti con caratteristiche differenti (differenti protocolli di routing; differenti dimensioni PAN, LAN, MAN, WAN; differenti tipi di host fissi o mobili) internet con la i minuscola. Argomenti dell’internetworking:
  • Differenze delle reti → Le differenze allo strato di rete rende l’interconnessione complicata, molti problemi si hanno nelle interfacce tra le reti (servizi – connection oriented vs connectionless, protocolli
  • IP/IPX/SNA/ATM, multicasting – presente o assente, controllo di congestione – leaky bucket/token bucket/choke packets, QoS – presente o assente, flow control – sliding window/ rate control/altri/nessuno)
  • Interconnessioni delle reti → due diverse strategie: o Dispositivi per la traduzione dei protocolli → le reti possono essere interconnesse da dispositivi a vari livelli logici: ▪ Strato fisico (repeater e hubs) → rigenerano il segnale; ▪ Strato di collegamento (bridge e switch) → trame, indirizzi mac, trame in differenti reti; ▪ Strato di rete (router) → router multiprotocollo è in grado di tradurre il formato dei pacchetti nelle due sottoreti; ▪ Strato di trasporto (gateway) → convertono due connessioni di trasporto; ▪ Strato applicativo (application gateway) → traducono la semantica del messaggio.

Strato di Trasporto

Servizio di trasporto: Obiettivo → fornire un servizio per la trasmissione di dati efficiente, affidabile e efficiente in termini di costi da un processo sulla macchina sorgente ad un processo sulla macchina del destinatario indipendentemente dalle reti fisiche usate. Servizi forniti agli strati superiori → per raggiungere il suo obbiettivo lo strato di trasporto usa i servizi forniti dallo strato di rete, vi sono delle similitudini con lo strato di rete: due servizi di trasporto (orientato alla connessione e senza connessione), indirizzamento e controllo di flusso. Vi è quindi la necessità di un ulteriore strato sopra quello di rete per i seguenti motivi:

  • Lo strato di trasporto è da estremo a estremo (end-to-end), il codice è sulle macchine utente, mentre nello strato di rete il codice gira sui router;
  • Per servizi di rete degradati, la sola possibilità è quella di mettere sopra un altro strato che controlla e migliora la QoS e quindi affidabilità;
  • I servizi offerti da reti differenti (Ethernet e rete telefonica) sono nascosti dalle primitive dello strato di trasporto, non si ha bisogno di gestire le interfacce se ci sono sostituzioni nel software dello strato di rete;
  • Netta separazione tra il fornitore del servizio di trasporto e l’utente del servizio di trasporto di un servizio affidabile di trasmissione dati, lo strato di trasporto è in posizione chiave Primitive di servizio di trasporto → esempio di due processi di strato 4 connessi da un “tubo” in UNIX, essi vogliono una connessione affidabile al 100%, lo strato di trasporto (orientato alla connessione) deve fornire un servizio affidabile su una rete non affidabile (nascondere le imperfezioni). Il servizio di rete è usato solo dalle entità di trasporto, mentre le primitive di trasporto sono usate da molti programmi: semplici da usare.
  • Primitive per un semplice servizio di trasporto → primitive essenziali per stabile, usare e rilasciare una connessione (Listen, Connect – Connection Req., Send – Data, Receive, Disconnect – Disconnection Req.) I Transport Protocol Data Unit (TPDU) sono i messaggi inviati tra due entità di strato 4, i messaggi di strato di trasporto sono comunemente chiamati segmenti, le TPDU sono incapsulati nei pacchetti di strato 3 che a loro volta sono incapsulati nelle trame di strato 2. Alcuni esempi (ogni transazione è causata daun evento):
  • Un’applicazione con un server e alcuni clienti in remoto → il server esegue LISTEN, blocco del server finché un client si sveglia;
  • Stabilire una connessione → quando un client desidera parlare con il server, esegue CONNECT, invia un segmento TPDU di CONNECTION REQUEST per stabilire una connessione, quando questo segmento arriva, il server si sblocca e invia un pacchetto TDPU di CONNECTION ACCEPTED al client che riceve il pacchetto e la connessione è stabilita;
  • Uso della connessione → client e server si scambiano dati, il server esegue RECEIVE (bloccante) aspettando l’arrivo di un pacchetto dati, il client esegue SEND per inviare i dati. Dopo, i ruoli si invertono finché ci sono dati da trasmettere;
  • Rilascio della connessione: o Asimmetrica → una entità esegue DISCONNECT; o Simmetrica → ogni entità esegue DISCONNECT e le connessioni sono chiuse in entrambi le direzioni. Socket di Berkeley → primitive usate per il TCP in Berkeley UNIX, frequentemente usate in Internet (SOCKET – crea una nuova comunicazione con un end point, BIND – assegna un indirizzo locale a socket, LISTEN, ACCEPT, CONNECT, SEND, RECIVE, CLOSE). SOCKET + BIND crea un punto finale con un indirizzo è possibile connettersi a quel server. Le primitive SOCKET permettono di creare un servizio orientato alla connessione chiamato flusso di byte affidabile (reliable byte stream): può essere usato per ogni applicazione. Elementi dei protocolli di trasporto: (Nota → Tutti gli elementi sono di questo colore) Protocollo di trasporto → Il servizio di trasporto è realizzato da un protocollo di trasporto usato dalle due entità di trasporto, similitudini con lo strato di collegamento (controllo di errore, ordinamento in sequenza, controllo di flusso). Differenze:
  • Nello strato di collegamento le connessioni sono su un canale fisico, nello strato di trasporto il canale è l’intera rete;
  • Richiesta esplicita di indirizzamento;
  • Maggiori difficoltà nell’impostazione della connessione iniziale;
  • Potenzialmente la rete può immagazzinare i pacchetti, buffering e controllo di flusso eseguito per più connessioni simultaneamente.

Indirizzamento → Un processo applicativo deve specificare a quale processo remoto connettersi, gli indirizzi di trasporto identificano quali processi sono in grado di ascoltare le richieste di connessione, gli indirizzi di strato di trasporto sono chiamati Transport Service Access Point, TSAP (in Internet sono chiamati porte e in ATM AAL- SAP). Esempio di relazione tra TSAP e NSAP (Network SAP):

  1. Il Server X (mail server) sull’host Y attende una chiamata entrante su TSAP 1522: primitiva LISTEN;
  2. Il Client sull’host Y si aggancia su TSAP 1208 per stabilire una connessione (e invia una email: primitiva CONNECT con source_addr=1208, dest_addr=1522;
  3. Trasmissione dati (e.g. Email) e rilascio della connessione. Il processo client conosce l’indirizzo del processo a cui desidera connettersi attraverso diverse tecniche:
  • Indirizzi stabili → funzionano per servizi che non vengono modificati ma è costoso mantenerli attivi;
  • Il client imposta una connessione con il portmapper (che usa un TSAP noto) per conoscere il TSAP del servizio richiesto, il portmapper gli risponde con l’indirizzo TSAP di quel servizio.
  • Initial connection protocol → invece di avere un server in ascolto sui TSAP noti, un process server ascolta su un gruppo di porte simultaneamente, in attesa di una richiesta di connessione: il client si connette con il process server se qualche server è in attesa, dopo la richiesta, il process server crea il server richiesto, il quale eredita la connessione Stabilire una connessione → Una entità dello strato di trasporto invia un messaggio TPDU di CONNECTION REQUEST alla destinazione, la quale risponde con un messaggio TPDU di CONNECTION ACCEPTED. Si presentano problemi a causa dei pacchetti persi, ritardati, corrotti o duplicati da una rete congestionata, possibili soluzioni sono:
  • L'uso di indirizzi di trasporto usa e getta;
  • Connessione con un identificatore unico;
  • Limitare il tempo di vita del pacchetto: o sottoreti limitate → evitare i loop, ridurre il massimo ritardo; o massimo numero di salti ammesso limitato → quando il numero di salti ammessi è zero, la rete scarta il pacchetto; o si applica un timestamp → inserire il tempo in ogni pacchetto, dopo un po’ di tempo i pacchetti sono scartati (server sincronizzati). Dobbiamo garantire che un pacchetto sia eliminato come pure i suoi riscontri (ACK). Definiamo un periodo T, che indica il tempo che si deve aspettare per essere sicuri che il pacchetto e tutti i suoi duplicati non siano più presenti nella rete. Possibilità di utilizzare diversi metodi:
  • Metodo Time-of-day clock: assicura che solo un pacchetto TPDU con un certo numero di sequenza è nella rete ad un certo istante: ogni host ha un orologio non sincrono, il cui contatore aumenta ad ogni istante anche se l’host va in crash, quando si imposta una connessione, i k bit di ordine più basso dell’orologio sono usati come numero iniziale di sequenza (init_seq). Una volta che le due entità di trasporto sono d’accordo sul init_seq, si può usare un qualsiasi protocollo sliding window per il controllo di flusso dei dati, di conseguenza, i duplicati sono scartati (esiste un ritmo di invio dei segmenti massimo e minimo). Il metodo dell’orologio risolve il problema di distinguere i duplicati ma non le CONNECTION_REQUEST (CR);
  • Metodo Three-way handshake → Un client invia un pacchetto dati CR a un server sulla stessa rete o a una rete esterna. L’obiettivo di questo pacchetto è di chiedere se il server è disponibile per nuove connessioni. Il server di destinazione deve disporre di porte aperte in grado di accettare e avviare nuove connessioni. Quando il server riceve il pacchetto CR dal nodo client, risponde e restituisce una ricevuta di conferma, il pacchetto ACK o SYN/ACK. Il client riceve il SYN/ACK dal server e risponde con un pacchetto ACK. Al termine di questo processo, viene creata la connessione e l’host e il server sono in grado di comunicare. Rilascio di una connessione → due diverse modalità:
  • Rilascio asimmetrico → è sufficiente che uno dei due host richieda la disconnessione (DISCONNECTION REQUEST, DR) per rilasciare la connessione, il rilascio asimmetrico è improvviso e può causare perdita di dati;
  • Rilascio simmetrico: la connessione è considerata come due connessioni unidirezionali separate, ognuna deve essere rilasciata separatamente. Entrambi gli host dovrebbero smettere di inviare dati al fine di non perderli a causa del rilascio della connessione (sembra semplice ma si veda al problema dei due eserciti). Cinque scenari per il rilascio di una connessione:
  • Caso normale di handshake a tre vie → l’host 1 invia un TPDU DR (DR = disconnection request) per iniziare il rilascio della connessione e avvia un timer, appena ricevuto, l’host 2 invia un TPDU DR e avvia
  • Passare le TPDU agli strati superiori (scrittura su database) e invio dell’ACK sono due eventi distinti non eseguiti contemporaneamente quindi il crash può avvenire tra l’ACK e la scrittura oppure tra la scrittura e l’ACK. Il server può essere programmato in due modi: prima invia l’ACK poi scrive oppure prima scrive poi invia l’ACK. Il client può essere programmato in quattro modi: Always retransmit, Never retransmit, Retransmit in S0 oppure Retransmit in S1. Controllo della congestione → Il controllo della congestione per evitare di perdere o di ritardare i pacchetti è responsabilità congiunta dello strato di rete e dello strato di trasporto. L’unico modo efficace per lo strato di trasporto per controllare la congestione è inviare più lentamente pacchetti nella rete diverse soluzioni:
  • Allocazione desiderabile della banda → divisa in: o Efficienza nell’allocazione di banda → le entità di trasporto dovrebbero usare tutta la capacità disponibile nella rete ma a causa dell’intermittenza del traffico, si possono verificare delle congestioni e il ritardo dei pacchetti aumenta; o Fairness (Equità) → assegnare a tutti gli utenti la stessa frazione di banda, i flussi seguono percorsi differenti nella rete, la regola generale è che tutti i flussi iniziano con zero pacchetti e lentamente aumentano il ritmo di trasmissione finché ogni flusso raggiunge il proprio collo di bottiglia (condividere egualmente la capacità di rete disponibile); o Convergenza → l’algoritmo del controllo di congestione converge velocemente ad una allocazione di banda stabile, equa ed efficiente ma a causa della variazione di domanda, un buon algoritmo di controllo della congestione dovrebbe rapidamente convergere al punto ideale di operatività e inseguirlo come cambia nel tempo.
  • Regolare il ritmo di invio → Il ritmo di invio è limitato da un ricevitore con poca capacità oppure rete con congestione interna, in entrambi i casi, lo strato di trasporto dovrebbe ridurre i pacchetti inviati ed eseguire il controllo di flusso e controllo della congestione. Il controllo della congestione è eseguito sulla base dei feedback ricevuti: feedback espliciti (ad esempio ECN) oppure feedback impliciti (ad esempio round-trip-time o RED nel load shedding). Il feedback per regolare il ritmo di invio indica al mittente di decrementare il suo bit rate, legge di controllo di trasmissione ed il suo scopo è di arrivare ad un punto di operatività efficiente ed equo (condivisione delle risorse). Si usa Additive Increase Multiplicative Decrease (AIMD).
  • Problemi con le reti wireless → I protocollo di strato di trasporto dovrebbero essere indipendenti dalla rete sottostante e dalle tecnologie dello strato di collegamento; tuttavia, nelle reti wireless ci sono molti errori di trasmissione (packet loss) questo causa due diverse interpretazioni dei diversi strati: o Lo strato di trasporto li considera congestione → riduzione dei pacchetti (connessioni nel wireless ridotte a ritmi minori senza motivo); o Lo strato di collegamento li considera errori di trasmissione → ritrasmissioni e aumento del ritmo di invio dei pacchetti. Diversi tipi di soluzioni (gli algoritmi del controllo di congestione dovrebbero capire se le perdite sono dovute a banda insufficiente o a errori di trasmissione): o Nessuna, perché i due meccanismi agiscono su scale temporali differenti; o Per collegamenti wireless con alti round-trip time (ad esempio satellite) si opta per l'uso del FEC (Forward Error Correction), la congestione è rivelata attraverso una notifica esplicita. Il controllo della congestione fornisce che si usi il massimo della capacità di rete disponibile quindi efficienza, lo strato di trasporto dovrebbe adattare la trasmissione. Nei collegamenti wireless la capacità cambia nel tempo, a causa per esempio dei nodi connessi, variazioni del canale, carico di traffico offerto. Le soluzioni possono essere: o Nessuna → gli algoritmi del controllo di congestione dovrebbero adattare i ritmi, comunque, alla variabilità del traffico. Nelle reti wireless, funzionano ma meno performanti; o Progettare il protocollo di trasporto ad hoc per i collegamenti wireless.

Rete Telefonica Pubblica Commutata (Public Switched Telephone Network - PSTN)

La Public Switched Telephone Network (PSTN) è la rete di grandi dimensioni dispiegata nel territorio nazionale del Network Service Provider (NSP). I suoi scopi sono: trasmettere la voce umana in una forma più o meno comprensibile e connettere molti computer posti a grande distanza in una vasta area. Struttura del Sistema Telefonico: L’architettura fisica del sistema telefonico ha subito un evoluzione passando da una rete completamente connessa, i dispositivi telefonici direttamente connessi da un filo (full mesh) successivamente si è passati a una struttura con commutatori (o switch) centralizzati, le connessioni passano tutte nello switch (a stella), infine siamo arrivati a una gerarchia a due livelli con necessità di connettere tutte le centrali locali di commutazione (local central office) nella nazione a centrali di commutazione di secondo livello. I principali componenti del sistema telefonico sono:

  • Rete di accesso locale o local loop (doppini analogici dalla casa del cliente o dall’ufficio business);
  • Collegamenti di trasporto o trunk (collegamenti digitali in fibra ottica per connettere i centri di commutazione);
  • Centri di commutazione o switching office (in cui le chiamate sono un da trunk ad un altro o da/verso doppini). Mentre i principali mezzi utilizzati sono:
  • Unshielded Twisted Pair (UTP), categoria 3 e categoria 5 per i local loop (trasmissioni analogiche);
  • Fibre ottiche per i trunk ma anche collegamenti a microonde e cavi coassiali (trasmissioni digitali). I trasmettitori digitali sono più economici, più semplici, più affidabili. Un percorso tipico per chiamate su grandi distanze: Il local loop fornisce a tutti accesso all’intero sistema: sono i più critici e i collegamenti più deboli nel sistema. Per i trunk sulle lunghe distanze, il problema principale è come trasportare insieme chiamate multiple e come trasmetterle sulla stessa fibra: multiplazione. Politiche Telefoniche: Relazione tra LATA (Local Access and Transport Area), LEC (Local Exchange Carrier), e IXC (Inter-eXchange Carrier). I cerchi sono le centrali di commutazione LEC. Ogni esagono appartiene all’IXC indicato dal numero al suo interno. Ad esempio negli U.S. c’è una divisione in 164 LATA (Local Access and Transport Area). LEC (Local Exchange Carrier) ha il monopolio del servizio telefonico tradizionale mentre tutto il traffico tra i LATA è gestito da una compagnia diversa (Inter-eXchange Carrier, IXC). Ogni IXC che desidera gestire chiamate che hanno origine in un LATA può installare lì uno switching office chiamato POP (Point of Presence). Si richiede ai LEC di connettere ogni IXC ad ogni central office, direttamente, o indirettamente. Rete di accesso locale: Il collegamento locale è chiamato “ultimo miglio”, trasmissione analogica. Ci sono due distinzioni: la rete telefonica fornisce chiamate voce mentre il modem e l’ADSL inviano dati digitali tra computer sul collegamento locale (canale a banda stretta). Nel caso dei dati digitali la conversione è gestita dal modem e dai codec. Ma sono presenti dei limiti del local loop come ad esempio banda stretta, attenuazione, distorsione e diafonia (o crosstalk). Le fibre ottiche hanno sostituito i cavi in rame in alcuni casi i problemi sono di natura economica non tecnica. Di seguito alcuni mezzi usati nella rete di accesso locale:
  • Modem Telefonici → Per inviare dati sul canale fisico, è necessaria una conversione in segnali analogici: digital-to-analog (da un lato) e analog-to-digital (dall’altro), il modem è inserito tra il computer (digitale) e il sistema telefonico (analogico, con banda limitata 3.1kHz). Ci sono differenti tipi di modulazione: ampiezza, frequenza e fase. La maggior parte dei modem invia al ritmo di 2400 simboli/s (Nyquist Theor.): o 0 volt per lo 0 logico e 1 volt per l’1 logico con 1 bit per simbolo: 2.4kbit/s (2-QAM); o Quattro diversi simboli (QPSK), con 2 bit/simbolo: 4.8 kbit/s; o V.32 usa 32 punti della costellazione (4 data bit + 1 control bit): 9.6 kbit/s; o V.32bis use 128 punti (6 data bits + 1 control bit): 14.4 kbit/s; o V.34/V.34bis arriva a 33.6 kbit/s (14 data bit/s) Il teorema di Shannon limita il sistema telefonico a circa 35 kbit/s: a causa del rumore nei due modem e sulla distanza media del local loop.