Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Fondamenti della Commutazione di Pacchetto nelle Reti di Calcolatori - Prof. Marcantoni, Appunti di Reti Di Calcolatori

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

2022/2023

In vendita dal 15/07/2025

matteo-unicam
matteo-unicam 🇮🇹

16 documenti

1 / 57

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
1. Internet e Reti di calcolatori
1.1. Che cosè Internet?
1.1.1. Gli “ingranaggi” di Internet
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).
1.1.2. Descrizione dei servizi
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.
1.1.3. Che cos’è un protocollo?
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.
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39

Anteprima parziale del testo

Scarica Fondamenti della Commutazione di Pacchetto nelle Reti di Calcolatori - Prof. Marcantoni e più Appunti in PDF di Reti Di Calcolatori solo su Docsity!

1. Internet e Reti di calcolatori

1.1. Che cos’è Internet?

1.1.1. Gli “ingranaggi” di Internet

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).

1.1.2. Descrizione dei servizi

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.

1. 1 .3. Che cos’è un protocollo?

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).

1.2.1. Le reti di accesso

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.

1.3.2. Commutazione di pacchetto

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.

1.3.3. Commutazione di pacchetto Vs Commutazione di circuito

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.

1.3.4. Una rete di reti

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

1.4.4. Prestazioni di una rete

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).

1.4.5. CDN – Content Delivery Network

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

1.5.1. Architettura a livelli

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 livello di applicazione ( application ) è la sede delle applicazioni di rete e dei relativi protocolli. Tale livello include molti protocolli quali: HTTP, SMTP, FTP. I pacchetti di questo livello vengono chiamati messaggi.
  • Il livello di trasporto ( transport ) trasferisce i messaggi del livello di applicazione tra punti periferici gestiti dalle applicazioni (trasferimento dati end-to-end). Sono presenti due protocolli di trasporto: TCP e UDP. I pacchetti di questo livello vengono chiamati segmenti.
  • Il livello di rete ( network ) si occupa di trasferire i pacchetti a livello di rete, detti datagrammi, da un host a un altro (host-to-host). Tale livello comprende il famoso protocollo IP e svariati protocolli di instradamento che determinano i percorsi che i datagrammi devono seguire tra la sorgente e la destinazione (routing protocols).
  • Il livello di collegamento ( link ) instrada un datagramma attraverso una serie di router tra la sorgente e la destinazione (trasferimento di dati tra elementi di rete adiacenti). I protocolli utilizzati sono Ethernet e PPP. I pacchetti di questo livello vengono chiamati frame.
  • Il livello fisico ( physical ) trasferisce i singoli bit del frame da un nodo a quello successivo. Non vengono utilizzati devi veri e propri protocolli, ma frequenze e impulsi. È presente un’altra pila di protocolli, la ISO propose infatti che le reti di calcolatori fossero organizzate in sette livelli, chiamato modello OSI. Tale modello è stato inventato senza avere in mente Internet (uno dei motivi per cui non è usato). I livelli sono: applicazione, presentazione, sessione, trasporto, rete, collegamento e fisico. Le funzionalità dei livelli sono grossomodo le stesse dell’altro modello, si aggiungono però due livelli. Il ruolo del livello di presentazione è fornire servizi che consentono ad applicazioni che vogliono comunicare di interpretare il significato dei dati scambiati. Mentre, il livello di sessione fornisce la delimitazione e la sincronizzazione dello scambio di dati.

2. Livello di applicazione

2.1. Princìpi delle applicazioni di rete

2.1.1. Architetture delle applicazioni di rete

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:

  • Client-server , vi è un host sempre attivo, chiamato server , che risponde alle richieste di servizio di molti altri host, detti client. Spesso nelle architetture client-server si usano spesso data center che, ospitando molti host creano un potente server virtuale. Un data center può ospitare fino a centinaia di migliaia di host.
  • P2P ( peer-to-peer ), in questa architettura la presenza di server in data center è minima/assente, viene sfruttata, invece, la comunicazione diretta tra coppie arbitrarie di host, chiamati peer collegati in modo intermittente. I peer sono computer fissi e portatili, controllati dagli utenti, che per la maggior parte si trovano nelle abitazioni, nelle università e negli uffici. Alcune applicazioni presentano un’architettura ibrida, combinando sia elementi client-server sia P2P. L’architettura P2P è fortemente scalabile ed economica, ma in futuro tali applicazioni dovranno affrontare grandi sfide riguardanti sicurezza, prestazioni e affidabilità.

