

















































Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Una panoramica dettagliata della commutazione di pacchetto nelle reti di calcolatori, esplorando i concetti fondamentali come router e switch, i protocolli di rete a vari livelli (applicazione, trasporto, rete), e i meccanismi di inoltro e instradamento. Vengono discussi i servizi di trasporto disponibili, il ruolo del protocollo ip, e le tecniche di subnetting. Una solida base per comprendere come i dati vengono trasferiti attraverso internet, evidenziando l'importanza dei protocolli tcp/ip e icmp nella gestione e nel controllo della rete. Inoltre, vengono esaminati gli indirizzi a livello di collegamento e il protocollo arp, fornendo una visione completa dell'architettura di rete.
Tipologia: Appunti
1 / 57
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!


















































Internet è una rete di calcolatori che collega tra loro una molteplicità di unità di calcolo in tutto il mondo. Al giorno d’oggi le unità connesse ad internet sono sempre di più: computer, portatili, tablet, smartphone, TV, termostati e molte altre. Tutti questi dispositivi sono detti host o sistemi periferici. Essi sono connessi tra loro mediante un link di comunicazione con velocità differenti (misurata in bit/secondo bps ). I terminali sono indirettamente collegati attraverso commutatori di pacchetti. Quando un sistema periferico vuole inviare dati a un altro terminale. Suddivide i dati in sottoparti e aggiunge un’intestazione a ciascuna di esse, questo insieme di informazioni viene chiamato pacchetto. Un commutatore di pacchetto prende un pacchetto che arriva dai uno dei collegamenti in ingresso e lo ritrasmette su quelli in uscita. I commutatori di pacchetto principali sono i router e i commutatori a livello di collegamento ( switch ). L’itinerario compiuto dal pacchetto è conosciuto come percorso o cammino ( route o path ) attraverso la rete. I terminali accedono ad Internet attraverso gli Internet Service Provider ( ISP ) che si interconnettono tra loro. Ogni provider costituisce un insieme di commutatori di pacchetto e di collegamenti (link). Gli ISP consentono l’accesso hai privati un una molteplicità di forme. Sistemi periferici e altre parti di Internet fanno uso di protocolli che controllano l’invio e la ricezione di informazioni all’interno della rete. I principali protocolli di Internet sono il trasmission control protocol (TCP), e l’ Internet protocol (IP). Sono noti con il nome collettivo TCP/IP. La internet pubblica è quella a cui ci si riferisce normalmente, ma esistono una infinità di reti private che usano gli stessi hardware e software chiamate intranet. Gli standard di Internet vengono sviluppati da IETF ( Internet Engineering Task Force ). Le pubblicazioni sugli standard di Internet vengono dette request for comment (RFC), esse tendono essere piuttosto tecniche e dettagliate (definiscono protocolli come TCP, IP, HTTP e SMTP).
Possiamo descrivere Internet anche come un’infrastruttura che fornisce servizi alle applicazioni. Applicazioni che includono: posta elettronica, navigazione sul web, messaggistica istantanea, online social-network e molte altre. Queste applicazioni sono dette applicazioni distribuite , in quanto è un’applicazione costituita da due o più processi che vengono eseguiti in parallelo su sistemi distinti connessi da una rete di comunicazione. I processi che costituiscono un’applicazione distribuita cooperano sfruttando i servizi forniti dalla rete di comunicazione e dal sistema operativo del sistema. I sistemi periferici collegati a Internet forniscono una interfaccia socket , che specifica come un programma eseguito su un terminale possa chiedete a Internet di recapitare dati a un programma eseguito su un altro sistema periferico. L’interfaccia socket è un insieme di regole che il programma mittente deve eseguire in modo che i dati siano recapitati al programma di destinazione.
Definizione: Un protocollo definisce il formato e l’ordine dei messaggi scambiati tra due o più entità in comunicazione, così come le azioni intraprese in fase di trasmissione e/o ricezione di un messaggio o di un altro evento.
Un protocollo di rete è simile a un “protocollo umano”. Qualsiasi attività in Internet che coinvolga due o più entità remote in comunicazione viene governata da un protocollo. Si impiegano protocolli differenti per realizzare compiti diversi, dunque per poter raggiungere gli obiettivi le due o più entità presenti devono adottare lo stesso protocollo. Esempio Confronto tra un protocollo umano e un protocollo di rete. 1.2. Ai confini della rete Come già detto i calcolatori e gli altri dispositivi connessi ad Internet sono detti sistemi periferici o end system (si trovano ai confini di Internet). Essi vengono anche detti host e vengono talvolta suddivisi in due categorie: client e server. I client sono host che richiedono dei servizi, mentre i server si occupano di erogare dei servizi (la maggior parte dei server da cui riceviamo i risultati delle ricerche, l’e-mail, le pagine Web e i video è collocata in grandi data center).
Una rete di accesso è una rete che connette fisicamente un sistema al suo edge router. Definizione: Un router è un dispositivo che collega tra loro due o più reti scegliendo il percorso migliore per i dati e che all’occorrenza converte il protocollo di trasmissione. Oggigiorno gli accessi residenziali a banda larga più diffusi sono il digital subscriber line (DSL) , via cavo , FTTH , FTTC. La DSL è generalmente fornita dalla stessa compagnia telefonica che fornisce il servizio di telefonia fissa, tale compagnia assume il ruolo di ISP. Il modem DSL dell’utente usa la linea telefonica esistente per scambiare dati con un DSLAM (Digital subscriber line access multiplex) che si trova nella centrale locale della compagnia telefonica. Esso è un multiplatore digitale che raccoglie le varie adsl e le multipla su un canale di comunicazione a velocità maggiore. Le linee telefoniche residenziali trasportano contemporaneamente dati e segnali telefonici in tre bande: downstream, upstream e un canale telefonico. Questa tecnologia è stata progettata per distanze piccole tra l’abitazione e la centrale locale (5 o 10 miglia). Un’alternativa è l’ accesso a Internet via cavo , essa utilizza le infrastrutture esistenti della televisione via cavo (stessa azienda che fornisce il servizio di televisione). Questa tecnologia richiede modem speciali, chiamati cable modem. Una tecnologia che vanta velocità ancora maggiori è detta FTTH (Fiber To The Home). Permette una potenziale velocità di accesso a Internet di gigabit al secondo.
Il tempo totale disponibile è suddiviso in diversi utenti. Il totale della banda di frequenza è suddivisa in diversi utenti. Avviene una trasmissione di due o più segnali sullo stesso percorso, ma in tempi diversi. Un sistema per trasmettere due o più segnali in un percorso comune utilizzano una banda di frequenza diversa per ogni tipo di segnale. Implica il partizionamento della larghezza di banda del canale che collega due nodi in un insieme finito di intervalli di tempo. I segnali “multiplati” provengono da diverse fonti/trasmettitori. Il collegamento dedica una banda di frequenza a ciascuna connessione per la durata della connessione stessa Frame: intervalli di durata fissa che sono a loro volta divisi in un numero finiti di slot temporali.
Le applicazioni distribuite scambiano messaggi che possono contenere qualsiasi cosa il progettista del protocollo desideri. La sorgente suddivide i messaggi lunghi in parti più piccole note come pacchetti. Essi viaggiano attraverso collegamenti e commutatori di pacchetto. I pacchetti vengono trasmessi su ciascun collegamento a una velocità ( frequenza di trasmissione ) pari alla velocità totale di trasmissione del collegamento stesso. La maggior parte dei commutatori di pacchetto utilizza la trasmissione store-and-foreward. Ciò significa che il commutatore deve ricevere l’intero pacchetto prima di poterne cominciare a trasmettere sul collegamento in uscita il primo bit. Questo tipo di trasmissione causa un ritardo, in quanto il router deve prima immagazzinare nel buffer i bit del pacchetto ( buffer in uscita ); solo dopo averli ricevuti tutti può iniziare a trasmettere il pacchetto sul collegamento in uscita. Il ritardo provocato è variabile e dipende dal livello di congestione della rete.
La commutazione di circuito prealloca l’uso del collegamento trasmissivo indipendentemente dalla richiesta, con collegamenti garantiti, ma non utilizzati, che provocano dispendio di tempo. La commutazione di pacchetto d’altro canto alloca l’uso di collegamenti su richiesta. Dunque, la commutazione di pacchetto ha svariati vantaggi: più prestante, più semplice e meno costosa da implementare. Invece, uno svantaggio è che non è appropriata per i servizi in tempo reale a causa dei suoi ritardi variabili e non determinabili a priori. La tendenza è comunque quella di utilizzare sempre di più la commutazione a pacchetto.
Come già visto i terminali si connettono ad Internet tramite un ISP di accesso che può fornire connettività attraverso una rete cablata o senza fili. Tuttavia, la connessione degli utenti finali e dei
fornitori di contenuti alla rete di un ISP sono solo una piccola parte per connettere i miliardi di utenti connessi ad Internet. Bisogna interconnettere gli stessi ISP, dunque creando una rete di reti. Internet è una struttura altamente complessa. Il suo obiettivo è quello di interconnettere gli ISP di accesso in modo che i sistemi periferici possano scambiarsi pacchetti. Si basa tutto su una struttura gerarchica composta da dozzine di ISP di primo livello e centinaia di migliaia di ISP di livello inferiore. Gli ISP si distinguono per la copertura geografica: alcuni di essi si estendono per continenti e oceani mentre altri si limitano a ristrette regioni. Gli ISP di livello più basso si interconnettono con quelli di livello superiore e questi ultimi si interconnettono tra loro. Gli utenti e i fornitori di contenuto sono clienti degli ISP di livello inferiore, mentre questi ultimi sono a loro volta clienti degli ISP di livello superiore. Interconnessione tra ISP Per poter funzionare al meglio Internet vengono utilizzati: i PoP, il multi-homing, il peering e gli IXP. I PoP (Point of Presence) esistono in tutti i livelli della gerarchia tranne che in quello degli ISP di accesso. Un PoP è un semplicemente un gruppo di router vicini tra loro nella rete del provider, tramite il quale gli ISP clienti possono connettersi al fornitore. Qualunque ISP, tranne quelli di primo livello, può scegliere la modalità multi-homing che consiste nel connettersi a due o più ISP fornitori. In questo modo un ISP può continuare a inviare e ricevere pacchetti in Internet anche se uno dei suoi fornitori è guasto. Per avere una connessione Internet globale gli ISP clienti pagano i loro ISP fornitori. Per ridurre tali costi, una coppia di ISP vicini a pari livello gerarchico può fare uso di peering , cioè connettere le loro reti. Questo accordo è formalizzato contrattualmente ed è gratuito. Utilizzando queste stesse connessioni, un’azienda terza, usando i propri apparati può creare un IXP (Internet exchange point), un punto di incontro dove più ISP possono fare peering tra di loro, questo punto di interscambio è detto anche NAP (Network Access Point). 1.4. Ritardi, perdite e throughput nelle reti a commutazione di pacchetto Un pacchetto parte da un host (sorgente), passa attraverso una serie di router e conclude il viaggio in un altro host (destinazione). A ogni tappa, il pacchetto subisce dei ritardi che complessivamente formano il ritardo totale di nodo. Un pacchetto viene inviato dal nodo a monte attraverso il router A verso il router B. Il collegamento in uscita dal router A verso il router B è preceduto da una coda. Quando il pacchetto arriva al router A dal nodo a monte, il router ne esamina l’intestazione per determinare il collegamento in uscita su cui dirigerlo. Un pacchetto può essere trasmesso su un collegamento solo se non ci sono altri pacchetti in fase di trasmissione e se
elaborazione a ciascun router e all’host sorgente sia costante, la velocità di trasmissione in uscita a ogni router e all’host sorgente sia di R bps e il ritardo di propagazione sia costante. Il ritardo complessivo end-to-end è pari a dend-to-end = N (delab + dtrasm + dprop) Per ottenere una misura efficiente dei ritardi in una rete di calcolatori possiamo fare uso del programma diagnostico Traceroute. Esempio – Output programma di Traceroute Percorso dall’origine gaia.cs.umass.edu alla destinazione cis.poly.edu
Le prestazioni di una rete dipendono principalmente da quattro fattori: larghezza di banda, bit rate, throughtput e la latenza. Definizione: Con larghezza di banda si intende il numero di bit che possono essere trasmessi dalla rete in un certo intervallo di tempo. A volte è utile pensare alla larghezza di banda come al tempo necessario per trasmettere un bit. Definizione: Il bit rate dipende sia dalla banda che dalla specifica tecnica di trasmissione, o formato di modulazione digitale utilizzato (è proporzionale alla banda in hertz). Per bandwidth di una rete si intende il bit rate garantito dai suoi link Definizione: Il throghput indica quanto velocemente riusciamo effettivamente a inviare i dati tramite una rete. In Internet i dati normalmente passano attraverso due reti di accesso e la dorsale Internet. La dorsale ha un throughput alto quindi il throughtput viene definito il minimo tra i due link di accesso che collegano la sorgente e la destinazione alla dorsale. Un’altra misura critica delle prestazioni in una rete di calcolatori è il throughput end-to-end. Il throughput istantaneo in ogni istante di tempo è la velocità alla quale B sta ricevendo il file. Se il file consiste di F bit e il trasferimento richiede T secondi affinché B riceva tutti gli F bit, allora il throughput medio del trasferimento del file è di F/T bps. Definizione: La latenza (o tempo di latenza) di un sistema può essere definita come l’intervallo di tempo che intercorre fra il momento in cui arriva l’input al sistema ed il momento in cui è disponibile il suo output. In altre parole, una misura della velocità di risposta di un sistema. Per alcune applicazioni è importante conoscere il tempo di andata e ritorno chiamato round-trip time (RTT).
Una CDN (Content Delivery Network) è un sistema distribuito di server (una rete) che consegna contenuti (vide, immagini, pagine web, ...) agli utenti finali basandosi sulla loro posizione geografica. Il vantaggio di questa tecnologia è una migliore velocità di consegna dei contenuti di un determinato sito. Tanto più il server CDN è vicino, tanto più veloce il contenuto sarà consegnato.
Un CDN copia il contenuto di un sito internet su una rete di server distribuiti geograficamente in diverse locazioni, facendo caching dei contenuti della pagina. 1.5. Livelli dei protocolli e loro modelli di servizio
Internet appare come un sistema estremamente complicato. Per semplificare ciò, i progettisti organizzano i protocolli di rete e l’hardware software che li implementano in livelli o strati ( layer ). Ciascun protocollo appartiene a un livello. In tale struttura siamo interessati ai servizi offerti da un livello a quello superiore ( modello di servizio ). Ogni livello fornisce il suo servizio effettuando determinate azioni all’interno del livello stesso e utilizzando i servizi del livello immediatamente superiore. La stratificazione dei protocolli presenta vantaggi , in quanto fornisce un modo strutturato per trattare i componenti dei sistemi e la modularità rende più facile aggiornare la componentistica. Sono presenti anche svantaggi , poiché c’è la possibilità che un livello duplichi le funzionalità di quello inferiore oppure che la funzionalità di un livello chieda informazioni presenti solo un altro livello. Un livello di protocolli può essere implementato via software, hardware o con una combinazione dei due. I protocolli dei vari livelli, considerati assieme, sono detti pila di protocolli ( protocol stack ). Questi protocolli vengono divisi in cinque livelli:
Il cuore dello sviluppo delle applicazioni di rete è costituito dalla compilazione dei programmi che sono eseguiti dai sistemi periferici e che comunicano tra loro via rete. Per lo sviluppatore di applicazioni l’ architettura di rete è fissata, le principali sono:
Nel gergo dei sistemi operativi, programmi in esecuzione su diversi terminali si dicono processi comunicanti. Un processo è un programma in esecuzione su un sistema. I processi su due terminali comunicano scambiandosi messaggi attraverso la rete: il processo mittente crea e invia messaggi nella rete e il processo destinatario le riceve e, quando previsto, invia messaggi di risposta. Le applicazioni di rete sono costituite da una coppia di processi che si scambiano messaggi su una rete. Per ciascuna coppia di processi comunicanti, ne etichettiamo uno come client e l’altro come server. In una sessione di comunicazione il processo che avvia la comunicazione è indicato come client mentre quello che attende di essere contattato per iniziare è detto server. Un processo invia e riceve messaggi nella rete attraverso un’interfaccia software detta socket. Quando vuole inviare un messaggio ad un altro processo o a un altro host, fa uscire il messaggio dalla propria porta ( socket ), Il processo presuppone l’esistenza di un’infrastruttura esterna che trasporterà il messaggio attraverso la rete. Quando il messaggio giunge al destinatario, attraversa la porta ( socket ) del processo ricevente che infine opera sul messaggio. Una socket è l’interfaccia tra il livello di applicazione e il livello di trasporto all’interno di un host. Si parla anche di API ( application programming interface ) tra l’applicazione e la rete, dato che la socket rappresenta l’interfaccia di programmazione con cui le applicazioni di rete vengono costruite. scambio di messaggi
Per identificare il processo ricevente, è necessario specificare due informazioni: l’indirizzo dell’host e un identificatore del processo ricevente sull’host di destinazione. Gli host vengono identificati attraverso i loro indirizzi IP. Inoltre, il mittente deve anche identificare il processo destinatario, più specificatamente la socket che deve ricevere il dato (sull’host potrebbero essere in esecuzione molte applicazioni di rete). Un numero di porta di destinazione assolve questo compito. Alle applicazioni più note sono stati assegnati numeri di porte specifiche, ad esempio, i web server hanno porta 80, i server di posta che usano SMTP hanno porta 25.
Occorre valutare i servizi resi disponibili dai protocolli a livello di trasporto e scegliere quello che fornisce i servizi più confacenti all’applicazione. Li possiamo classificare a grandi linee secondo quattro dimensioni:
Internet mette a disposizione delle applicazioni due protocolli di trasporto: UDP e TCP. Alcune applicazioni in Internet sono: Il protocollo TCP prevede un servizio orientato alla connessione e il trasporto affidabile di dati:
Un browser web implementa il lato client di HTTP. Un web server , che implementa il lato server di HTTP, ospita oggetti web, indirizzabili tramite URL (i più popolari sono Apache e Microsoft Internet Information Server). HTTP utilizza TCP come protocollo di trasporto e comunica attraverso la porta 80. Il client HTTP per prima cosa inizia una connessione TCP con il server. Una volata stabilita, i processi client e server accedono a TCP attraverso le proprie socket. Il client invia richieste e riceve risposte HTTP tramite la propria interfaccia socket, analogamente il server riceve richieste e invia messaggi di risposta attraverso la propria interfaccia socket. HTTP non si deve preoccupare dei dati smarriti, questi sono compiti di TCP. I server HTTP non mantengono informazioni sui client, infatti è classificato come protocollo senza memoria di stato ( stateless protocol ).
In molte applicazioni per Internet, client e server comunicano per un lungo periodo di tempo. Se al massimo un oggetto è trasmesso per ogni connessione TCP si parla di connessioni non persistenti. Invece, se possono essere trasmessi oggetti multipli in una singola connessione TCP si tratta di connessioni persistenti. Quando il browser riceve una pagina web, la visualizza all’utente. Browser diversi possono interpretare una stessa pagina web secondo modalità leggermente diverse Nelle connessioni non persistenti , ogni connessione TCP viene chiusa dopo l’invio dell’oggetto da parte del server. Dunque, ogni connessione trasporta soltanto un messaggio di richiesta e un messaggio di risposta. Alcuni browser possono essere configurati dagli utenti per controllare il grado di parallelismo (di default la maggior parte dei browser apre dalle 5 alle 10 connessioni TCP parallele). L’uso di connessioni parallele abbrevia i tempi di risposta. Definizione: L’ RTT ( round-trip-time ) è il tempo occorrente ad un piccolo pacchetto per viaggiare dal client al server e ritornare al client. In una connessione non persistente quando un utente fa click con il mouse su un collegamento ipertestuale fa si che il browser inizializzi una connessione TCP con il web server. Ciò comporta un handshake a tre vie : il client invia un piccolo segmento TCP al server, quest’ultimo manda una conferma per mezzo di un piccolo segmento TCP. Infine, il client dà una conferma di ritorno al server. Le prime due parte richiedono un RTT. Dopo il completamento, il client invia un messaggio di richiesta HTTP combinato con la terza parte dell’handshake combinato con la terza parte dell’handshake tramite la connessione TCP. Quando il messaggio arriva il server, quest’ultimo inoltra il file HTML sulla connessione TCP. La richiesta-risposta consuma un altro RTT. Il tempo di risposta totale ( response time ) è approssimativamente di due RTT, più il tempo di trasmissione da parte del server del file HTML. Nelle connessioni persistenti il server lascia la connessione TCP aperta dopo l’invio di una risposta, per cui le richieste e le risposte successive tra gli stessi client e server possono essere
trasmesse sulla stessa connessione. Queste richieste di oggetti possono essere effettuate senza aspettare le risposte delle richieste pendenti, il server chiude la connessione quando essa rimane inattiva per un dato lasso di tempo.
Le specifiche HTTP includono la definizione di due formati dei messaggi HTTP, di richiesta e di risposta. Il messaggio di richiesta HTTP è scritto in testo ASCII (formato testo leggibile). Tali messaggi possono essere costituiti da un numero indefinito di righe. La prima riga è detta riga di richiesta ( request line ), mentre le successive righe di intestazione ( header lines ). Questo è il formato generale di un messaggio di richiesta. La riga di intestazione presenta tre campi: il campo metodo, il campo URL e il campo versione di HTTP. Il campo metodo può assumere diversi valori tra cui:
Una web cache , nota anche come proxy server , ha come obiettivo quello di rispondere alle richieste evitando di accedere al server remoto. Il proxy ha una propria memoria (cache) in cui conserva copie di oggetti recentemente richiesti. Il browser di un’utente può essere configurato in modo che tutte le richieste HTTP dell’utente vengano innanzitutto dirette al proxy server. Ecco cosa succede:
TFTP ha meno funzioni rispetto a FTP, viene solitamente utilizzato per il trasferimento di file tra dispositivi in ambito LAN. Se durante il trasferimento un pacchetto viene perso quest’ultimo verrà ritrasmesso. 2.5. Posta elettronica La posta elettronica è veloce, facile da distribuire e gratuita. L’e-mail rappresenta un mezzo di comunicazione asincrono: le persone inviano e leggono i messaggi nel momento per loro più opportuno. La posta elettronica ha tre componenti principali: gli user agent , i server di posta e il protocollo SMTP. Considerando l’esempio di un mittente Alice, che invia un messaggio a un destinatario, Bob. Quando alice ha finito di comporre il messaggio, il suo user agent lo invia al server di posta, dove viene posto nella coda di messaggi in uscita. Quando Bob vuole leggere il messaggio, il suo user agent lo recupera dalla casella di posta nel suo mail server. Ciascun destinatario, ha una mailbox (casella di posta) collocata in un mail server in cui sono presenti i messaggi a lui inviati. Per accedere ai messaggi della propria casella Bob deve essere autenticato dal server che lo ospita. Il server di Alice, se non può consegnare la posta, la trattiene un una coda di messaggi (posta in uscita). SMTP rappresenta il principale protocollo per la posta elettronica su Internet. SMTP presenta un lato client, in esecuzione sul mail server del mittente e un lato server, in esecuzione sul server del destinatario.
SMTP trasferisce i messaggi dal mail server del mittente a quello del destinatario. Questo protocollo è definito nell’RFC 5321. Per il trasferimento affidabile dei messaggi da client a server usa TCP e la porta numero 25. SMTP tratta il corpo di tutti i messaggi di posta come semplice ASCII a 7 bit (anche dati multimediali). Durante l’invio della posta, SMTP non utilizza mail server intermedi anche quando i mail server finali sono collocati distanti. Osserviamo il trasferimento SMTP di un messaggio da un mail server a un altro. Il client SMTP fa stabile a TCP una connessione sulla porta 25 verso il server SMTP. Se il server è inattivo, il client riproverà più tardi. Una volta stabilita la connessione, il server e il client effettuano una sorta di handshaking (stretta di mano). Durante questa fase, il client indica l’indirizzo e-mail del mittente e quello del destinatario. Successivamente, il client invia il messaggio. Il client ripete il processo sulla stessa connessione TCP se ha altri messaggi da inviare al server, altrimenti ordina a TCP di chiudere la connessione. Ricapitolando, SMTP utilizza connessioni TCP persistenti e richiede che il messaggio sia in formato ASCII a 7 bit.
Sia HTTP che SMTP vengono utilizzati per trasferire file da un host a un altro. Entrambi trasferiscono file e utilizzano connessioni persistenti. Esistono delle sostanziali differenze:
2.6. DNS: il servizio di directory di Internet
Esistono due modi per identificare gli host: il nome e l’ indirizzo IP. Al fine di conciliare i due approcci è necessario un servizio in grado di tradurre il nome degli host nei loro indirizzi IP. Questo compito lo svolge il DNS ( Domain Name System ). Esso è un database distribuito implementato in una gerarchia di DNS server (name server) e un protocollo applicativo che consente agli host di interrogare il database. Il protocollo DNS utilizza UDP e la porta 53. Questo protocollo è specificato nelle RFC 1034 e 1035. DNS viene comunemente utilizzato da altri protocolli, tra cui HTTP e SMTP, per tradurre i nomi di host forniti dall’utente in indirizzi IP. Il DNS per effettuare questa traduzione introduce un ritardo aggiuntivo. 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), mail server aliasing (semplificare gli indirizzi di posta elettronica), distribuzione del carico di rete ( load distribution ).
Ogni dominio deve avere almeno due DNS server per funzionare: primario ( master ), secondario ( slave ) e se possibile anche un altro secondario esterno alla rete del dominio che gestisce. Il primario ha i dati effettivi, mentre i secondari ne hanno una copia ricevuta dal primario. Gli amministratori di rete cambiano i dati solo nel DNS primario, i secondari verranno aggiornati di conseguenza. Ogni DNS contiene informazioni relative al proprio dominio (zona) e sa come ottenere le informazioni di quelli sottostanti (in quanto ne ha delegato la gestione ad altri DNS, oppure li gestisce direttamente). Ad esempio, il DNS del dominio .it sa chi detiene le informazioni del dominio unicam.it, ma non sa chi detiene le informazioni per il dominio mat.unicam.it. Gerarchia parziale di server DNS Esistono tre classi di DNS server: i root server (forniscono gli indirizzi IP dei server TLD), i top- level domain ( TLD ) server (si occupano dei domini di primo livello) e i server autoritativi (ogni organizzazione deve fornire record DNS pubblicamente accessibili che associno i nomi di tali host a indirizzi IP), organizzati in una gerarchia. Nel caso in cui un client DNS voglia determinare l’indirizzo IP relativo all’hostname www.amazon.com, il client contatta dapprima uno dei root server, che gli restituisce uno o più indirizzi IP relativi al server TLD per il dominio com. Quindi, contatta uno di questi server TLD, che gli restituisce uno o più indirizzi IP del server autoritario www.amazon.com. Infine, contatta uno dei server autoritari, che gli restituisce l’indiritto IP dell’hostname www.amazon.com. Esiste un altro tipo di DNS, detto DNS server locale , ogni ISP ne possiede almeno uno. Quando un host effettua una richiesta DNS, la query viene inviata al DNS server locale, che opera da proxy e inoltra la query alla gerarchia dei DNS server. Le query possono essere ricorsive o iterative. Nel primo caso viene trasferito il carico della traduzione al name server contattato, mentre nel secondo caso il name server contattato risponde con l’indirizzo del prossimo name server da contattare (in quanto non conosce il name).
Dunque, quando un server DNS riceve un’interrogazione verifica se il nome è relativo alla propria zona di autorità. In caso affermativo converte il nome in un indirizzo in base alle informazioni del proprio database, inserisce l’indirizzo nella risposta e la spedisce al client. Altrimenti, esamina la modalità specifica nell’interrogazione: se è ricorsiva, contatta un server di livello superiore che possa risolvere il nome e riporta al client la risposta ottenuta; se è iterativa, si limita a comunicare al client il nome del server a cui rivolgersi. Il DNS sfrutta in modo estensivo il caching per migliorare le prestazioni di ritardo e per ridurre il numero di messaggi DNS. Quando un qualsiasi name server apprende una traduzione la memorizza localmente (caching). Le traduzioni memorizzate nella cache scadono dopo un certo tempo. Se possibile, richieste successive vengono servite usando la traduzione presente in cache.
I server che implementano il database distribuito di DNS memorizzano i cosiddetti record di risorsa (RR, resource record ), tra cui quelli che forniscono le corrispondenze tra nomi e indirizzi. Un RR contiene i seguenti campi: (Name, Value, Type, TTL) TTL è il time to live, ossia il tempo residuo di vita di un record e determina quando una risorsa vada rimossa dalla cache. Il significato di Name e Value dipende da Type: