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


Sistemi Distribuiti e Architetture di Rete: Una Panoramica Completa, Appunti di Sistemi di reti

I sistemi distribuiti, le loro architetture e i protocolli di comunicazione. Vengono analizzati i sistemi centralizzati, i sistemi informativi distribuiti e le architetture simd e misd. Approfondisce i protocolli tcp e udp, le trasmissioni unicast e multicast, e l'architettura a tre livelli delle applicazioni web. Infine, esamina l'uso di ajax per la comunicazione asincrona, fornendo una panoramica completa delle tecnologie di rete moderne. Una panoramica dettagliata delle architetture di rete e dei protocolli di comunicazione, utile per comprendere come i dati vengono gestiti e trasferiti in modo efficiente e affidabile.

Tipologia: Appunti

2024/2025

In vendita dal 05/07/2025

mario-gallo-17
mario-gallo-17 🇮🇹

8 documenti

1 / 16

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
TPS RIPASSO ESAME
"PROGRAMMAZIONE CONCORRENTE - LA
COMUNICAZIONE E SINCRONIZZAZIONE TRA
PROCESSI"
1. DEFINISCI E COMMENTA, IL "MODELLO A MEMORIA COMUNE" E COME IL
SISTEMA OPERATIVO NE GESTISCE LA RELATIVA "ALLOCAZIONE DELLE
RISORSE" .
Il "modello a memoria comune" è un concetto che si riferisce alla condivisione di una
porzione di memoria tra più processi o programmi eseguiti contemporaneamente su un
sistema operativo. In questo modello, i processi possono accedere alla stessa area di
memoria per leggere e scrivere dati in modo cooperativo.
Il sistema operativo gestisce l'allocazione delle risorse in questo contesto attraverso
meccanismi di protezione e controllo dell'accesso alla memoria condivisa. Ad esempio, il
sistema operativo assegna specifici permessi di accesso a ciascun processo per garantire
che non ci siano conflitti durante l'utilizzo della memoria comune. Questo include il
monitoraggio dell'accesso concorrente per prevenire condizioni di race, deadlock o accesso
non autorizzato.
Inoltre, il sistema operativo può implementare tecniche come la gestione dei segmenti di
memoria, la paginazione o la segmentazione per organizzare e suddividere l'area di
memoria comune in blocchi gestibili. Questo consente un'allocazione efficiente delle risorse
e ottimizza l'utilizzo della memoria, garantendo al contempo l'isolamento e la protezione dei
processi.
2. QUALI SONO LE 4 CARATTERISTICHE DEGLI ERRORI "DIPENDENTI DAL
TEMPO" NELLA PROGRAMMAZIONE CONCORRENTE ?
3. DEFINISCI E COMMENTA, L' "OVERLAPPING" E L' "INTERLEAVING" E SE E'
POSSIBILE UNA LORO COMBINAZIONE .
L'"overlapping" e l'"interleaving" sono due concetti chiave nella programmazione concorrente
che riguardano il modo in cui le operazioni dei processi o dei thread si sovrappongono e si
mescolano tra loro nell'esecuzione.
Overlapping (sovrapponimento): Si riferisce alla situazione in cui le operazioni di un
processo o di un thread si sovrappongono in tempo con quelle di un altro processo o thread.
Questo significa che mentre un processo sta ancora eseguendo un'operazione, un altro
processo può iniziare a eseguire la sua operazione contemporaneamente. L'obiettivo è
massimizzare l'utilizzo delle risorse del sistema, consentendo a più operazioni di essere
eseguite contemporaneamente quando possibile.
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff

Anteprima parziale del testo

Scarica Sistemi Distribuiti e Architetture di Rete: Una Panoramica Completa e più Appunti in PDF di Sistemi di reti solo su Docsity!

TPS RIPASSO ESAME

"PROGRAMMAZIONE CONCORRENTE - LA

COMUNICAZIONE E SINCRONIZZAZIONE TRA

PROCESSI"

1. DEFINISCI E COMMENTA, IL "MODELLO A MEMORIA COMUNE" E COME IL

SISTEMA OPERATIVO NE GESTISCE LA RELATIVA "ALLOCAZIONE DELLE

RISORSE".

