Lezione 0021: Differenza tra client e server
Con il termine server si indicano tutti quei dispositivi terminali o programmi che assumono il ruolo di fornitore della risorsa o di un servizio all'interno di un insieme di servizi. Con il termine client si indica una componente che accede ai servizi o alle risorse di un'altra componente, detta server. Il client è la parte dell'applicazione distribuita, ad esempio: browser, client di posta, etc... Il server è la parte che fornisce il servizio ad esempio: un server web, un mail server, etc.
Cosa si intende per protocollo?
Un protocollo definisce il formato e l’ordine dei messaggi scambiati fra due o più entità in comunicazione. È un insieme di regole formalmente descritte che definiscono le modalità di questa comunicazione tra entità; le regole sono definite mediante specifici protocolli, dalle tipologie più varie e ciascuno con precisi compiti/finalità, a seconda delle entità interessate e del mezzo di comunicazione. Se le due entità sono remote, si parla di protocollo di rete. Esempi: TCP, IP, HTTP, FTP, PPP.
Lezione 0031: Trasmissione di più flussi in una rete a commutazione di circuito
Per consentire di trasmettere più flussi in un rete di commutazione a circuito, le risorse (ad es. l’ampiezza di banda) vengono suddivise in “pezzi” o “slot”. Ad ognuno di questi slot viene assegnato un circuito con il risultato che sullo stesso link sono presenti contemporaneamente diversi circuiti (multiplexing).
- FDM (frequency-division multiplexing): nel quale lo spettro di frequenza del link viene suddiviso in slot ed ognuno di questi viene assegnato ad un circuito. Ad esempio, per la rete telefonica un cavo in rame può raggiungere i 64Khz mentre una conversazione telefonica necessita i 4Khz. Ne consegue che su un singolo cavo in rame possono “viaggiare” fino a 16 (slot) conversazioni monodirezionali.
- TDM (time-division multiplexing): nel quale il tempo viene suddiviso in frame e ogni frame in N slot (si ipotizza che il link possa supportare al massimo N circuiti per unità di tempo). Ad ogni circuito viene assegnato uno slot, sempre lo stesso in ogni frame.
Principali differenze tra commutazione di circuito e commutazione di pacchetto
Nella commutazione a circuito, per ogni comunicazione viene riservato un circuito, per tutta la durata della conversazione stessa, anche nei momenti di “silenzio”. Questo garantisce velocità di connessione e tempi certi. Per questo motivo, questo tipo di connessione viene utilizzato per le comunicazioni vocali e video dove la sincronizzazione temporale è essenziale. Tutto questo però a discapito dell’efficienza nell’utilizzo delle risorse della rete che, come detto, vengono riservate in maniera esclusiva.
La commutazione a pacchetto invece è più efficiente perché il messaggio viene suddiviso in pacchetti e questi viaggiano sui link alla velocità massima consentita dagli stessi e solo a destinazione il messaggio viene ricomposto e interpretato. Questa efficienza ha come controindicazione che si possono verificare congestione e perdita dei pacchetti e quindi sono necessari protocolli per il trasferimento affidabili e che supportino il controllo della congestione ed eventualmente la ritrasmissione.
Lezione 0041: Perché si possono verificare perdite in una rete?
Il motivo principale per la perdita di pacchetti in una rete è la dimensione finita del buffer dei router; quando il pacchetto trova quindi la coda piena viene scartato (e va perso). Il pacchetto perso può anche venire ritrasmesso dal nodo precedente o dal terminale che lo ha generato ma se il ritardo è elevato, viene scartato definitivamente e non sarà più ritrasmesso. Solo in caso di protocolli che prevedono la ritrasmissione si può ovviare a questo problema.
Le perdite in un nodo avvengono quando questo non è correttamente dimensionato per il lavoro che deve svolgere, in particolare quando il tasso di arrivo dei pacchetti sul collegamento eccede la capacità del collegamento di evaderli e il buffer in uscita è pieno, in questo caso il pacchetto deve essere scartato.
Perché si possono verificare ritardi in una rete?
Le quattro cause principali dei ritardi in una rete sono:
- Ritardo di elaborazione del nodo: causato dal controllo sugli errori e dalla determinazione del canale di uscita.
- Ritardo di accodamento: causato dall’attesa di trasmissione e dalla congestione del router.
- Ritardo di trasmissione: se R è la frequenza di trasmissione espressa in bps e L è la lunghezza del pacchetto, è pari a L/R.
- Ritardo di propagazione: se d è la lunghezza del collegamento fisico e s è la velocità di propagazione del collegamento (dell’ordine di 108 m/s), è pari a d/s.
Componenti del ritardo di nodo
Il ritardo di nodo è costituito dalla somma di questi componenti dproc + dqueue + dtrans + dprop dove:
- dproc è il ritardo di elaborazione (processing delay) in genere di pochi microsecondi.
- dqueue è il ritardo di accodamento (queuing delay) che dipende dalla congestione.
- dtrans è il ritardo di trasmissione (transmission delay) pari a L/R e di valore significativo su collegamenti a bassa velocità.
- dprop è il ritardo di propagazione (propagation delay) da pochi microsecondi a centinaia di millisecondi.
Lezione 0051: Architetture del livello applicazione
Le architetture del livello applicazione sono:
- Client-Server: caratterizzata dalla presenza di server e client. I primi sono sempre attivi in attesa di essere contattati, hanno in genere IP fisso, e insieme ad altri server possono costituire un server virtuale. I secondi possono contattare il server in qualunque momento per richiederne le risorse offerte, hanno normalmente IP dinamico e non è detto comunichino direttamente con altri client.
- Peer-to-Peer (P2P): caratterizzata dall’assenza di un server sempre attivo. Coppie arbitrarie di host (client) comunicano direttamente tra loro. Possono non essere sempre attivi e cambiare IP.
- Architetture ibride (Client-Server e P2P): caratterizzate dalla presenza di un server centralizzato che offre normalmente servizi di ricerca o di presenze per i client che dopo l’iniziale accesso al server poi comunicano tra loro direttamente, in modalità P2P pura.
Livelli della pila protocollare di Internet
I livelli della pila protocollare Internet sono, dall’alto verso il basso:
- Applicazione: è da supporto alle applicazioni di rete (es. http, FTP, SMTP).
- Trasporto: è da supporto al trasferimento dei messaggi tra il modulo client e server di una applicazione di rete (es. TCP, UDP).
- Rete: è da supporto al trasferimento dei datagrammi dalla sorgente al destinatario (es. IP, protocolli di instradamento).
- Link: è da supporto all’instradamento dei datagrammi attraverso una serie di commutatori di pacchetto (es. PPP, Ethernet).
- Fisico: è da supporto al trasferimento dei singoli bit.
Lezione 0061: Differenze tra indirizzo IP e numero di porta
Un indirizzo IP è un'etichetta numerica che identifica univocamente un dispositivo detto host collegato a una rete informatica che utilizza l'Internet Protocol come protocollo di rete.
Le porte sono lo strumento utilizzato per realizzare la multiplazione delle connessioni a livello di trasporto, ovvero per permettere ad un calcolatore di effettuare più connessioni contemporanee verso altri calcolatori, facendo in modo che i dati contenuti nei pacchetti in arrivo vengano indirizzati al processo che li sta aspettando.
L’indirizzo IP è un indirizzo di 32 bit univoco all’interno della rete che identifica l’host, il numero di porta è un numero che è associato ad un determinato socket in esecuzione in quel momento sull’host con quell’indirizzo IP.
Cos'è un socket?
Un socket è l'interfaccia standard tra i programmi applicativi e i protocolli TCP. Il socket è come una porta di comunicazione che permette di utilizzare il protocollo TCP/IP. È un metodo per la comunicazione tra un programma client e un programma server su una rete, può essere definito come un punto terminale di una connessione a doppio senso tra due programmi che comunicano e scambiano dati sulla rete. I protocolli coinvolti nell’implementazione dei Socket sono: TCP (Transfer Control Protocol) e UDP (User Datagram Protocol).
Cosa definisce un protocollo a livello di applicazione?
Un protocollo a livello applicazione definisce:
- Regole per determinare quando e come un processo invia e risponde ai messaggi.
- Semantica dei campi, ovvero significato delle informazioni nei campi.
- Sintassi dei tipi di messaggio: quali sono i campi nel messaggio e come sono descritti.
- Tipi di messaggi scambiati, ad esempio messaggi di richiesta e di risposta.
Lezione 0071: Differenza tra connessioni persistenti e non persistenti in HTTP
In una connessione persistente: il server invia più oggetti su una singola connessione TCP tra client e server. In questo modo non occorre instaurare diverse connessioni per diversi oggetti risparmiando il tempo di invio di pacchetti.
In una connessione non persistente: supponiamo che un server debba inviare X oggetti al client, questo vuol dire che il server-client dovrà instaurare X diverse connessioni, ciò comporterà una perdita di tempo per lo scambio di messaggi. Ogni oggetto viene, quindi, trasmesso su una connessione TCP distinta.
Cos'è HTTP?
L’Hyper Text Transfer Protocol (HTTP) è un protocollo di comunicazione generalmente utilizzato per il trasferimento delle pagine web su Internet. Esso viene ampiamente utilizzato durante la navigazione in rete attraverso i più comuni browser (Internet Explorer, Firefox, Safari e simili), come si può notare osservando la prima parte della barra dell’indirizzo dove viene riportato, prima del percorso vero e proprio, o nei browser più recenti sotto inteso. I dati che passano tramite HTTP non sono crittati e quindi facilmente intercettabili e leggibili da parte di chiunque, a differenza di quanto avviene con la sua variante più sicura denominata HTTPS. La porta standard utilizzata dal protocollo HTTP è la 80.
Lezione 0081: Metodi supportati da HTTP/1.0
I metodi supportati dalla versione 1.0 del protocollo HTTP sono:
- GET: richiesta di un oggetto.
- POST: invio di un oggetto (viene usato nelle form per l’input dell’utente e l’oggetto arriva nel body).
- HEAD: chiede al server di escludere l’oggetto richiesto dalla risposta.
Formato generale di un messaggio di richiesta HTTP
Lo schema di un messaggio di richiesta HTTP è il seguente:
METHOD (sp) URL (sp) VERSION (cr)(lf) [request line] HEADER FIELD NAME VALUE (cr)(lf) [HEADER]… HEADER FIELD NAME VALUE (cr)(lf) [HEADER](cr)(lf) ENTITY BODY [BODY]
In dettaglio: Nella request line ci sono il Method del messaggio (es. GET), l’oggetto (es. /index.html), la versione del protocollo (es. HTTP/1.1). Nell’header ci sono l’host su cui risiede l’oggetto, il browser del client e vari altri parametri tra cui l’opzione Connection che indica se la connessione è persistente o non persistente.
A cosa servono i codici di stato di una risposta HTTP?
Sono codici di risposta inviati dal Server al Client che servono per identificare lo stato della richiesta e comunicarla all’utente. Queste risposte sono chiamate codici di stato HTTP e sono rappresentate con tre cifre a loro volta raggruppate in classi le quali sono rappresentate dalla prima cifra del codice. Es:
- 200 = OK. La richiesta ha avuto successo; l’oggetto richiesto viene inviato nella risposta.
- 400 = Bad Request. Il messaggio di richiesta non è stato compreso dal server.
- 404 = Not Found. Il documento (file) richiesto non si trova su questo server.
- 505 = HTTP Version Not Supported. Il server non ha la versione di protocollo HTTP.
Lezione 0091: Utilizzo di un proxy web
Il proxy web è il server/host che implementa il caching; in questo modo si riducono i tempi di risposta alle richieste dei client e il traffico sul collegamento di accesso a Internet. Un server proxy è un server che funge da intermediario per le richieste da parte dei client alla ricerca di risorse su altri server, disaccoppiando l'accesso al web dal browser. Un client si connette al server proxy, richiedendo qualche servizio (ad esempio un file, una pagina web o qualsiasi altra risorsa disponibile su un altro server), e quest'ultimo valuta ed esegue la richiesta in modo da semplificare e gestire la sua complessità.
A cosa servono i cookie web?
I cookie contengono alcuni dati della sessione utente. Sono utilizzati dai siti, ad esempio quelli di commercio elettronico, per creare un profilo degli utenti e indirizzare meglio le offerte. Sono molto utilizzati dalle agenzie pubblicitarie.
Esempio:
- Susan accede sempre a Internet dallo stesso PC.
- Visita per la prima volta un particolare sito di commercio elettronico (eBay).
- Quando la richiesta HTTP iniziale giunge al sito, il sito crea un identificativo unico (ID) e una entry nel database per ID.
Funzionamento dei cookie web
Il client invia una richiesta. Il server, ricevuta questa richiesta crea in un database, un ID corrispondente all'utente che ha fatto la richiesta. Risponde quindi al client con il messaggio di risposta più una istruzione di Set-Cookie con l’ID dell’utente. Questo cookie viene salvato sul client dell’utente e da quel momento in poi sarà sempre aggiunto ai messaggi di richiesta.
Metodo HTTP GET condizionale
Il metodo GET condizionale, consente di non scaricare un oggetto se la cache ha una versione aggiornata dell’oggetto. Si basa sulla condizione If-modified-since: <data>. Se l’oggetto non è stato modificato dopo la data indicata, il server risponderà con un 304 Not modified. Se invece l’oggetto è stato modificato, risponderà con un 200 OK e con l’oggetto richiesto.
Lezione 0101: Query DNS iterativa
Nella query iterativa il local server DNS fa da proxy per le richieste avute dal client e chiede ai Root DNS, poi ai DNS TLD e infine ai DNS di competenza e poi risponde al client.
Query DNS ricorsiva
Nella query DNS ricorsiva il compito di tradurre il nome viene dato al server contattato. In sostanza il local server DNS chiede al Root DNS che chiede al DNS TLD che chiede al DNS di competenza e la risposta risale la catena fino ad arrivare al client.
Principali funzionalità e caratteristiche del DNS
Il servizio DNS serve ad assegnare all’indirizzo IP di una risorsa presente sulla rete un nome simbolico e più facilmente ricercabile. È costituito da un database distribuito ed è basato sul modello client/server. Tre sono le componenti principali:
- Resource Record: o spazio dei nomi.
- Nameserver: ovvero l’application server che mantiene i dati.
- Resolver: ovvero il client che interroga il nameserver.
L’accesso ai dati è veloce perché vengono usati meccanismi di caching. È una struttura distribuita e gerarchica. Alla cima della gerarchia ci sono i Root Domain Server che hanno l’informazione di quali sono i TLD Domain Server. Questi ultimi gestiscono i domini .com, .it, .edu, ecc. I TLD hanno l’informazione di quali sono i DNS di competenza di tutti i domini di secondo livello, es. amazon.com o google.com e infine ci sono gli authoritative domain server dei singoli domini, ovvero quei name server che hanno le informazioni dei nomi simbolici degli host del dominio specifico, es. www.amazon.com oppure www.google.com.
Lezione 0111: Come funziona il file sharing in una rete P2P?
In una rete P2P degli host “arbitrari” (peer) comunicano direttamente tra loro e non ci devono essere server sempre attivi. Inoltre, i peer sono connessi in maniera “intermittente” e possono avere indirizzi IP dinamici. In questo modo, i peer che richiedono un determinato file non scaricano direttamente il file dal server principale ma anche dai peer che hanno già scaricato il file, in questo modo ci sono diverse sorgenti da cui poter scaricare le diverse parti. Questo permette di diminuire il tempo di scaricamento di un file.
Come funziona e a cosa serve la cache DNS?
Come sappiamo il servizio DNS è gerarchico. Quando i local domain name server imparano questa mappatura, la mettono in cache. Mettono in cache anche la risoluzione degli host che sono stati oggetto di query da parte dei client. Le informazioni nella cache però vengono invalidate (si dice che scadono) dopo un certo periodo di tempo. In genere nella cache vengono memorizzati gli indirizzi dei TLD server e quindi i Root DNS non vengono interrogati spesso.
Lezione 0121: Interazione client/server dei socket con TCP
Il client contatta il server per instaurare la comunicazione, in questo caso il server deve avere il processo in esecuzione e creare il socket che deve accogliere il tentativo comunicazione. Nel frattempo, il cliente crea il socket locale specificando l’indirizzo IP e il numero della porta del processo server e stabilisce la connessione con il server.
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.
-
Paniere con risposte chiuse - Reti di telecomunicazioni (2021/2022)
-
Reti di telecomunicazioni - Paniere compilato
-
Paniere completo di Reti di telecomunicazioni (2025) - Risposte multiple e aperte
-
Paniere con risposte chiuse Extra - Reti di telecomunicazioni (2022/2023)