Sei sulla pagina 1di 27

Gabriele Orlandi

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 AB o BA
- Canali Full-Duplex : i dati viaggiano contemporaneamente AB
- 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

2) Propagation e Transmission Delay


Un blocco di 1.000b viene trasmesso tra 2 host. Trovare Tp e Tx nei seguenti casi:
- 100m di doppino (rame), BitRate = 10Kbps
-7
Tp = dist/vel = 0,1/200.000 = 5x10 s ; Tx = Bit/BitRate = 1.000/10.000 = 0,1s
- 10Km di cavo coassiale (rame), BitRate = 1Mbps
-5 6 -3
Tp = 10/200.000 = 5x10 s ; Tx = Bit/BitRate = 1.000/10 = 10 s
- 50.000 Km di canale satellitare, con BitRate = 10Mbps
7 -4
Tp = 50.000/300.000 = 1,67x10-1s ; Tx = Bit/BitRate = 1.000/10 = 10 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.

n-PDU = Protocol Data Unit di livello n


Ad ogni livello si aggiunge un Header (H) iniziale da SDU e n-PDU; tra livello 2 e 1 si aggiunge anche un Trailer (T) finale.

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.

Connectionless (CL) : poco costoso ma poco affidabile


Non ci sono le fasi di handshaking; i dati sono mandati best effort, perciò possono non arrivare, arrivare duplicati, o
arrivare in disordine.

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

1) Commutazione msg e pkt


Una stazione deve trasmettere un msg da 1,5Mb su un path lungo 4 hop (destinatario). Ogni hop ha un BitRate = 1Mbps.
Trascurare Tp. Trovare Tx sapendo che la rete usa commutazione di msg o di pkt, con pkt-size = 1.500b.
6 6
Msg: Tx(1 hop) = Bit/BitRate = 1,5x10 /10 = 1,5s
Tx(4 hop) = 1,5 x 4 = 6s
6 3
Pkt: n°pacchetti = Bit/pkt-size = 1,5x10 /1,5x10 = 1.000 pkt
6 -3
Tx(1 hop – 1pkt) = pkt-size/BitRate = 1.500/10 = 1,5x10 s
1° pkt mandato a tempo t = 0
-3
2° pkt mandato a tempo t = 1,5x10 s
-3
3° pkt mandato a tempo t = 2(1,5x10 s)
-3
1.000° pkt mandato a tempo t = 999(1,5x10 s) = 1,485s
-3
1.000° pkt ricevuto a tempo t = 1,485 + 4(1,5x10 ) = 1,5045s

2) Commutazione circuito e pkt


-6
Dato un path da 10 hop, Tp=100x10 s per hop, BitRate = 2Mbps, bisogna mandare 50 Mb di dati. Trovare i tempi di
commutazione di circuito e pkt. Nel circuito setup = 10ms, e pkt-size=1Kb.
Circ.: Tempo = Setup + Tx + 10Tp = Setup + Bit/BitRate + 10Tp = 25,011s
Pkt: Tempo = Tx(tot) + Tp(tot)
n°pacchetti = Bit/pkt-size = 50Mb/1Kb= 50.000 pkt
Tx(1 hop – 1 pkt) = pkt-size/BitRate = 1Kb/2Mbps = 0,5s
1° pkt mandato a tempo t = 0
2° pkt mandato a tempo t = 0,5s
3° pkt mandato a tempo t = 2(0,5s)
50.000° pkt mandato a tempo t = 49.999(0,5s) = 24,99s
-4
50.000° pkt ricevuto a tempo t = 24,99s + 10(0,5s) + Tp(tot) = 24,99s + 10(0,5s) + 10(10 )= 24,996s
Conviene usare Comm.di Pkt. Comm.di circuito è conveniente solo se Tempo(Setup) < (n°hop -1)(pkt-size/BitRate)

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

DSL (1,544 Mbps) o Carrier T1