Il "modello a memoria comune" è un concetto che si riferisce alla condivisione di una porzione di memoria tra più processi o programmi eseguiti contemporaneamente su un sistema operativo. In questo modello, i processi possono accedere alla stessa area di memoria per leggere e scrivere dati in modo cooperativo. Il sistema operativo gestisce l'allocazione delle risorse in questo contesto attraverso meccanismi di protezione e controllo dell'accesso alla memoria condivisa. Ad esempio, il sistema operativo assegna specifici permessi di accesso a ciascun processo per garantire che non ci siano conflitti durante l'utilizzo della memoria comune. Questo include il monitoraggio dell'accesso concorrente per prevenire condizioni di race, deadlock o accesso non autorizzato. Inoltre, il sistema operativo può implementare tecniche come la gestione dei segmenti di memoria, la paginazione o la segmentazione per organizzare e suddividere l'area di memoria comune in blocchi gestibili. Questo consente un'allocazione efficiente delle risorse e ottimizza l'utilizzo della memoria, garantendo al contempo l'isolamento e la protezione dei processi.

2. QUALI SONO LE 4 CARATTERISTICHE DEGLI ERRORI "DIPENDENTI DAL

TEMPO" NELLA PROGRAMMAZIONE CONCORRENTE?

3. DEFINISCI E COMMENTA, L' "OVERLAPPING" E L' "INTERLEAVING" E SE E'

POSSIBILE UNA LORO COMBINAZIONE.

L'"overlapping" e l'"interleaving" sono due concetti chiave nella programmazione concorrente che riguardano il modo in cui le operazioni dei processi o dei thread si sovrappongono e si mescolano tra loro nell'esecuzione. Overlapping (sovrapponimento): Si riferisce alla situazione in cui le operazioni di un processo o di un thread si sovrappongono in tempo con quelle di un altro processo o thread. Questo significa che mentre un processo sta ancora eseguendo un'operazione, un altro processo può iniziare a eseguire la sua operazione contemporaneamente. L'obiettivo è massimizzare l'utilizzo delle risorse del sistema, consentendo a più operazioni di essere eseguite contemporaneamente quando possibile.

Interleaving (mescolamento): Si riferisce alla pratica di eseguire operazioni da diversi processi o thread in modo alternato o mescolato nel tempo. Questo significa che le istruzioni di un processo possono essere eseguite per un po', poi le istruzioni di un altro processo, e così via. L'interleaving è una tecnica comune utilizzata dai sistemi operativi per eseguire più processi in parallelo su un singolo processore o per simulare l'esecuzione concorrente su un sistema con un numero limitato di risorse. Quanto alla possibilità di combinare overlapping e interleaving, sì, è possibile. Nel contesto della programmazione concorrente, l'overlapping può avvenire tra le operazioni di più processi o thread, mentre l'interleaving determina l'ordine in cui queste operazioni vengono eseguite. Ad esempio, mentre due processi stanno eseguendo operazioni in sovrapposizione, il sistema operativo può utilizzare l'interleaving per decidere quale operazione eseguire prima e per quanto tempo, alternando tra i processi in base alla politica di schedulazione adottata.

4. DEFINISCI E COMMENTA, I "SEMAFORI DI BASSO LIVELLO O SPINLOCK".

I "semafori di basso livello" o "spinlock" sono strumenti utilizzati nella programmazione concorrente per sincronizzare l'accesso a risorse condivise tra processi o thread. Questi semafori sono considerati "di basso livello" perché sono implementati a un livello molto base, spesso direttamente attraverso le istruzioni del processore, e richiedono l'uso di "spinning" (in italiano, "fare girare" o "attesa attiva"). Quando un processo o thread desidera accedere a una risorsa protetta da un semaforo di basso livello, tenta di acquisire il semaforo. Se il semaforo è libero, il processo lo acquisisce immediatamente e può procedere con l'accesso alla risorsa. Tuttavia, se il semaforo è già in uso da un altro processo, anziché mettersi in attesa passiva, il processo che cerca di acquisire il semaforo continua a "spinnare" o "girare" in un ciclo, controllando costantemente lo stato del semaforo finché non diventa disponibile. I semafori di basso livello sono particolarmente utili in situazioni in cui il tempo di attesa è previsto essere breve o dove si vuole evitare il costo aggiuntivo associato alla sospensione e alla riattivazione di un processo in attesa di una risorsa. Tuttavia, l'uso eccessivo di spinlock può causare problemi come il "busy waiting", dove un processo consuma molte risorse del sistema semplicemente aspettando, senza fare effettivamente alcun lavoro utile. Inoltre, poiché l'uso di spinlock richiede cicli di CPU per essere consumati in attesa della risorsa, possono verificarsi problemi di prestazioni in sistemi ad alta concorrenza o su sistemi multiprocessore. Perciò, è importante utilizzare i semafori di basso livello con cautela e valutare attentamente se siano la scelta migliore per la situazione specifica.

