Tecnologie digitali 2
Ingegneria Gestionale – Politecnico di Milano
Anno Accademico: 2023-2024
Professore Ilario Filippini
Internet – Introduzione, commutazione e ritardi
Le app sono programmi in esecuzione su più calcolatori composti da moduli che comunicano tra loro scambiando dati tramite internet.
Cosa significa sviluppare un’applicazione?
- Scrivere le componenti server che devono rispondere alle richieste derivanti dalle applicazioni.
- Inserirle in macchine virtuali che sono poi inserite nel cloud.
- Istanziarle su un servizio cloud.
- Scrivere le componenti client per diverse piattaforme.
- Inserirle nei relativi online store.
- Aspettare che gli utenti scarichino le applicazioni.
Serve internet ⇒ Cos’è internet?
- È un’infrastruttura fisica fatta di componenti (cavi, terminali…).
- Un’architettura di rete (modalità di interconnessione dei dispositivi fisici).
- Un servizio di comunicazione usato dalle applicazioni.
Componenti fisiche
- Computer: host = terminali.
- Fibra, cavo, radio, satellite: link = collegamenti.
- Router (switch, modem, access point…) = nodi di rete.
NB: Desktop = computer da tavolo: unità centrale + unità video + tastiera.
Server = computer di elevate prestazioni che fornisce un servizio (al client).
Host (terminali)
Tutti i sistemi in grado di inviare e ricevere informazioni:
- Server fisici e virtuali per data center di servizi cloud.
- Dispositivi personali.
- Oggetti intelligenti.
Nodi di rete (saldature intelligenti)
I router operano su unità di informazioni (sequenze di bit) dette pacchetti.
Link (collegamenti)
Di natura fisica molto diversa (fibra ottica, doppini…).
Diverse tecnologie di trasmissione dell’informazione (cavo, wireless).
Diverse velocità di trasmissione.
Accesso a Internet
L’utente chiede più informazione di quanta ne genera.
ADSL: asymmetric digital subscriber line.
- Upstream: io utente finale trasmetto le informazioni verso la rete → fino a 1 Mbps (1 megabit/secondo).
- Downstream: io utente scarico dati da un server (es. consultare pag web) → fino a 20 Mbps.
Fibra ottica
Sostituzione totale o parziale del doppino telefonico.
Capacità di trasmissione (velocità massima) più elevata.
- FTTN - Fiber To The Neighborhood.
- FTTC - Fiber To The Curb.
- FTTB - Fiber To The Basement.
- FTTH - Fiber To The Home.
Rete cellulare (3G, 4G, 5G)
Mobile: mantengo la connessione anche se mi sto muovendo (ad alte velocità).
Onde libere, non guidate dai cavi.
Connessione più estesa del WiFi (pressoché globale).
L’utente si collega alla rete di accesso dell’operatore (ISP: Internet Service Provider), che invece si collega alla rete cablata.
Internet sta per reti di reti.
Internet è un puzzle di reti eterogenee interconnesse, è una tecnologia standardizzata a livello globale.
- Reti eterogenee.
- Tutti i nodi di rete usano gli stessi protocolli.
Tipi di rete in base all’estensione di copertura geografica
Non solo dalla tipologia di connessione:
- LAN: Local Area Network: tipicamente edifici, campus.
- MAN: Metropolitan Area Network: fino ad alcune decine di km (città).
- WAN: Wide Area Network: copertura ampia a piacere (come rete radiomobile).
Come può essere trasferita l’informazione in rete?
Commutazione di circuito.
Commutazione di pacchetto.
(Commutare: trasferire l’informazione su un collegamento fisico dedicato).
Commutazione di circuito
Circuito dedicato per chiamata.
Durante la chiamata le risorse sono solamente mie e se non utilizzate rimangono inattive (non c’è condivisione).
Le risorse di rete sono suddivise in pezzi allocati ai vari collegamenti:
- Divisione di tempo (un po’ parlo io, un po’ parli tu: non contemporaneamente).
- Divisione di frequenza.
Commutazione di pacchetto
Tutto è condiviso tra tutti, non ho risorse a me dedicate.
Quando non uso io un collegamento, questo può essere utilizzato da altri.
La rete deve essere in grado di gestire il traffico dei pacchetti.
Il pacchetto inviato è composto da header + informazione. L’header contiene dati aggiuntivi per far arrivare l’informazione a destinazione.
Al router non interessa da dove arriva il pacchetto, ma solo qual è la sua destinazione. Ha una tabella di instradamento (Devi andare a B? Ecco da dove passare).
La commutazione di pacchetto permette di scaricare le informazioni più velocemente, ma se troppi utenti contemporaneamente inviano richieste, la coda sarà troppo lunga e il sistema potrebbe bloccarsi.
- I pacchetti di tutti gli utenti condividono le risorse di rete.
- Ciascun pacchetto utilizza completamente il canale.
- Le risorse vengono usate a seconda delle necessità.
Contesa delle risorse: non posso trasferire due pacchetti contemporaneamente.
- Accodo i pacchetti in un buffer.
- Man mano leggo l’header e li faccio procedere.
- Code anche in uscita.
Multiplazione statistica: attesa per l’utilizzo del collegamento a causa dell’accodamento dei pacchetti.
→ Dipende da quanto il collegamento è statisticamente occupato (probabilità statistica, non deterministica).
NB: Il ritardo causato dall’accodamento porta a un abbassamento della qualità (chiamata lagga).
Buffer
- Store and forward (memorizzo e procedo): il commutatore deve ricevere l’intero pacchetto prima di poter cominciare a trasmettere sul collegamento in uscita.
- Cut through: il commutatore legge solo l’header e trasmette il pacchetto.
Confronto tra commutazione di pacchetto e di circuito
Esempio 1: 1 collegamento a 1 Mbps con ciascun utente che è attivo il 10% del tempo e, quando è attivo, genera 100 kbps.
Commutazione di circuito: 10 utenti (1 Mbps/100 kbps = 10).
Commutazione di pacchetto: con 35 utenti la probabilità di averne > 10 attivi è inferiore a 0,004.
Esempio 2: 1 canale 64 kbps (2,048/32) per utente.
Commutazione di circuito: se siamo troppi, va lento → Ritardo pagina web: 6.25s.
Commutazione di pacchetto: se siamo troppi, si blocca → Ritardo: 0.22s (poco probabile che arrivino tutti contemporaneamente).
Tipologie di commutazione di pacchetto
Datagram
I pacchetti dello stesso flusso sono inoltrati indipendentemente.
La scelta della porta d’uscita viene fatta sulla base del solo indirizzo di destinazione: non mi interessa il percorso che fa, l’importante è che arrivi.
Circuito virtuale
I pacchetti vengono trasmessi tutti e in ordine (se no file corrotto): es. consulto una pagina web.
Pagando una certa quantità di denaro ci aspettiamo che i pacchetti inviati siano trattati in maniera privilegiata.
È stata introdotta un’etichetta identificativa del circuito virtuale.
Dopo la fase di setup, i pacchetti seguono tutti lo stesso percorso in rete.
Tempi di attraversamento del canale
Velocità (ritmo) di trasmissione R
È la velocità (rate) R con la quale l’informazione digitale viene trasmessa su una linea = numero di bit trasmessi nell’unità di tempo.
NB: velocità di uscita dal singolo nodo!
U = bit/s (bps).
Capacità: massima velocità di trasmissione su un determinato nodo.
Tempo di trasmissione T
NB: Tempo per far partire il pacchetto (L bits) dal singolo nodo (non tempo di viaggio).
Dipende dalla velocità di trasmissione R: =
NB: trasmettitore/ricevitore devono lavorare alla stessa velocità.
Ritardo di propagazione τ
Tempo del viaggio (tempo affinché un impulso trasmesso dal trasmettitore TX raggiunga il ricevitore RX).
Dipende dalla distanza D (in m) e dalla velocità di propagazione v (in m/s) → prossima alla velocità della luce (onda elettromagnetica): =
Ritardo fra la trasmissione del primo bit e la ricezione dell’ultimo.
T = T + τtot
Throughput
Velocità effettiva di attraversamento η = +τ.
Tempo di elaborazione/processing
È il tempo che il router impiega a leggere l’header e ad elaborare la strategia d’invio (lookup tabella di instradamento + trasferimento porta d’uscita): dovrebbe essere P ≍ 0.
Ritardo di accodamento T
aR: velocità del link di uscita frequenza di trasmissione dei pacchetti.
μ := L: lunghezza del pacchetto.
λ: frequenza di arrivo dei pacchetti.
λ Intensità di traffico = ≍ 0 ritardo in coda piccolo → 1 ritardo → ∞.
1 = μ − λ.
Modelli di servizio e livelli dei protocolli
Cos’è internet?
Un servizio di comunicazione che supporta applicazioni distribuite.
Protocolli di comunicazione: regole per inviare e ricevere messaggi.
Servizio di comunicazione
La rete fornisce un servizio di comunicazione alle applicazioni per il trasporto delle informazioni tra i processi remoti (come autobus che ci porta da casa a scuola).
- La rete trasporta i bit (informazione).
- Socket: punto di contatto tra informazione e applicazione.
- Buffer: code.
Il servizio di comunicazione può essere:
- Affidabile/Non affidabile.
- Orientato alla connessione: stabilisco la connessione, invio il messaggio e poi chiudo la connessione.
- Connectionless: il destinatario non sa se deve ricevere qualcosa, è sempre in ascolto, allora quando sono pronto trasmetto senza aprire la comunicazione.
Primitive di servizio
- Richieste di apertura della connessione.
- Comandi che servono a descrivere il servizio, richiederlo e ricevere informazioni su di esso dal fornitore.
Architettura a strati
Il servizio non è monolitico ma organizzato in layers (strati).
La rete funziona per arricchimenti successivi: un livello lavora grazie a quello precedente.
→ Il servizio di comunicazione offerto al livello superiore è più ricco e complesso grazie alle funzioni implementate dal livello inferiore.
Più facili upgrade e ottimizzazione del singolo livello.
Protocolli di comunicazione
Regole che gestiscono il colloquio tra entità dello stesso livello.
Cambiano da livello a livello perché questi forniscono servizi diversi.
Architettura
PDU – packet data units.
- Pacchetto: specifico del livello 3.
- Pacchetto in generale: PDU.
Unità di trasferimento dati che contengono:
- Header: informazione di servizio necessaria a coordinamento tra le entità.
- Dati: informazione vera e propria ricevuta dai livelli superiori (payload).
I PDU per essere inviati a destinazione devono passare per 5 livelli. Ogni livello esamina l’header e passa il payload al livello successivo.
Servizio top-down: l’informazione è sempre generata e decodificata al livello 5.
Incapsulamento: trasmettitore livello 5 → livello 1. Al termine di questa fase i PDU vengono trasferiti verso il nodo destinazione.
Decapsulamento: fase di lettura dei PDU dal ricevitore.
Stack TCP/IP
TCP: protocollo di livello 4.
IP: protocollo di livello 3.
Funzioni dei livelli
Funzione di multiplazione e de-multiplazione
Informazioni provenienti da sorgenti diverse vengono convogliate sulla stessa rete senza interferenze ai livelli sottostanti.
Le applicazioni sono distinte in base a un numero di porta → è l’etichetta che mi consente di fare multiplazione.
Funzione di controllo d’errore
Funzione presente nell’header.
Controllo di integrità. Se la violo → segnalo → cerco di recuperare.
Il client invia un PDU verso il server, il quale verifica la presenza di errori.
Se non c’è nessun errore → invia un ACK al client.
Se c’è un errore → l’ACK non viene inviato → il client resta in attesa → dopo un po’ invia di nuovo.
Funzione di instradamento
Il livello superiore passa il pacchetto con il parametro “indirizzo” contenuto nell’header.
L’entità instradante decide dove inoltrare il pacchetto sulla base di una tabella di instradamento che viene consultata usando l’indirizzo come parametro di ricerca.
Tabelle di instradamento:
- Rotte statiche: scritte a mano (non cambiano finché io manualmente le cambio).
- Compilazione automatica e distribuita (periodicamente si aggiornano da sole grazie a scambi di informazioni tra i router) → instradamento per cammini minimi.
Esempi di entità instradanti: router (livello 3), LAN switch (livello 2), Proxy (livello 5).
Implementare questa funzione a livello alto
Vantaggi: divide le problematiche, si comprende meglio l’architettura.
Svantaggi: complessità (ogni livello è un pezzo di software da scrivere), ci vuole più tempo.
Livello applicativo
Creare un’applicazione di rete: scrivere un software che possa essere eseguito su diversi terminali e possa comunicare tramite la rete.
Inventare una nuova app non richiede di cambiare il software della rete, ma basta aggiornare il software sui terminali.
NB: Le applicazioni sono solo nei terminali.
Processi applicativi
Host: dispositivo d’utente (laptop, smartphone, desktop).
Processo: programma software in esecuzione su un host.
I destinatari di un messaggio non sono gli host, ma i processi.
Comunicazione inter-processo (IPC): tecnologie software per consentire a diversi processi di comunicare scambiandosi informazioni e dati.
Cosa serve per far comunicare processi remoti?
Indirizzamento dei processi applicativi.
Lo scambio di messaggi fra i processi applicativi avviene richiedendo la risorsa internet attraverso i SAP (Service Access Point), punti di accesso dell’host con l’app.
Per identificare il mio browser Chrome sul mio host:
- Indirizzo del mio host (indirizzo IP).
- Indirizzo del SAP del processo in esecuzione (numero di porta).
Le socket sono delle porte di comunicazione.
- Il processo trasmittente mette il messaggio fuori dalla porta (coda di partenza).
- La rete raccoglie il messaggio e lo trasporta fino alla porta del destinatario (coda d’arrivo).
Protocollo di scambio dati
Regole su come e quando ricevere messaggi.
- Tipi di messaggi scambiati.
- Sintassi dei messaggi.
- Semantica dei messaggi.
Requisiti delle applicazioni
Affidabilità
Alcune applicazioni possono tollerare perdite parziali (es. audio).
Altre applicazioni richiedono la completa affidabilità (es. file).
Banda (velocità di trasferimento)
Alcune applicazioni richiedono un minimo di velocità di trasferimento (es. appl. multimediali).
Altre applicazioni si adattano alla velocità disponibile (“applicazioni elastiche”).
Ritardo
Alcune applicazioni richiedono basso ritardo (es. internet telephony, interactive videogames).
Altre applicazioni sono tolleranti ai ritardi (es. email).
Quale servizio di trasporto scegliere?
Servizio TCP (trasferimento di file):
- Connection-oriented: instaurazione connessione prima dello scambio dati.
- Trasporto affidabile senza perdita di dati.
- Controllo di flusso: il trasmettitore regola la velocità in base al ricevitore.
- Controllo di congestione per impedire di sovraccaricare la rete.
- Non fornisce garanzia di ritardo e di banda.
Servizio UDP (trasmissione video):
- Connection-less.
- Trasporto non affidabile.
- Senza controllo sul traffico.
- Trasferimento veloce (voglio una bassa latenza).
Architetture applicative
Client-server
I dispositivi coinvolti implementano o solo il processo client o solo il processo server.
Server: può solo rispondere a richieste ricevute.
- È il collo di bottiglia.
- Host sempre attivo.
- Indirizzo IP permanente.
- Può ricevere richieste da molti client (memorie elevate).
Client: possono solo eseguire richieste.
- Memorie minori.
- Possono essere connessi in modo discontinuo.
- Possono cambiare indirizzo IP.
- Non comunicano con altri client.
- Possono inviare molte richieste allo stesso server.
Peer-to-peer
Host paritetici: i dispositivi implementano tutti sia il processo client che quello server.
Fortemente scalabile ma difficile da gestire.
- Terminali (peers) comunicano direttamente.
- I peers si collegano in modo intermittente a internet prendendo indirizzi IP diversi ogni volta.
- Se un utente cerca un file l’applicazione trova altri utenti che lo hanno.
- L’utente sceglie da chi scaricarlo.
- Il file è scaricato usando un protocollo come HTTP.
- Altri utenti potranno (in seguito o in contemporanea) scaricare il file dall’utente.
P2P con Directory centralizzata
Meccanismo di Napster: rete chiusa → per essere ammesso c’è bisogno di un’autorizzazione.
- Quando i peers si connettono, informano il server centrale.
- Il peer interroga il server centrale per uno specifico file.
- Il file viene scaricato direttamente dal peer che lo possiede.
Problemi:
- Se il server si rompe il sistema si blocca (collo di bottiglia).
- Chi gestisce il server può essere accusato di infrangere le regole sul copyright.
P2P completamente distribuita
Meccanismo di Gnutella: chiunque può entrare nella rete.
- Il peer X deve trovare almeno un altro peer.
- X scandisce la lista fino a che un peer Y risponde.
- X invia un messaggio di richiesta a Y.
- Y inoltra la richiesta nella rete di overlay.
- Tutti i peer che ricevono il pong rispondono a X con un messaggio di risposta.
- X riceve molte risposte e può scegliere a chi connettersi.
- Nessun server centrale.
- Protocollo di pubblico dominio.
- Molti software diversi basati sullo stesso protocollo.
- È basato su una rete di overlay (a livelli).
- I peers si attivano e si collegano ad un numero (<10) di altri vicini.
- La ricerca dei vicini è
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
-
Esercitazione Tecnologie Digitali 2
-
Tecnologie digitali 2 - programma
-
Appunti Tecnologie Digitali 2
-
Tecnologie digitali 1 - programma