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.
vuoi
o PayPal
tutte le volte che vuoi
LA BIBBIA DI RETI DI CALCOLATORI
Formato dei messaggi di posta elettronica
Abbiamo detto che SMTP è un protocollo che serve per scambiare messaggi di
posta elettronica. Questi messaggi rispettano lo standard RFC 5322 per il formato
dei messaggi di testo, che consiste in un numero variabile di righe di intestazione.
Ad esempio:
• To/A: indica il destinatario.
• From/Da: indica il mittente.
• Subject/Oggetto: indica l’argomento del messaggio.
Tali righe sono differenti dai comandi SMTP.
Subito sotto le righe di intestazione abbiamo una riga vuota e poi il corpo del
messaggio costituito da soli caratteri ASCII.
Il BCC (Blind Carbon Copy) è una funzione di posta elettronica che consente di
inviare un’e-mail a più destinatari senza rivelare gli indirizzi email degli altri
destinatari a ciascuno di essi. I Destinatari nei campi “A” e “Cc” possono
visualizzare gli indirizzi e-mail degli altri destinatari, quelli nel campo “BCC”
rimangono nascosti l'uno all'altro. Questa funzione è utile per preservare la
privacy dei destinatari e ridurre il rischio di condivisione senza il consenso degli
interessati. @marco.marino747
39 LA BIBBIA DI RETI DI CALCOLATORI
Protocolli di accesso alla posta
Come già anticipato in precedenza, per recuperare le mail ricevute, il destinatario
utilizza un protocollo di accesso al proprio server di posta elettronica. In
particolare, ne evidenziamo due:
• POP 3: prevede che l'utente si identifichi tramite username e password per
poter accedere alla propria posta. In quanto protocollo di livello applicativo,
non consente cifratura e quindi la trasmissione dei dati avviene in chiaro.
Per un'eventuale cifratura viene utilizzato il protocollo TLS (Transport Layer
Security).
• IMAP: è più complesso rispetto a POP 3 e prevede la creazione di cartelle
all’interno delle quali si possono aggiungere e spostare dati.
I servizi di posta elettronica moderni offrono la possibilità di accedere ai propri
server web (che utilizzano HTTP). Tuttavia, ciò non viene considerato come
protocollo di accesso.
Protocollo POP 3
Il POP 3 si articola in due fasi:
• Fase di autorizzazione: consiste in tutti quei processi che precedono l'invio
effettivo del messaggio e comprende alcuni comandi client:
- User: dichiara il nome dell’utente.
- Pass: dichiara la password dell’utente.
• Fase di transazione: consiste in tutti quei processi che servono ad inviare il
messaggio e chiudere la connessione e comprende altri comandi client:
- List: serve per visualizzare la lista dei messaggi e il loro peso in byte.
- Retr: serve per ottenere il messaggio desiderato tra quelli della lista.
- Dele: serve per cancellare il messaggio desiderato.
- Quit: serve per chiudere la comunicazione.
Entrambe le fasi comprendono delle risposte dal server:
- +OK: operazione andata a buon fine.
- -ERR: errore generico. 40
LA BIBBIA DI RETI DI CALCOLATORI
Differenze tra POP 3 ed IMAP
POP 3 IMAP
Fornisce due modalità: Permette l’organizzazione dei
1. Scarica e mantieni: la dele viene messaggi in cartelle.
omessa e le mail vengono conservate
sul server, permettendone la copia e
visualizzazione da vari client.
2. Scarica e cancella: la dele viene
utilizzata per cancellare le mail indicate,
non permettendone la lettura da altri
client.
È un protocollo senza stato tra le varie È un protocollo con stato tra le
sessioni. varie sessioni. @marco.marino747
41 LA BIBBIA DI RETI DI CALCOLATORI
ESEMPIO:
Tornando all’interazione 3 dell’esempio sull’SMTP, l’agente utente A2 utilizza il
protocollo di accesso POP 3 per visualizzare le mail ricevute in S2.
In questo esempio si è scelto di utilizzare la modalità scarica e mantieni. 42
LA BIBBIA DI RETI DI CALCOLATORI
Collocazione degli host in Internet
Gli host Internet possono essere identificati in vari modi:
• Attraverso gli hostname, quali ad esempio www.facebook.com o
www.google.com. Sono facilmente comprensibili dall’uomo ma non ci
danno le informazioni necessarie a scoprire la collocazione degli host
all’interno di Internet.
• Attraverso gli indirizzi IP, che consistono di 4 byte scritti utilizzando una
notazione decimale puntata, in cui ogni punto separa uno dei byte espressi
con numero decimale compreso tra 0 e 255. Gli indirizzi IP hanno struttura
gerarchica in quanto, leggendoli da sinistra a destra, otteniamo informazioni
sempre più specifiche sulla collocazione dell’host in Internet.
Protocollo DNS (Domain Name System)
Il DNS è utile a conciliare i due approcci sopra descritti, in quanto permette di
tradurre gli hostname nei loro indirizzi IP. DNS è in primo luogo un database
distribuito implementato in una gerarchia di DNS server, così come è anche un
protocollo a livello di applicazione che consente agli host di interrogare tale
database. DNS viene comunemente utilizzato insieme ad altri protocolli di livello
applicativo quali HTTP ed SMTP. È evidente che questo protocollo introduca un
ritardo aggiuntivo, anche se, come vedremo, nella maggior parte dei casi
l’indirizzo IP desiderato si trova nella cache di un DNS server vicino, il che aiuta a
ridurre il traffico e il ritardo del servizio. Oltre alla traduzione degli hostname in
indirizzi IP, DNS mette a disposizione altri importanti servizi:
• Host aliasing: un host dal nome complicato può avere uno o più sinonimi
(alias). L'hostname originale è chiamato hostname canonico. Generalmente
i sinonimi sono più semplici da ricordare rispetto ai nomi canonici, tuttavia il
DNS può anche essere usato per ottenere l'hostname canonico di un alias.
• Mail server aliasing: per ovvi motivi è auspicabile che un indirizzo di posta
elettronica sia facile da ricordare, per questo motivo DNS mette a
disposizione questo servizio.
• Load distribution: i siti che ospitano molto traffico distribuiscono il carico
tra vari server replicati, ognuno dei quali eseguito su un host diverso con
@marco.marino747
43 LA BIBBIA DI RETI DI CALCOLATORI
indirizzo IP differente. In questo caso va associato ad ogni hostname
canonico un insieme di indirizzi IP, che saranno salvati nel database DNS.
Quando i client effettuano una query DNS per un nome associato a un
insieme di indirizzi, il server risponde con l’intero insieme di indirizzi,
variandone però l’ordinamento ad ogni risposta. Infatti generalmente un
client invia il suo messaggio di richiesta HTTP al primo indirizzo IP elencato
nell’insieme, quindi la rotazione distribuisce il traffico sui server replicati,
permettendo anche ad esempio che più server di posta condividano lo
stesso nome.
Ad alto livello, il funzionamento del DNS segue questi passi:
1. Un’ applicazione in esecuzione sull’host di un utente ha necessità di
tradurre un hostname in indirizzo IP.
2. L’applicazione invoca il lato client DNS, utilizzando la chiamata di funzione
gethostbyname() per ottenere il servizio di traduzione per l’hostname
desiderato.
3. Il DNS sull’host prende il controllo ed invia una query sulla rete all’interno di
un datagramma UDP diretto alla porta 53.
4. Dopo un ritardo che varia dai millisecondi ai secondi, il client DNS sull'host
dell'utente riceve un messaggio di risposta contenente la corrispondenza
desiderata, che viene poi passata all'applicazione che ne ha fatto richiesta.
Da queste premesse si può già intendere che un database centralizzato su un
singolo DNS server contenente tutte le corrispondenze non sarebbe scalabile. Tra i
problemi legati a uno schema centralizzato di questo tipo ricordiamo:
• Un singolo point of failure: se il DNS server si guasta, ne soffre l'intera
Internet.
• Volume di traffico: un singolo DNS server dovrebbe gestire tutte le richieste
generate da centinaia di milioni di host.
• Database centralizzato distante: un singolo DNS server non può essere
vicino a tutti i client. Le query che provengono dall'altra parte del mondo,
magari su collegamenti lenti e congestionati, causerebbero ritardi
significativi.
• Manutenzione: il singolo DNS server dovrebbe contenere record relativi a
tutti gli host di Internet, quindi non solo tale database sarebbe vasto, ma 44
LA BIBBIA DI RETI DI CALCOLATORI
dovrebbe essere aggiornato frequentemente per tener conto di ogni nuovo
host.
Per trattare il problema della scalabilità il DNS utilizza un grande numero di server,
organizzati in maniera gerarchica e distribuiti nel mondo. In prima
approssimazione, esistono tre classi di DNS server:
• Root server: In Internet esistono più di 1000 root server, dislocati in tutto il
mondo. Tali server sono copie di 13 differenti root server gestiti da 12
diverse organizzazioni, coordinate attraverso la IANA. I root server
forniscono gli indirizzi IP dei TLD server.
• Top-level domain server (TLD): questi server si occupano dei domini di
primo livello quali com, org, net, edu e gov e di tutti quei domini relativi ai
vari paesi come it, uk, fr, ca, jp. I TLD server forniscono gli indirizzi IP dei
server autoritativi.
• DNS server autoritativi: ogni organizzazione dotata di host pubblicamente
accessibili tramite Internet deve fornire record DNS pubblicamente
accessibili che associno i nomi di tali host a indirizzi IP. Tali record sono
ospitati dal DNS server autoritativo della stessa organizzazione.
Un'organizzazione può scegliere di implementare il proprio server
autoritativo o pagare un fornitore di servizi per ospitare questi record su un
suo server. La maggior parte delle università e delle grandi società
implementa e gestisce i propri server autoritativi primario e secondario (di
backup).
Oltre a questi tre tipi di DNS server ne esiste un altro importante, ovvero il DNS
server locale (o default name server), che non appartiene strettamente alla
@marco.marino747
45 LA BIBBIA DI RETI DI CALCOLATORI
gerarchia di server DNS. Ciascun ISP ha un DNS server locale: quando un host si
connette a un ISP, questo gli fornisce un indirizzo IP tratto da uno o più dei suoi
DNS server locali, generalmente tramite protocollo DHCP (capitolo 4). Solitamente
il DNS server locale si trova in prossimità dell’host. Infatti, quando esso effettua
una query DNS, questa viene inviata al DNS server locale che si comporta da proxy
e la inoltra alla gerarchia di DNS server. Tali query DNS possono essere sia iterative
(figura 1) sia ricorsive (figura 2), tuttavia si preferisce l’utilizzo delle iterative in
quanto possono ridurre il carico del traffico di rete effettuando richieste mirate
solo ai server DNS necessar