I SISTEMI DISTRIBUITI - MODELLI ARCHITETTURALI

- IL PROTOCOLLO HTTP - LE APPLICAZIONI WEB "

1. DEFINISCI E COMMENTA, QUANDO UN SISTEMA INFORMATICO E'

CENTRALIZZATO E QUANDO UN SISTEMA INFORMATICO E' DISTRIBUITO.

Un sistema informatico è considerato centralizzato quando tutte le risorse e le decisioni relative al funzionamento del sistema sono concentrate in un'unica posizione o in un'unica autorità. In un sistema centralizzato, tutte le operazioni, l'archiviazione dei dati e il controllo sono gestiti da un singolo nodo o da un insieme limitato di nodi. Questo tipo di architettura è solitamente utilizzato in piccole aziende o organizzazioni dove le decisioni possono essere prese da un'unica autorità centrale e dove non vi è la necessità di suddividere le risorse in più luoghi. D'altro canto, un sistema informatico è distribuito quando le risorse e le decisioni relative al funzionamento del sistema sono distribuite su più nodi o sistemi interconnessi all'interno di una rete. In un sistema distribuito, le risorse possono essere allocate su diversi computer o server, e le operazioni possono essere eseguite in parallelo su più nodi. Questo tipo di architettura è spesso utilizzato in grandi organizzazioni o reti di computer, dove è necessario condividere risorse tra diverse sedi geografiche o garantire la scalabilità e l'affidabilità del sistema.

2. DEFINISCI E COMMENTA, CLIENT, SERVER E ACTOR.

-Client: In un contesto di comunicazione client-server, il client è un'applicazione o un dispositivo che richiede servizi o risorse da un server. Il client inizializza la comunicazione inviando richieste al server e attende le risposte. Tipicamente, il client è responsabile di presentare le informazioni all'utente finale e di trasmettere le richieste al server per l'elaborazione.Commento: Il client svolge un ruolo attivo nella comunicazione con il server, iniziando le interazioni e gestendo la presentazione delle informazioni all'utente. È spesso progettato per essere user-friendly e interagire in modo intuitivo con gli utenti finali. -Server: Il server è un'applicazione o un dispositivo che fornisce servizi, risorse o informazioni ai client su richiesta. Risponde alle richieste dei client, elaborando le richieste e restituendo i risultati appropriati. I server sono spesso progettati per essere affidabili, scalabili e in grado di gestire multiple richieste simultaneamente.Commento: Il server svolge un ruolo reattivo, attendendo le richieste dai client e fornendo loro i servizi richiesti. È progettato per essere robusto e in grado di gestire carichi di lavoro variabili in modo efficiente, fornendo una risposta tempestiva ai client. -Actor: Nella programmazione concorrente, un actor è un'entità computazionale autonoma che può ricevere messaggi, elaborarli e inviare messaggi ad altri attori. Gli attori operano in modo isolato e comunicano solo attraverso lo scambio di messaggi. Questo modello di programmazione offre un'astrazione potente per gestire la concorrenza e la comunicazione tra processi.Commento: Gli attori sono simili a oggetti nella programmazione orientata agli oggetti, ma sono progettati per essere più leggeri e isolanti.

3. DEFINISCI E COMMENTA, LE 3 TIPOLOGIE POSSIBILI DI SISTEMI

DISTRIBUITI : SISTEMI DI CALCOLO, SISTEMI INFORMATIVI, SISTEMI

PERVASIVI.

