Scarica Programmazione Distribuita e Reti di Telecomunicazione: Protocolli e Architetture - Prof. e più Appunti in PDF di Elementi di Informatica solo su Docsity!
Programmazione concorrente e distribuita
Reti di calcolatori
Una rete di calcolatori è un sistema informatico costituito da due o più computer collegati tra loro. Un sistema distribuito è un sistema i cui componenti sono in esecuzione su calcolatori diversi (nodi) collegati tramite una rete.
- In ogni nodo è in esecuzione almeno un processo, che comunica con gli altri processi del sistema.
Programmazione distribuita
Un programma distribuito è un programma concorrente i cui componenti risiedono su macchine connesse in rete.
- La comunicazione tra i componenti avviene tramite la rete.
Storia
Le prime reti di calcolatori risalgono agli anni ’60 e si basavano sui mainframe, calcolatori di grandi dimensioni e complessità, ma con capacità di calcolo estremamente ridotte.
- I mainframe venivano programmati tramite schede perforate ed eseguivano i programmi in modo sequenziale.
Negli anni ’70 nascono i primi sistemi operativi con il supporto al time-sharing, che introduce la capacità di multielaborazione.
- Cambia il paradigma di utilizzo: gli utenti interagiscono con il mainframe tramite terminali.
- Gli host (terminali) sono semplici dispositivi con: ◦ Schermo e tastiera; ◦ Nessuna memoria locale; Per collegare i terminali ai mainframe, nascono le prime reti per il trasferimento di dati tra host e mainframe. ARPANET e l’inizio di Internet Negli anni ’70 nasce ARPANET, una rete sviluppata dal Dipartimento della Difesa degli Stati Uniti, con lo scopo di collegare i computer delle università e dei laboratori di ricerca, consentendo lo scambio di informazioni.
- Grazie ad ARPANET, i computer iniziano a comunicare e condividere dati.
- Ogni macchina è identificata da un indirizzo univoco (concetto alla base dell’attuale Internet). L’avvento dei Personal Computer e delle LAN/WAN Negli anni ’70, un’altra innovazione fondamentale è la nascita dei Personal Computer (PC), come l’Apple I e II. Negli anni ’80, IBM lancia il PC, portando alla diffusione delle prime Local Area Network (LAN).
- Le LAN permettono ai computer di condividere risorse come memoria e stampanti, dando
- Rete a maglia (Mesh) A. Ogni nodo è collegato direttamente a più nodi, garantendo alta ridondanza e affidabilità; B. Può essere parziale o totale;
- Rete a stella (Star) A. Tutti i dispositivi sono connessi a un nodo centrale; B. Se il nodo centrale si guasta, la rete non funziona più;
- Reti compeltamente connesse (Fully connected) A. Ogni nodo è connesso a tutti gli altri; B. Offre massima affidabilità, ma è costosa e difficele da gestire;
- Rete lineare (Line) A. I nodi sono collegati i una sequenza lineare;
B. Semplice ed economica, ma poco affidabile;
- Rete ad albero (Tree) A. Struttura gerarchica, con un nodo principale da cui si diramano altri nodi; B. Simile alla rete a stella, ma con più livelli;
- Rete a Bus (Bus) A. Un unico cavo principale a cui sono connessi tutti i nodi; B. Se il cavo principale si guasta, l'intera rete smette di funzionare;
Connessione
Nelle reti totalmente connesse, ogni nodo è direttamente collegato a tutti gli altri. Tuttavia, nella maggior parte delle architetture di rete, questo non è vero:
- Solo nelle reti completamente connesse esiste un collegamento diretto tra ogni coppia di nodi;
- Nelle altre topologie, i dati devono essere instradati attraverso altri nodi per raggiungere la destinazione;
- Onde elettromagnetiche (Wi-Fi, radio, satelliti) → usate nelle comunicazioni wireless;
- Raggi infrarossi → usati in telecomandi e dispositivi a corto raggio;
- Soluzioni ibride → combinazione di più mezzi per ottimizzare prestazioni e copertura;
Tipologia di comunicazione
- Simplex : a senso unico;
- Hall Duplex : A senso unico alternato;
- Duplex : in entrambi i sensi;
Protocolli di comunicazione
I protocolli di comunicazione definiscono un insieme di regole che permettono ai dispositivi di una rete di scambiarsi dati in modo corretto e comprensibile. Sono essenziali per garantire che i dispositivi coinvolti nella comunicazione possano interpretare e rispondere ai messaggi secondo un formato condiviso. Nelle reti di calcolatori, i protocolli sono organizzati in modo gerarchico secondo una pila di protocolli. Nota bene Ogni livello della pila si basa su quello sottostante per fornire i propri servizi. Il livello di astrazione cresce dal basso verso l’alto: i dettagli tecnici vengono nascosti a mano a mano che si sale nella gerarchia.
Il modello ISO/OSI
Il modello ISO/OSI (Open System Interconnection) è uno standard definito dall’International Standard Organization (ISO) per la comunicazione tra sistemi diversi. Livelli defli host:
- Applicazione;
- Presentazione;
- Sessione;
- trasporto; Livello dei mezzi:
- Rete;
- Collegamento;
- Fisico; Il livello Fisico gestisce la trasmissione dei dati in forma di bit (tensioni, correnti, segnali elettrici). Salendo di livello, si astrae sempre di più fino al livello Applicazione, dove la comunicazione avviene tra processi software. Per ogni livello sono definiti specifici protocolli di comunicazione
Livello 1
- Astratto dall’architettura fisica e dal numero di nodi A ogni livello ognuno dei 7 livelli sono definiti dei protocolli standard. Esempi di standard Alcuni esempi:
- IEEE (Ethernet): di tipo LAN (livello 1 e 2);
- Fase Ethernet : di tipo LAN (Livello 1 e 2);
- Token-Ring : di tipo LAN (livello 1 e 2)
Oltre le LAN...
La comunicazione tra calcolatori deve essere possibile anche tra reti differenti, ovvero tra nodi appartenenti a LAN diverse. Vedere l’intera infrastruttura come un’unica rete:
- internet (con la “i” minuscola): una rete di reti generica
- Internet (INTERconnected Network): la più grande rete di reti al mondo
- Protocolli specifici per il trasferimento delle informazioni tra reti Il Gateway consente la comunicazione tra diverse LAN.
Terminologia
- internet : qualunque rete composta da più reti;
- Internet : la rete globale che connette miliardi di dispositivi;
- TCP/IP : protocollo più utilizzato per creare reti internet (inclusa Internet);
- Intranet : rete privata che utilizza la tecnologia di Internet;
internet
Livelli 1 e 2 : Qualsiasi connessione fisica con protocolli come:
- IEEE
- Fast Ethernet
- Token Ring Livello 3 : Protocollo IP e protocolli di routing per il trasferimento tra LAN Livello 4: TCP/IP per la gestione del trasporto
Indirizzo IP (Livello 3)
A livello di rete (Livello 3) è fondamentale identificare ogni macchina collegata alla rete in modo univoco e uniforme. Indirizzo IP :
- Non possono esistere due macchine con lo stesso indirizzo IP all’interno della stessa internet.
- Strutturato in 32 bit, suddivisi in: ◦ NetID (24 bit): identifica la rete; ◦ HostID (8 bit): identifica un nodo all’interno della rete;
- Tutti i dispositivi appartenenti a una rete condividono lo stesso NetID;
- Se più processi sono attivi sullo stesso nodo, IP da solo non può distinguere tra loro;
- Questo limita la comunicazione tra processi su nodi diversi;
User datagram Protocol (Livello 4)
UDP è un protocollo di trasporto basato su IP che fornisce un servizio connectionless per la trasmissione di pacchetti. Caratteristiche principali:
- Basato su IP , quindi mantiene un servizio senza connessione e non affidabile;
- Non garantisce : ◦ Consegna dei pacchetti; ◦ Ordine di arrivo;
- Include correzione d’errore , ma non ritrasmette i pacchetti persi;
- Introduzione del concetto di porta , che consente di distinguere più processi su uno stesso nodo;
Discussione
UDP è ideale quando serve velocità ed efficienza, ed eventuali perdite di pacchetti sono tollerabili.
- Nessuna connessione: i pacchetti vengono inviati senza negoziazione;
- Minimo overhead rispetto a TCP;
- Utile per applicazioni in tempo reale;
- Se voglio qualcosa di più?
TCP (Livello 4 )
TCP è un protocollo connection-oriented che fornisce una trasmissione affidabile dei dati tra due host. Caratteristiche principali:
- Indirizzo IP + Porta TCP per identificare i processi comunicanti;
- Creazione di una connessione prima dello scambio di dati;
- Servizio full-duplex, con acknowledge e correzione d’errore;
- Affidabilità tramite tecnica PAR (Positive Acknowledgment and Retransmission): ◦ Ogni messaggio ricevuto viene confermato con un ACK; ◦ Se un pacchetto va perso, viene ritrasmesso;
- Gestione della congestione: il destinatario indica quanti byte può gestire;
Il modello TCP /IP
è un modello più semplice del modello ISO /OSI
- Application Layer —> Applciation, Presentation, Session Layer;
- Trasport Layer —> Transport layer
- Internet Layer —> Network Layer
- network Access Laye r —> Data Link e Physical Layer; È il nostro modello di riferimento
Programma Protocollo applicativo Programma API API Sistema operativo Sistema operativo
Software di rete Software di rete Internet
Utilizzare le API
Per interfacciarsi con TCP/IP, esiste un’API standard disponibile per la maggior parte dei linguaggi di programmazione:
Socket
- Introdotti nei sistemi UNIX, oggi implementati in Windows, MacOS, Linux
- Garantiscono la portabilità dei programmi di rete
- Permettono la comunicazione tra programmi scritti in linguaggi diversi su macchine diverse
- Entrambi i programmi devono usare lo stesso protocollo di trasporto (es. TCP o UDP)
- Sono lo standard de facto per le connessioni su Internet
L’indirizzo IP
Ogni macchina è identificata nella rete da un indirizzo IP, che può essere:
- Numerico (es. 192.168.1.1)
- Simbolico (es. www.example.com)
Indirizzo numerico
Composto da 32 bit Rappresentato da 4 gruppi da 8 bit separati da punti (notazione dotted decimal):
- Ogni gruppo è un numero compreso tra 0 e 255
- Esempio: 128.165.3.
- Ci sono oltre 4 miliardi di combinazioni possibili Indirizzo simbolico È un nome che corrisponde a un indirizzo numerico È più facile da ricordare rispetto al formato numerico Viene gestito tramite un servizio di rete chiamato DNS (Domain Name System)
Indirizzo in Java
In Java, gli indirizzi IP sono rappresentati tramite la classe InetAddress. Metodi principali:
- static InetAddress getByName(String host) throws UnknownHostException; Restituisce l’InetAddress della macchina identificata dal nome dell’host specificato.
- static InetAddress getLocalHost() throws UnknownHostException; Restituisce l’InetAddress della macchina locale, cioè l’indirizzo IP della macchina su cui è in esecuzione il programma.
Comunicazione con i Socket
I Socket sono uno strumento fondamentale per la comunicazione tra due programmi, che possono risiedere sulla stessa macchina o su macchine diverse connesse in rete. Essi forniscono un canale di comunicazione bidirezionale per l’invio e la ricezione di dati tra un client e un server.
Server
Il server è responsabile di ascoltare le richieste di connessione da parte dei client. Il processo server può essere descritto nei seguenti passi:
- Socket di ascolto : Il server apre un socket e lo associa a una porta specifica (ad esempio, porta 8080).
- Attesa di connessione : Il server resta in attesa di una connessione da parte di un client. Una volta che un client si connette, il server stabilisce un nuovo socket per la comunicazione con quel client.
- Gestione della connessione : Il server può servire uno o più client, a seconda della progettazione del sistema (ad esempio, usando thread separati per ogni client).
Client
Il client è il programma che avvia la connessione al server. In particolare:
- Richiesta di connession e: Il client apre un socket e cerca di connettersi al server specificando l’indirizzo IP e la porta del server.
- Comunicazione : Una volta stabilita la connessione, il client e il server possono scambiarsi dati attraverso il canale di comunicazione creato dal socket.
- Chiusura della connessione : La connessione termina quando una delle due parti (client o server) invia un comando di chiusura.
Comunicare con i Socket
- Server : Inizia in ascolto su una porta predefinita. Una volta che il server accetta la connessione, entrambe le parti possono scambiarsi messaggi attraverso il socket.
- Client : Invia una richiesta di connessione al server e, se il server accetta, stabilisce una comunicazione bidirezionale.
- Messaggi : Sia il client che il server possono inviare e ricevere messaggi fino a quando una delle due parti decide di chiudere la connessione. Nota bene Il dialogo tra client e server termina quando una delle due parti invia un segnale di chiusura, facendo sì che il canale di comunicazione venga chiuso correttamente.
Comunicare con i Socket in Java
L’implementazione Java dei socket si basa su due classi:
La classe ServerSocket
La classe ServerSocket in Java è utilizzata per ascoltare e accettare le richieste di connessione