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


Programmazione Distribuita e Reti di Telecomunicazione: Protocolli e Architetture - Prof. , Appunti di Elementi di Informatica

Una panoramica completa sulla programmazione distribuita e le reti di telecomunicazione, focalizzandosi sui protocolli di comunicazione e le architetture di rete. Vengono esaminati diversi aspetti, tra cui la topologia delle reti, le modalità di connessione, i mezzi di trasmissione e i protocolli utilizzati per lo scambio di dati. Anche i livelli di protocollo, come tcp/ip e udp, e le api per la comunicazione tramite socket in java, fornendo una solida base per comprendere come i programmi interagiscono in ambienti distribuiti e come vengono gestite le comunicazioni di rete. L'analisi include esempi pratici e concetti chiave per lo sviluppo di applicazioni distribuite.

Tipologia: Appunti

2024/2025

In vendita dal 15/11/2025

AriBab
AriBab 🇮🇹

88 documenti

1 / 22

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Programmazione concorrente e distribuita
19/03/2025
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.
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16

Anteprima parziale del testo

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
  1. Rete a maglia (Mesh) A. Ogni nodo è collegato direttamente a più nodi, garantendo alta ridondanza e affidabilità; B. Può essere parziale o totale;
  2. 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ù;
  3. Reti compeltamente connesse (Fully connected) A. Ogni nodo è connesso a tutti gli altri; B. Offre massima affidabilità, ma è costosa e difficele da gestire;
  4. Rete lineare (Line) A. I nodi sono collegati i una sequenza lineare;

B. Semplice ed economica, ma poco affidabile;

  1. 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;
  2. 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:

  • ServerSocket;
  • Socket;

La classe ServerSocket

La classe ServerSocket in Java è utilizzata per ascoltare e accettare le richieste di connessione