-Sistemi di Calcolo: Questi sistemi distribuiti sono progettati per eseguire elaborazioni intensive in parallelo su più nodi di un'infrastruttura distribuita. In un sistema di calcolo distribuito, i processi possono essere suddivisi e eseguiti su diversi computer o server, consentendo di sfruttare le risorse di calcolo distribuite per gestire carichi di lavoro complessi.Commento: I sistemi di calcolo distribuito sono utilizzati in una vasta gamma di applicazioni, tra cui la ricerca scientifica, il calcolo di grandi quantità di dati, la simulazione e il rendering di immagini. Consentono di ridurre i tempi di elaborazione e di scalare l'elaborazione in modo efficace utilizzando le risorse di calcolo disponibili in modo distribuito. -Sistemi Informativi: Questi sistemi distribuiti sono progettati per gestire, archiviare e condividere grandi quantità di dati distribuiti su una rete. In un sistema informativo distribuito, i dati possono essere distribuiti su più nodi e possono essere accessibili e aggiornati da più utenti o applicazioni in modo simultaneo.Commento: I sistemi informativi distribuiti sono ampiamente utilizzati in contesti come basi di dati distribuite, archiviazione di file distribuita, sistemi di gestione documentale e servizi web. Consentono di garantire l'accesso e la disponibilità dei dati da diverse posizioni geografiche e di gestire dati di grandi dimensioni in modo efficiente. -Sistemi Pervasivi: Questi sistemi distribuiti sono progettati per fornire servizi e funzionalità integrati in ambienti fisici e digitali, estendendo la presenza e l'interazione dell'informatica nell'ambiente circostante. In un sistema pervasivo distribuito, i dispositivi e i sensori sono distribuiti su un'ampia area e comunicano tra loro per offrire servizi intelligenti e personalizzati agli utenti.Commento: I sistemi pervasivi distribuiti sono comunemente utilizzati in applicazioni come l'Internet of Things (IoT), le smart cities, i dispositivi indossabili e l'automazione domestica. Consentono di integrare le tecnologie digitali nell'ambiente fisico circostante, offrendo esperienze utente avanzate e migliorando l'efficienza e la comodità quotidiana.

4. DEFINISCI E COMMENTA, AL RIGUARDO DI UN SISTEMA DISTRIBUITO I

SEGUENTI BENEFICI : L'AFFIDABILITA', L'ECONOMICITA', LA TOLLERANZA

AI GUASTI.

-Affidabilità: Un sistema distribuito può offrire maggiore affidabilità rispetto a un sistema centralizzato perché distribuisce il carico di lavoro e le risorse su più nodi o server. Se uno dei nodi o server dovesse fallire, il sistema può continuare a funzionare utilizzando le risorse disponibili su altri nodi. Questa ridondanza aiuta a prevenire il single point of failure e assicura una maggiore continuità operativa.Commento: La ridondanza e la distribuzione delle risorse in un sistema distribuito possono migliorare la sua resilienza e la sua capacità di ripristinare le operazioni in caso di guasti o problemi localizzati. Questo è particolarmente importante in applicazioni critiche dove il downtime può causare gravi conseguenze.

Le architetture distribuite hardware possono essere classificate in base al modo in cui vengono organizzati i calcoli e i dati all'interno del sistema. Ecco una definizione e un commento su ciascuna di esse: -SISD (Single Instruction, Single Data): In un'architettura SISD, un singolo processore esegue una singola istruzione su un singolo insieme di dati alla volta. Questa è l'architettura più semplice e tradizionale, dove il processore esegue una serie di istruzioni sequenziali su un singolo flusso di dati.Commento: Le architetture SISD sono comunemente utilizzate in computer desktop, laptop e server tradizionali, dove un singolo processore esegue istruzioni su dati memorizzati in memoria centrale. Questo tipo di architettura è efficiente per compiti sequenziali e non paralleli. -SIMD (Single Instruction, Multiple Data): In un'architettura SIMD, un singolo processore esegue la stessa istruzione contemporaneamente su più insiemi di dati. Ogni istruzione viene eseguita in parallelo su un'array o un vettore di dati.Commento: Le architetture SIMD sono utilizzate per eseguire calcoli paralleli su grandi insiemi di dati, come nel caso di operazioni di elaborazione grafica o scientifica. Questo tipo di architettura consente di ottenere prestazioni elevate in operazioni altamente parallele, sfruttando al massimo la potenza di calcolo del processore. -MISD (Multiple Instruction, Single Data): In un'architettura MISD, più processori eseguono istruzioni diverse su un singolo insieme di dati. Ogni processore applica istruzioni diverse al medesimo set di dati.Commento: Le architetture MISD sono meno comuni e spesso utilizzate in applicazioni specializzate dove è richiesta una ridondanza per migliorare l'affidabilità o dove è necessario applicare più algoritmi contemporaneamente a uno stesso set di dati. -MIMD (Multiple Instruction, Multiple Data): In un'architettura MIMD, più processori eseguono istruzioni diverse su insiemi di dati separati e indipendenti. Ogni processore ha il proprio flusso di istruzioni e dati.Commento: Le architetture MIMD sono ampiamente utilizzate nei sistemi distribuiti e paralleli, come i cluster di server, i supercomputer e i sistemi embedded. Consentono di eseguire un'ampia varietà di task paralleli e indipendenti su dati diversi contemporaneamente, migliorando l'efficienza e le prestazioni del sistema.