2.1.2. Processi comunicanti

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.

2.1.3. Servizi di trasporto disponibili per le applicazioni

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:

  • Trasferimento dati affidabile : I pacchetti possono andare perduti. Per ovviare ciò, occorre garantire che i dati inviati siano consegnati corretti e completi.
  • Throughput : Dato che altre sessioni condivideranno la banda sul percorso di rete, il throughput disponibile può fluttuare nel tempo. Un protocollo a livello di trasporto può garantire come servizio il throughput disponibile garantito. Se il protocollo a livello di trasporto non può fornire questo throughput, l’applicazione dovrà codificare i dati a un livello inferiore o rinunciare. Le applicazioni che hanno requisiti di throughput vengono dette applicazioni sensibili alla banda , in caso contrario vengono dette applicazioni elastiche.
  • Temporizzazione : Questo tipo di servizio potrebbe interessare le applicazioni interattive in tempo reale.
  • Sicurezza : Questo servizio fornisce riservatezza, l’integrità dei dati e l’autenticazione on- line.

2.1.4. Servizi di trasporto offerti da Internet

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:

  • Servizio orientato alla connessione , fa in modo che client e server scambino informazioni di controllo a livello di trasporto prima che i messaggi a livello di applicazione comincino a fluire ( handshaking ). Dopo questa fase, si dice che esiste una connessione TCP tra le socket dei due processi.
  • Servizio di trasferimento affidabile , in quanto i processi comunicanti possono contare su TCP per trasportare i dati senza errori e nel giusto ordine.

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 ).

2.2.2. Connessioni persistenti e non persistenti

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.

2.2.3. Formato dei messaggi HTTP

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:

  • GET , adottato quando il browser richiede un oggetto identificato dal campo URL.
  • POST , simile a GET, ma codifica gli input in modo diverso. Utile per proporre i contenuti dei form a un programma CGI.
  • HEAD , simile a GET, ma richiede solo le informazioni dell’header. Utile per controllare se un documento esiste e quanto è recente.
  • PUT , trasferisce un documento al server.
  • DELETE , elimina un documento dal server.
  • TRACE , attraverso questo metodo un client può vedere cosa viene ricevuto dall’altra parte della catena delle richieste in modo tale da eseguire delle diagnosi.
  • CONNECT , usata con i proxy per tunnel. Il messaggio di risposta HTTP ha tre sezioni: una riga di stato iniziale , righe di intestazione e il corpo. Quest’ultimo è il fulcro del messaggio e contiene l’oggetto richiesto. La riga di stato è composta da tre campi: la versione del protocollo, un codice di stato e un corrispettivo messaggio di stato. La riga di intestazione può contenere varie informazioni: Connection, Date, Server, Last-Modified, Content-Lenght, Content- Type. Il codice di stato e l’espressione associata indicano il risultato della richiesta. I più comuni sono:
  • 200 OK: la richiesta ha avuto successo e in risposta si invia l’informazione.
  • 301 Moved Permanently: l’oggetto richiesto è stato spostato. Il nuovo URL è specificato nell’intestazione Location (del messaggio di risposta).
  • 404 Bad Request: si tratta di un codice di errore generico che indica che la richiesta non è stata compresa dal server.