Digital Subscriber Line è un protocollo tra utente e local exchange, nel caso di ISDN. DSL si basa su TDM Carrier T1 o
semplicemente T1, che è un particolare protocollo TDM con frame da 193 bit e time slot da 125 microsecondi. Poiché
ogni conversazione occupa 8 bit, le conversazioni totale sono 24 (8x24=192), e il bit rimanente è il frame-bit di controllo.
Il bit rate utilizzato è di 1,544 Mbps, in quanto, secondo la tecnica PCM, si campiona 8000 volte al secondo, e quindi
193x8000=1.544.000 . In realtà i bit effettivi di dati sono 168 su 193, perché ogni byte ha 1 bit di controllo. Quindi ci sono
25 bit di controllo. Perciò il bit rate effettivo è 168x8000 = 1,344 Mbps.

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.

Asincrona – Bit Synchronization


La trasmissione asincrona è basata sull’utilizzo di bit di controllo d’inizio e di fine byte, in modo che il destinatario si
sincronizzi su di essi. Quindi il clock del destinatario non si sincronizza su ogni singolo bit. Lo schema utilizzato è quello
di Bit Synchronization: consiste nell’incapsulare ogni byte tra uno start bit (0) e uno stop bit (1). In alcuni casi gli stop
bit sono due (11). In questo modo si garantisce una transazione 10 ad ogni byte.

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

Flow control (Sliding Window)


Gli schemi Go-Back-N e Selective Repeat sono detti RQ Continuous, in quanto i frame sono mandati continuamente. In
realtà c’è un limite di invio e di ricezione detto limite K. Per Idle RQ questo limite è sempre “1” sia per la finestra d’inivio
(sorgente), sia per la finestra di ricezione (ricevente), infatti ad ogni frame mandato (1) si aspetta l’ACK (1).
Per Go-Back-N il limite d’invio è “K” in quanto si mandano continuamente frame fino al limite della finestra, mentre il
limite di ricezione è “1” in quanto il ricevente accetta solo il frame corretto, e il resto lo butta via.
Per Selective-Repeat il limite d’invio è “K” per lo stesso motivo di Go-Back-N, mentre il limite di ricezione stavolta è “K” in
quanto il ricevente bufferizza fino a K frame.
Protocollo finestra di invio finestra di ricezione
Idle RQ 1 1
Go-Back-N K 1
Selective-Repeat K K

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

Algoritmo di backoff esponenziale


Quando si verifica una collisione, ogni stazione attende per un periodo di tempo casuale di 0 o 1 slot, prima di iniziare a
ritrasmettere il proprio frame. Chiaramente se entrambe le stazioni scelgono lo stesso tempo, si verifica una seconda
collisione, ma la probabilità è 0,5. Al secondo tentativo di sceglie un tempo di 0,1,2 o 3 slot time, riducendo la probabiltià
n
di collisione a 0,25. Dopo n successive collisioni viene scelto un numero casuale di slot time compreso tra 0 e 2 -1, e ogni
volta si dimezza la probabilità di collisione. Questo processo continua fino a 10 collisioni successive, quando il numero è
compreso tra 0 e 1023 slot, dopodichè il numero rimane costante (limite di backoff=10). Inoltre si sceglie anche un
limite di tentativi, che se viene superato si dichiara un fallimento.

Dimensione minima del frame


In una rete che utilizza CSMA\CD è importante stabilire la dimensione minima del frame. In precedenza abbiamo detto
che la collisione può avvenire se i due host sentono il cavo libero. Esiste quindi un tempo massimo per “sentire” la
eventuale collisione a partire dall’invio del frame. Questo tempo è detto RTT ed è pari a 2Tp, cioè il tempo di andata e
ritorno di propagazione del segnale. Perché CSMA\CD funzioni dev’essere impossibile mandare un intero frame in un
tempo inferiore a 2Tp, in modo da non perdere tempo inviando uno o più frame, e in modo da percepire la collisione già
al primo frame. Quindi il Tx è posto a 2Tp, ovvero FrameSize/BitRate = 2Tp, quindi (min)FrameSize = 2Tp x BitRate.

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

HDLC (High Data Link Control)