8. DEFINISCI E COMMENTA, IL PROTOCOLLO HTTP.

Il protocollo HTTP, acronimo di Hypertext Transfer Protocol, è un protocollo di comunicazione utilizzato per trasferire dati su Internet. È alla base del World Wide Web e viene utilizzato per il trasferimento di risorse come documenti HTML, immagini, file multimediali e altro ancora, tra un client e un server web. In sostanza, il protocollo HTTP stabilisce le regole e le convenzioni che governano la comunicazione tra il browser web (il client) e il server web. Ecco una breve descrizione dei principali aspetti del protocollo HTTP e un commento su ciascuno di essi:

-Richiesta e risposta: Il protocollo HTTP è basato su un modello di richiesta e risposta. Il client invia una richiesta al server per ottenere una risorsa specifica, come una pagina web o un file, e il server risponde con la risorsa richiesta o con uno stato che indica il successo o il fallimento della richiesta.Commento: Questo modello semplice ma efficace consente al client di richiedere e ottenere rapidamente le risorse desiderate dal server. La struttura standardizzata delle richieste e delle risposte semplifica l'implementazione e l'interpretazione del protocollo HTTP da parte dei client e dei server. -Metodi HTTP: Il protocollo HTTP definisce vari metodi che il client può utilizzare per interagire con il server. I principali metodi includono GET, POST, PUT, DELETE, HEAD e altri. Ogni metodo corrisponde a un'azione specifica che il client desidera eseguire sul server, come ottenere una risorsa, inviare dati al server, aggiornare una risorsa esistente o cancellarla.Commento: L'uso dei diversi metodi HTTP consente al client di eseguire una vasta gamma di operazioni interattive con il server web, come la visualizzazione di pagine web, l'invio di moduli, l'aggiornamento di informazioni e altro ancora. Questa flessibilità rende HTTP un protocollo versatile per la comunicazione web.

9. DEFINISCI E COMMENTA, LA COMUNICAZIONE MULTICAST (NELLE

APPLICAZIONI WEB)

La comunicazione multicast nelle applicazioni web si riferisce a un metodo di trasmissione di dati da un mittente a più destinatari contemporaneamente su una rete. Questo è in contrasto con la comunicazione unicast, dove i dati vengono inviati da un mittente a un solo destinatario alla volta. Ecco una descrizione e un commento su come viene utilizzata la comunicazione multicast nelle applicazioni web: Nelle applicazioni web, la comunicazione multicast può essere utilizzata per trasmettere dati da un server a più client contemporaneamente. Ad esempio, potrebbe essere utilizzata per distribuire flussi video in diretta a più utenti che guardano lo stesso evento in tempo reale, come una trasmissione sportiva o una conferenza online. Invece di inviare una copia separata dei dati a ciascun utente, il server invia una singola copia dei dati alla rete, e i client interessati possono unirsi al flusso multicast per ricevere i dati in tempo reale. La comunicazione multicast nelle applicazioni web è utile quando è necessario distribuire contenuti in tempo reale a una grande audience senza dover inviare copie separate dei dati a ciascun utente. Ciò consente di ridurre il carico sulla rete e sul server, poiché i dati vengono trasmessi una sola volta e condivisi tra tutti i client interessati. Tuttavia, l'implementazione di multicast può essere complessa e dipende dalla capacità della rete di supportare questo tipo di comunicazione. Inoltre, poiché la comunicazione multicast dipende dalla partecipazione attiva dei client interessati, è importante che i client siano configurati per ricevere e gestire i dati multicast in modo appropriato.

"LE APPLICAZIONI DI RETE - I SOCKET ED I

PROTOCOLLI PER LA COMUNICAZIONE DI RETE

