Livello applicativo
sabato 28 aprile 2018 19:09
Un'applicazione di rete è un software che può essere eseguito su diversi terminali e può comunicare tramite la rete.
Comunicazione tra processi
Host: dispositivo utente (laptop, smartphone etc.)
Processo: programma software in esecuzione su un host.
Comunicazione inter-processo (IPC): tecnologie software con lo scopo di consentire a diversi processi di comunicare.
Lo scopo della rete è appunto quello di consentire la comunicazione tra processi che risiedono su host diversi.
Per fare ciò sono necessari l'indirizzamento dei processi e un protocollo di scambio dati.
Lo scambio di messaggi fra processi applicativi avviene utilizzando i servizi dei livelli inferiori attraverso i SAP (Service
Access Point). Ogni processo è associato ad un SAP.
Per identificare un processo (es. browser) in esecuzione sul host sono necessari l'indirizzo del host (indirizzo ip) e
l'indirizzo del SAP del processo (numero di porta).
Indirizzo ip e numero di porta costituiscono una socket, o porta di comunicazione.
Le applicazioni possono avere requisiti diversi a seconda della loro funzione.
Alcune necessitano di completa affidabilità (file transfer etc.), altre possono tollerare perdite parziali (audio etc.).
Altre richiedono un basso ritardo (giochi, videochiamate etc.), e alcune possono aver bisogno di un minimo di velocità di
trasferimento (streaming etc.) o adattarsi alla velocità disponibile.
Servizi di trasporto
I principali servizi di trasporto sono: Servizio TCP Servizio UDP
Connection oriented: instaurazione connessione Senza connessione
prima dello scambio dati
Trasporto affidabile: senza perdita di dati Trasferimento non affidabile
Controllo di flusso: il trasmettitore regola la velocità Senza controllo sul traffico
in base al ricevitore
Controllo di congestione : per impedire di sovraccaricare la rete Senza garanzie
Non fornisce garanzie di ritardo e di bande Trasferimento "veloce"
Architetture applicative
Client Server:
I dispositivi coinvolti nella comunicazione implementano o solo il processo client o solo il processo server.
I dispositivi client e server hanno caratteristiche diverse (client eseguono richieste, server rispondono alle richieste
ricevute).
Peer-to-peer:
I dispositivi implementano sia il processo client che server.
Server: Architettura P2P (pura)
Host sempre attivo • Non ci sono server
Indirizzo IP permanente sempre connessi
Possibilità di utilizzo di macchine • Terminali (peers)
in cluster comunicano direttamente
Possono ricevere richieste da • I peers sono collegati in
Fondamenti di Internet e Reti Pagina 1
Indirizzo IP permanente sempre connessi
Possibilità di utilizzo di macchine • Terminali (peers)
in cluster comunicano direttamente
Possono ricevere richieste da • I peers sono collegati in
molti client modo intermittente e
Client: possono cambiare
Comunicano con il server indirizzo IP
Possono essere connessi in Esempio: BitTorrent
modo discontinuo
Possono cambiare indirizzo IP
Non comunicano con altri client
Possono inviare molte richieste
allo stesso server Fondamenti di Internet e Reti Pagina 2
HTTP
sabato 28 aprile 2018 19:42
Messaggi HTTP
Le pagine web sono fatte di oggetti, che possono essere file html, immagini, file audio, video,
collegamenti ad altre pagine etc.
Ogni oggetto è indirizzato da un Uniform Resource Locator (URL).
Client/Server:
Il client effettua richieste HTTP di pagine web, le riceve e le mostra all'utente finale.
Il server invia gli oggetti richiesti tramite risposte HTTP.
Nessuna memoria delle richieste viene mantenuta nei server (protocollo stateless).
HTTP si appoggia su TCP a livello di trasporto.
Il client HTTP inizia una connessione TCP verso il server
Il server HTTP accetta connessioni TCP da client HTTP
Client e Server HTTP si scambiano informazioni (pagine web e messaggi di controllo).
La connessione TCP tra client e server HTTP viene chiusa.
Modalità di connessione tra client e server
La connessione può essere:
Non persistente:
Una connessione TCP per ogni sessione richiesta-risposta: il server chiude la connessione dopo
aver inviato l'oggetto.
La procedura viene quindi ripetuta per ogni richiesta (es. ogni singolo file collegato al
documento html base)
Più connessioni TCP possono essere aperte in parallelo per minimizzare il ritardo.
Persistente:
La connessione TCP rimane aperta e può essere usate per trasferire più oggetti della stessa
pagina o più pagine.
Le richieste possono essere inviate in parallelo (pipelining)
Stima del tempo di trasferimento
Round trip time (RTT) : tempo per trasferire un messaggio "piccolo" dal client al server e ritorno.
Tempo di risposta di HTTP:
Un RTT per iniziare la connessione
Un RTT per inviare i primi byte della richiesta HTTP
e riceve i primi byte della risposta.
Tempo di trasmissione dell'oggetto
Metodi HTTP: GET HEAD POST PUT DELETE
Gli header servono per scambiare informazioni di servizio aggiuntive (è possibile inserire più linee di
header per messaggio).
HTTP da linea di comando Fondamenti di Internet e Reti Pagina 3
HTTP da linea di comando
cURL è un tool da linea di comando per la manipolazione ed il trasferimento di dati basato su URL.
Ex.: curl www.antlab.polimi.it
curl -- head www.antlab.polimi.it
Curl --trace-ascii filename.txt --trace-time www.antlab.polimi.it
Cookie: sono dei "gettoni identificativi" che consentono alle applicazioni web lato server di
archiviare e recuperare informazioni a lungo termine sul lato client.
Permettono di realizzare meccanismi di autenticazioni quali login, o memorizzare le preferenze
dell'utente o tracciarne la navigazione.
Date le implicazioni di riservatezza, l'utilizzo di cookie è disciplinato dagli ordinamenti giuridici di
numerosi paesi
Proxy HTTP
I proxy sono degli application gateway, ovvero degli instradatori di messaggi di livello applicativo.
Devono essere sia client che server, ricevendo le richieste dal client e inviandole ad un server
(mascheramento degli utenti del proxy).
Compressione deli header
Codifica di Huffman: assegno stringhe binarie a simboli più comuni.
Indexing: assegno un indice a header line più comuni ed invio nei messaggi solo l'indice.
Codifica differenziale: l'header di richieste successive riporta per esteso solo la differenza con
l'header delle richieste precedenti.
Multiplazione
Lo scambio di frame tra client e server è organizzato in stream (sequenza logica di frame).
Ogni stream ha una priorità (impostata dal browser).
La connessione è occupata da frame di stream diversi, nessun oggetto lento blocca la connessione.
Il server può inviare informazioni utili al client senza che esso ne faccia esplicita richiesta (la
funzionalità è richiesta dal client).
Rendere sicuro HTTP: HTTPs
Secure Socket Layer (SSL) e Transport Layer Security (TLS) aggiungono confidenzialità, integrità ed
autenticazione alle connessioni TCP.
Connessioni SSL/TLS
Handshake:
fase in cui server (e client) si autenticano e si accordano
sul tipo di cifratura da
applicare ai dati
Trasferimento dati
I dati applicativi sono suddivisi in record (PDU)
ciascuno dei quali è cifrato con l'algoritmo scelto nella
fase precedente
Chiusura connessione
un messaggio speciale è usato per chiudere la
connessione in modo sicuro
Fondamenti di Internet e Reti Pagina 4
Posta elettronica
sabato 28 aprile 2018 21:34
User Agent: client d'utente ( Outlook. Thunderbird, etc.)
Mail Server
Simple Mail Transfer Protocol: per trasferire email da client d'utente fino al mail server
destinatario.
Protocolli di accesso ai mail server: per scaricare email dal proprio server (POP3, IMAP)
I mail server contengono per ogni client controllato:
Una coda di email in ingresso (mailbox)
Una coda di email in uscita
I mail server
Ricevono le email in uscita da tutti i client d'utente che controllano
Ricevono da altri mail server tutte le mail destinate ai client d'utente controllati
I mail server "parlano"
SMTP con altri mail server e con i client d'utente in uplink
POP3/IMAPP con i client d'utente in downlink
SMTP
È un protocollo applicativo client-server.
L'interazione tra client SMTP e server SMTP è di tipo comando/risposta.
Comandi e risposte sono testuali.
Richiede che anche il corpo dei messaggi sia ASCII
Formato delle email
Il formato dei messaggi inviati (tutto ciò che segue il comando SMTP DATA è specificato
Header:
To:
From:
Subject:
Body: Contenuto dell'email (ASCII readable)
Multipurpose Internet Mail Extensions (MIME): estende il formato dei messaggi per supportare
contenuti multimediali, definisce header per specificare il tipo di contenuto ed il tipo di codifica.
MIME consente anche il trasferimento di più oggetti come parti di uno stesso messaggio.
Protocolli di accesso al mailbox
Diversi protocolli sono stati sviluppati per il colloquio tra user agent e server in fase di lettura dei
messaggi presenti nel mailbox.
POP3: download dei messaggi
IMAP: download dei messaggi, gestione della mailbox sul mail server
HTTP Fondamenti di Internet e Reti Pagina 5
Fondamenti di Internet e Reti Pagina 6
Risoluzione di nomi simbolici
sabato 28 aprile 2018 22:21
Domain Name System (DNS)
Gli indirizzi IP sono poco adatti ad essere utilizzati dagli applicativi, e risulta più comodo utilizzare
degli indirizzi simbolici (es. www.google.com è meglio di 74.125.206.99).
Occorre quindi una mappatura fra indirizzi IP (utilizzati dalle macchine) e nomi simbolici (usati dagli
esseri umani).
Si utilizzano:
Database distribuito costituito da molti name servers con organizzazione gerarchica
Protcollo applicativo basato su UDP tra name servers e host per risolvere nomi simbolici.
Servizi agguintivi:
Host aliasing
Mail server aliasing
Load distribution
Ogni livello ha una diversa "profondità" di informazione
Ex: per trovare l'ip di www.google.com :
– Root name server sanno come “trovare” i name server di che gestiscono i domini .com \
– I name server .com sanno come trovare i name server che gestiscono il dominio google.com
– I name server google.com sanno risolvere il nome simbolico www.google.com
Altri tipi di NS
Local Name Servers
Ogni ISP (Internet Service Provider) ha un NS locale
Direttamente collegati agli host
Tutte le volte che un host deve risolvere un indirizzo simbolico contatta il LNS
Il LNS (eventualmente) contatta i Root Name Server nella gerarchia
Fondamenti di Internet e Reti Pagina 7
Il LNS (eventualmente) contatta i Root Name Server nella gerarchia
Authoritative Name Servers
NS "responsabile" di un particolare hostname
Esempi di risoluzione di un nome simbolico
CACHING
Un server, dopo aver reperito un'informazione si cui non è authoritative può memorizzarla
temporaneamente.
All'arrivo di una nuova richiesta può fornire l'informazione senza risalire sino al server authoritative.
Il TimeToLive (TTL) è deciso dal server authoritative ed è un indice di quanto stabile nel tempo è
l'informazione relativa.
I server non-authoritative utilizzano il TTL per decidere un time-out.
I TLD server (Top Level Domain Server) sono generalmente memorizzati nei LNS.
Comandi DNS
nslookup: consente di inviare richieste DNS a server specificati
Fondamenti di Internet e Reti Pagina 8
dig: simile a nslookup, fornisce più dettagli sui messaggi del protocollo DNS.
Content Distribution Networks (CDNs)
Per distribuire in maniera efficiente moltissimi contenuti contemporaneamente a moltissimi utenti,
lontanissimi gli uni dagli altri, si utilizza una rete di server geograficamente distribuita che "ospita"
copie dei contenuti richiesti.
La rete di server (CDN) può essere proprietà di chi offre il servizio (Netflix, Facebook etc.) o di terze
parti (Akamai, Limelight etc.) Fondamenti di Internet e Reti Pagina 9
Peer to Peer
sabato 28 aprile 2018 22:52
Funzionamento:
Gli utenti utilizzano il software P2P sul proprio pc, collegandosi in modo intermittente a
internet prendendo indirizzi IP diversi ogni volta.
Se un utente cerca un file l'applicazione trova altri utenti che lo hanno, quindi l'utente
sceglie da chi scaricarlo.
Il file è scaricato usando un protocollo (come HTTP)
Altri utenti potranno (in seguito o in contemporanea) scaricare i file dall'utente.
Directory centralizzata
Meccanismo di Napster:
Quando i peer si connettono informano il server centrale (indirizzo IP, file condivisi).
Il peer interroga il server centrale per uno specifico file
Il file viene scaricato
Problemi: se il server si rompe il sistema si blocca; chi gestisce il server può essere
accusato di infrangere le regole sul copyright.
Completamente Distribuita
Meccanismo di Nugtella:
Nessun server centrale, protocollo di pubblico dominio.
I peer si attivano e si collegano ad un numero di altri vicini.
La ricerca dei vicini è distribuita.
Basato su una rete di overlay.
Ex. BitTorrent
I file sono divisi in chunk di 256kbyte
Fondamenti di Internet e Reti Pagina 10
Meccanismo di richiesta di chunk
Rarest First: il peer entrante, tra tutti i chunk mancanti, scarica prima i chunk più rari nelle liste
di chunk ricevute da tutti i neighboring peer
Meccanismo di invio di chunk
Il peer entrante risponde a richieste che provengono dagli n peer che inviano chunk al massimo
rate.
Tutti gli altri peer sono strozzati (chocked)I migliori n peer sono ricalcolati periodicamente.
Ogni tot secondi un nuovo peer può essere scelto casualmente per l'invio di chunk (Optimistic
unchoking) Fondamenti di Internet e Reti Pagina 11
Livello trasporto
domenica 29 aprile 2018 16:17
Il livello trasporto ha il compito di instaurare un collegamento logico tra le applicazioni residenti su
host remoti.
Rende trasparente il trasporto fisico (attraverso la rete= dei messaggi alle applicazioni.
Il livello di trasporto è presente solo negli end system (host), consentendo il collegamento logico tra
processi applicativi.
Servizio di multiplazione
Più applicazioni possono essere attive su un end system.
Il livello trasporto svolge funzioni di multiplexing/demultiplexing per applicazioni.
Ciascun collegamento logico tra applicazioni è indirizzato dal livello trasporto.
Le porte
In internet le funzioni di multiplexing/demultiplexing vengono gestite mediante indirizzi contenuti
nelle PDU di livello trasporto, che sono lunghi 16bit e prendono il nome di porte.
16
I numeri di porta possono assumere valori compresi tra 0 e 65535 (2 -1).
I numeri noti sono assegnati ad importanti applicativi lato server (HTTP,FTP,SMTP,NDS etc.)
I numeri dinamici sono assegnati dinamicamente ai processi applicativi lato client.
I numeri registrati sono assegnati a specifiche applicazioni da chi ne faccia richiesta (tipicamente
protocolli proprietari).
Socket e multiplazione Fondamenti di Internet e Reti Pagina 12
Servizio di buffering
Quando un processo viene associato ad una porta (lato client o server) viene associato dal sistemo
operativo a due code,Nellauna d'ingresso e una d'uscita.
Servizio di trasporto
Il servizio di rete non è affidabile, può infatti capire che dei messaggi non raggiungano la
destinazione.
Il servizio trasporto fornito può essere:
Affidabile: garanzia di consegna dei messaggi nel corretto ordine
Non affidabile: solo funzionalità di multiplexing
Orientato alla connessione
Senza connessione
Nella suite IP sono definiti due tipi di trasporto:
TPC ( Transmission Control Protocol): affidabile e orientato alla connessione
UDP (User Datagram Protocol): senza connessione e non affidabile
Fondamenti di Internet e Reti Pagina 13
Protocollo UDP
domenica 29 aprile 2018 22:08
È il modo più semplice di usare le funzionalità di IP, in quanto non aggiunge nulla se non:
Indirizzamento delle applicazioni (mux/demux).
Blando controllo d'errore sull'header (senza correzione).
È infatti un protocollo datagram che non garantisce la consegna e non esercita nessun contrllo (né di
flusso né di errore).
Perché usare UDP e non TCP?
Minore latenza: non serve stabilire una connessione
Maggiore semplicità: non occorre tener traccia dello stato della connessione
poche regole da implementare
Minore overhead: header UDP più piccolo dell'header TCP
Checksum: controllo di integrità
Informazione ridondante inserita nell'header del segmento UDP per controllo d'errore, calcolato dal
trasmettitore ed inserito nell'header.
Il ricevitore ripete lo stesso calcolo sul segmento ricevuto (comprensivo di checksum).
Se il risultato è corretto accetta il segmento, altrimenti lo scarta.
Viene calcolato considerando l'header UDP, uno pseudo-header IP e i dati.
Calcolo del Checksum: lato ricevitore
L'insieme di bit è diviso ancora in blocchi da 16 bit.
Tutti i blocchi vengono sommati in aritmetica complemento a uno.
Il risultato è complementato.
Se sono tutti 0 il pacchetto è accettato, altrimenti è scartato.
Fondamenti di Internet e Reti Pagina 14
Trasporto affidabile
domenica 29 aprile 2018 22:15
Recupero d'errore
Ciascuna trama ricevuta correttamente viene riscontrata positivamente con un messaggio di
Acknowledgement o ACK.
A volte l'errore può essere segnalato da un messaggio detto Not Ack (NACK).
La mancanza di ACK o la presenza di NACK segnala la necessità di ritrasmettere.
La procedura si ripete finché la trama viene ricevuta correttamente.
Necessita di canale di ritorno e di messaggi di servizio (ACK, NACK).
N.B. anche i messaggi di
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.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
-
Fondamenti di Internet
-
Appunti completi corso Fondamenti di Internet e Reti
-
Lezioni, Fondamenti Di Telecomunicazioni
-
Fondamenti cpp