È un protocollo standard che usa bit staffing in quanto ci sono i flag pattern a inizio e fine frame. Si può inviare un
numero qualsiasi di bit e un formato qualsiasi (testo, immagine, audio, video…); questo perché il numero di bit sarebbe
sicuramente multiplo in 8 se venissero mandati solo file testo.
Il campo indirizzo non fa da indirizzo vero e proprio ma serve per capire se il frame è un comando o una risposta. Il
campo controllo dice il tipo di frame.
Formato del frame:
flag indirizzo controllo informazioni FCS flag
8 bit 8-16 bit 8-16 bit 0-N bit 16-32 bit 8 bit
Il campo Frame Check Sequence (FCS) serve per il controllo degli errori. Per fare controllo degli errori ci sono diverse
tecniche: il “bit di parità” consiste nell’inserire un bit finale a 0 o 1, in modo da rendere pari il numero totale di “1”. FCS
contiene un valore cyclic redundancy check (CRC) per il riconoscimento di eventuali errori di ricezione all'interno del
frame stesso. Il campo FCS non permette la correzione degli errori ma solo il loro riconoscimento: la tecnica di correzione
degli errori è di tipo ARQ.

PPP (Point to Point Protocol)


È un protocollo standard che si usa solo nelle reti p2p. Come HDLC, anche PPP fa bit stuffing sui frame. Poiché siamo
nelle reti p2p il campo indirizzo è inutile e vale “11111111”.
Formato del frame:
flag indirizzo controllo protocollo informazioni FCS flag
8 bit 8 bit 8 bit 16 bit 0-1500 bit 16 bit 8 bit
Il campo protocollo è un campo in più, da 16 bit, e indica il tipo di protocollo di livello network, e quindi il tipo di
pacchetto che c’è nel campo informazioni.

FORMATO FRAME ETHERNET

Nonostante Ethernet abbia diverse tipologie, l'elemento comune è nella struttura del frame.

Gli elementi sono:


- Preamble (preambolo), di 7 byte: questi primi byte hanno valore 10101010 e servono a "svegliare" gli adattatori del
ricevente e a sincronizzare gli oscillatori con quelli del mittente.
- SFD - Start Frame Delimiter, di 1 byte: questo byte ha valore 10101011 e la serie dei due bit a 1 indica al destinatario
che sta arrivando del contenuto importante; è protetto mediante la violazione del codice Manchester; svolge la stessa
funzione del campo flag della trama HDLC;
- DA - Destination MAC address (indirizzo di destinazione), da 2 a 6 byte;
- SA - Source MAC address (indirizzo sorgente), da 2 a 6 byte;
- EtherType (campo tipo), di 2 byte: questo campo indica il tipo di protocollo del livello di rete in uso durante la
trasmissione, oppure più spesso utilizzato come la lunghezza del campo dati;
- Payload (campo dati), da 46 a 1500 byte: contiene i dati reali, che possono essere di lunghezza variabile; se i dati
superano la capacità massima, vengono suddivisi in più pacchetti, mentre se i dati non raggiungono la lunghezza minima
di 46 byte, viene aggiunto del padding (riempitivo) della lunghezza opportuna;
- FCS - Frame Check Sequence, controllo a ridondanza ciclica (CRC), di 4 byte: permette di rilevare se sono presenti errori
di trasmissione.

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.

L’hub è un apparato di livello fisico; praticamente non fa instradamento in


quanto se gli arriva un’informazione la replica su tutte le sue uscite, tranne il
segmento da cui è arrivato il frame. Gli hub connettono solo reti omogenee, non
bufferizzano niente e lavorano molto come “automi”.
La banda totale disponibile viene ridotta a una frazione di quella originaria a
causa del moltiplicarsi dei dati.

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.

Più HUB (accesso a internet per


una grande azienda)

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.

SWITCHED FAST ETHERNET