- LA CONNESSIONE TRAMITE SOCKET - CLASSI

E OGGETTI IN PHP - PHP CON AJAX"

1. DEFINISCI E COMMENTA, "CON PAROLE TUE", UNA APPLICAZIONE DI

RETE E FAI DEGLI ESEMPI (SIGNIFICATIVI).

Un'applicazione di rete è un software progettato per consentire la comunicazione e lo scambio di dati tra più dispositivi o utenti attraverso una rete di computer. Queste applicazioni sfruttano le capacità della rete per consentire agli utenti di collaborare, condividere informazioni, accedere a risorse remote e molto altro ancora. Ecco alcuni esempi significativi di applicazioni di rete: -E-mail: Le applicazioni di posta elettronica consentono agli utenti di inviare, ricevere e gestire messaggi elettronici attraverso Internet o una rete aziendale. Esempi popolari di applicazioni di posta elettronica includono Gmail, Outlook e Yahoo! Mail. Queste applicazioni permettono agli utenti di comunicare in modo asincrono, inviando e ricevendo messaggi di testo, allegati, immagini e altro ancora. -Web Browser: I browser web come Google Chrome, Mozilla Firefox e Safari sono applicazioni di rete che consentono agli utenti di navigare e accedere a contenuti su Internet. I browser web permettono agli utenti di visualizzare pagine web, interagire con contenuti multimediali, effettuare ricerche online e accedere a servizi web. Utilizzando il protocollo HTTP, i browser web possono recuperare e visualizzare pagine web da server remoti su Internet.

2. L'ARCHITETTURA DI RETE CLIENT-SERVER

In un'architettura client-server, il sistema è organizzato in modo che ci siano uno o più server centrali che forniscono servizi, risorse o dati ai client. I client sono dispositivi o applicazioni che richiedono e accedono a tali servizi o risorse dal server. Il server gestisce le richieste dei client, esegue le operazioni richieste e restituisce i risultati ai client. Questo modello è comune nelle applicazioni web, dove i browser web (client) richiedono e ricevono pagine web dai server web. L'architettura client-server è semplice ed efficiente e offre un controllo centralizzato su risorse e servizi. Tuttavia, può essere soggetta a single point of failure e sovraccarico del server in caso di un numero elevato di client.

3. L'ARCHITETTURA DI RETE P2P CENTRALIZZATO,

In un'architettura P2P centralizzato, esiste un nodo centrale (spesso chiamato server centrale) che agisce come punto di coordinamento e controllo per tutti gli altri nodi (peer) nella rete peer-to-peer (P2P). Questo nodo centrale facilita la scoperta, l'indirizzamento e la

gestione delle connessioni tra i peer. Gli altri peer si connettono al nodo centrale per trovare altri peer e scambiare dati o risorse. Questo modello presenta un singolo punto di controllo, il che semplifica la gestione e la scalabilità della rete. Tuttavia, il nodo centrale rappresenta anche un potenziale single point of failure e può creare un collo di bottiglia nelle comunicazioni.

4. L'ARCHITETTURA DI RETE P2P DECENTRALIZZATO

In un'architettura P2P decentralizzato, non esiste un nodo centrale che controlla o coordina la rete. Invece, ogni peer si comporta sia da client che da server, contribuendo alla rete e partecipando all'elaborazione, alla memorizzazione o al trasferimento di dati. I peer possono comunicare direttamente tra loro senza dover passare attraverso un'autorità centrale. Questo modello offre una maggiore resilienza e scalabilità rispetto all'approccio centralizzato, poiché non c'è un singolo punto di controllo o vulnerabilità. Tuttavia, può essere più complesso da gestire e richiedere una migliore gestione delle risorse e delle connessioni tra i peer.

5. L'ARCHITETTURA DI RETE P2P IBRIDO

L'architettura P2P ibrido combina elementi di entrambi gli approcci centralizzati e decentralizzati. Può prevedere un mix di nodi centrali e peer, o una gerarchia di peer che collaborano tra loro. Questo modello cerca di bilanciare i vantaggi e le limitazioni delle due architetture, offrendo un maggiore controllo e scalabilità rispetto all'approccio centralizzato, ma mantenendo una certa struttura organizzativa. L'architettura P2P ibrido offre una flessibilità che consente di adattare la rete alle esigenze specifiche dell'applicazione o dell'ambiente. Può essere particolarmente utile quando si desidera combinare i vantaggi della decentralizzazione con la necessità di un certo grado di controllo o coordinamento.

