Terminologia e problematiche di rete

Transcript

Terminologia e problematiche di rete
A cura del prof. Gino Tombolini
1
RETI DI CALCOLATORI
INTRODUZIONE
• All’inizio i sistemi di computer erano altamente centralizzati (centro di calcolo).
• Si sviluppano le comunicazioni e i computer e le comunicazioni si sposano perfettamente.
• Si passa da un potente computer che serve tutte le esigenze ad un gran numero di computer autonomi interconnessi
(dove interconnesso significa che può scambiare dati con altri ) -rete di computer. In una rete un utente deve
esplicitamnte collegarsi ad una macchina, attivare i vari lavori remoti, trasferire esplicitamente files tra macchine
diverse, conoscere in pratica la struttura (architettura) della rete e le risorse presenti sulle varie macchine.
• Si tende ad arrivare al concetto di sistema distribuito, dove la presenza di più computer autonomi è trasparente; è il
sistema operativo che seleziona il computer su cui eseguire i comandi attivati dall’utente. L’utente non è consapevole
della presenza di più elaboratori, ma vede ed usa un solo grande computer “virtuale”.
SCOPI DELLE RETI:
Condivisione delle risorse: rendere disponibili i dati, programmi, periferiche a chiunque sia collegato nella rete
indipendentemente dal posto dove sono situati risorse ed utente.
Alta affidabilità: varie fonti di rifornimento delle informazioni; queste possono essere duplicate su più macchine e nel
caso di guasto di una può essere utilizzata una copia. Se si guasta una CPU le altre potrebbero sopperire al guasto e
svolgere le funzioni (applicazioni militari, bancarie....)
Risparmi di denaro: i piccoli computer hanno un rapporto prezzo/prestazioni superiore rispetto ai mainframe. Un
sistema distribuito ha costi di un ordine di grandezza inferiore rispetto ad un mainframe.
Gradualità della crescita: dopo che la infrastruttura di rete è stata creata, l’aggiunta di nuove potenzialità, ove servano, è
semplice e poco costosa. Si possono aggiungere posti di lavoro e nuovi servizi senza interruzioni di servizio.
TIPI DI RETE
distanza
fino a 1 metro
fino a 100 metri
fino a 10 Km
ambito della nazione
continente - pianeta
tipo
multiprocessor
Rete locale LAN
Rete metropolitana MAN
Rete geografica WAN
Interconnessione di reti geografiche
APPLICAZIONI DI RETI
Accesso a programmi remoti: nel caso di programmi costantemente aggiornati e che girano solo su grandi mainframe.
Accesso a database remoti: prenotazione di aerei, treni, navi, alberghi, ristoranti, teatri, servizi bancari, giornali,
biblioteche;
Mezzi di comunicazione a valore aggiunto: trasmissione di posta elettronica contenente testi scritti, grafici, voce
digitalizzata, immagini televisive, bollettini elettronici, telelavoro, telescuola, negozio catalogo.
PROBLEMATICHE PROGETTUALI
architetture proprietarie (IBM/SNA, Digital/Decnet, Novell/IPX)
standard “de facto” reti a larghissima diffusione (TCP/IP)
standard “de jure” sono emessi da organizzazioni di standardizzazione ISO e CCITT (modello OSI)
evoluzione tecnologica non può essere fermata in attesa della standardizzazione (ATM=Asynchronous Transfer Mode).
STRUTTURA DI UNA RETE
• Host o end system= calcolatore destinatario o sorgente di informazione
• Sottorete di comunicazione: connette gli host, trasporta messaggi come un sistema telefonico; si suddivide in:
• Linee di trasmissione - connettono fisicamente i componenti della rete;
• Nodi di commutazione o IMP (interface Message Processor) o IS (Intermediate Systems): si occupa di
inoltrare le comunicazion scegliendo la linea uscente dove inviare i messaggi.
A cura del prof. Gino Tombolini
2
SOTTORETE
IMP
HOST
IMP
HOST
Le topologie di rete si basano su due diverse tecniche :
• canali punto punto : il messaggio viene inviato direttamente da un IMP all’altro e memorizzato (store and forward,
packet switching, ecc.).
Stella
Anello
Completa
• canali broadcast (a larga diffusione); un singolo canale è condiviso da più host ( in una rete locale l’IMP risiede
nell’host, è cioè un singolo chip specializzato). I pacchetti inviati sono ricevuti da tutti gli host, utilizzati solo dal
destinatario, ignorati da tutti gli altri. Esempi sono le reti a bus e le comunicazioni radio e via satellite.Si presenta il
problema dellla contesa del canale ( bus contention ) quando più di una stazione vuole accedere al bus. Possono
essere suddivise in :
• reti statiche: ad ogni macchina è assegnato un certo intervallo di tempo in cui può trasmettere (spreco del
canale ma semplicità di gestione).
• reti dinamiche centralizzate : una entità ha la funzione di arbitro che decide chi può trasmettere dopo.
• reti dinamiche decentralizzate : ogni macchina tramette quando vuole.
Internetworking : Problematiche di collegamento tra più reti (LAN, MAN, WAN), utilkizzanti anche standard diversi
(reti multiprotocollo).
Sistemi operativi di rete : grande varietà di software per la gestione della rete che deve riuscire ad operare su varie
piattaforme (personal computer, workstation, mini,..) congiuntamente ai sistemi operativi MS/DOS, Windows, Unix.
Possono essere suddivisi in :
• sistemi peer-to-peer (da pari a pari) come Windows e Novell Lite.
• sistemi client-server : come Novell Netware e Lan Manager.
Devono in ogni caso fornire servizi per l’utilizzo della rete, il più trasparentemente possibile all’utente (terminale
virtualem trasferimento di file, posta elettronica, ..).
A cura del prof. Gino Tombolini
3
Protocolli
Per ridurre la complessità del progetto, la maggior parte delle reti è organizzata a strati o livelli ciascuno costruito sopra
il predecessore. Il numero degli strati, il nome, la funzione svolta differiscono da una rete all’altra.
Lo starto n di una macchina può colloquiare ed interpretare messaggi solo dello strato n di un’altra macchina (processi
paritari).
Le regole e le convenzioni usate nelle comunicazioni tra i vari livelli prendono il nome di protocollo.
Si hanno collegamenti logici tra i livelli paritari di macchine diverse, ma si ha in realtà un solo collegamento fisico tra
le macchine, cioè un solo livello collega fisicamente le macchine. L’insieme di strati e protocolli prende il nome di
architettura di rete.
N
N
livello fisico
Livello N
PDU
SAP
Livello N-1
SAP
PCI
SDU
PDU
PDU=Protocol Data Unit = dati
SAP=Service access Point (utilizzo di un certo servizio)
SDU=Service Data Unit = dati
PCI= Protocol Control Information (informazioni di servizio del livello).
Terminologia di rete
Una rete di computer è un sistema di comunicazione per permettere a più sistemi di comunicare tra loro. Spesso
tali sistemi sono detti host.
Una rete locale (Local Area Network=LAN) connette sistemi di computer separati da una distanza
relativamente piccola. Le tecnologie attualmente più diffuse per le LAN sono Ethernet e Token ring. Le Lan operano di
solito ad alta velocità, per esempio Ethernet opera a 10 Mbit al secondo mentre Token ring opera sia a 4 che a 16 Mbps;
Lan più recenti come FDDI (Fiber Distributed Data Interface), cioè reti a fibre ottiche, permettono velocità di oltre
100Mbs. Ogni computer in una Lan ha una propria scheda di interfaccia che lo connette all’effettivo hardware della rete.
Una rete geografica WAN (Wide Area Network) connette computer in città o nazioni diverse. Una tecnologia
comune per le Wan è quella per le linee telefoniche riservate operanti tra 9600 e 1.5Mbps.
Una rete intermedia tra le Lan e le Wan è la rete metropolitana MAN (Metropolitan Area Network) che copre
una intera città.
A cura del prof. Gino Tombolini
4
Si chiama internetwork la connessione di due o più reti distinte che permette ai computer delle due reti di
comunicare tra loro. Tale connessione può avvenire mediante i seguenti dispositivi:
• repeater
- estensione di un segmento di rete a livello fisico modello OSI
• bridge
- connessione tra reti a livello di collegamento dati: livello 2 modello OSI; vengono copiati frames da
una rete alla successiva. Alcuni tipi di bridge operano anche la selezione dei tipi di frame ricevuti, inviando sull’altra
rete solo i frame ad essa destinati
• router
- connessione e instradamento di pacchetti tra reti: livello 3 modello OSI; tale componente cerca il
miglior percorso attraverso cui instradare l’informazione.
• gateway
- adatta i pacchetti tra reti di tipologia e protocollo diversi; ha lo scopo di adattare i pacchetti tra i due
tipi di reti interconnesse (una ethernet ed una token ring).
Un host viene detto multihomed se ha più di una interfaccia di rete, cioè è connesso a più reti contemporaneamente.
I computer in una rete impiegano dei protocolli ben definiti per comunicare. Un protocollo è un insieme di
regole e convenzioni tra i partecipanti alla comunicazione. Poichè un protocollo può essere estremamente complesso,
esso viene progettato a livelli (o strati), proprio per rendere più semplice la sua implementazione in modo da fornire
interfacce ben definite tra un livello e l’altro, così che il cambiamento di un livello non si ripercuote su quello dei livelli
adiacenti. Ogni livello segue un proprio protocollo di funzionamento, quindi, più precisamente, il funzionamento di una
rete si basa su una ‘suite’ di protocolli o famiglia di protocolli. Tra le famiglie di protocolli più diffuse ricordiamo
TCP/IP (uno standard de facto) , Xerox XNS, SNA dell’IBM, Netbios dell’IBM e l’OSI (che è uno standardde jure).
La figura che segue illustra la suddivisione dei livelli del modello OSI.
7
6
5
4
3
2
1
Applicazione
Presentazione
Sessione
Trasporto
Rete
Collegamento dati
Fisica
Una ‘suite’ di protocolli è divisa in più livelli; ogni livello comunica i dati esclusivamente con il livello
adiacente. Ogni livello risulta però logicamente collegato con un livello paritario della macchina remota con cui sta
comunicando. Esempio :
Client
TFTP
Protocolli TFTP
Server
TFTP
UDP
Protocolli UDP
UDP
IP
Protocolli IP
IP
Protocolli Ethernet
Ethernet
Ethernet
Connessione fisica
Nella terminologia di networking troviamo spesso il termine ottetto che rappresenta un insieme di 8 bit di dati;
indicheremo tale termine con il vocabolo byte. Un primo problema che si incontra quando si connettono computer
diversi attraverso una rete è l’ordine dei byte nella rete; infatti in alcuni computer basati su microprocessori della
A cura del prof. Gino Tombolini
5
famiglia Intel 80x86 i byte sono memorizzati in notazione little endian cioè dal byte meno significativo al byte più
significativo, altri computer basati su microprocessori diversi come il Motorola 68000 utilizzano invece la notazione big
endian cioè memorizzano prima il byte più significativo e poi quelli meno significativo. Il protocollo di comunicazione
deve risolevere questi problemi, ad esempio fissando l’ordine dei byte nella rete. I protocolli TCP/IP usano la modalità
big endian.
Ordinamento little endian
byte più sgnificativo
byte meno significativo
indir. A+1
indir. A
Ordinamento big endian
byte più sgnificativo
indir. A
byte meno significativo
indir. A+1
Ogni livello opera l’incapsulamento dei dati; questo consiste nell’aggiungere informazioni di servizio
specifiche del livello ai dati da trasmettere. Queste informazioni possono consistere in controlli di correttezza di dati,
numerazione dei pacchetti, indirizzi dei destinatari, del sorgente, ecc.
I livelli di rete scambiano tra di loro dei pacchetti, ad esempio nel livello di collegamento dati vengono
scambiati dei frame, nel livello fisico si ha lo scambio di bit.
Le reti di comunicazione dati sono di due tipi fondamentali : reti a commutazione di circuito e reti a
commutazione di pacchetto. La commutazione di circuito è molto simile alla comune telefonata tra due utenti, in
pratica i due host che vogliono comunicare sono connessi da un circuito dedicato sul quale viaggiano esclusivamente i
loro dati; questo circuito può essere di tipo telefonico commutato oppure di tipo telefonico dedicato. Nel primo caso la
connessione è stabilita da una centrale telefonica mentre nel secondo caso la connessione è sempre fissa. Nella
commutazione di pacchetto l’informazione che si vuole trasmettere viene spezzettata in pacchetti che devono contenere
l’indirizzo della destinazione e talvolta anche l’indirizzo del trasmettitore. Con una rete a commutazione di circuito, una
volta stabilito il collegamento tra i due host, si è sicuri che i pacchetti saranno instradati tutti correttamente utilizzando
l’intera capacità del circuito. In una rete a commutazione di pacchetto la larghezza di banda di comunicazione viene
condivisa con altri computer.
La maggior parte dei livelli di rete ha una dimensione massima del pacchetto che può gestire (unità di
trasmissione massima MTU). Tale dimensione non è identica per tutti i livelli per cui occorre talvolta operare una
frammentazione dei pacchetti ed un successivo riassemblaggio.
Ogni livello del modello OSI fornisce diversi tipi di servizio di comunicazione :
• orientamento alla connessione (circuito virtuale) o senza connessione;
• ordinamento sequenziale;
• controllo degli errori;
• controllo del flusso;
• byte stream o messaggi;
• connessione full duplex o half duplex.
Un servizio orientato alla connessione richiede che due programmi applicativi stabiliscano
un’interconnessione logica prima che la comunicazione possa aver luogo. C’è quindi un appesantimento per il fatto di
dover stabilire questa connessione. Questo tipo di servizio si chiama circuito virtuale perchè è come se i due
programmi applicativi creassero un vero e proprio circuito virtuale tra di loro. Uno scambio orientato alla connessione
richiede tre passi :
• attivazione dellla connessione,
• trasferimento dei dati,
• terminazione della connessione.
A cura del prof. Gino Tombolini
6
L’opposto di un servizio orientato alla connessione è il servizio senza connessione noto anche con il nome di
datagramma. Ogni messaggio è trasmesso indipendentemente dall’altro per cui deve contenere tutte le informazioni
necessarie per la sua consegna. Nella suite di protocolli TCP/IP il servizio TCP fornisce un circuito virtuale orientato
alla connessione mentre il servizio UDP fornisce un servizio di datagramma senza connessione.
Si ha l’ordinamento sequenziale quando i pacchetti giungono al ricevitore nello stesso ordine con cui sono
stati trasmessi. Questo è sempre vero in una rete a commutazione di circuito, mentre in una rete a commutazione di
pacchetto è possibile che pacchetti successivi seguano percorsi distinti e quindi arrivino in ordine diverso da quello di
trasmissione.
Il controllo degli errori garantisce ai programmi applicativi una ricezione di dati esenti da errori. Una tecnica
per rilevare la corruzione di dati richiede che il trasmettitore invii una ‘checksum’ affinchè il ricevitore possa verificare
con un’alta probabilità che i dati non sono stati alterati. In caso di presenza di errori il ricevitore deve richiederne la
ritrasmissione. La checksum è normalmente combinata con una tecnica di riscontro con la quale il ricevitore informa il
trasmettitore che i dati sono stati ricevuti correttamente. Il trasmettitore deve attivare una procedura di temporizzazione
(presenza di timer) che definisce il tempo entro il quale i dati trasmessi devono essere confermati altrimenti si procede
ad una ritrasmissione in automatico.
Il servizio di controllo del flusso, noto come pacing, garantisce che il ricevitore non sia sopraffatto dal
trasmettitore come accadrebbe se questo inviasse i dati più velocemente di quanto il ricevitore possa elaborarne.
Spesso alcuni di questi servizi sono presenti contemporaneamente; ad esempio se è presente l’ordinamento
sequenziale ed il controllo degli errori, il protocollo è detto affidabile.
Per chiarire le idee, una chiamata telefonica è simile ad un circuito virtuale: si stabilisce una connessione con
l’altra parte, si scambiano i dati ed infine si chiude la connessione. Il servizio postale assomiglia ad un servizio di
datagramma : ogni lettera contiene l’indirizzo completo della destinazione; ogni lettera spedita allo stesso indirizzo può
seguire un percorso diverso per giungere a destinazione; non c’è alcuna garanzia che la lettera giunga a destinazione; per
ricevere un riscontro della consegna bisogna richiedere una elaborazione in più rispetto alla normale consegna di una
lettera, cioè pagare una ricevuta di ritorno; se ci si aspetta di ricevere una risposta dalla lettera si deve ricorrere anche in
questo caso ad una elaborazione extra, cioè attendere per un certo lasso di tempo e se non si è ricevuta risposta (timeout)
ritrasmettere la lettera.
E’ necessario distinguere tra servizi e protocolli in un modello a livelli come l’OSI. Un livello fornisce uno o
più servizi al livello sovrastante mentre un protocollo è l’insieme delle regole e convenzioni da seguire nella
comunicazione.
Quando si effettua una comunicazione occorre poter identificare univocamente non solo la rete e gli host, ma
anche i processi coinvolti nella comunicazione. La tecnica di identificazione si chiama indirizzamento. Un processo
viene identificato tramite l’indirizzo del processo di utente (PID), l’indirizzo dell’host e l’indirizzo della rete in cui tale
host è connesso. Normalmente l’identificatore del processo è un valore numerico intero. Nel protocollo TCP/IP per
identificare una rete ed un host si impiega un intero a 32 bit. Inoltre TCP/IP impiega dei numeri di porta a 16 bit per
identificare specifici processi utente che forniscono dei servizi nella rete (ad esempio telnet, rlogin, ftp...). La maggior
parte dei protocolli definisce degli indirizzi ben noti (well-known) per identificare dei servizi ben noti che un host può
fornire. Ad esempio TCP/IP fornisce un server per il trasferimento di file denominato FTP (indirizzo di prota 21) che un
client può contattare per trasferire un file.
Tra i messaggi presenti in una rete troviamo normalmente messaggi unicast cioè messaggi inviati da un host
verso un altro host specifico. Si possono inoltre avere messaggi broadcast, cioè messaggi trasmessi da un host verso
qualsiasi altro host della rete, e messaggi multicast, da un host verso un certo gruppo di host della rete. Per esempio in
Ethernet un indirizzo di destinazione i cui bit siano tutti a 1 specifica un broadcast.
Altro problema da risolvere nella rete è l’instradamento dei pacchetti (routing). Quando un host ha un
pacchetto da trasmette ad un altro host della rete, si hanno 4 casi possibili:
1. host di destinazione e nodo sorgente sono sulla stessa rete, in tal caso non c’è bisogno di instradamento.
2. il pacchetto contiene già l’indirizzo del nodo destinazione (in quanto già noto); è il caso del souce routing, in cui il
nodo non deve prendere alcuna decisione in merito all’instradamento.
3. il nodo corrente conosce (dalla consultazione di tabelle) il percorso che i pacchetti seguiranno da questa provenienza
verso il nodo destinazione.
4. il nodo deve prendere delle decisioni circa l’instradamento.
Quando si devono prendere decisioni circa l’instradamento, si possono impiegare quattro diversi tipi di
algoritmi:
A cura del prof. Gino Tombolini
7
1.
2.
3.
4.
instradamento statico
instradamento dinamico isolato
instradamento dinamico centralizzato
instradamento dinamico distribuito.
Nell’instradamento statico il nodo sceglie un percorso consultando una tabella già predefinita
dall’amministratore della rete.
L’instradamento dinamico tiene conto del carico corrente sulla rete. L’instradamento isolato basa le decisioni
su informazioni locali, come il carico di lavoro delle sue interfacce di rete (poco usato).
Nell'instradamento dinamico centralizzato c'è un'autorità centrale che prende tutte le decisioni d'instradamento
in base alle informazioni correnti sulle reti. Ogni gateway invia periodicamente le informazioni sul traffico ad un nodo
centrale, che utilizza tutte le informazioni ricevute per scegliere i percorsi. Ogni host sorgente deve contattare il nodo
centrale ogni volta che deve prendere una decisione d’instradamento; tale tecnica risulta applicabile soltanto a reti che
impiegano circuiti virtuali nel livello di rete.
L'instradamento dinamico distribuito utilizza una mescolanza di informazioni globali e locali per prendere le
decisioni d'instradamento. Per poter ottenere le informazioni globali, i gateway devono avere qualche modo di
scambiarsi queste informazioni. TCP/IP adotta l’instradamento distribuito.
S'impiega il termine connessione per definire il collegamento di comunicazione fra due processi. Il termine
associazione è usato per le 5-tuple che specificano completamente i due processi che costituiscono una connessione:
{protocollo, indirizzo-locale, processo-locale, indirizzo-estero, processo-estero}
Gli indirizzi indirizzo-locale e indirizzo-estero specificano l'ID di rete e l'ID di host dell'host locale e di quello
"estero", in qualsiasi formato definito dalla suite di protocolli. Il processo-locale ed il processo-estero sono usati per
identificare i processi specifici in ciascun sistema interessato dalla connessione, anche qui in qualsiasi formato definito
dalla suite di protocolli. Per esempio, nella suite TCP/IP, un'associazione valida potrebbe essere la seguente:
{tcp, 192.43.235.2, 1500, 192.43.235.6, 21}
in cui il protocollo è "TCP", l'indirizzo-locale è 192.43.235.2, il processo locale è 1500, l'indirizzo-estero è
192.43.235.6, ed il processo-estero è 21.
Si definisce anche una semiassociazione come {protocollo, indirizzo-locale, processo-locale}, o come
{protocollo, indirizzo-estero, processo-estero}, che specificano ognuna delle due metà di una connessione. Questa
semiassociazione è nota anche come socket o indirizzo di trasporto. Una coppia di socket corrisponde quindi ad
un'associazione.
Nella comunicazione di rete si incontra spesso anche il termine modello client-server per denotare il fornitore
di un servizio (server) ed il fruitore del servizio (client) Si possono avere server iterativi e server concorrenti. I primi
definiscono in anticipo il tempo necessario per gestire ciascuna richiesta, che viene gestita dal processo server. Nel
secondo caso, la quantità di lavoro necessaria per gestire una richiesta è incognito, per cui il server avvia un altro
processo per gestire ogni richiesta. I ruoli dei processi client e server sono asimmetrici, cioè le due metà svolgono lavori
diversi.
Il server viene avviato per primo e svolge i seguenti passi:
1. apre un canale di comunicazione ed informa l’host locale della sua disponibilità ad accettare richieste a qualche
indirizzo ben noto;
2. attende la richiesta dal client all’indirizzo ben noto;
3. il server iterativo richiede dati e trasmette le risposte;
4. torna al passo 2 in attesa di altre richieste.
Il sistema si preoccupa di accodare le richieste mentre il server è occupato. I processi server non terminano mai,
tranne nel caso di spegnimento del sistema.
Il client svolge un insieme diverso di azioni:
1. apre un canale di comunicazione e si connette ad un indirizzo ben noto con un host ben noto (server);
2. invia al server i messaggi di richiesta e riceve le risposte.
3. chiude il canale di comunicazione e termina.
A cura del prof. Gino Tombolini
8
Modello OSI (
Open Systems Interconnection).
Rappresenta una base comune di riferimento per l’interconnessione di sistemi informatici.
- E’ un modello per confrontare le varie architetture di rete esistenti.
Applicazione
Applicazione
Presentazione
Presentazione
Sessione
Sessione
Trasporto
Trasporto
Rete
Rete
Rete
Collegamento dati
Collegamento dati
Collegamento dati
Fisico
Fisico
Fisico
HOST
HOST
HOST
Fisico
Phisical Layer
Trasmette sequenze binarie sul canale di comunicazione; specifica le tensioni,
i cavi, i connettori.
Collegamento dati
Data link
Effettua una trasmissione affidabile di trame (frame) aggiungendo controlli di
sequenza, gestisce correzione di errori e ritrasmissione e meccanismi di
conferma ricezione.
Rete
Network
Gestisce l’instradamento dei pacchetti utilizzando tabelle e algoritmi di
instradamento; ricerca i percorsi migliori.
Trasporto
Transport
Trasferimento dat trasparente ed affidabile; frammentazione, correzione
errori, controllo delle congestioni. Ignora la topologia di rete; è di tipo Endto-End. E’ in grado di supprotare più connessioni logiche su ciascun canale di
comunicazione, mantenendo la corrispondenza tra messaggi e connessioni
logiche; stabilisce e cancella connessioni.
Sessione
Session
Permette di stabilire sessioni di lavoro tra macchine diverse; gestisce un
dialogo mono o bidirezionale, sincronizza le macchine per i trasferimenti di
dati.
Presentazione
Presentation
Gestisce la sintassi dell’informazione come : problemi di codifica
ASCII/EBCDIC; rappresentazione di dati numerici in formato di rete.;
problemi di sicurezza, crittografia; compressione dati.
Programmi applicativi veri e propri: terminale virtuale, posta elettronica,
Applicazione
Application
trasferimento file, servizi di directory.
Esempi di protocolli
-Le reti pubbliche forniscono il servizio di connessione dei terminali utente.
-Raccomandazioni X.25 del CCITT adottate universalmente per i primi tre livelli OSI.
-Protocollo X.21 CCITT per lo strato fisico, ancora poco usato e sostituito dall’interfaccia analogica RS-232-C.
-Protocollo FTAM per il trasferimento e gestione remota dei file, appartenente al livello applicativo.
-Protocollo X.400 per lo scambio di testi (posta elettronica) : livello applicativo.
-Protocollo VTP (Virtual Terminal Protocol) per il servizio di terminale virtuale.
-Rete ARPANET nata nel ‘60 come rete militare (DARPA) e aperta successivamente alle università e successivamente a
chiunque volesse collegarvisi (INTERNET). Non risponde pienamente allo standard OSI. A livello di rete usa IP
(Internet Protocol); come trasporto usa TCP o UDP. I servizi più noti sono FTP, Telnet, SMTP, che rispondono
all’incirca al livello applicativo dell’OSI.
- Reti locali : basate parazialmente sul modello OSI :
• Ethernet della Xerox, standardizzato come Ieee 802.3
• Token Bus Ieee 802.4
• Token Ring Ieee 802.5
-Usenet utilizzato dall’ambiente Unix per connettere qualsiasi macchina Unix del mondo, utilizzando un modem e le
comuni linee telefoniche.
• uucp ; servizio di trasferimento file
• cu servizio di terminale virtuale.
-Rete SNA : rete proprietaria dell’IBM. usa il protocollo SDLC per lo strato di collegamento dati.
A cura del prof. Gino Tombolini
9
Strato Fisico
Doppino telefonico : nato per gestire una banda limitata a 4 Khz, sono stati migliorati nella costruzione arrivando a
coprire bande da 10 a 100 Mbps competendo con le fibre ottiche.
Cavo coassiale in banda base : con impedenza di 50 Ohm e di 75 Ohm, usato per la trasmissione digitale fino a 10 Mbps
e distanze fino a 1 Km; utilizza giusnzioni a T o prese vampiro per l’interconnessione di più spezzoni di rete.
Cavo coassiale a larga banda : utilizzante tecniche televisive per la trasmissione dati; raggiunge i 300 Mhz a distanze di
100 Km.
Fibre ottiche : utilizzate per connettere fino a 1000 stazioni distanti al max 200 Km con velocità di trasmissione dati
fino a 100 Mbps.
Trasmissione via radio : utilizza ripetitori, lavora a velocità di 9600 bps.
Trasmissione via satellite : lavorano in broadcasting con il satellite che funziona da ripetitore. Ha una larghezza di banda
di 500 Mhz, divisa tra una dozzina di transponder (riceve amplifica ritrasmette) con bande di 36 Mhz ciascuno. Ogni
trasponder gestisce un flusso dati di 50 Mbps (800 canali vocali a 64 Kbps ciscuno). I ritardi di propagazione sono
dell’ordine di 250-300 msec.
Dispositivi Modem : utilizzanti varie tecniche di modulazione dei segnali (FSK, QAM,..); lavora sulle comuni linee
telefoniche con banda fino a 4 Khz, riuscendo a gestire flussi dati fino a 33 Kbps.
Linee seriali RS232-C (V.24 del CCITT) : gestisce la comunicazione dello strato fisico tra DTE e DCE o tra DTE e
DTE tramite connessioni Null-Modem. I piedini fondamentali sono: DTR, DSR, RTS, CTS, TD, DCD, RD.
A cura del prof. Gino Tombolini
10
Sottostrato di accesso al mezzo (MAC)
Dipendende dal dispositivo utilizzato dallo strato fisico ed in parte appartenente allo strato di collegamento dati. Ad
esso appartengono vari protocolli di trasferimento dati sul canale fisico a disposizione.
ALOHA puro : la trasmissione avviene quando ci sono dati pronti; riascoltando il canale ci si accorge se la trasmissione
è andata a buon fine o si è avuta collisione. In caso di collisione la ritrasmissione avviene dopo un intervallo di tempo
casuale. Bassa efficienza.
ALOHA a slot : è simile all’Aloha, ora il tempo è diviso in slot discreti la cui durata eguaglia la lunghezza di un
pacchetto; la trasmissione deve sincronizzarsi con l’inizio di un nuovo slot. L’efficienza migliora rispetto all’Aloha ma
resta comunque bassa.
Protocolli di rete locale
CSMA (Carrier Sense Multiple Access) persistente : simile all’Aloha, qui le stazioni ascoltano il canale finchè non è
libero, quindi trasmettono; in caso di collisione attendono un intervallo casuale e ripetono la sequenza.
CSMA non persistente : le stazioni ascoltano il canale, se è libero trasmettono, se è occupato attendono un intervallo
casuale e ripetono la sequenza.
CSMA p-persistente : simile al persistente, solo che quando il canale è libero, trasmettono con probabilità p
(predefinita), mentre attendono lo slot successivo con probabilità 1-p.
CSMA - CD (Collision Detect) : (IEEE 803.3 e Ethernet) durante la trasmissione le stazioni ascoltano il canale per
rilevare eventuali collisioni. Se questo è il caso, esse interrompono immediatamente la trasmissione e si pongono in
attesa di un certo intervallo di tempo (algoritmo di backoff binario esponenziale : dopo i collisioni, si sceglie un numero
casuale tra 0 e 2i - 1 (max 1023) e si attende quel determinato numero di intervalli di tempo. Una stazione è sicura di
essere l’unica in trasmissione (di possedere il canale trasmissivo) se non avvengono collisioni per un tempo pari al
tempo impiegato dal segnale per propagarsi fino all’ head-end e tornare. E’ utilizzato nelle reti a bus tipo Ethernet ed è
standardizzato come IEEE 802.3.
Si compone di una piastra di interfaccia posizionata nel computer, di un cavo e di un transceiver. Uno spezzone può al
max essere lungo 500 metri, più spezzoni possono essere connessi tramite un ripetitore, con un max di 4 ripetitori e
2,5Km di cavo.
Struttura pacchetto :
7
preambolo
10101010
1
inizio
10101011
6
ind.destin.
6
ind.sorgen.
2
lungh.dati
0-1500
dati
0-46
PAD
4
checksum
CRC
Lunghezza minima del pacchetto 64 byte. Il tempo di trasmissione è probabilistico e non deterministico.
Token bus (IEEE 802.4) :
Anello logico
Le stazioni sono collegate fisicamente su un bus, ma sono logicamente collegate come un anello. E’ abilitata a
trasmettere solo la stazione che possiede il token (piccolo frame di controllo); ogni stazione conosce l’indirizzo del
predecessore e del successore. Quando una stazione riceve il token, lo preleva, trasmette i suoi dati, alla fine lo
A cura del prof. Gino Tombolini
11
reinserisce nella rete passandolo al suo successore. Il protocollo prevede particolari modalità per l’inserimento di nuove
stazioni o l’eliminazione delle stesse.
Struttura pacchetto :
1
preambolo
10101010
1
inizio
violaz.codic
e
1
controllo
dati/contr.
6
ind.destin.
6
ind.sorgen.
0-8182
dati
4
checksum
CRC
1
fine
violaz.codic
e
Token Ring (IEEE 802.5) : lavora su una topologia ad anello, dove le stazioni sono collegate in modalità punto-punto.
Ogni stazione ha la funzione di ripetitore.
A
B
D
C
Nella rete circola un piccolo frame detto Token che concede a turno alle varie stazioni il diritto di utilizzare il canale in
modo esclusivo. Una stazione può utilizzare il canale, dopo aver estratto il token, al massimo per 10 msec. passato tale
tempodeve riemettre il token. Un frame emesso pecorre tutto l’anello e deve essere eliminato dalla stessa stazione
sorgente; in tal modo si effettua anche un riscontro automatico della correttezza dei dati e la relativa ricezione degli
stessi da parte del destinatario. Esistono particolari procedure di controllo del corretto funzionamento dell’anello, per le
priorità, ecc. E’ un protocollo di rete deterministico.
FDDI (Fiber Distributed Data Interface) : è una LAN token rig su fibra ottica ad alte prestazioni. Doppio anello
controrotante, se uno dei due anelli si interrompe, l’altro è usato come riserva.
A cura del prof. Gino Tombolini
12
Strato di collegamento dati
Comprende vari algoritmi di scambio dati per ottenere comunicazioni affidabili ed efficienti tra due macchine adiacenti.
Tale strato accetta bit ‘grezzi’, non sempre esenti da errori, dallo strato fisico e ne controlla la correttezza; per svolgere
tale compito e’ sempre presente una checksum in ciascun frame, inserita appunto dallo strato 2 paritario. Una delle
tecniche più usate per il calcolo della checksum è la tecnica del CRC (codice a ridondanza ciclica) o codice
polinomiale. I bit da trasmettere sono considerati come coefficienti di un polinomio , tale polinomio viene diviso per un
polinomio standard (polinomio generatore); la divisione è di tipo modulo 2 (XOR); il resto della divisione è la
checksum cercata e trasmessa.
A questo livello vengono gestiti vari tipi di protocolli elementari di scambio dati, che appartengo a due tipi fondamentali
:
• protocollo PAR (positive acknowledge with retrasmission) : ogni frame ha bisogno di un riscontro da parte del
ricevitore; tale riscontro abilita il trasmettitore ad una nuova trasmissione; è sempre di tipo half duplex.Poco
efficiente e lento.
A
0
1 --------T--------- 1 ---------T----- 1
dati
ack
dati
errati
dati
X
B
0
1
ack
dati
X
ack
1
• protocollo sliding window : i riscontri vengono inviati in piggybacking, sfruttando il traffico di ritorno tra le due
macchine, Ogni frame ha un numero di sequenza rappresentato su n bit ; in ogni istante il trasmettitore gestisce una
lista di numerio di sequenza consecutivi che ha il permesso di trasmettere (finestra di trasmissione). Il ricevitore
gestisce una finestra di ricezione corrispondente ai frame che ha il permesso di accettare.
--------------- T -----------------T---------0 1 2 3
0
4 5 6 7
5
1 1
2
1
2
3
0
1
2
3
--> liv.3
4 5 6 7
-> -> -> ->
scartato
Esempi di protocolli dello strato 2 sono il BSC (stop and wait) e HDLC (sliding window).
A cura del prof. Gino Tombolini
13
Strato di rete
Si occupa di instradare i messaggi, cercando il percorso migliore per raggiungere il destinatario. Può lavorare secondo
la tecnica del circuito virtuale (similitudine collegamento telefonico) o del datagramma (similitudine collegamento
postale). L’itinerario è stabilito una volta per tutte nel caso del circuito virtuale, mentre viene stabilito da ogni IMP per
ogni pacchetto nel caso di datagramma.
Ogni macchina è identificata tramite un indirizzo (numerico) di livello 3, oltre ad un nome mnemonico più comodo per
l’utente ed una tabella di conversione nome-indirizzo.
Gli algoritmi di instradamento devono ottimizzare il costo, calcolato come somma dei costi delle linee attraversate, e gli
hops (numero di IMP attraversati), oltre ad essere semplici e veloci per non inserire troppi ritardi nell’invio di pacchetti.
• Algoritmi statici :
• fixed directory routing : ogni IMP possiede una tabella contenente gli indirizzi di tutte le macchine
raggiungibili e di macchine router, nel caso di indirizzi sconosciuti.
• flooding : ogni messaggio viene ritrrasmesso su tutte le linee collegate, eccetto quella da cui è stato
ricevuto; crea molto traffico ma la consegna del messaggio è assicurata; un miglioramento si ottiene
associando ai pacchetti il ‘tempo di vita’.
• Algoritmi adattativi :
• routing centralizzato : Esiste un RCC (routing control center) che periodicamente riceve informazioni da
tutti gli IMP, costruisce tabelle di instradamento che distribuisce a tutti gli IMP.
• routing isolato : ogni IMP calcola isolatamente le tabelle; gli algoritmi più noti sono :
• Hot potato (invio sulla coda di attesa più breve)
• Backward Learning ( ricava informazioni su host e IMP dai pacchetti ricevuti).
• routing distribuito: gli IMP collaborano per la costruzione delle tabelle di instradamento :
• distance vector : ogni IMP possiede un distance vector per ogni linea; tale distance vector
rappresenta la tabella di instradamento dell’IMP collegato sulla linea associata e che viene ricevuto
periodicamente. Ogni IMP costruisce la propria tabella di instradamento per fusione dei vari
distance vector.
router A ind.3
tabella di
instrad.
tabella di A
indirizzo
1
2
3
4
5
hops
5
3
0
2
1
router B ind 5
distance
vector
di B
costo
25
20
0
15
5
linea 3
linea 8
costo 5
linea
3
2
0
3
3
distance
vector
di A
distance vector di A memorizzato in B
indirizzo
hops
1
6
2
4
3
1
4
3
5
2
tabella di
instradam.
costo
30
25
5
20
10
ovviamente B non utilizzerà
l’informazione dell’indirizzo .5
• Link State Packet (LSP) : ogni IMP possiede una mappa completa della rete ed usa l’algoritmo di
Dijkstra per calcolare il percorso più breve. Ogni Imp, tramite protocolli di neghtbor greetings
(periodicamente ogni host invia un messaggio di controllo con il significato di “macchina X
attiva”) riesce a conoscere le macchine a lui adiacenti; in tal modo riesce a costruire una tabella
contenente gli indirizzi delle macchine adiacenti (LSP). Periodicamente comunica tale LSP a tutti
A cura del prof. Gino Tombolini
14
gli altri IMP tramite selective flooding. Alla ricezione di tali informazioni ogni IMP riesce a
costruire la mappa della rete.
A
B
R2
costo 3
costo 5
R1
costo 4
C
R3
R4
LSP di R1
macchina
A
B
C
R1
R2
R3
costo
4
4
4
0
3
5
In memoria viene costruita una mappa completa della rete; un possibile esempio molto elementare :
2
B
D
1
A
4
2
3
F
2
2
C
2
E
Su questa agisce l’algoritmo di Dijkstra per calcolare i percorsi ottimale per raggiungere qualsiasi IMP della rete.
Tutti i nodi del grafo vengono numerati da 1 a n. La rappresentazione
del grafo è costituita da una matrice di adiacenza G cioè una matrice in
cui in ogni elemento (1,1) è contenuto il peso dell’arco che va da i a j.
Dati:
x valore di input che rappresenta il nodo iniziale;
n numero dei nodi;
G(n,n) peso dell’arco da i a j; per gli archi non esistenti valore —1;
V(n) vettore booleano che indica se un nodo è stato visitato;
D(n) vettore dei pesi delle distanze minime da ogni nodo alla sorgente x;
P(n) vettore dei nodi precedenti lungo il cammino minimo da i a x.
per i da 1 a n
d(i) infinito
v(i) = falso
p(i) = 0
fine per
d(x)= 0
ripeti
m = infinito
//trova il nodo che ha distanza minima da x tra quelli non ancora
visitati
per i da 1 a n
se v(i) = falso
se d(i) <=m allora
m = d(i)
j=i
fine se
fine se
fine per
se m non è infinito //se ci sono ancora nodi da visitare
v( j) = vero
//marca il nodo come visitato
// esamina i nodi di frontiera per j
per i da 1 a n
se g (i, j) > 0 //se esiste l’arco, cioè i è un successore di j
se d(i) > d(j) + G(i,j)
d(i) = d(j) + G(i, j)
p(i) = j
fine se
fine se
fine per
fine se
finché m = infinito //tutti i nodi sono stati visitati
Al termine il vettore D contiene il peso dei cammini minimi per ogni
destinazione.
Il vettore P permette di ricostruire il cammino da x a ogni nodo.
Il cammino inverso da un nodo i a x si ottiene con:
j =i
ripeti
stampa p(j)
j = p(j)
finché j = x
Routing gerarchico
Dato che le tabelle di routing possono essere grandi e la relativa consultazione può portare a ritardi nella trasmissione, la rete
viene suddivisa in regioni. L’IMP mantiene le informazioni per le destinazioni all’interno della regione, mentre tutte le altre
destinazioni sono considerate come una sola ed i pacchetti vengono inviati ad un router alla periferia della regione, il quale si
occuperà dell’instradamento verso le altre regioni. I percorsi si allungano ma si risparmia spazio nelle tabelle di routing.
A cura del prof. Gino Tombolini
15
CONTROLLO DELLA CONGESTIONE
Le tecniche piu’ utilizzate:
la preallocazione di risorse;
lo scarto dei pacchetti;
il passaggio di gettone;
il controllo del flusso;
Algoritmi a ciclo aperto (leaky bucket e token bucket);
i pacchetti di strozzamento.
La preallocazione delle risorse prevede che, al momento della definizione del circuito virtuale, venga fatta anche
un’allocazione preventiva dei buffer dati che devono contenere temporaneamente i pacchetti che transitano lungo la rete, in
attesa di proseguire il cammino verso la destinazione.
Con lo scarto dei pacchetti non viene riservata in anticipo alcuna risorsa; se non esiste lo spazio per allocare un pacchetto in
transito, allora si scartano i pacchetti che giungono alla stazione congestionata.
Il metodo del passaggio di gettone prevede che esistano dei pacchetti speciali (i gettoni) che circolano liberamente nella rete:
ogni volta che una stazione vuole effettuare una trasmissione blocca un gettone, effettua la sua comunicazione e alla fine
libera il gettone che ritorna a circolare nella rete.
Il metodo basato sul controllo del flusso agisce sul livello di trasporto affinché non accada che una stazioni saturi gli altri suoi
vicini.
Il leaky bucket (secchio bucato) inserisce i pacchetti in una coda finita e li lascia uscire ad un ritmo costante definendo un
massimo numero di byte per intervallo di tempo.
Il secchio di gettoni (token bucket) utilizza una coda di gettoni generati ad intervalli regolari di tempo; un pacchetto per
essere trasmesso deve trovare un gettone disponibile. Il metodo riesce a gestire picchi di traffico, non scarta mai pacchetti,
può scartare gettoni (secchio pieno)
L’ultimo metodo utilizza i pacchetti di strozzamento (CHOKE) che funzionano come dei campanelli d’allarme, indicando alle
stazioni il livello di congestionamento del traffico.
Ad ogni linea è associato un peso indicatore del traffico che si riesce a supportare, e se viene superata la soglia viene rispedito
indietro un pacchetto di strozzamento; a questo punto la stazione “avvertita” deve ridurre il traffico (in genere del 50% e poi
prova ad riaumentarlo con piccoli incrementi). La forma estrema di congestione del traffico è lo stallo.
Strato di trasporto
Fornisce il servizio di trasporto dati affidabile e poco costoso. Il suo funzionamento è molto simile a quello dello start di retee
vale la pena chiedersi a che cosa serva: siccome lo strato di rete fa parte della sottorete di comunicazione ed è quindi
totalmente gestito dalla società di telecomunicazioni, che magari fornisce solo un servizio di tipo datagram inaffidabile, come
potrei avere un servizio affidabile e di tipo circuito virtuale? Ecco allora lo strato di trasporto, locale all’utente che si occupa
di fornire un servizio circuito virtuale o datagram per connettere utenti (i processi del livello sessione).
Esso fornisce primitive software standard utilizzando le quali è possibile scrivere software in grado di girare su architetture di
rete di tipo diverso, senza preoccuparsi delle differenze tra le interfacce o della trasmissione poco affidabile.
Strato di sessione
Strato molto ‘sottile’ con pochi servizi. Il suo scopo è quello di fornire agli utenti (i processi attivi sugli host) un moodo per
identificarsi e stabilire più connessioni (appunto le sessioni di lavoro) per effettuare lavori anche diversi.
Un attuale metodo, standard de facto, di gestire le connessioni è la tecnica del Remote Procedure Call (RPC), sviluppato dalle
università e dalle industrie ma non conforme allo standard OSI.
A cura del prof. Gino Tombolini
16
Strato di presentazione
I suoi compiti principale sono :
• Compressione dati : si usano varie tecniche
• in base alla frequenza delle lettere (Huffman)
• in base alle dipendenze dei caratteri( codifica aritmetica, a vocabolario)
• dipendentemente dal contesto (lunghezza delle file di 0 o 1).
• conversione dati da formato interno alla macchina a formato di rete; molto nota la tecnica ASN.1 (Abstract Syntax
Notation, 1 perchè la prima in assoluto) usata in RPC e successivamente standardizzata.
• crittografia e cifratura per i problemi di sicurezza e segretezza dei dati :
• crittografia a chiave simmetrica (si usa una sola chiave per la cifratura e la decifrazione); più la chiave è lunga più la
segretezza è sicura: esempio se K=40bit si hanno 2^40 possibili K (circa 10^12 K), prevedendo di provare 1K/msec
il tempo per scoprire la chiave è 10^9sec (cioè circa 10^4 giorni); una K di 128 bit è più sicura.
• sostituzione: ogni lettera è rimpiazzata da un'altra (cifrario di Cesare e cifrari a sostituzione monoalfabetica)
• trasposizione (le lettere vengo mischiate secondo algoritmi ben precisi)
• blocchi monouso (one-time pad) immune a tutti gli attacchi: si genera una stringa di bit a caso e si fa lo XOR
con il plain-text. Metodo ottimo ma non utilizzabile (chiave memorizzabile solo su supporto, il plain-text può
essere lungo al max come la chiave, impossibile correggere carattteri persi)
• DES (Data Encryption Standard) della IBM (vengono effettuate sostituzioni e trasposizioni su gruppi di bit
del messaggio, chiavi di 56 bit)
• TripleDES evoluzione del DES con chiave a 112bit.
• AES (Advanced Encryption Stadard) dal 1997: algoritmo pubblico che supporta chiave a 256 bit.
• crittografia a chiave asimmetrica (usa un algoritmo di cifratura E ed un algoritmo di decifrazione D fatti in modo
che non si possa ricavare D avendo a disposizione E: E diventa di dominio pubblico mentre D è conosciuto solo da
coloro che sono autorizzati). Esempio di algoritmo RSA :
- P, Q numeri primi (ciascuno maggiore di 10100 );
- si calcola N=P*Q e Z=(P-1)*(Q-1)
- si sceglie D come numero primo rispetto a Z
- si determina E tale che E*D=1 mod Z
- per ogni messaggio in chiaro M si calcola C=ME (mod N): questo è il testo cifrato (occorre conoscere E ed N
: chiave pubblica);
- per decifrare occorre conoscere D ed N (D è la chiave segreta); si calcola CD (mod N)
esempio molto elementare : P=3 Q=11, da cui N=33 Z=20; si può scegliere D=7 (D e Z non hanno fattori
comuni); poichè E*7=1 mod N si trova E=3. Messaggio =“CIAO”
testo chiaro
numerico
M3
M3(mod 33)
C7
C7(mod 33)
C
3
27
27
10460353203
3
I
9
729
3
2187
9
A
1
1
1
1
1
O
15
3375
9
4782969
15
RSA permette di cifrare tutti i messaggi che, interpretati come numero binario, siano minori del modulo N; in realtà se
si ha una chiave lunga X byte (X*8 bit), i dati in chiaro che possono essere criptati non possono essere più lunghi di
X-11 byte.
Crittografia
I messaggi che passano sulla rete sono in realtà facilmente intercettabili. Esempi di attacchi che mirano all'intercettazione dei
messaggi sono lo sniffing (intercettare i messaggi e le informazioni) e lo spoofing dell'indirizzo IP (sostituirsi ad un utente o
ad un indirizzo IP, facendo credere di essere un’altra persona).
Il problema di inviare messaggi riservati attraverso sistemi di distribuzione non affidabili è sentito da secoli dall’ambito
militare all’ambito civile.
La crittografia è un procedimento di codifica e decodifica dei messaggi basata su funzioni parametriche, la cui computazione
dipende da un parametro detto chiave. Un messaggio crittografato non è direttamente leggibile se non si possiedono una
funzione e una chiave per decriptarlo.
Il modello su cui è basato un sistema crittografico è il seguente:
• un mittente A vuole inviare un messaggio M a un destinatario B.
• A cripta il messaggio, ovvero applica al messaggio un metodo di cifratura F con chiave di cifratura K.
A cura del prof. Gino Tombolini
17
• Il messaggio così modificato viene poi spedito via rete a B.
B riceve un messaggio apparentemente illeggibile, ma possiede un metodo di decifratura F' e una chiave K' che consentono di
riportare il messaggio in chiaro.
Se un intruso dovesse intercettare il messaggio cifrato non sarebbe in grado di leggerlo a meno di possedere F' e K'.
Le chiavi di cifratura e decifratura possono coincidere e in questo caso si parla di crittografia a chiave simmetrica, oppure
possono essere diverse e in questo caso si parla di crittografia a chiave asimmetrica.
Principio di KERCHOFF: tutti gli algoritmi devono essere pubblici, solo le chiavi sono segrete.
Visto che la segretezza sta nella chiave, la sua lunghezza è un elemento importante in un sistema crittografico. Più lunga è la
chiave più alto è il fattore lavoro del crittoanalista.
Crittografia a chiave simmetrica
I moderni sistemi di crittografia a chiave simmetrica utilizzano meccanismi cosiddetti a blocchi, che prevedono di scomporre
il messaggio da cifrare in blocchi e dunque di operare su di esso per parti. Sui blocchi vengono effettuate operazioni di
codifica e trasposizione ricorsive per cui ciascuna parte del messaggio viene rielaborata più volte. La complessità di questo
tipo di algoritmi mira a rendere difficile la decodifica da parte di un intercettatore anche quando a essere intercettato è un
messaggio lungo che quindi costituisce un caso di prova significativo.
Il più diffuso sistema di cifratura a chiavi segrete si chiama DES (Data Encryption System) ed è un sistema sviluppato
dall'IBM, modificato dalla NSA (National Security Agency) e adottato nel 1977 dal governo USA per la protezione dei dati
militari. DES è basato su un sistema a blocchi e utilizza chiavi di 64 bit, di cui 8 utilizzati come checksum e solo 56 di vera e
propria chiave. DES è un algoritmo poco sicuro poiché è pensato per essere efficiente ma anche protetto, su calcolatori di 25
anni fa. La chiave di 56 bit è decisamente troppo corta e quindi, al giorno d'oggi, può essere usato un algoritmo per tentativi
per identificarla.
Nonostante ciò, DES è molto utilizzato sia nella sua forma primitiva che in forme più articolate, come a esempio il Triple
DES (3DES) che tipicamente utilizza blocchi da 64 bit con chiavi a 112 bit. È usato per esempio nella cifratura delle
password Unix o nei sistemi di autenticazione tipo Kerberos.
Sono stati sviluppati molti algoritmi più moderni (e più sicuri) di DES, tra i quali IDEA (International Data Encription
Algorithm) del 1991 che utilizza chiavi a 128 bit e AES (Advanced Encryption Standard) del 2000 che utilizza chiavi lunghe
fino a 256 bit.
Anche sistemi con chiave simmetrica impossibili da individuare soffrono di alcuni problemi, dovuti al fatto che la chiave
deve essere comunicata al destinatario B perché questo possa decifrare il messaggio. La chiave potrebbe esser intercettata ed
usata in maniera fraudolenta dall’intercettatore, sia per decodificare informazioni, sia per inserirne di false.
Crittografia a chiave asimmetrica
La crittografia a chiave asimmetrica è un metodo basato sull'esistenza di due diverse chiavi, una utilizzata per criptare e una
utilizzata per decriptare. Ciascun utente deve quindi possedere due chiavi, una privata che conosce solo lui e una pubblica che
rende nota a tutti. Ovviamente esiste una relazione matematica tra chiave pubblica e chiave : la sicurezza di un algoritmo
asimmetrico risiede proprio nella difficoltà a individuare la chiave privata, quando si è in possesso di quella pubblica.
Se A vuole inviare un messaggio riservato a B deve dunque procurarsi la chiave pubblica di B (che è disponibile a tutti) e
utilizzarla per criptare il messaggio. B sarà l'unico a riuscire a decriptare il messaggio poiché è l'unico in possesso della
chiave private.
Autenticazione con sistemi a chiave asimmetrica
I sistemi crittografici a chiave pubblica possono essere utilizzati anche per risolvere problemi inerenti l'autenticazione degli
utenti, ovvero per garantire che chi trasmette e chi riceve siano esattamente chi dichiarano di essere. Questo tipo di metodica
è alla base della firma digitale e dei certificati.
Se A vuole inviare un messaggio a B e vuole provare a B che il messaggio è effettivamente suo (di A), allora A può criptarlo
con la sua chiave privata. B riceverà il messaggio e tenterà di decriptarlo con la chiave pubblica di A. Se l'operazione riesce,
allora il messaggio è effettivamente di A, altrimenti B si accorge dell'abuso di identità e può segnalarlo ad A.
A cura del prof. Gino Tombolini
18
In realtà la firma digitale in calce ad un documento oltre a verificare l’identità dichiarata dal trasmettitore, deve anche fare in
modo che il trasmettitore non possa in seguito rifiutarsi di riconoscere se stesso, come autore del messaggio (anche davanti ad
un giudice). Nella pratica si usano una chiave privata ed una pubblica per ogni utente (A e B).
P
K segreta
di A (DA)
DA(P)
EB(DA(P))
K pubblica
di B(EB)
DA(P)
K segreta
di B(DB)
Firma digitale di A
Solo A può aver rilasciato
il messaggio P codificato
come DA(P)
P
K pubblica
di A (EA)
Viene memorizzata
insieme al messaggio
Un algoritmo molto diffuso di codifica a chiave pubblica, basato sulla scomposizione in fattori primi di un numero intero, è
RSA (dal nome dei suoi creatori Rivest, Shamir e Adleman) reso noto nel 1978.
Fingerprint (autenticazione di un documento)
I sistemi di crittografia a chiave pubblica, incluso RSA, sono piuttosto lenti e la necessità di autenticare un'intera
comunicazione può a volte scontrarsi con il ritardo inserito dal criptare l'intero messaggio alla sorgente e dal decriptarlo alla
destinazione.
Per rendere più efficiente il meccanismo si utilizza una funzione di hash attraverso la quale si calcola una stringa
identificativa del messaggio, detta fingerprint (impronta digitale) o message digest composta da un numero limitato di
caratteri (solitamente 128 bit). Questa stringa rappresenta una sintesi del messaggio che è ottenuta attraverso una funzione
non invertibile (dato l'hash non si risale al messaggio) e che ha una probabilità di generare la stessa fingerprint per due
messaggi diversi molto bassa. La funzione di hash deve inoltre essere molto veloce da calcolare, in modo da rendere
significativamente vantaggioso creare il fingerprint del messaggio e criptare quello, piuttosto che criptare tutto il messaggio.
A questo punto è possibile autenticare il messaggio limitando l'uso dell'algoritmo di crittografia a chiave pubblica al solo
fingerprint. Quando A vuole mandare a B un messaggio autenticato e integro, calcola il fingerprint, lo cripta con la sua chiave
privata e lo aggancia in fondo al messaggio in chiaro. Quando B riceve il messaggio può decriptare con la chiave pubblica di
A il fingerprint e verificare che esso corrisponde applicando la funzione di hash al messaggio ricevuto. Se non c'è conformità
tra il fingerprint calcolato e quello autenticato, il messaggio non è integro.
Un algoritmo di hash molto utilizzato in crittografia è MD5 (Message Digest 5, 1992) che produce fingerprint di 128 bit.
PGP
I sistemi di crittografia propongono spesso soluzioni ibride che utilizzano contemporaneamente più tecniche. Una
motivazione a questa scelta è dettata dalla lentezza degli algoritmi a chiave pubblica che impedisce il loro utilizzo in contesti
in cui la comunicazione deve essere sollecita. D'altro canto i sistemi a chiave privata hanno il problema della trasmissione
sicura della chiave. Una soluzione ibrida di grande successo è PGP (Pretty Good Privacy) del 1991 che utilizza come base la
cifratura simmetrica di IDEA, la crittografia asimmetrica di RSA e il l'hashing di MD5 per le fingerprint.
Quando A vuole mandare un messaggio riservato a B, genera casualmente una chiave K e la invia a B criptandola con la
chiave pubblica di B. B riceve il messaggio criptato e decriptandolo con la sua chiave privata ottiene K. K è detta chiave di
sessione poiché la prossima sessione di comunicazione tra A e B avverrà utilizzando K come chiave. A può a questo punto
codificare con IDEA il messaggio utilizzando K come chiave. B conosce K e comprende il resto della comunicazione.
Certification authority
Per garantire effettivamente che una chiave pubblica corrisponda ad una e una sola persona, e ottenere così quella
caratteristica di non ripudio che è indispensabile a condurre a termine attività che abbiano effetti legali (dalla sottoscrizione di
un contratto al verbale di un esame universitario) occorre un'istituzione che certifichi le chiavi.
A cura del prof. Gino Tombolini
19
Occorre cioé che la chiave pubblica sia in qualche modo garantita da una terza parte che ne ratifichi la validità. Questa terza
parte viene chiamata Certification Authority .
Certificati digitali
Un certificato è un documento elettronico che associa una chiave pubblica , e di conseguenza la chiave privata
corrispondente, a una particolare identità. Il certificato viene emesso dalla Certification Authority , che è il garante
dell'identità del proprietario del certificato. La Certification Authority, per convalidare il certificato emesso, lo firma con la
sua chiave pubblica.
Dunque un certificato tipicamente contiene:
• i dati relativi al proprietario, tra cui il nome e la chiave pubblica;
• i dati relativi al certificato, tra cui la data di scadenza e il numero di serie del certificato;
• i dati relativi alla Certification Authority, ovvero il nome e la firma digitale.
È la Registration Authority che si incarica delle pratiche di identificazione prima dell'emissione dei certificati. La
Certification Authority, invece, emette il certificato e ne segue il ciclo vitale, rendendolo pubblico con un sistema on line
sempre disponibile. Sia le Registration che le Certification Authority svolgono dunque un ruolo fondamentale e
particolarmente delicato, per cui sono scelte tra soggetti altamente affidabili e sopra le parti.
X.509
Questa sigla rappresenta lo standard per i certificati. La sua funzione principale è quella di descrivere i certificati.
Certificati e Web
Il browser che si collega a un sito Web sicuro, utilizza come protocollo SSL (Secure Sockets Layer) e inizia una sessione
sicura chiedendo al server Web il suo certificato. Il server invia il certificato e il browser ne verifica la validità. Solo a questo
punto le due parti concordano una chiave di sessione che utilizzeranno per la codifica dei messaggi successivi. È il client che
genera la chiave di sessione e la cripta con la chiave pubblica del server Web (la stessa indicata sul certificato). Solo il server
Web può quindi leggere il messaggio ed entrare in possesso della chiave di sessione. Questa chiave verrà usate per criptare i
messaggi successivi, utilizzando l'algoritmo a chiave privata DES.
A cura del prof. Gino Tombolini
CRITTOGRAFIA SIMMETRICA (AES) CON OPENSSL
#cryptiamo il file mess.txt mediante aes256cbc (password 'ciao')
openssl aes-256-cbc -a -salt -in mess.txt -out mess.txt.aes
#decryptiamo il file mess.txt.aes mediante aes256cbc (password 'ciao')
openssl aes-256-cbc -d -a -in mess.txt.aes -out mess-aes.txt
CRITTOGRAFIA ASIMMETRICA CON OPENSSL E FIRMA DIGITALE DI UN DOCUMENTO
#genero le chiavi RSA sul file gino-rsa.key (ovviamente privato)
openssl genrsa -out gino-rsa.key 2048
# generiamo la chiave pubblica da distribuire (file gino-rsa.pubkey)
openssl rsa -in gino-rsa.key -pubout -out gino-rsa.pubkey
#visualizziamo la nostra chive pubblica
openssl rsa -in gino-rsa.pubkey -pubin -text
#cryptiamo il file mess.txt utilizzndo la chiave pubblica di gino
openssl rsautl -encrypt -in mess.txt -pubin -inkey gino-rsa.pubkey -out mess-crypt.txt
#decodifichiamo il messaggio criptato con la chiave pubblica
openssl rsautil -decrypt -in mess-crypt.txt -inkey gino-rsa.key
#calcolo il digest di un documento (mess-dafirmare.txt)a e lo firmo con la k privata
openssl dgst -sha1 -out digest-firmato.txt -sign gino-rsa.key mess-dafirmare.txt
#verifico il documento (mess-dafirmare.txt)mediante il digest-firmato e la chiave pubblica
openssl dgst -sha1 -verify gino-rsa.pubkey -signature digest-firmato.txt mess-dafirmare.txt
20
A cura del prof. Gino Tombolini
21
La compressione
Un altro importante problema affrontato da questo strato è quello di ridurre al massimo il numero di bit trasmessi,
mantenendo inalterata la quantità di informazione effettivamente trasmessa (compressione). Questo, oltre a portare risparmi
sulle spese dei collegamenti, riduce anche la congestione delle linee. Le tecniche utilizzate sono legate:
• alla limitatezza ed equiprobabilità dell’insieme di dati da trasmettere
o esempio: trasmissione dei titoli di libri di una biblioteca di 20 caratteri, occorrono 140 bit, ma con 140 bit codifico
2140 oggetti; dato che la biblioteca più fornita contiene al max 226 titoli conviene spedire una sola volta l’elenco
completo di tutti i titoli con supporti diversi da quello di rete (ad esempio una cassetta o un CD) e poi codificare con
un numero ogni titolo, facendo riferimento all’elenco generale. In tal modo mi bastano 26 bit per comunicare il titolo
di un libro. Un nuovo titolo, con cui aggiornare l’elenco può essere comunicato come eccezione allo standard, ad
esempio inviando il codice libro 0 e poi il titolo in Ascii, seguito da un carattere di fine titolo (Null o Etx).
• Le frequenze relative con cui sono usati i simboli
o La tecnica di riferimento è quella di Huffman (già studiata) che tende a codificare con un minor numero di bit i simboli
più probabili; il limite è che non sempre si riesce ad arrivare al limite teorico a causa del numero intero di bit usati per
ogni simbolo (non possiamo usare mezzo bit o altro)
S
C
S
C
PROB
PROB
Y
O
Y
O
M
D
M
D
o
A
0,129
100
N
0,056
0110
B
0,040
11000
O
0,100
001
C
0,047
0001
P
0,035
11000
D
0,029
10100
Q
0,008
0000101
E
0,088
1111
R
0,060
0111
F
0,023
00000
S
0,070
1011
G
0,032
10101
T
0,044
11101
H
0,018
110010
U
0,012
000011
I
0,080
1101
V
0,020
110011
Efficienza di un codice =Entropia / lungh.media del codice
L
0,050
0100
Z
0,004
0000100
M 0,055
0101
pi * I i
Entropia =
∑
i
Lungh.media del codice =
∑ p *l
i
i
I i = − log 2 pi
i
A cura del prof. Gino Tombolini
22
La codifica aritmetica tende a superare i limiti di Huffman, utilizzando i numeri reali per la codifica dei simboli.
Esempio : dati i simboli A con prob. 0.50, C con 0.30, G con 0.15 e T con 0.05, si debba codificare la stringa CAT.
Fatta la costruzione a), si usa l’intervallo 0.50-0.80 per codificare la C; tale intervallo, considerato come unitario,
viene suddiviso come in b). il simbolo A si trova nell’intervallo 0.50-0.65, che viene nuovamente considerato unitario
e risuddiviso come in c). La stringa CAT viene quindi codificata con un qualsiasi numero compreso nell’intervallo
0.6425-0.6500.
•
Il contesto in cui compare un simbolo
o Metodo a dizionario di codifica usato nella compressione Lempel-Ziv (zip, arj, gzip); si usa un buffer (dizionario)
inizializzato con il carattere ritenuto più frequente (ad esempio spazio) e vi si aggiungono man mano stringhe del
messaggio da codificare, se queste non sono già presenti nel buffer. In codifica si cerca nel buffer se la stringa è già
presente e in tal caso si sostituisce con la coppia di valori (posizione, lunghezza) che la identifica nel dizionario.
o Metodo a lunghezza di sequenza (Run Length Encoding) usato per codificare lunghe file di bit per lo più a 0. Ad
esempio dovendo codificare la sequenza 00010000010000001000000000000001100000001 si può codificare con 3,
5, 6,14, 0, 7 e su 3 simboli con 011 101 110 111 111 000 000 111 000 con un risparmio del (41-27)/41% cioè del
34%.
A cura del prof. Gino Tombolini
23
Protocollo TCP/IP
Introduzione
Fu sviluppato negli anni ‘60/’70 dal Ministero della Difesa statunitense con scopi soprattutto militari.
Successivamente venne scisso in due reti : una rete militare ed una rete che collegava le grandi università. I punti di forza del
TCP/IP sono:
• non è specifico di un certo produttore;
• può essere implementato su qualsiasi computer;
• può essere utilizzato sia per reti locali che per reti geografiche.
La famiglia di protocolli TCP/IP comprende oltre a TCP ed IP diversi altri protocolli:
• TCP (transmission control protocol) è un protocollo orientato alla connessione con servizio di byte stream affidabile, full
duplex;
• UDP (user datagram protocol) servizio senza connessione, non è affidabile non essendoci garanzia che i datagrammi
raggiungano il destinatario;
• ICMP (internet control message protocol= protocollo di messaggi di controllo di internet) serve per gestire informazioni
di controllo tra gateway ed host; non è utilizzato dai processi utente;
• IP (intenet protocol) fornisce il servizio di consegna dei pacchetti ai protocolli TCP, UDP, ICMP; non è direttamente
connesso ai processi utente;
• ARP (address resolution protocol= protocollo di risoluzione dell’indirizzo) è il protocollo che trasforma un indirizzo
internet in un indirizzo dell’hardware;
• RARP (reverse address resolution protocol= protocollo inverso di risoluzione dell’indirizzo) è il protocollo che trasforma
un indirizzo dell’hardware in un indirizzo di internet;
ICMP
Processo
di utente
Processo
di utente
Livello 5-7 OSI
TCP
UDP
Livello 4 OSI
IP
ARP
Interfaccia
hardware
RARP
Livello 3 OSI
Livelli 1-2 OSI
- La stratificazione nella suite di protocolli di Internet.
Livello di collegamento dati
A questo livello il protocollo TCP/IP è gestito dall’interfaccia hardware. Può operare su linee telefoniche private a
57.6kbps oppure su linee a 1.544Mbps; nel caso di reti locali lavora classicamente sulla tecnologia Ethernet. Potrebbe
lavorare su linee seriali (si ricorda il protocollo SLIP=serial line internet protocol). Possono essere utilizzati anche
collegamenti via satellite o a radiopacchetti.
Livello di rete : protocollo IP
Il protocollo IP lavora mediante datagram; è un servizio di consegna senza connessione ed inaffidabile. Esso
considera ogni datagramma IP indipendente da tutti gli altri. Le associazioni e le relazioni tra questi datagrammi devono
essere gestite dai livelli superiori. Ogni datagramma IP contiene l’indirizzo di provenienza e l’indirizzo di destinazione in
modo che ogni datagramma possa essere instradato indipendentemente. L’affidabilità di IP dipende esclusivamente dai
A cura del prof. Gino Tombolini
24
protocolli dei livelli superiori. IP calcola e verifica la checksum che riguarda la sua intestazione di 20 bytes che permette di
proteggere gli indirizzi di provenienza e di destinazione da eventuali errori. Se in questi byte viene rilevato un qualche errore,
IP come unica operazione scarta il pacchetto e questo presuppone che un protocollo di levello superiore si occuperà di
ritrasmetterlo. Il livello IP è il responsabile dell’instradamento attraverso una internet; tale internet sarà composta da più
gateways ognuno dei quali dovrà contenere sufficienti informazioni per inoltrare i pacchetti da una rete all’altra.
Processo
di utente
Processo
di utente
TCP
IP
Collegamento
dati
Host 1
Rete 1
LAN
IP
IP
Collegament
o dati
Gateway 1
Collegament
o dati
Gateway 2
WAN
TCP
IP
Rete 2
LAN
Collegamento
dati
Host 2
Un esempio di gateway.
Il livello IP gestisce anche la frammentazione dei pacchetti; ad esempio se un gateway riceve un pacchetto da
trasmettere sulla rete che risulta troppo grande, IP si occupa di frammentarlo e di trasmettere i singoli pacchetti sulla rete
dopo averne modificato l’intestazione aggiungendo ad ognuno di questi gli indirizzi; i pacchetti di IP vengono consegnati
indipendentemente l’uno dall’altro e saranno riassemblati solo quando avranno raggiunto la destinazione finale. Se qualche
frammento viene perduto, l’host di destinazione scarterà l’intero datagramma. Il livello IP fornisce inoltre una forma
elementare di controllo del flusso: quando i pacchetti IP arrivano ad un host troppo velocemente, il modulo IP invia al
protocollo ICMP del sistema di provenienza un pacchetto di controllo per avvisarlo di quello che sta accadendo, cosicchè
l’host di provenienza rallenterà la quantità di dati inviati sulla connessione. Ogni host su una rete TCP/IP ha un indirizzo
unico di 32 bit. L’indirizzo è di natura bidimensionale : una parte di questi 32 bit codifica l’indirizzo della rete, la parte
restante codifica l’indirizzo dell’host all’interno della rete. Gli indirizzi sono assegnati da una autorità centrale
(NIC=Network Information Center). L’indirizzo TCP/IP ha uno dei quattro formati mostrati nella figura :
Classe A
Classe B
Classe C
7 bit
ID rete
0
1
1
14 bit
ID rete
0
1
24 bit
ID host
16 bit
ID host
21 bit
ID rete
0
8 bit
ID host
Classe D
1
1
1
0
28 bit
indirizzo multicast
Classe E
1
1
1
1
28 bit
riservata per sviluppi futuri
I formati degli indirizzi di Internet.
Gli indirizzi di classe A servono a quelle reti che hanno molti host collegati sulla stessa rete; quelli di classe C
permettono di avere pochi host sulla rete (riservano pochi bit per l‘indirizzo di host) ma consentono di avere molte reti. Il
A cura del prof. Gino Tombolini
25
NIC assegna solo il tipo di indirizzo (A o B o C) e l’ID di rete, spetta al gestore del sistema di assegnare gli indirizzi di host
all’interno della rete. Gli indirizzi TCP/IP sono scritti di solito come 4 cifre decimali separate da punti; le quattro cifre
rappresentano i quattro byte che compongono l’indirizzo di 32 bit. Ogni datagramma IP contiene nella sua intestazione
l’indirizzo di destinazione (32 bit) e di provenienza (32 bit). Per l’instradamento i gateway utilizzano esclusivamente l’ID di
rete. Un host multihomed, connesso cioè a due o più reti, possiede un indirizzo per ogni rete a cui è collegato. E’ possibile
operare una ulteriore suddivisione degli indirizzi degli host all’interno di una rete introducendo il concetto di sottorete
(NETMASK), gestibile direttamente dal possessore di un indirizzo (o meglio un insieme di indirizzi) di rete. In questo modo
si ottiene una ulteriore suddivisione logica degli host all’interno della rete.
SUBNET (Netmask)
Network address
HOST
subnet
host
Poiché molto spesso i protocolli TCP/IP lavorano su reti locali di tipo Ethernet, possono sorgere dei dubbi
relativamente alla differenza tra gli indirizzi TCP/IP di internet (32 bit) e gli indirizzi di Ethernet di 48 bit. Gli indirizzi di
Ethernet di 48 bit sono assegnati dal produttore della piastra di interfaccia e sono del tutto unici. Si creano quindi i problemi
di associare indirizzi di internet ed indirizzi di Ethernet. Questo lavoro è svolto dai protocolli ARP e RARP. Il protocollo
ARP trasmette, con un pacchetto IP in broadcasting, una richistesta verso l’host, con indirizzo internet noto, di rispondere con
il proprio indirizzo Ethernet; in questo modo l’host richiedente potrà mantenere una corrispondenza tra indirizzo di internet
ed indirizzo Ethernet per tutti i pacchetti futuri. Il protollo RARP permette ad ogni macchina di conoscere il proprio indirizzo
Ethernet, letto direttamente dall’hardware, e di associarlo al proprio indirizzo internet.
A cura del prof. Gino Tombolini
26
Esempio di indirizzamento IP
Subnet 1
190.3.9.2
H4
R4
190.3.1.254
190.3.1.250
190.3.1.1
R1
190.3.7.1
Subnet 9
NET 190.3
Subnet 7
Netmask 255.255.255.0
190.3.7.2
190.3.9.3
R2
R3
190.3.3.2
190.3.6.8
FDDI
190.3.6.3
R5
190.3.3.1
H1
190.3.6.7
190.3.3.3
Subnet 3
H2
H3
Subnet 6
190.3.6.2
A cura del prof. Gino Tombolini
Esempio di tabella di R5
Subnet destinatario Indirizzo router a cui inviare
190.3.1.0
190.3.3.2
190.3.7.0
190.3.3.2
190.3.9.0
190.3.6.8
27
Esempio di comandi per creazione tabella
route add 190.3.1.0 190.3.3.2
route add 190.3.7.0 190.3.3.2
route add 190.3.9.0 190.3.6.8
route add default 190.3.1.1
Livello di trasporto : protocolli UDP e TCP
I protocolli TCP e UDP fanno parte del livello di trasporto ed interagiscono con il livello superiore, dove troviamo i
processi utente, e con il livello inferiore di rete, dove troviamo il protocollo IP. UDP è un protocollo inaffidabile e senza
connessione. TCP è invece un protocollo affidabille, full-duplex ed orientato alla connessione; deve quindi contenere in sé la
logica necessaria a fornire un circuito virtuale per un processo utente. TCP gestisce l’attivazione e la terminazione di
connessioni tra processi, l’ordinamento sequenziale di dati che potrebbero essere ricevuti in ordine diverso da quello con cui
sono stati trasmessi, i riscontri dei pacchetti, il checksum, i timeout. L’UDP dispone di due caratteristiche in più rispetto ad IP
(protocollo al quale è molto simile e con cui lavora in stretto contatto) e cioè : i numeri di porta ed il controllo del
checksum sui datagrammi.
In un sistema si possono avere più processi utente attivi contemporaneamente utilizzanti alcuni il protocollo TCP,
altri il protocollo UDP. Questo richiede che si possano identificare in maniera univoca i dati relativi a ciascun processo. Sia il
TCP che l’UDP impiegano numeri di porta (interi a 16 bit) per questa identificazione. Quando un processo client vuole
contattare un certo server, oltre a conoscere l’indirizzo di internet (32 bit) dell’host in cui risiede il server, deve anche
conoscere l’indirizzo di porta con il quale è identificabile il processo server. Alcuni server lavorano ad indirizzi di porta ben
noti (well-known address), ad esmpio l’FTP, un servizio di file transfer, è contattabile all’indirizzo ben noto 21.
Nell’intestazione del livello di trasporto si hanno 16 bit per identificare il numero di porta di destinazione ed altri 16 bit per
identificare il numero di porta di provenienza. Il numero di porta della destinazione rappresenta il numero di porta a cui
contattare il server, mentre il numero di porta della provenienza viene assegnato dinamicamente dal protocollo TCP o UDP.
Questi particolari numeri di porta vengono chiamati numeri di porta effimeri e valgono solo dal momento dell’attivazione
fino alla disattivazione del collegamento tra i due processi. Essi non servono al processo locale a cui vengono assegnati, ma al
processo remoto (normalmente un server) che in questo modo riesce a conoscere l’indirizzo completo (indirizzo internet +
indirizzo di porta) del processo con cui sta colloquiando. I numeri di porta da 1 a 255 sono riservati. I numeri di porta
effimeri sono al di sopra di questi valori.
Il livello di trasporto trasferisce successivamente questo pacchetto, contenente i dati e l’intestazione con i numeri di
porta, al livello di rete; quest’ultimo inserirà la sua intestazione IP (indirizzo internet di 32 bit di destinazione e di
provenienza) in modo da poter identificare univocamente i due host che stanno comunicando. L’intestazione IP contiene
anche un identificatore del tipo di protocollo che si sta utilizzando, in modo che il livello IP remoto potrà determinare se ciò
che ha ricevuto è un datagram per TCP o per UDP.
Il pacchetto del livello di rete viene successivamente passato al livello di collegamento dati e qui viene inserita una
intestazione che dipende dal tipo di trasmissione che si sta effettuando; ad esempiop se la comunicazione avviene su una rete
Ethernet, viene inserita una intestazione di 14 byte ed una chiusura di 4 byte. Questa intestazione contiene l’indirizzo di
provenienza e l’indirizzo di destinazione di 48 bit ciascuno direttamente forniti dall’hardware dell’interfaccia.
Si crea quindi una associazione comprendente:
{ tipo di protocollo, indirizzo internet dell’host locale, indirizzo di porta dell’host locale, indirizzo internet dell’host
remoto, indirizzo di porta dell’host remoto}
A cura del prof. Gino Tombolini
28
dati
n.porta prov. UDP, 16 bit
n.porta dest. UDP, 16 bit
intest. UDP
dati
intest. IP
intest. UDP
dati
intest. IP
intest. UDP
dati
Protocollo = UDP
Indir. prov. Internet, 32 bit
Indir. dest. Internet, 32 bit
Tipo di frame = IP
Indir. prov.
Ethernet, 48 bit
Indir. dest.
Ethernet, 48 bit
Intest. Ethernet
14
20
Frame Ethernet
8
L’incapsulamento dei dati di UDP in una rete Ethernet.
chiusura
Ethernet
4
A cura del prof. Gino Tombolini
29
dati
n.porta prov. TCP, 16 bit
n.porta dest. TCP, 16 bit
intest. TCP
dati
intest. IP
intest. TCP
dati
intest. IP
intest. TCP
dati
Protocollo = TCP
Indir. prov. Internet, 32 bit
Indir. dest. Internet, 32 bit
Tipo di frame = IP
Indir. prov.
Ethernet, 48 bit
Indir. dest.
Ethernet, 48 bit
Intest. Ethernet
14
20
Frame Ethernet
20
L’incapsulamento dei dati di TCP in una rete Ethernet.
chiusura
Ethernet
4
A cura del prof. Gino Tombolini
30
Formato dell’intestazione TCP
0
31
4
8
16
24
Source Port
Destination Port
Sequence Number
Acknowledgement number
Data offset
Res
Checksum
Control
Window
Urgent Pointer
Options
Padding
Formato dell’intestazione UDP
0
31
4
8
16
24
Source Port
Message Legth
Destination Port
Checksum
Dati
Formato del pacchetto IP
0
31
4
Version
8
HLEN
Identification
Time to live
16
24
Service type
Flags
Protocol
Total Length
Fragment Offset
Header Checksum
Source IP address
Destination IP address
Options
Padding
A cura del prof. Gino Tombolini
31
Livello di applicazione
I protocolli TCP/IP forniscono una grande varietà di applicazioni standard e ciò ha determinato il successo della
famiglia di protocolli stessi. Accenno solo ad alcuni.di essi.
FTP (File Transfer Protocol) è un programma uitilizzato per trasferire file da un sistama ad un altro. E’ composto da un ricco
insieme di caratteristiche ed opzioni.
TELNET (o login remoto) fornisce un modo per effettuare il login remoto consentendo ad un utente interattivo in un sistema
client di avviare una sessione di lavoro di login in un sistema remoto.
RCP simile a FTP.
TFTP semplificazione di FTP.
SMTP (Simple Mail Tranfer Protocol) protocollo di posta elettronica; usa indirizzi del tipo :
Nome_utente@nome_elaboratore
DNS (Domain Name Service) base di dati per gestire l’associazione nome<-->indirizzo.
BOOTP bootstrapp per stazioni diskless.
RSH esecuzione remota di comandi.
RWO verifica gli utenti connessi ad un elaboratore.
NFS (Network File System) permette di condividere file system tar più elaboratori.
SNMP (Simple Network Management Protocol) protocollo per la gestione remota della rete.
X-WINDOW software di rete client-server che permette ad un client di visualizzare dati grafici dal display di un altro
elaboratore.
NIR (Network information Retrieval) servizi di tipo ipertestuale che permettono di ricercare informazioni sulla rete (motori
di ricerca : WWW, GOPHER..).
Servizi multicast introdotti per ultimi, permettono audio e video conferenza, multimedialità. E’ stata definita una sottorete di
Internet per fornire tali servizi (MBONE= Multicast backBone).
A cura del prof. Gino Tombolini
OSI
Application
32
Internet Protocol Suite
Telnet
NFS
FTP
Presentation
XDR
SMTP
Session
SNMP
Transport
RPC
TCP e UDP
ICMP
Network
IP
ARP e RARP
Data Link
Non specificati
Physical
Protocolli di
routing