2. Il livello applicazione Flashcards
Quali sono le architetture delle applicazioni di rete?
Le architetture delle applicazioni di rete sono: client-server, P2P, architetture ibride(client-server e P2P) e cloud computing
Spiega in maniera generale l’architettura client-server.
Nell’architettura client-server, c’è il server, che è un host sempre attivo con un indirizzo permanente. Il client comunica con il server, può avere un indirizzo dinamico e non comunica direttamente con altri client.
Spiega in maniera generale l’architettura Peer to Peer(P2P).
In questo caso non c’è un server sempre attivo. Coppie arbitrarie di host(peer) comunicano direttamente tra loro.
Fai un esempio di un’architettura ibrida e spiega in poche parole cosa fa.
Ad esempio skype utilizza un’architettura ibrida, ovvero ha un server centralizzato che ricerca gli indirizzi delle persone che vogliono chiamarsi e poi la connessione client-client è diretta(non attraverso il server).
Spiega in maniera generale che cos’è il cloud computing.
Il cloud computing è un insieme di tecnologie che permette di memorizzare, archiviare e/o elaborare dati tramite l’utilizzo di risorse distribuite e virtualizzate in rete. I dati sono memorizzati in server farm.
Che cos’è un processo? Spiega come si differenzia tra client e server.
Un processo è un programma in esecuzione su un host. All’interno dello stesso host possono esserci più processi, che comunicano tra di loro utilizzando schemi interprocesso(definiti dal SO). Processi su host different comunicano tramite lo scambio di messaggi. Il processo client è quello che dà inizio alla comunicazione, invece quello server attende di essere contattato.
Che cos’è una socket e che cosa serve?
Un processo invia/riceve messaggi a/da la sua socket. Una socket è analoga a una porta, dunque un processo che vuole inviare un messaggio lo farà uscire dalla propria porta per poi arrivare alla porta del processo di destinazione.
Come fa il mittente a identificare il processo destinatario al quale mandare un messaggio?
Ogni host ha un indirizzo IP univoco di 32 bit, ma non è sufficiente conoscere l’indirizzo IP del host destinatario, perché sullo stesso host possono essere in esecuzione molti processi, quindi per inviare un messaggio ci serve l’indirizzo IP dell’ host destinatario e il numero di porta del processo.
Quali sono i requisiti del servizio di trasporto delle applicazioni?
Un’ applicazione può richiedere diversi requisiti del servizio di trasporto dipendentemente da cosa serve. La perdita di dati(certe applicazioni tollerano qualche perdita, altre richiedono un trasferimento dati affidabile al 100%), throughput, temporizzazione, sicurezza.
Quali sono i protocolli di trasporto Internet e quali sono le loro caratteristiche generali?
I due protocolli di trasporto Internet più importanti sono TCP(Transport Control Protocol) e UDP(User Datagram Protocol). TCP offre un trasporto affidabile, controllo di flusso, controllo della congestione, mentre UDP non offre un trasporto affidabile e quindi la mancanza di controllo e affidabilità lo rende più veloce e leggero, dunque perfetto per applicazioni sensibili al tempo(ad esempio giochi online, streaming ecc.).
Che cos’è HTTP e come funziona?
HTTP(HyperText Transfer Protocol) è un protocollo a livello di applicazione del Web. Usa TCP, ovvero il client inizializza la connessione TCP(crea una socket) con il server, il server accetta la connessione TCP del client, scambio di messaggi HTTP e in fine si chiude la connessione TCP. HTTP è un protocollo senza stato, ossia il server non mantiene informazioni sulle richieste fatte dal client.
Quali sono le connessioni HTTP? Descrivi i concetti principali.
Le connessioni HTTP possono essere connessioni non persistenti(Su una connessione TCP viene trasmesso un solo oggetto) o connessioni persistenti(più oggetti possono essere trasmessi su una singola connessione TCP).
Definisci RTT(Round-Trip Time) e quanto è il tempo di risposta a una richiesta HTTP da parte di un client.
RTT(Round-Trip Time) è il tempo di propagazione di andata e ritorno tra due host(tempo impiegato da un piccolo pacchetto per andare dal client al server e ritornare al client). Il tempo di risposta è un RTT all’inizio per iniziare la connessione TCP, poi un altro RTT perché ritornino la richiesta HTTP e i primi byte della risposta e poi ancora il tempo di trasmissione del file, dunque il tempo di risposta è: 2RTT + tempo di trasmissione.
Quali sono gli svantaggi delle connessioni non persistenti? Descrivi invece le caratteristiche delle connessioni persistenti.
I svantaggi delle connessioni non persistenti sono che richiedono 2RTT per oggetto. Nelle connessioni persistenti invece il server lascia la connessione TCP aperta dopo l’invio di una risposta, dunque il client invia le richieste non appena incontra un oggetto referenziato e per questo motivo usa un solo RTT per tutti gli oggetti referenziati.
Dai una breve spiegazione dei principali commandi HTTP.
GET: richiede una risorsa senza modificarla, i dati sono passati nell’URL.
POST: invia dati al server per creare o aggiornare una risorsa
HEAD: simile a GET, ma restituisce solo le intestazioni della risposta, senza il corpo.
PUT: carica una risorsa sul server, creando o sovrascrivendo una risorsa esistente con i dati forniti.
DELETE: richiede al server di eliminare una risorsa specificata.
Esiste anche il GET condizionale che è strettamente collegato al cache web, ovvero l’obiettivo è di non inviare un oggetto se la cache ha una copia aggiornata dell’oggetto.
Quali sono i principali codici di stato della risposta HTTP e in breve cosa significano.
200(OK): la richiesta ha avuto successo.
301(Moved Permanently): L’oggetto richiesto è stato trasferito.
400(Bad Request): Il messaggio di richiesta non è stato compreso dal server.
404(Not Found): Il documento richiesto non si trova su questo server.
505(HTTP version non supported): il server non supporta la versione richiesta del protocollo HTTP.
Che cosa sono i cookie? A che cosa servono e come funzionano?
I cookie sono formati da quattro componenti:
- una riga di intestazione nel messaggio di risposta HTTP, dove il server torna al client l’identificativo che userà le prossime volte che manderà una richiesta allo stesso server
- una riga di intestazione nel messaggio di richiesta HTTP, ovvero l’identificativo dato dal server la prima volta
- un file cookie mantenuto sul sistema terminale dell’utente e gestito dal browser, che manda l’identificativo corretto in base al sito che l’utente sta visitando
- un database sul sito dove vengono salvati gli identificativi dei cookie.
I cookie possono contenere autorizzazioni, carte per acquisti, stato della sessione. Servono anche ai siti per imparare mole informazioni sugli utenti.
Che cos’è un cache web(server proxy) e a che cosa serve?
L’obiettivo del cache web è di soddisfare la richiesta del client senza coinvolgere il server di origine. Il funzionamento generale è che il browser trasmette tutte le richieste HTTP alla cache, se la cache ha l’oggetto lo manda al client, altrimenti la cache richiede l’oggetto al server d’origine e poi lo inoltra al client. I vantaggi del cache web sono che riduce i tempi di risposta alle richieste del client e riduce il traffico.
Quali sono le novità portate da HTTP/2?
Le novità principali introdotte da HTTP/2 si basa su SPDY, protocollo di livello applicazione per trasportare contenuti sul web con minima latenza tramite: multiplexing di flussi, priorità delle richieste e compressione dell’ header HTTP. Inoltre introduce il framing binario, server push e TLS.
Descrivi che cos’è il framing binario e suoi vantaggi.
Tutte le comunicazioni HTTP/2 sono suddivise in messaggi e frame più piccoli, ognuno dei quali codificato in formato binario. Sia il client che il server devono utilizzare il nuovo meccanismo di codifica per capirsi, quindi un client HTTP/1.x non comprende un server HTTP/2 e viceversa.
Spiega meglio il concetto di priorità degli stream in HTTP/2.
L’ordine in cui i frame vengono interposti e consegnati sia dal client che dal server influenza le prestazioni. HTTP/2 consente a ciascun stream di avere peso e dipendenza associati. Il client può costruire e comunicare un “albero di priorità”, che esprime come preferirebbe ricevere risposte.
Quindi come si differenziano le connessioni in HTTP/2 da HTTP/1.x?
In HTTP/1.x se volevamo fare richieste multiple o avere risposte multiple in parallelo, avevamo bisogno di connessioni TCP multiple. In HTTP/2 invece ogni stream è suddiviso in frame, che possono essere intervallati e gestiti con priorità diverse, dunque si rende necessaria una sola connessione per origine.
Descrivi meglio il concetto di server push introdotto da HTTP/2.
Il server può inviare più risposte per una singola richiesta del client. Una tipica applicazione web è costituita da decine di risorse, tutte scoperte dal client esaminando il documento fornito dal server. Perché non lasciare che il server invii le risorse associate in anticipo? Per questo motivo oltre alla risposta originale, il server può inviare risorse aggiuntive senza che il client debba richiederle esplicitamente.
Che cos’è TLS(Transport Layer Security) e a che cosa serve?
TLS(Transport Layer Security) è un protocollo crittografico che permette una comunicazione sicura dalla sorgente al destinatario fornendo autenticazione, integrità dei dati e confidenzialità. Il suo funzionamento può essere suddiviso in tre parti:
- negoziazione fra le parti dell’algoritmo da utilizzare
- scambio delle chiavi e autenticazione
- cifratura simmetrica e autenticazione dei messaggi