6. DEFINISCI E COMMENTA, "CON PAROLE TUE", LE PRORPIETA'

FONDAMENTALI DEL PROTOCOLLO TCP (Transmission Control Protocol)

Il protocollo TCP (Transmission Control Protocol) è un protocollo di comunicazione fondamentale utilizzato per trasferire dati in modo affidabile e ordinato attraverso una rete di computer, come Internet. Ecco una descrizione delle proprietà fondamentali del protocollo TCP e un commento su ciascuna di esse: -Affidabilità: Una delle proprietà più importanti del TCP è la sua affidabilità nel garantire che i dati inviati da un mittente vengano consegnati correttamente e nell'ordine desiderato al destinatario. TCP utilizza meccanismi come il rilevamento e la ritrasmissione dei pacchetti persi, il controllo di flusso e i numeri di sequenza per garantire che i dati vengano consegnati senza errori.Commento: La affidabilità del TCP è essenziale per molte applicazioni, come la trasmissione di file, la navigazione web e le comunicazioni in tempo reale, dove è

piccole (segmenti), del controllo del flusso per regolare la velocità di trasmissione e del controllo degli errori per garantire la consegna affidabile dei dati. Include protocolli come TCP (Transmission Control Protocol) e UDP (User Datagram Protocol). 5.Livello Applicativo: Questo è il livello più alto della pila e si occupa delle applicazioni e dei servizi utilizzati dagli utenti finali per comunicare e accedere alle risorse su una rete. Fornisce un'interfaccia per gli utenti per accedere a servizi come la navigazione web, la posta elettronica, il trasferimento di file e altro ancora. Include una vasta gamma di protocolli come HTTP, SMTP, FTP e DNS per supportare una varietà di servizi applicativi su Internet.

8. STREAM SOCKET;

Un socket di tipo stream, anche noto come socket di tipo SOCK_STREAM, è un tipo di socket che fornisce una connessione affidabile e bidirezionale tra due applicazioni su una rete. Le proprietà principali di un socket di tipo stream includono: Affidabilità: I dati inviati attraverso un socket di tipo stream sono garantiti di essere consegnati nell'ordine corretto e senza perdite. Orientato alla connessione: Prima di scambiare dati, le applicazioni devono stabilire una connessione tra i due socket di tipo stream. Flusso di dati continuo: I dati vengono trasmessi in un flusso continuo, senza limiti di dimensione per i messaggi. Protocollo TCP: Tipicamente, i socket di tipo stream utilizzano il protocollo TCP per garantire l'affidabilità e la sequenzialità dei dati.

9. DATAGRAM SOCKET

Un socket di tipo datagram, anche noto come socket di tipo SOCK_DGRAM, è un tipo di socket che fornisce una connessione non affidabile e senza connessione per lo scambio di datagrammi su una rete. Le proprietà principali di un socket di tipo datagram includono: Connessione non affidabile: I datagrammi inviati attraverso un socket di tipo datagram non sono garantiti di essere consegnati e possono essere persi o ricevuti fuori sequenza. Senza connessione: Non è richiesta una connessione preesistente tra mittente e destinatario prima di inviare i dati. Dimensione limitata del messaggio: I dati vengono inviati in pacchetti discreti di dimensione limitata, noti come datagrammi. Protocollo UDP: I socket di tipo datagram utilizzano il protocollo UDP per la trasmissione dei dati, il quale offre una comunicazione più leggera e veloce rispetto a TCP ma senza garantire l'affidabilità o l'ordine dei dati.

10.TRASMISSIONE UNICAST;