2.2. 6. Web caching

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:

  1. Il browser stabilisce una connessione TCP con il proxy server e invia una richiesta HTTP per l’oggetto specificato.
  2. Il proxy controlla la presenza di una copia dell’oggetto. Se l’oggetto viene rilevato, il proxy lo inoltra all’interno di un messaggio di risposta HTTP al browser.
  3. Altrimenti, apre una connessione TCP verso il server di origine. Il proxy invia al server una richiesta HTTP per l’oggetto. Una volta ricevuta, il server invia al proxy l’oggetto all’interno di una risposta HTTP.
  4. Quando il proxy riceve l’oggetto ne salva una copia e ne inoltra un’altra copia, all’interno di un messaggio di risposta HTTP al browser. Il web caching si è sviluppato in Internet, in quanto un proxy può ridurre i tempi di risposta alle richieste dei client. Inoltre, i proxy riducono il traffico sul collegamento di accesso a Internet, migliorando così le prestazioni di tutte le applicazioni. Con l’aumento delle CDN ( content distribution network ) i proxy server giocano sempre un ruolo più importante. Un’azienda di CDN installa molte cache distribuite geograficamente, localizzando il traffico. Ci sono CDN condivise e CDN dedicate. Il web caching introduce un problema, ovvero che la copia di un oggetto che risiede in cache potrebbe essere scaduta. L’HTTP presenta un meccanismo che permette alla cache di verificare se i suoi oggetti sono aggiornati, il GET condizionale ( conditional GET ). Un messaggio di richiesta HTTP viene detto messaggio di GET condizionale se usa il metodo GET e include una riga di intestazione If-modified-since:. Se la risposta è vuota vuol dire che l’oggetto in cache è aggiornato ed otteniamo la riga di stato 304 Not Modified. 2.3. FTP (File Transfer Protocol) Il protocollo FTP permette di effettuare il trasferimento di file da/verso un host remoto. Esso utilizza il modello client/server. Il client è la parte che richiede il trasferimento, mentre il server l’host remoto. Questo protocollo utilizza le porte 20 e 21 ed è definito nella RFC 959. Il client contatta il server sulla porta 21, specificando TCP come protocollo di trasporto. Vengono aperte due connessioni parallele da parte del client: una di controllo (scambio di messaggi di controllo tra client e server, “controllo fuori banda”) e una per i dati (trasferimento dati da/vero il server). Il server FTP ha come compito quello di mantenere le info di “stato”, ovvero sulla directory corrente e sull’autenticazione. Per ogni file trasferito avviene una nuova connessione. 2.4. TFTP (Trivial File Transfer Protocol) TFTP è un protocollo molto seplice utilizzato per traferire file tra host utilizzando il protocollo di trasporto UDP. Questo protocollo è definito nella RFC 1350 ed utilizza la porta numero 69.

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.

2.5.1. SMTP

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.

2.5.2. Confronto con HTTP

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:

  • HTTP è un protocollo pull , qualcuno carica informazioni su un web server e gli utenti usano HTTP per attirarle a sé dal server.
  • SMTP è un protocollo push , il mail server di invio spinge i file al mail server in ricezione.

2.6. DNS: il servizio di directory di Internet

2.6.1. Servizi forniti da DNS

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 ).

2.6.2. Panoramica del funzionamento di DNS

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.

2.6.3. Record e messaggi DNS

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:

  • Se Type=A, allora Name è il nome dell’host e Value è il suo indirizzo IP.
  • Se Type=NS, allora Name è un dominio e Value è l’indirizzo IP del name server di riferimento per questo dominio.
  • Se Type=CNAME, allora Value rappresenta il nome canonico dell’host per il sinonimo Name.
  • Se Type=MX, allora Value è il nome canonico di un mail server che ha il sinonimo Name. I tipi di messaggio DNS sono: le query e i messaggi di risposta che presentano, entrambi, lo stesso formato. Formato dei messaggi DNS Per inviare un messaggio di richiesta DNS a un DNS server, direttamente dalla macchina su cui si sta lavorando lo si può fare con il programma nslookup. Prima di aprire una determinata pagina web viene controllato il file hosts , per vedere se l’host dell’URL è contenuto al suo interno. In caso affermativo viene utilizzano l’indirizzo IP presente nel file, altrimenti viene contattato il server DNS a cui viene chiesto di risolvere il nome dell’host dell’URL in indirizzo IP. 2.7. SNMP: Simple Network Management Protocol SNMP è usato per monitorare e configurare dispositivi di rete e anche computer e software. Questo protocollo utilizza il protocollo di trasporto UDP e la porta 161. SNMP sfrutta il modello client-server , esso è composto da una station (modulo che emette una richiesta) e un agent (modulo che formula la risposta). Ogni stazione di gestione o agente in una rete gestita in una rete da SNMP mantiene un database locale di informazioni rilevanti per la gestione della rete, noto come Management Information Base (MIB). Ogni oggetto nel MIB ha un identificatore di oggetto (OID), che la stazione di