Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
RETI DI CALCOLATORI
Informatica
Dispense
INDICE
Introduzione
Terminologia di base Unità di misura – Ritardi – Canali – Reti – Indirizzamento
Architettura Servizi e protocolli – Comunicazione tra livelli
Servizi CO – CL
Commutazione Circuit – Msg – Pkt
Routing Virtual Circuit – Datagram
Livello fisico
Definizione Carrier
Protocolli PCM (Nyquist) – TDM – DSL (T1)
Trasmissioni Bit Synchronization – Manchester
Livello datalink
Trasmissioni Bit Stuffing – Character Stuffing
Schemi ARQ Idle RQ – GoBackN – Selective Repeat – (Flow Control)
Collisioni CMSA\CD – Backoff Esp. – Dim.Frame
Formato frame HDLC – PPP – Ethernet
Ripetitori Hub – Bridge – Switch
Alta velocità Fast E. – Switch Fast E. – Gigabit E.
Livello network
Definizioni Indirizzi IP – Classi – Subnetting e CIDR
Pro. Assegnamento NAT – DHCP
Alg. Instradamento Statico – Flooding – Distance Vector (Count-to-infinity – Split Horizon) – LS
Pro. Gestione ICMP – ARP RARP
Pro. Instradamento OSPF – BGP – MPLS
Livello trasporto
Indirizzamento n°porte
Apertura di connessione Primitive di servizio – 3wayHandshake
Trasferimento dati Go-Back-N - Nagle - Piggyback - Ritrasmissione (Timeout, Fast Retr.)
RTO Jacobson – Situazione iniziale e di errore (Karn)
Controllo errori Flusso (Sliding Window) – Congestione (Slow Start)
Chiusura di connessione Keepalive
Livello applicazione
DNS Gerarchia – Record – Messaggi – Risoluzioni
Posta SMPT – POP3 – IMAP – MIME
Telefonia SIP – SDP – GLP
3
TERMINOLOGIA DI BASE
Unità di misura
- Banda o Bandwitdh : è la frequenza usata per la trasmissione dei dati (Hz)
- Banda o Bit Rate : è il numero di bit trasmessi per unità di tempo (bps)
- BER (Bit Error Rate) : è la probabilità che un bit arrivi sbagliato a destinazione, causa interferenze
Ritardi
- Processing Delay : si trova all’interno di una apparato di rete, il quale perde tempo a processare dati
- Queueing Delay : dovuto all’accodamento dei dati che arrivano a un calcolatore, da altri calcolatori
- Transmission Delay : è il ritardo d’immissione dei dati sul link ed è pari a dati / bit rate
- Propagation Delay : è il ritardo di propagazione dei dati ed è pari a distanza / velocità
Canali di comunicazione
- Canali Simplex : i dati viaggiano solo da A a B
- Canali Half-Duplex : i dati viaggiano alternativamete AB o BA
- Canali Full-Duplex : i dati viaggiano contemporaneamente AB
- Canali simmetrici : stesso bit rate in entrambe le direzioni
- Canali asimmetrici : diverso bit rate nelle due direzioni
Topologia reti
- P2P (point-to-point) : sono reti magliate in cui si fa routing (instradamento); reti grandi con tanti nodi
- Broadcast : sono reti in cui quando uno parla tutti sentono, ma riceve solo il destinatario (no rounting)
(indirizzamenti)
- Unicast : una sola destinazione
- Multicast : destinazione = un sottogruppo della rete
- Broadcast : destinazione = tutta la rete
ESERCIZI
1) Propagation Delay
Determinare Tp nei seguenti casi:
- connessione telefonica di 1Km
-6
La connessione telefonica è in rame (200.000 Km/s) quindi Tp = dist/vel = 1/200.000 = 5x10 s
- connessione PSTN di 200 Km
-3
PSTN è la linea telefonica pubblica, quindi in rame. Tp = 200/200.000 = 10 s
- connessione satellitare di 50.000 Km
-1
Velocità satellitare = luce (300.000 Km/s). Tp =50.000/300.000 = 1,67x10 s
4
ARCHITETTURA DI RETE
È divisa in 5 livelli, paragonabili a livelli di astrazione:
1. Fisico 2. DataLink 3. Network 4. Trasporto 5. Applicazione
Per ogni livello ci sono 3 caratteristiche fondamentali:
- Servizi : rappresentano la comunicazione verticale, quindi sono l’interfaccia tra un livello e l’altro.
- Protocolli : rappresentano la comunicazione orizzantale, quindi sono un insieme di regole che decidono come devono
comunicare due entità di pari livello (peer) che si trovano due macchine diverse. I protocolli sono importanti perché
permettono la comunicazione tra due macchine che non parlano lo stesso linguaggio.
TIPI DI SERVIZI
Connection-oriented (CO) : costoso ma affidabile
Apertura : fase di handshaking in cui i 2 host decidono di comunciare e settano i parametri (canale, velocità…)
Scambio : si garantisce l’arrivo dei dati, l’ordinamento e la non duplicazione
Chiusura : fase di handshaking in cui i 2 host concordano la chiusura e cancellano i parametri.
TECNICHE DI COMMUTAZIONE
Le tecniche di commutazione spiegano come due host si scambiano le informazioni.
Commutazione di circuito
Si divide in 3 fasi: apertura del circuito, scambio di dati, chiusura del circuito. In apertura si stabilisce quindi un path fisso
e riservato. Si garantisce l’ordinamento, ma si fa un cattivo uso della banda (spreco) e si rischia la perdita di molti dati se
si rompe il path fisso.
Commutazione di msg/pkt
Non ci sono le fasi di handshaking, quindi non c’è un cammino fisso ma ogni msg/pkt è instradato indipendentemente
(store&forward). Si fa buon uso della banda e non si perdono molti dati, ma non si garantisce l’ordinamento.
Il messaggio è un’unità dati completa, cioè ha un senso per l’applicazione, scollegabile da altri dati in altri messaggi, e
racchiude quindi un’informazione completa. Il pacchetto invece è un’unità di dati più piccola del messaggio, il quale
viene semplicemente diviso a “pezzi”.
Con questa commutazione bisogna quindi fare routing, che si divide in due tipi:
- Routing a Circuito Virtuale : si introducono le fasi di handshaking per stabilire un path fisso ma non riservato, perciò
ogni msg/pkt viene etichettato. Si fa buon uso della banda, si fa ordinamento, ma si rischia la perdita di dati.
- Routing Datagram : è la commutazione classica già spiegata; ogni msg/pkt è instradato in modo totalmente
indipendente. Si fa buon uso della banda e poca perdita di dati, ma non si garantisce l’ordinamento.
5
ESERCIZI
6
LIVELLO FISICO
Carrier = onda sinusoidale mandata costantemente sul filo, per far capire al destinatario che il canale è vivo.
PROTOCOLLI
PCM
Pulse Code Modulation è il protocollo standard per digitalizzare il segnale vocale, cioè per trasformare un segnale
analogico in digitale. Il canale utilizzato ha una banda di 4 KHz, sufficiente per l’informazione vocale. PCM si basa sul
teorema di Nyquist, secondo il quale per trasformare un segnale da analogico a digitale non serve campionare più di
2xBanda volte al secondo. Per cui nel nostro caso non serve campionare più di 4000 x 2 = 8000 volte al secondo. Poiché
ognuno degli 8000 campioni occupa 8 bit, il bit rate del canale è di 8000 x 8 = 64000 bps (64 Kbps).
TDM
Time Division Multiplexing è un protocollo che permette
diverse conversazioni su un unico canale. Viene fornita
tutta la banda ad una conversazione per un certo tempo
detto time slot. Il time slot è il tempo necessario affinchè
una stazione mandi un frame intero. Il time frame è il
numero di time slot necessari affinchè tutte le stazioni
mandino un frame.
Questo protocollo è peggiore del token ring, dove ogni
stazione ha il diritto di parlare e quando una di loro non
ha bisogno di parlare non richiede la banda. In TDM invece tutte le stazioni, anche quelle che non richiedono la banda in
un determinato momento, ricevo il time slot periodicamente (spreco di banda).
ESERCIZI
1) Carrier T1
Un cavo lungo 100Km trasporta Carrier T1 a velocità del rame. Quanti bit ci sono sul cavo?
-6
I frame T1 sono mandati ogni 125x10 s. Il segnale si propaga a 200.000Km/s per 100Km. Quindi 100/200.000=0,5ms.
-3
Quindi basta calcolare quanti frame sono mandati in 0,5x10 s. Quindi (Tempo totale) / (Tempo di un frame) =
-3 -6
0,5x10 s/125x10 s = 4 frame. Ogni frame ha 193 bit, quindi ci sono 193x4 = 772 bit sul cavo.
2) Carrier T1
Qual è il Tx di 3Mb di dati se viene utilizzato Carrier T1?
Tx = Size/BitRate; BitRate = 1,544Mbps, quindi 3Mb/1,544Mbps = …s
7
TRASMISSIONE
Per trasmettere i dati da un host all’altro vengono utilizzati due schemi di controllo di trasmissione: asincrono e sincrono.
Sincrona – Manchester
La trasmissione sincrona è basata sul fatto che il clock del destinatario si sincronizza su ogni singolo bit, e quindi non
servono bit aggiuntivi. La tecnica usata si chama Manchester Encoding: c’è sempre una transazione al centro di ogni
cella di bit (alto-basso o basso-alto). Il clock del destinatario si sincronizza sulla 2^ parte della cella e codifica segnale
basso=0 e alto=1.
In alternativa esiste anche il Differential Manchester: c’è sempre una transazione al centro di ogni cella di bit (alto-basso
o basso-alto). Il clock del destinatario stavolta è sincronizzato all’inizio della cella. Se all’inizio della cella l’onda è distorta
il bit decodificato è 0, se invece l’onda è piatta il bit è 1.
8
LIVELLO DATALINK
TRASMISSIONE
Il livello data link divide il flusso dei bit in frame. Ci sono 2 metodi principali per la suddivisione e quindi la trasmissione
dei biti in frame: Bit Stuffing e Character Stuffing.
Bit Stuffing
Consiste nell’utilizzare una sequenza di 8 bit “01111110” detta flag pattern come byte iniziale e byte finale del frame.
Inoltre per individuare l’inizio e la fine con miglior precisione, ogni flag pattern è preceduto da un idle byte che è una
sequenza di 8 bit “01111111”. Inoltre per garantire la correttezza di questa tecnica si utilizza un bit “0” detto bit stuffing
che viene inserito all’interno del frame quando nel codice compaiono 5 “1” di fila (senza sapere se dopo c’è 1 o 0), in
modo da rendere univoci i due byte di inizio e fine frame. Viceversa, durante la lettura, dopo 5 “1” di fila viene
automaticamente cancellato lo 0 che li segue. Il meccanismo di inserimento del bit stuffing si chiama zero bit insertion,
il meccanismo opposto zero bit deletion.
0111111101111110010101110100111110011011111011100111111101111110
Character Stuffing
Questa tecnica controlla i caratteri DLE STX (carattere iniziale) e DLE ETX (carattere finale). L’uso di DLE è importante
perché STX e ETX possono essere dei caratteri singoli all’interno del frame. L’unico problema che si pone è se all’interno
c’è anche un DLE, e quindi se c’è una sequenza DLE ETX che non deve essere interpretata come fine del frame; per
risolvere questo problema, davanti ad ogni DLE all’interno del frame si pone un altro DLE che fa da “cuscinetto”. In
questo modo quando il destinatario legge un DLE si allerta: se dopo c’è un altro DLE, cancella il primo e continua a
leggere il frame; se invece dopo c’è ETX vuol dire che il frame si chiude.
DLE STX A B C STX DLE DLE ETX A B C DLE DLE A B C DLE ETX
SCHEMI ARQ
Per rilevare la presenza di errori di trasmissione nei frame e dare un servizio affidabile si utilizzano 3 schermi ARQ
(automatic repeat request): Idle RQ, Go-Back-N e Selective Repeat.
Idle RQ
Per ogni fram mandato la sorgente rimane in attesa di ACK o NAK, con un timer. Appena riceve ACK manda il frame
successivo e fa ripartire il timer. Se riceve NAK rimanda lo stesso frame. Se scade il timer rimanda ancora il frame, al
massimo riceve due ACK duplicati.
Go-Back-N
La sorgente manda frame continuamente; il ricevente rimane in attesa del frame corretto, tutto il resto lo butta via.
Quando la sorgente riceve ACK-n considera mandati tutti i frame <= n. Manda I frame > n, anche se li ha già mandati.
Questo schema richiede poca memoria (nessun buffer), ma utilizza male la banda.
Selective-Repeat
La sorgente manda frame continuamente; il ricevente rimane in attesa del frame corretto, tutto il resto lo bufferizza.
Quando il ricevente ottiene il frame corretto controlla nel buffer tutti i successivi, e manda un solo ACK cumulativo.
Questo schema usa molto bene la banda, ma utilizza molta memoria (buffer).
9
ESERCIZI
1) Idle RQ
Un canale ha bit rate = 4Kbps e Tp = 20msec. Per quale frame-size Idle RQ ha efficienza> 50%?
Efficienza: U=Tx/(Tx + 2Tp) = (f/b) / (f/b + 2Tp) > 0,5 (50%)
f > 2Tp x b = 2x0,02x4000 = 160bit
2) Idle RQ – GBN - SR
Frame da 1.000 bit sono inviati su un canale satellitare con BR=1Mbps e Tp=270ms; si usano #seq da 3 bit. Qual è il
massimo utilizzo del canale per ogni schema RQ?
-3 -3
Idle RQ: U=Tx/(Tx + 2Tp) = 10 / (10 + 2x0,27) = 0,18
n
Go-Back-N: U=K(Tx/(Tx + 2Tp)) dove K è il limite d’invio; K = 2 -1 dove n è il n° di bit del #seq.
3
K = 2 -1 = 7
U = 7x0,18 = 1,3
n
Selective-R: U=K(Tx/(Tx + 2Tp)) ; stavolta K = 2 /2
3
K = 2 /2 = 4
U = 4x0,18 = 0,74
3) Idle RQ
Calcolare l’U di banda con BR=6Mbps, lunghezza cavo rame = 4Km con frame da 1,5Kb, approccio Idle RQ.
Tx = f/br ; Tp = dist/vel
U=Tx/(Tx + 2Tp) = …
4) Go-Back-N
Un blocco da 3Kb viene trasmesso lungo un cavo rame da 70 Km con banda da 60Mbps. Calcola U del canale con #seq da 3
bit e approccio Go-Back-N.
3
Tx = f/br ; Tp = dist/vel ; K = 2 -1 = 7
U=K(Tx/(Tx + 2Tp)) = …
5) Selective-Repeat
Un blocco da 4Kb viene trasmesso lungo un cavo fibra da 50 Km con banda da 250Mbps. Calcola U del canale con #seq da
3 bit e approccio Selective-Repeat.
4
Tx = f/br ; Tp = dist/vel ; K = 2 / 2= 8
U=K(Tx/(Tx + 2Tp)) = …
10
COLLISIONI
CSMA/CD
CSMA (Carrier Sense Multiple Access) è un protocollo di trasmissione dati che si basa sull'accesso multiplo tramite
rilevamento della portante. Lo scopo è quello di evitare che due host, che condividono il bus, trasmettano
contemporaneamente (collisione).
Quando un host trasmette dati sul cavo, è presente il carrier. Ogni dispositivo prima di avviare la trasmissione dei dati
deve verificare se sul canale altri nodi stiano già trasmettendo, rilevando la portante (Carrier Sense). Se il canale è libero
inizia la trasmissione, altrimenti aspetta per un tempo arbitrario prima di riprovare.
CSMA non è comunque in grado di evitare conflitti. Può accadere infatti che i due host trovino la rete libera proprio nello
stesso tempo e che quindi inizino entrambi la trasmissione. A causa di questo si verificano delle collisioni, ovvero i dati
interferiscono tra di loro quando si incontrano nello stesso punto del cavo causando quindi la scorretta ricezione di loro
stessi.
Per questo motivo, al protocollo CSMA, è stato affiancato CD (Collision Detection). In una rete quindi che utilizza
questo protocollo ogni host che deve mandare dei dati controlla preventivamente che non ci siano trasferimenti in corso.
Dopo di che prova a trasmettere. Se rileva delle collisioni interrompe subito la trasmissione, manda un segnale di
disturbo (jam sequence) a tutti in modo da segnalare la presenza di una avvenuta collisione e riprova dopo un tempo
arbitrario. In caso contrario la trasmissione continua. Per calcolare il tempo si usa algoritmo di backoff esponenziale).
ESERCIZI
1) CSMA\CD
In una rete di 120m di tratte con 2 ripetitori tra 2 host, e ritardo del ripetitore = 40microsec, la banda da 8Mbps, il mezzo è
il rame. Si usa CSMA\CD, determinare la taglia minima del frame.
(min)FrameSize = 2Tp x BitRate
-6 -6
Tp = dist/vel = 1,8x10 s , a cui si aggiungono 40microsec dei 2 ripetitori, quindi + 80microsec = 81,8x10 s
-6 6
(min)FrameSize = 2 x 81,8x10 x 8x10 = 1.309 bit
2) CSMA\CD
Trova la dimensione minima del frame, con banda da 1Gbps, cavo di rame di 1Km.
-6 -5
Tp = dist/vel = 5x10 s ; quindi 2Tp = 10 s
-5 9
(min)FrameSize = 2Tp x BitRate = 10 x 10 = 10.000 bit
3) Backoff esp.
Una stazione in una rete Ethernet subisce 5 collisioni consecutive. Quando avverrà la successiva ritrasmissione?
In Ethernet il RTT è fisso a 51,2 microsec, e quindi questo è il valore del time slot.
5
Alla 5^ collisione si sceglie un tempo tra 0 e 2 -1=31 time slot, quindi tra 0 e 1.587,2 microsec.
11
RETI P2P
Nonostante Ethernet abbia diverse tipologie, l'elemento comune è nella struttura del frame.
12
HUB E BRIDGE
Lo scopo di una LAN è consentire a un certo numero di utenti con PC di accedere a un server che viene utilizzato ad
esempio per la stampa. Questo server è collegato a Internet tramite ISP. Se l’azienda è più grande occorrono più hub, e
quindi gli hub devono essere interconnessi. Per questo si usano hub, bridge e switch.
Il bridge è un apparato di livello datalink; rispetto all’ub fa un minimo d’instradamento in quanto se arriva un frame viene
spedito sul segmento del destinatario. I bridge fanno store&forward, cioè bufferizzano i frame che arrivano, perché
devono processarli. I bridge inoltre connettono LAN eterogenee, anche se nn può connettere LAN di qualsiasi tipo, infatti
possono connettere solo LAN con frame-size uguali; se un brige connette due LAN con frame-size diverso, quando
arrivano un frame grande verso una LAN con frame-size più piccolo, il brdige butta via il frame.
Per fare degli esempi, un bridge può connettere una Fast Ethernet con una Ethernet perché hanno lo stesso frame-size
(cambia solo il bit rate, infatti Eth=10Mbps, mentre FastEth=100Mbps), oppure ovviamente LAN omogenee. Per esempio
non può connettere Ethernet con GigabitEthernet.
Funzionamento di un bridge
Il bridge è munito di porte con cui è collegato a diversi segmenti della rete. Quando riceve un frame da una porta
(segmento) se il destinatario si trova sullo stesso segmento non inoltra il frame, altrimenti lo inoltra sul segmento dove si
trova il destinatario. Il bridge fa filtraggio perché usa una routing table per sapere dove inoltrare i frame.
Il bridge si dice che fa apprendimento. I contenuti della routing table non vengono impostati staticamente ma vengono
creati dinamicamente. All’inizio la routing table è vuota; quando riceve un frame, il bridge salva (in un buffer) l’indirizzo
dell’host e il suo numero di porta. Dato che ora il bridge ha la routing table vuota, fa flooding, cioè manda una copia del
frame su ogni porta d’uscita tranne quella del ricevente. Man mano che riceve frame memorizza indirizzi e porte e
“impara” dove mandare i frame.
Bridge
13
SWITCH
Sono bridge ad alte prestazioni. È un apparato di livello datalink. Connette LAN eterogenee meglio di un bridge, ad
esempio riesce a connettere un Ethernet con GigabitEthernet. Normalmente ogni uscita di uno switch identifica una
LAN e quindi un hub con “tiene collegata” un’intera LAN.
Lo switch bufferizza meglio di un bridge, perché ha più spazio di memoria. Inoltre quando riceve un frame è in grado di
spezzarlo in più parti, cioè spezza la parte dati e ad ogni parti aggiunge gli opportuni header e ricalcola i bit di
ridondanza o bit di parità nel campo FCS.
Mentre hub e bridge lavoravano in modalità half-duplex, lo switch lavora in modalità full-duplex, perciò non c’è bisogno
del protocollo CSMA/CD perché non ci sono collisioni. Inoltre gli switch usano molte più porte dei bridge.
FAST ETHERNET
Utilizza un bit rate di 100 Mbps, a differenza in un Ethernet normale che usa 10 Mpbs. Come Ethernet, usa CSMA/CD e
Frame-Size di 512b. Fast Ethernet utilizza 4 doppini: il primo fa viaggiare i dati dalla stazione al ripetitore, il secondo dal
ripetitore alla stazione, il terzo e il quarto in entrambe le direzione; quindi ogni direzione ha a disposizione 3 doppini.
Verrebbe da pensare che il bit rate di ogni doppino sia 33,33Mbps (100/3), ma in realtà il baud rate è 30Mb, per cui non
posso avere un bit rate maggiore di 30Mb. Per questo motivo la codifica Manchester Encoding usata da Ethernet non va
più bene, quindi Fast Ethernet usa la codifica 8B6T. Questa codifica consiste nel convertire ogni byte (8bit) in 6 simboli
ternari (anziché binari), quindi c’è una compressione perché ogni 8 bit, ne devo “togliere” 2. In questo modo il bit rate
totale non risulta più 100Mb ma 75Mb, divisibili in 3 doppini da 25Mb, rispettando il baud rate da 30Mb.
GIGABIT ETHERNET
È una Ethernet che usa 4 doppini o la fibra e ha un bit rate di 1Gbps. Gli apparati più utilizzati sono gli switch, che
permettono la connessione full-duplex e non richiedono CSMA/CD. Si possono usare anche gli hub, ma in questo caso la
connessione è half-duplex con CSMA/CD.
Per comunicare da GigabitEthernet a Ethernet si spezzano i frame e le tecniche sono le stesse utilizzate da FastEthernet
(BackPressure). Se comunichiamo da Ethernet a GigabitEthernet ci sono dei problemi, perché c’è così tanta differenza di
banda che se mandassimo un frame piccolo di Ethernet su una GigabitEthernet ci sarebbe un grande spreco; quindi lo
scopo è quello di “ingrandire” il frame Ethernet prima di inoltrarlo su una GigabitEthernet.
Per aumentare la grandezza, lo standard prevede di passare dai 64B di Ethernet a 512B. Per ottenere l’ingrandimento si
utilizzano due teniche: la prima si chiama carrier extension e prevede di imbottire il campo dati del frame con dati
casuali “spazzatura” fino ad arrivare a 512B; l’altra tecnica si chiama frame bursting e consiste nel bufferizzare i frame
piccoli, per poi unirli in un unico frame grande (questa tecnica però si può fare solo se i frame hanno lo stesso
destinatario).
ESERCIZI
Pkt Ethernet
Si supponga che un IP access gateway debba instradare su una LAN Ethernet tre pacchetti provenienti da una LAN in una
rete non IP, contenenti rispettivamente 2875, 3862 e 1877 B di dati. Quanti frame Ethernet vengono generati e qual è il loro
contenuto di dati?
In una classica Ethernet i frame contengono fino a 1500 B; il livello IP ha un header di 20B, quindi i dati effettivi di un
frame Ethernet sono 1500-20 = 1480B.
- il 1° pkt viene spezzato in 2 frame: (1480+20)B, (1395+20)B; questo perché 1480+1395 = 2875.
- il 2° pkt viene spezzato in 3 frame: (1480+20)B, (1480+20)B, (902+20)B; questo perché 1480+1480+902 = 3862.
- il 3° pkt viene spezzato in 2 frame: (1480+20)B, (397+20)B; questo perché 1480+397 = 1877.
14
LIVELLO NETWORK
INDIRIZZI IP
Il protocollo del livello di rete è Internet Protocol (IP) che serve ad effettuare l’instradamento. C’è un unico Indirizzo IP
in ogni host, detto anche Indirizzo Internet.
IP fornisce un servizio connectionless best-effort al livello superiore (trasporto). Quando il livello trasporto passa la PDU
al livello network, IP inserisce l’indirizzo IP di origine e quello di destinazione e dà origine al “datagramma”. Infine inoltra
il datagramma risultante (che da qui in poi prenderà il nome di pacchetto) al gateway locale.
Per muovere i pacchetti tra sorgente e destinazione si usano gli indirizzi IP. Un indirizzo IP è un numero che indentifica
univocamente un dispositivo collegato a una rete informatica. È un numero di 32 bit suddiviso in 4 gruppi da 8 bit (byte);
la forma con la quale viene solitamente rappresentato è detta decimale puntata. Essendo ogni numero rappresentato da
8 bit, può assumere un range di valori da 0 a 255.
CLASSI
Esistono 5 formati d’indirizzo IP: A, B, C, D, E. Ognuno è detto classe. Le classi D ed E sono per indirizzi riservati. Mentre le
classi A, B e C sono usate nelle reti a indirizzamento unicast.
SUBNETTING
Il concetto di subnet (sottorete) è stato introdotto per svincolare i router di un singolo sito locale dall’instradamento della
rete generale, per gestire meglio l’instradamento.
Per implementare questo concetto, l’indirizzo viene suddiviso in 3 parti: Netid, Subnetid e Hostid. Lo schema delle classi
rimane invariato, solo che il campo Hostid ora viene suddiviso in Subnetid e Hostid.
Poiché non esiste un confine rigoroso tra Subnetid e Hostid si utilizza la subnet mask. Essa si trova all’interno dei
dispositivi ed è composta da una serie di “1” in corrispondenza dei bit di Netid e Subnetid, e una serie di “0” nei bit di
Hostid.
Per determinare se il destinatario dei propri pacchetti si trova sulla propria sottorete ogni host utilizza la propria subnet
mask, durante un processo chiamato ANDing process (messa in AND). Questo processo consiste nel confrontare il
risultato dell'operazione di AND bit a bit tra il proprio indirizzo e la propria subnet mask con quello tra l'indirizzo del
destinatario e la propria subnet mask.
Il risultato è identico, quindi, i due host possono inviarsi direttamente i pacchetti in quanto sono nella stessa sottorete.
Qualora il processo di AND avesse evidenziato valori diversi, i due host non avrebbero potuto comunicare direttamente,
ma sarebbe stato necessario un router tra di essi.
CIDR
È un metodo per massimizzare l’uso delle reti di classe C, dato che hanno pochi host a disposizione. Lo scopo è quello di
riportare tutti gli indirizzi della stessa azienda ad un unico indirizzo. Per questo devono essere indirizzi contigui e ci
dev’essere una subnet mask adeguata. La subnet mask è creata in modo tale che posta in AND con tutti gli indirizzi
dell’azienda trovi sempre l’indirizzo più basso (di riferimento per tutta l’azienda).
15
ESERCIZI
1) Subnet Mask
Un amministratore di rete deve gestire una campus LAN a cui è assegnato l’indirizzo di classe B 150.10.0.0 . Assumendo che
la rete comprenda 100 sottoreti ognuna delle quali connessa ad uno switch FastEthernet usando un router, definire
un’apprpriata subnet mask se il numero di massimo di host connessi ad ogno subnet è 70.
Per assegnare un Subnetid che comprenda 100 sottoreti, servono 7 bit (128-1=127 subnet). Per l’Hostid (70 host)
servono sempre 7 bit. Ricorda che nella classe B gli ultimi 16 bit fanno da Subnetid+Hostid.
Quindi la subnet mask ha 3 possibili soluzioni:
Subnetid (9 bit) e Hostid (7 bit): 11111111. 11111111. 11111111. 10000000
Subnetid (8 bit) e Hostid (8 bit): 11111111. 11111111. 11111111. 00000000
Subnetid (7 bit) e Hostid (9 bit): 11111111. 11111111. 11111110. 00000000
2) Subnet Mask
Una rete di classe B ha subnet mask 255.255.240.0 . Qual è il numero massimo di host per sottorete?
255 = 11111111
240 = 11110000
Subnet mask = 11111111. 11111111. 11110000. 00000000
255 255 240 0
12
Ci sono 12 “0”, quindi il numero di host a disposizione per ogni sottorete è 2 -1 = 4095 host.
16
PROTOCOLLI DI ASSEGNAMENTO
NAT
DHCP
ALGORITMI DI INSTRADAMENTO
INSTRADAMENTO STATICO
Ogni router ha la sua routing table fissa. Essa contiene un elenco di router a cui è associato il link su cui instradare. Non è
un algoritmo vantaggioso perché se cambia la rete va cambiata la tabella.
FLOODING
Il router non ha la routing table e “inonda” tutti i link con una copia del pkt, etichettato con il destinatario. Tutti i router
che lo ricevono fanno altrettanto. Sicuramente la prima copia che arriverà destinazione avrà seguito il percorso migliore,
ma così s’intasa la rete di duplicati.
DV (DISTANCE VECTOR)
Ogni router costruisce dinamicamente la routing table. All’inizio il router conosce solo le distanze dai router adiacenti; si
fa quindi un passaggio d’informazione tra i router, sulle distanze verso gli altri router. È vantaggioso perchè la table
cambia dinamicamente e non si riempe la rete di duplicati. Lo svantaggio è che si rischia il count-to-infinity.
Count-to-infininty: è un problema che si pone con DV, quando si rompe un link. Se si rompe il link AB,
B non riesce ad arrivare ad A, ma impara da C che ci vogliono 2+1=3 hop;
C non riesce ad arrivare ad A, ma impara da D che ci vogliono 3+1=4 hop;
D non riesce ad arrivare ad A, ma impara da E che ci vogliono 4+1=5 hop;
a questo punto il ciclo si ripete perché B non riesce ad arrivare ad A in 3 hop, e impara da C che vogliono 4+1=5 hop;
C impara da D che ci vogliono 5+1=6 hop. E così via, si va all’infinito.
Split Horizon: è una soluzione al problema count-to-infinity. B non riesce ad arrivare ad A,
allora impara da C che ci vogliono 2+1=3 hop, ma impara anche che C deve passare da B
stesso, e quindi B scopre che non può arrivare ad A: in questo modo non s’innesca il
meccanismo di count-to-infinity. Se però i router non sono in fila, lo Split Horizon non
risolve il problema: se come in figura, si rompe CD, A e B non possono scoprirlo.
LS (LINK STATE)
A differenza di DV, per informare gli altri router, LS usa l’algoritmo di Dijkstra. Viene trasmesso a intervalli regolari un
messaggio a “flooding” verso tutta la rete per far conoscere la propria posizione, e poi attraverso l’algortimo SPF
(shortest path first, o Dijkstra) si calcola il cammino minimo.
17
ESERCIZI
1) LS
Nel grafo seguente trovare lo shortest path da A ad ogni altra destinazione utilizzando l’algoritmo di Dijkstra.
2) DV
Rappresentare la tabelle di routing costruite dopo il primo scambio di Distance Vector nella rete mostrata.
3) DV
Si consideri la rete in figura. Usando DV ad un certo tempo il nodo C riceve i seguenti vettori (si assume che i costi alle
destinazioni siano riporati in ordine alfabetico): da B(5, 0, 8, 12, 6, 2,) da D(16, 12, 6, 0, 9, 10), da E (7, 6, 3, 9, 0, 4).
I costi stimati da C verso B, D, E sono rispettivamente 6, 3, 5. Qual è la nuova tabella di C?
18
PROTOCOLLI DI GESTIONE DI RETE
ICMP
È un protocollo di controllo, e serve per la rilevazione degli errori, notifiche di cambio percorso, controllo di congestione
con il campo “source quench” e altre funzioni. ICMP funziona con dei messaggi che hanno un formato standard:
Intestazione (protocollo ICMP) – Funzione (8 bit) – Info (8 bit) – Messaggio (16 bit)
ARP E RARP
Per inviare un pkt ad un host della stessa sottorete è necessario incapsularlo in un pkt MAC. Se il pkt va invitato
all’esterno della sottorete, bisogna sapere l’indirizzo MAC del gateway. Se l’host conosce solo l’IP ma non il MAC allora
invia all’IP un messaggio ARP; se conosce il MAC ma non l’IP invia RARP.
Formato messaggio:
Tipo HW = MAC indirizzo HW dest.
Tipo Prot. = IP indirizzo IP dest.
HLEN e PLEN = lunghezze in bit indirizzo HW mitt.
Funzione = ARP o RARP indirizzo IP mitt
PROTOCOLLI DI INSTRADAMENTO
OSPF
Si basa sull’algoritmo LS. È utilizzato all’interno di un sistema autonomo che è diviso in diverse aree: l’area principale è
l’area dorsale (backbone) a cui sono collegate tutte le altre aree che sono reti autonome. In questo sistema esistono 3 tipi
di router che utilizzano OSPF: i router interni, che sono interni alle reti, i router di confine, che collegano ogni area con
la dorsale, e i router backbone che operano all’interno della dorsale.
Per attuare l’algoritmo LS, OSPF usa 5 tipi di messaggi:
- hello : per conoscere gli altri router
- LS update invia informazioni proprie distanze
- LS ACK : conferma gli aggiornamenti
- Database description : invia tutte le mie informazioni
- LS request : richiesta di informazioni
BGP
Si basa su DV, ma evita il count-to-infinity perché durante lo scambio d’informazioni i router ottengono informazioni sui
path completi. BGP opera sui router AS boundary, cioè quelli di confine tra diversi sistemi autonomi.
Esistono 4 tipi di messaggi BGP:
- open : apri connessioni con un altro router AS b.
- update : invia inforamazioni
- keep alive : mantieni “viva” la connessione, cioè confema il messaggio di open
- notification : segnala un errore
19
MPLS
Il protocollo MPLS riguarda le aree dorsali (backbone) all’interno di un sistema autonomo. Quindi è un protocollo
utilizzato dai router backbone che sono all’interno dell’area dorsale. È chiamato MP (Multi Protocol) perché la rete
dorsale può collegare due reti di area che utilizzano protocolli diversi.
ESERCIZIO
20
LIVELLO TRASPORTO
INDIRIZZAMENTO
L’indirizzo IP mi porta sull’host specifico, ma se ho tante applicazioni su un host come faccio a sapere a quale
applicazione mandare i dati? Quindi a livello trasporto ciò che controlliamo non è la comunicazione tra due host (livello
network) ma la comunicazione tra due processi.
Per riferirsi univocamente ad un processo non possiamo usare il PID (process ID) perché non possiamo sapere il PID
sull’host di destinazione, perciò si usano i numeri di porta. Ogni porta è rappresentata da un numero su 16 bit.
APERTURA DI CONNESSIONE
PRIMITIVE DI SERVIZIO
Il procedimento che porta a creare una connessione TCP è chiamato 3way-handshake, ma prima di poterlo applicare
bisogna creare un’apertura di connessione sia a lato server che a lato client.
A lato server avviene un’apertura di connessione passiva, in quanto il server si mette passivamente in attesa che un
client voglia aprire la connessione. Per questo il server chiama una sequenza di primitive di servizio (socket, bind, listen):
- Socket (“presa”) serve per iniziare la comunicazione, quindi crea un file descriptor che si riferisce al processo chiamante;
- Bind (“legame”) serve a creare un legame tra il file descriptor e la coppia [IP address ; numero porta];
- Listen serve per rimanere in ascolto in caso di connessione.
A lato client avviene un’apertura attiva, in quanto è lui che richiede la connessione la server. Quindi esegue la primitiva
di servizio Socket che ripete lo stesso procedimento e una Connect che stabilisce la coppia [IP address ; numero porta]
(come la Bind) e quindi contatta il server. A questo punto il server accetta la comunicazione con una primitiva Accept.
THREE-WAY-HANDSHAKE
Il procedimento 3way-handshake porta all’apertura di connessione e quindi spiega nel dettaglio cosa avviene quando il
client esegue una Connect e il server una Accept. Lo scopo di questo procedimento è quello di evitare ambiguità e
garantire sicurezza, cioè essere sicuri che client e server vogliano realmente aprire la connessione. Il procedimento si
divide in 3 fasi:
1) Client manda un segmento con il SYN=1, #SEQ=x
2) Server risponde con SYN=1, #SEQ=y, ACK=1, #ACK=x+1 (x+1 garantisce la correttezza)
3) Client risponde con ACK=1, #ACK=y+1 (y+1 garantisce la correttezza)
Alla ricezione di quest’ultimo da parte del server la connessione è stabilita.
TRASFERIMENTO DATI
Durante lo scambio dei dati TCP utilizza le politiche di Go-Back-N o di Selective-Repeat (di default usa Go-Back-N).
Un’altra politica usata per lo scambio di dati è l’algoritmo di Nagle: client manda un segmento, e bufferizza i dati
successivi; quando server restituisce l’ACK, client inserisce i dati accumulati su un segmento e lo manda a server, e si
ripete il procedimento.
Normalmente gli ACK vengono mandati in Piggybacking, cioè se ho dei dati da mandare da server a client, sul
segmento di quei dati ci carico anche l’ACK, altrimento mando solo l’ACK.
Quando vengono spediti dei segmenti, si utilizza la tecnica dell’ACK cumulativo, quindi l’ACKn conferma tutti i
segmenti<=n. Inoltre ad ogni segmento viene associato un retransmission timer (RTO) che se scade prima della
ricezione di un ACK di conferma si va in timeout e viene rimandato il segmento associato.
RITRASMISSIONE
La ritrasmissione di un segmento avviene per due motivi: Timeout o Fast Retransmit. Come abbiamo detto si ha
timeout quando scade RTO. Si ha invece Fast Retransmit quando il sorgente riceve (dal ricevente) 3 ACK uguali sullo
stesso segmento: questo significa che il ricevente vuole affrettare la ritrasmissione di segmento “n” urgente non arrivato,
e quindi non aspetta il timeout, ma manda 3 ACK “n” immediatamente. Ricevuto il segmento “n” il ricevente controlla il
proprio buffer e manda un ACK cumulativo.
21
RTO
Abbiamo detto che quando il sorgente manda un segmento fa partire un timer RTO. Esso va calcolato dinamicamente
ogni volta che si riceve un ACK, e per farlo viene stimato ogni volta anche il RTT (Round Trip Time) cioè il tempo di
“andata&ritorno” dei dati tra sorgente e ricevente.
FORMULE di JACOBSON
Per calcolare il RTO, quindi il timer effettivo, si usano le formule di Jacobson. Dato a=0,9 si calcola:
(1) RTT’ = (a)RTT + (1-a)M dove RTT’ è il round trip time nuovo da calcolare,
RTT è round trip time calcolato precedentemente,
M è il round trip time ultimo, cioè il tempo di ricezione dell’ultimo ACK.
(Quindi il RTT viene stimato considerando al 90% la stima precedente al 10%
l’ultimo ACK, in quanto a=0,9 e (1-a)=0,1.)
(2) D’ = (a)D + (a)|RTT’ – M| dove D è detta “varianza” (D’ è la nuova varianza, D è la vecchia varianza),
RTT’ è il round trip time nuovo appena calcolato,
M è il round trip time ultimo, cioè il tempo di ricezione dell’ultimo ACK.
(3) RTO = RTT’ + 4D’ dove RTT’ è il round trip time nuovo appena calcolato,
D’ è la varianza appena calcolata.
SITUAZIONE INIZIALE
- Quando si verifica un errore (che sia Timeout e Fast Retransmit) si utilizza la tecnica di Karn:
RTT non viene aggiornato; RTO raddoppia
- Appena supero la condizione di errore, cioè appena arriva l’ACK di conferma, resetto:
RTT=M; D=M/2; RTO=3M
- Come prima, dal secondo ACK in poi si usano le formule di Jacobson:
RTT=(1); D=(2); RTO=(3)
Sliding Window è una tecnica per il controllo di flusso in TCP. Rende molto più efficiente il transito dei dati perché
permette al mittente di trasmettere i segmenti senza dover aspettare l’ACK. Man mano che arriva gli ACK la finestra slitta
in avanti. Nella finestra vengono inquadrati i segmenti che possono essere mandati.
1-2-3-4-5-6-7-8-9-10-11-12-13-14 ricevo ACK 1-2 1-2-3-4-5-6-7-8-9-10-11-12-13-14
La dimensione della finestra può variare nel tempo. Il campo Window-Size del segmento serve proprio a questo: è la
quantità di dati che il ricevente può ricevere in un determinato momento, e viene comunicata ogni volta con gli ACK.
Slow Start è una tecnica per il controllo di congestione in TCP. Si usa una finestra di congestione detta WC
(WindowCongestion). Ogni volta che si riceve un ACK la sorgente raddoppia la dimensione della WC, che corrisponde al
quantitativo di dati mandare. L’aumento è il doppio (x2) ogni volta (ogni ACK) finchè si raggiunge una soglia SST dopo
la quale l’aumento è lineare (+1). In caso di errore:
- Timeout: vengono settati SST=WC/2 , WC=1segmento , e si riprende con l’aumento prima doppio e poi lineare.
- Fast Retr: (procedimento di Fast Recovery) si applica STT=WC/2 , WC=WC/2 , la crescita è solo lineare.
22
CHIUSURA DI CONNESSIONE
Per la chiusura di connessione il sorgente manda al ricevente un segmento con il campo FIN=1; il ricevente restituisce un
ACK, e se vuole chiudere manda un altro segmento FIN=1 e il sorgente restituisce ACK. In questo modo si è chiusa la
connessione.
Ci possono essere dei problemi: dopo che il sorgente ha mandato il segmento fa partire il timer; se il non riceve l’ACK lo
fa ripartire, e continua a farlo per un po’ di volte. Dopo aver superato un numero massimo di volte se non riceve l’ACK il
sorgente chiude lo stesso la connessione. Se il ricevente era d’accordo, dopo un po’ che non riceve l’ACK dal sorgente
chiude. Questo procedimento si chiama Keepalive: si vuole chiudere la connessione ma non si riesce a comunicare, allora
si mantiente viva la comunicazione per un po’. Inoltre una volta chiusa forzatamente la connessione si rimane comunque
in attesa per un tempo (da 30s a 2min) perché potrebbe arrivare qualche pacchetto dalla porta di riferimento.
ESERCIZI
1) Fragment offset
2) Slow start
3) Slow start
4) Slow start
5) RRT e RTO
6) RTT e RTO
23
LIVELLO APPLICAZIONE
Questo livello non è il livello delle applicazioni, ma il livello dei protocolli applicazione. Essi garantiscono che i dati siano
conformi alla sintassi concordata in modo tale che le applicazioni ricevano dei dati e che abbiano un significato.
DNS
Il DNS è un protocollo di livello applicazione usato dagli altri protocolli. Serve per fare la traduzione da nome simbolico in
indirizzo e viceversa. L'operazione di convertire un nome in un indirizzo IP è detta risoluzione DNS, convertire un
indirizzo IP in nome è detto risoluzione inversa. La possibilità di attribuire un nome testuale facile da memorizzare a un
server (ad esempio un sito world wide web) migliora di molto l'uso del servizio, in quanto noi esseri umani troviamo più
facile ricordare nomi testuali e non indirizzi IP numerici.
GERARCHIA
I domini di primo livello sono domini di genere (“com” organizzazione commerciale, ”gov” governo, “org” organizzazione
no profit…), o domini di paese (“uk”, “it”…). La gerarchia è una albero, con un dominio radice e i nodi sottostanti. I
domini di livello più alto di chiamano semplicemente domini. Ogni dominio ha ulteriori diramazioni finchè al livello più
basso ci sono i singoli host. Le informazioni vengono mantenute nei database. La gestione dei nomi di internet non è
comunque mantenuta su un unico server, infatti quando compare un nuovo nome simbolico, questo è costretto a
registrarsi su almeno 2 DNS. In questo modo aumenta la robustezza, nel caso in cui cada uno dei due DNS; al tempo
stesso però non ci sono troppe registrazioni, per evitare eccessivi costi di manutenzione. Ai livelli bassi la gerarchia viene
suddivisa in zone, dove ogni zona è controllata da un amministratore, il quale ha il compito di assegnare i nomi diversi.
RECORD
All’interno del database del DNS, ogni host è mantenuto in un resource record (record di risorsa). Il record ha un
formato standard.
1) Il campo nome del dominio corrisponde al nome associato
all’indirizzo IP dell’host. È suddiviso al suo interno in byte: ogni etichetta
all’interno del nome è anticipata da un byte che indica il numero di
byte/caratteri dell’etichetta. Ogni etichetta ha al massio 63 caratteri, e il
nome del totale del dominio 256.
2) Il campo tipo indica il tipo di record. Un record di tipo A contiene il nome simbolico per un indirizzo IPv4; il tipo
AAAA IPv6; il tipo NS indica che è il record di un server dei nomi; il tipo MX definisce un mail server.
3) Il campo classe indica la classe dell’indirizzo ed è IN per gli indirizzi internet.
4) Il campo TLL indica la validità dell’informazione in secondi: questo serve quando l’indirizzo IP è salvato in una cache; il
tempo di solito di 172.800 secondi, cioè 2 giorni.
5) La lunghezza dei dati specifica la lunghezza del campo dati di risorsa.
24
MESSAGGI
Per ottenere le informazioni viene interrogato il database DNS,
utilizzando una lista di tipi di query. Se siamo su internet e
clicchiamo su un link per un’altra pagina, l’host controlla se
conosce l’informazione, altrimenti genera una query. I
messaggi di query hanno un formato standard.
1) L’intestazione è divisa in 2: l’identificatore serve per mettere
in relazione la domanda con la risposta; il campo flag è suddiviso in diversi sottocampi: uno di questi indica se è un query
(0) o una risposta (1), e un altro indica il tipo di query (locale, ricorsiva, iteritiva, inversa).
2) Il nome del dominio contiene il valore da risolvere, cioè il nome da tradurre in IP.
3) Tipo e Classe sono uguali al record.
4) Nel messaggio di risposta c’è sia il messaggio di domanda, che la risposta, cioè il record dell’indirizzo interessato.
RICHIESTE DNS
A partire dal nome simbolico, bisogna trovare il corrispondente indirizzo IP.
RISOLUZIONE LOCALE
Un host client ottiene l’IP dell’host server interessato grazie a un programma detto resolver.
1) l’AP client manda il nome server al resolver, localmente;
2) il resolver manda una query di tipo A al server-dei-nomi-locale (DNS), via UDP;
3) il DNS locale restituisce il record di tipo A contenente l’IP del server al resolver, via UDP;
4) il resolver restituisce l’IP all’AP client, localmente;
5) – 6) l’AP client e l’AP server dialogano, via TCP.
RISOLUZIONE RICORSIVA
Il procedimento cambia se il DNS locale non ha registrato l’host server interessato. Per cui il procedimento iniziale è lo
stesso, ma poi:
1) il server DNS locale manda al server-root una query ricorsiva contenente l’host server di destinazione;
2) il server-root restituisce l’indirizzo del server DNS che dovrà essere interrogato, per ottenere l’indirizzo giusto;
3) il nostro DNS locale rimanda una query al nuovo server DNS, il quale restituirà un altro DNS ancora più locale;
…) si scende di gerarchia finchè il nostro DNS locale dialoga con il DNS che ha registrato il nome completo dell’host
server di destinazione; alla fine gli ultimi 3 passaggi sono uguali:
-) il DNS locale restituisce il record di tipo A contenente l’IP del server al resolver, via UDP;
-) il resolver restituisce l’IP all’AP client, localmente;
-) l’AP client e l’AP server dialogano, via TCP.
RISOLUZIONE ITERATIVA
Per evitare di raggiungere sempre il server radice, il server locale inizia le ricerche sul server più vicino, ovvero quando
non ha l’host di destinazione nel proprio database, invia la query al DNS immediatamente superiore, anziché
direttamente al root. Il procedimento poi è lo stesso del precedente: ogni DNS rimanda a un altro DNS, finchè si trova il
DNS corretto. Se il DNS immediatamente superiore non ha l’host ricercato, si risale ancora, fino al livello più opportuno
per poi ricominciare a scendere; lo scopo è quello di non andare ai livelli troppo alti a fare ricerca.
RISOLUZIONE INVERSA
Sebbene molte query riguardino la traduzione da nome a IP, in alcuni casi può servire da IP a nome. Poiché nel nome
simbolico i DNS di alto livello sono da destra a sinistra, si comincia a interrogare il numero più a sinistra dell’indirizzo IP, il
quale corrisponderà al nome più a destra… e così via fino all’ultimo numero a sinistra dell’indirizzo IP.
25
POSTA ELETTRONICA
SMTP (Simple Mail Transfer Protocol)
Il protocollo di livello applicazione che si occupa della posta elettronica è SMTP. Nel processo di scambio di posta ci
sono 2 entità: il client che si connette a un server di posta, e il server (mail server) che esegue SMTP.
SMTP si dice che funziona in modalità push, cioè quando qualcuno invia un messaggio di posta, i dati arrivano
comunque, anche se la destinazione non è connessa. Infatti il pc domestico non è sempre connesso, ed è per questo che
si usano i server. Inoltre “push” indica anche che il destinatario non richiede la mail, ma è la sorgente che “spinge” il
messaggio al destinatario. Il comportamento quindi è asincrono.
Per il trasferimento di dati, l’host del client che manda l’e-mail esegue localmente un programma chiamato UA (User
Agent), in quale inserisce un header al corpo (body) del messaggio; il messaggio totale viene mandato al mail server
locale, il quale esegue MTA (Message Transfer Agent) che esegue il protocollo SMTP; MTA incapsula il messaggio in un
envelope, allegandogli informazioni aggiuntive; questo envelope viene consegnato al mail server di destinazione, il cui
MTA elabora l’envelope, estrae il messaggio e lo inoltra all’UA destinatario.
Il trasferimento da server a server in realtà prevede anche una fase di handshaking, per controllare l’esistenza del server
destinatario. Quando i due server si connettono cercano tutte le mail destinate al ricevente, il quale poi controllerà se
tutti gli indirizzi e-mail sono corretti.
POP3 e IMAP
Per la fase finale, cioè la comunicazione del messaggio da mail server all’host di destinazione, bisogna usare un
protocollo tra POP3 e IMAP.
Il protocollo POP3 (Post Office Protocol versione 3) ha il compito accedere ad un account di posta elettronica presente
su di un host per scaricare le e-mail del relativo account. Questo protocollo scarica le mail sull’host.
Durante il dialogo secondo POP3 tra server e client, all’inizio c’è una fase di autorizzazione, in cui il client presenta con
user e password; se l’autorizzazione ha successo, c’è una fase di transazione, in cui il client può utilizzare 4 comandi a
disposizione: list per avere l’elenco dei messaggi, retr per richedere l’apertura di un messaggio, dele per cancellare, quit
per uscire.
Mentre POP è più incline alla cancellazione di un messaggio, IMAP (Internet Message Access Protocol) è prono al
mantenimento. Differenze con POP:
1) IMAP non scarica le mail sull’host.
2) POP assume che un solo client (utente) è connesso ad una determinata mailbox (casella di posta), quella che gli è stata
assegnata. Al contrario IMAP permette connessioni simultanee alla stessa mailbox.
3) IMAP permette più comandi, come ad esempio una ricerca e una selezione dei i messaggi.
4) IMAP permette il download di una parte del messaggio (per esempio solo il testo e non gli allegati, oppure solo
un’anteprima del messaggio).
26
MIME
Il Multipurpose Internet Mail Extensions (MIME) è uno standard di Internet che definisce il formato delle e-mail. Le email
sono così strettamente connesse agli standard SMTP e MIME, e sono spesso chiamate email SMTP/MIME. Il MIME
definisce meccanismi atti a spedire altri tipi di informazione con l'email, potendo includere testo scritto in lingue diverse
dall'inglese, e contenuti binari come immagini, suoni e filmati, oppure programmi (il MIME è anche un componente
fondamentale dei protocolli di comunicazione come l'HTTP, il quale richiede che i dati siano trasmessi come messaggi
simil-email, sebbene i messaggi non siano effettivamente email).
Quindi questo protocollo definisce come gestire e codificare gli allegati che possono essere dei file non ASCII, o
comunque non un testo. Per gestire gli allegati si distinguono 5 tipi di dati: testo, immagini, video, audio, applicazioni. Il
MIME definisce dei nuovi campi che possono essere nell’header o nel body del messaggio:
- content id : identificatore dell’allegato
- content description : descrizione testuale
- content type : tipo di allegato
- content transfer coding : definisce qual è lo standard per codificare l’allegato (QP* o B64*)
- content length : numero di byte dell’allegato
* QP (Quoted-Printable) è una codifica che traduce da testo ASCII a testo senza caratteri indesiderabili.
* B64 (Base64) è una codifica che traduce a gruppi di 24 bit, divisi ogni 6 bit (4 gruppi), e ogni 6 bit corrisponde una
lettera maiuscola, minuscola, un numero o un carattere tra “+” e “/”.
TELEFONIA INTERNET
Diversamente dalla posta elettronica la telefonia internet richiede una comunicazione in tempo reale tra 2 o più
partecipanti. Esistono 2 famiglie di protocolli che supportano la telefonia internet:
- IETF : basata su 3 protocolli (SIP, SDP, GLP)
- ITU : basata sul protocollo H.323
SIP
Session Initiation Protocol è un protocollo di richiesta-risposta. Attraverso questo protocollo, un host fa una chiamata e
un altro host risponde. SIP fa uso dell’UA (User Agent). Ogni UA è diviso in due parti: UAC (client) per inviare richieste, e
UAS (server) per inviare risposte. I messaggi di tipo SIP non sono solo richiesta e risposta, ma sono di 6 diversi tipi:
- INVITE : un utente invita un altro utente
- ACK : conferma dell’invito
- REGISTER : informare gli altri utenti che è cambiato il proprio indirizzo SIP attuale
- OPTIONS : richiedere le caratteristiche di un altro host
- CANCEL : termina la ricerca di un utente
- BYE : uscire da una conversazione
I nomi/indirizzi SIP sono simili a quelli della posta elettronica, con l’aggiunta del prefisso “sip”. Quando un utente si
registra fornisce un numero di indirizzi SIP dove può trovarsi. Per questo si usa il comando REGISTER.
Per la comunicazione SIP si fa uso dei proxy server. Ogni proxy server ha di tutti gli utenti collegati localmente. L’host 1
vuole comunicare con l’host 2; quindi h1 inoltra la richiesta al proprio proxy server, il quale la inoltra al proxy server di
destinazione. Quest’ultimo controlla se h2 è collegato,
altrimenti, inoltra la richiesta al server di reindirizzamento,
il quale ha la lista degli indirizzi alternativi. Quindi
determina dove l’host potrebbe essere collegato.
Restituisce l’indirizzo al proxy server chiamante, il quale
ripete il procedimento.
SDP
Session Description Protocol è un protocollo che definisce gli aspetti multimediali all’interno di una chiamata. Questi
aspetti sono contenuti in un messaggio SIP, e sono:
- Flussi multimediali : nel corpo del messaggio c’è la lista dei tipi multimediali (audio, video…)
- Indirizzi dei flussi : per inviare ciascun flusso viene indicato l’indirizzo di ciascun flusso
- Tempi di inizio e fine
GLP
Gateway Location Protocol è utilizzato quando la comunicazione non avviene tra due unità collegate a internet, ma
quando uno delle due è su un’altra rete, ad esempio PSTN o ISDN. In questi casi occorre un gateway per convertire i vari
messaggi.
27