La trasmissione unicast è un tipo di trasmissione di dati su una rete in cui un singolo mittente invia dati a un singolo destinatario. In una trasmissione unicast, i dati viaggiano direttamente dal mittente al destinatario, creando una connessione punto a punto tra i due dispositivi. -Comunicazione Uno-a-Uno: Nella trasmissione unicast, c'è una relazione diretta e individuale tra il mittente e il destinatario. Questo tipo di comunicazione è adatto quando è necessario trasferire dati specifici da un punto a un altro senza coinvolgere altri dispositivi. Indirizzamento: Ogni dispositivo sulla rete ha un indirizzo unico che identifica in modo univoco il destinatario dei dati. Il mittente utilizza l'indirizzo del destinatario per inviare i dati direttamente al dispositivo desiderato. -Affidabilità: Poiché la trasmissione unicast coinvolge solo un mittente e un destinatario, è più facile garantire l'affidabilità della comunicazione. I protocolli di trasporto come TCP possono essere utilizzati per garantire la consegna affidabile dei dati e il controllo degli errori. -Banda Larga: La trasmissione unicast richiede una larghezza di banda dedicata tra il mittente e il destinatario. Anche se questa modalità di trasmissione è efficiente per comunicazioni punto a punto, può diventare onerosa se il numero di destinatari aumenta. La trasmissione unicast è ampiamente utilizzata in varie applicazioni di rete, come la navigazione web, l'invio di email, il trasferimento di file e la comunicazione punto a punto in ambienti locali o su Internet. È uno dei metodi più comuni e fondamentali di trasferimento di dati su reti di computer.

11.TRASMISSIONE MULTICAST

La trasmissione multicast è un tipo di trasmissione di dati su una rete in cui un singolo mittente invia dati a più destinatari contemporaneamente. In una trasmissione multicast, i dati vengono inviati a un gruppo di destinatari che hanno espresso interesse a ricevere tali dati. Questa forma di comunicazione è utilizzata per distribuire lo stesso flusso di dati a più destinazioni contemporaneamente, riducendo così il carico sulla rete e migliorando l'efficienza complessiva della trasmissione. -Comunicazione Uno-a-Molti: Nella trasmissione multicast, un singolo mittente invia dati a un gruppo di destinatari interessati. Questo permette di inviare lo stesso flusso di dati a più destinazioni simultaneamente. -Efficienza di Rete: La trasmissione multicast riduce il traffico di rete inviando i dati solo una volta e condividendoli tra più destinatari. Questo è particolarmente utile in applicazioni in cui molti utenti devono ricevere lo stesso flusso di dati, come video in streaming o conferenze web.

13. DESCRIVI AJAX (Asyncronus Java Script and XML) E ILLUSTRA E

COMMENTA, LE SUE PRINCIPALI PROPRIETA'

AJAX (Asynchronous JavaScript and XML) è una tecnologia di sviluppo web che consente agli sviluppatori di creare applicazioni web interattive e dinamiche che possono comunicare con il server in background, senza dover ricaricare completamente la pagina web. Ecco una descrizione delle principali proprietà di AJAX: -Asincronicità: Una delle caratteristiche fondamentali di AJAX è la sua capacità di eseguire operazioni di comunicazione con il server in background, in modo asincrono rispetto al normale flusso di esecuzione dello script JavaScript sulla pagina web. Ciò consente agli utenti di interagire con l'applicazione senza dover attendere il completamento delle richieste al server. -Interattività: AJAX permette agli sviluppatori di creare interfacce utente altamente interattive e reattive. Gli utenti possono eseguire azioni come inviare moduli, fare clic su pulsanti o scorrere attraverso contenuti senza dover attendere il ricaricamento completo della pagina. Ciò migliora notevolmente l'esperienza utente, riducendo i tempi di attesa e migliorando la fluidità delle interazioni. -Comunicazione asincrona: AJAX utilizza il concetto di richieste HTTP asincrone per inviare e ricevere dati dal server senza dover ricaricare l'intera pagina web. Questo avviene attraverso l'uso di oggetti JavaScript come XMLHttpRequest o metodi più moderni come Fetch API. Le richieste asincrone consentono di aggiornare dinamicamente parti specifiche della pagina web senza interrompere l'attività dell'utente. -Aggiornamenti parziali della pagina: Utilizzando AJAX, è possibile aggiornare dinamicamente parti specifiche di una pagina web senza dover ricaricare l'intera pagina. Questo permette agli sviluppatori di creare esperienze utente più fluide e reattive, riducendo al minimo la necessità di ricaricare e ridisegnare l'intera pagina. -Utilizzo di formati dati leggeri: Anche se il nome suggerisce l'uso di XML, AJAX non è limitato all'utilizzo di questo formato dati. Può invece utilizzare una varietà di formati dati leggeri come JSON (JavaScript Object Notation) per scambiare dati tra il client e il server. Questo consente di ridurre la quantità di dati scambiati e migliorare le prestazioni complessive dell'applicazione.