In questo caso le LAN sono collegate tra loro attraverso uno switch, e in particolare almeno una di queste LAN è una
FastEthernet. Il problema che lo switch deve affrontare è la velocità di traffico, perché Fast Ethernet manda a 100Mbps,
mentre un Ethernet a 10Mbps, quindi può capitare che lo switch non riesca a mandare tutti i frame che riceve da
FastEthernet a Ethernet. Per questo lo switch fa controllo di flusso: quando il buffer è troppo pieno manda un frame
Ethernet con il campo tipo impostato a “Pause” lungo il canale di uscita della Fast Ethernet, per dire al mittente di non
mandare altri frame; il tempo di attesa prima di rimandare altri frame viene specificato nel campo dati del frame “pause”.
Quando lo switch vede il buffer sufficientemente libero manda sempre lungo Fast Ethernet un altro frame con il campo
tipo impostato a “Continue”. Questo metodo Pause-Continue si chama BackPressure.

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.

11000000.10101000.00000101.000000010 : Ip Host A 11000000.10101000.00000101.000011001 : Ip Host B


11111111.11111111.11111111.000000000 : Subnet mask Host A 11111111.11111111.11111111.000000000 : Subnet mask Host A
11000000.10101000.00000101.000000000 : Risultato 11000000.10101000.00000101.000000000 : Risultato

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.

3) CIDR Net Mask


Ad una rete è stato allocato un blocco di 1024 indirizzi di rete da 200.30.0.0 a 200.30.3.255 . Assumendo che sia usato CIDR
rappresentare questi indirizzi in forma binaria e derivare la netmask da usare e il netid di questa rete.
200.30.0.0 = 11001000. 00011110. 00000000. 00000000
200.30.5.255 = 11001000. 00011110. 00000011. 11111111
La differenza tra i due indirizzi sono gli ultimi 10 bit, quindi la mask è 11111111. 11111111. 11111100. 00000000
L’indirizzo base (netid) è l’indirizzo 200.30.0.0

4) CIDR Net Mask


L’Univesità di Bologna si fa assegnare le reti da 194.76.16._ a 194.76.23._
Calcolare la maschera usata per fare CIDR.
Le reti sono da 16 a 23, quindi 8 reti, rappresentabili con 3 bit. I bit non rappresentati sono 8. Quindi la mask è:
11111111. 11111111. 11111000. 00000000

5) CIDR Net Mask


In un sistema che utilizza CIDR le tabelle di routing hanno i dati 148.125.16.0 e 255.255.240.0
Dire qual è il n° massimo di host che possono essere connessi alla rete di Acme, e quale tra le alternative seguenti indica
l’indirizzo di host nella rete:
- 10010100.01111101.00010110.10011100
- 10010101.01101001.00101001.01011011
- 11001011.00111100.00011011.10000111
- 10111001.01000111.01001100.10001001
I dati contenuti in tabella sono rispettivamente l’indirizzo base del sistema e la maschera.
12
Poiché la maschera è 255.255.240.0, quindi 11111111. 11111111. 11110000. 00000000, ci sono 2 -1=4095 host possibili
per una singola rete.
148.125.16.0 è l’indirizzo base, in binario: 10010100.01111101.00010000.00000000
I 4 indirizzi sono: 10010100.01111101.00010110.10011100
10010101.01101001.00101001.01011011
11001011.00111100.00011011.10000111
10111001.01000111.01001100.10001001
Solo il primo indirizzo appartiene alla rete, perché corrispondono i bit di netid e subnetid (in base alla maschera, i 12 bit
finali non contano).

16
PROTOCOLLI DI ASSEGNAMENTO

NAT

È un procedimento per assegnare ad una rete di accesso un


solo indirizzo IP pubblico, il quale viene utilizzato da tutti gli
host che accedono per comunicare in rete (all’esterno). Invece
per comunicare all’interno ogni host ha il proprio indirizzo IP
privato.
1) host A vuole comunicare con B;
2) il pkt di richiesta di A arriva a NAT, attraverso la porta A e usando l’indirizzo IP privato di A;
3) all’esterno NAT inoltra il pkt a B usando IP pubblico di NAT, sullo porta Ax, associata alla porta A;
4) la risposta torna sulla porta Ax e quindi NAT la inoltra sulla porta A.

DHCP

È un altro procedimento di assegnazione di indirizziIP.


1) client chiede un indirizzo IP (discover);
2) server gli offre un indirizzo IP con una durata (offer);
3) client accetta e informa (request);
4) server conferma (ACK), e quando client lo riceve parte
l’utilizzo dell’indirizzo IP.

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.

Tempo T=0 A B C D E Tempo T=1 A B C D E


table di A 5,B 2,C table di A 5,B 2,C 3,C 7,B
table di B 5,A 1,D 2,E table di B 5,A 2,D 1,D 2,E
table di C 2,A 1,D 6,E table di C 2,A 1,B 1,D 6,E
table di D 1,B 1,C table di D 3,C 1,B 1,C 3,B
table di E 2,B 6,C table di E 7,B 2,B 6,C 3,B

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.

I router dell’area dorsale si chiamano LSR (label


switching router). I nodi router di confine (sempre
all’interno della dorsale) si chiamano LER (lable edge
router). Solo i router LSR compongono il Dominio
MPLS.

Quando un LER riceve un pkt IP compie una


classificazione: in base a quanto contenuto
nell’intestazione IP identifica la corrispondente FEC
(Forwarding Equivalent Class), cioè il pkt viene
classificato secondo la sua QoS e secondo la sua
destinazione.
Quindi il LER inserisce una nuova intestazione MPLS aggiuntiva con un’etichetta (label). L’intestazione IP non viene più
letta fino al LER di arrivo, mentre gli LSR interni leggeranno solo l’etichetta MPLS. Il primo LSR legge l’etichetta MPLS e
tramite la sua tabella sceglie una porta d’uscita e cambia l’etichetta. Il router LSR successivo farà la stessa cosa con la
propria tabella. Il LER finale toglie l’intestazione MPLS e instrada nuovamente secondo l’indirizzo IP.

Le operazioni effettuate su un pacchetto sono 3:


- push : inserimento della label da parte di LER iniziale
- swap : conversione dell’etichetta all’interno di ogni LSR
- pop : eliminazione della laberl da parte di LER finale

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

- Inizialmente quando viene mandato il primo segmento:


RTO = 3 secondi di default (RTT e D non vengono calcolati)
- Dopo il primo ACK poiché M è l’unico round trip time a disposizione:
RTT=M; D=M/2; RTO=3M NB: RTO = RTT + 4D = M + M/2 = 3M
- Dal secondo ACK in poi si usano le formule di Jacobson:
RTT=(1); D=(2); RTO=(3)

SITUAZIONE DI ERRORE (RITRASMISSIONE)

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

CONTROLLO DI FLUSSO – SLIDING WINDOW

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.

CONTROLLO DI CONGESTIONE – SLOW START

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 (DOMAIN NAME SYSTEM)

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.

STRUTTURA DEL NOME


Un nome di dominio è costituito da una serie di stringhe separate da punti, ad esempio it.wikipedia.org. A differenza
degli indirizzi IP, dove la parte più importante del numero è la prima partendo da sinistra, in un nome DNS la parte più
importante è la prima partendo da destra. Questa è detta dominio di primo livello, per esempio “.org” o “.it”. Un
dominio di secondo livello consiste in due parti, per esempio “wikipedia.org”, e così via. Ogni ulteriore elemento
specifica un'ulteriore suddivisione. Quindi si genera una gerarchia di nomi simbolici, cioè domini divisi a livelli.

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.

SMTP: COMANDI E RISPOSTE


Per la comunicazione tra i 2 MTA server ci sono comandi e risposte, che sono rispettivamente caratteri e numeri:
1) Server1 contatta Server2 sulla porta TCP 25 , se S2 è in ascolto risponde 220 (ready) (fase handshaking).
2) S1 manda il comando HELO per iniziare a interagire, se S2 accetta (ok) risponde 250.
3) S1 manda MAIL FROM: <indirizzo-mittente>, S2 risponde ok 250.
4) S1 manda RCPT TO: <indirizzo-destinatario>, S2 risponde ok 250.
5) S1 manda DATA cioè comunica di voler mandare il messaggio, S2 risponde 354 cioè indica come marcare il termine
del messaggio (<CRLF>.<CRLF>), e conferma di essere pronto a ricevere la mail.
6) S1 manda QUIT se non ha altre mail da inviare, per chiudere la connessione, S2 accetta con 221.

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