Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
di calcolatori e internet
Che cos'è Internet?
Gli "ingranaggi" di internet
Internet è una rete di calcolatori. Data la varia natura dei dispositivi che vi si connettono, questi
vengono detti host (ospiti) o sistemi periferici (end system).
I sistemi periferici sono connessi tra loro tramite una rete di collegamenti (communication link) e
commutatori di pacchetti (packet switch).
La velocità di trasmissione (transmission rate) viene misurata in bit/secondo (bps).
Quando un sistema periferico vuole inviare dati a un altro sistema periferico, suddivide i dati in
sottoparti e aggiunge un'intestazione a ciascuna di esse: l'insieme delle informazioni risultati viene
detto pacchetto.
Esistono vari commutatori di pacchetto, i due principali sono i router e i commutatori a livello di
collegamento (link-layer switch). Gli switch sono solitamente usati nelle reti di accesso, mentre i
router nel nucleo della rete.
Un pacchetto percorre un percorso (route o path).
I sistemi periferici accedono a Internet tramite i cosiddetti Internet Service Provider (ISP). Un
provider è un insieme di commutatori di pacchetto e di collegamenti. Ciascuna rete di un ISP, sia di
alto sia di basso livello, è gestita in modo indipendente, fa uso del protocollo IP e si conforma a
determinate convenzioni riguardo a nomi e indirizzi.
I due principali protocolli sono TCP (Transmission Control Protocol) e IP (Internet Protocol).
Gli standard di Internet vengono sviluppati dall'Internet Engineering Task Force (IETF). I
documenti sugli standard vengono detti RFC, request for comment.
Descrizione dei servizi
Ci sono applicazioni distribuite, ovvero che coinvolgono più sistemi periferici e si scambiano
reciprocamente dati, come VoIP e P2P.
Le applicazioni per Internet vengono eseguite sui sitemi periferici e non sui commutatori di
pacchetto del nucleo della rete. I sistemi periferici collegati a Internet forniscono della API
(Application Programming Interface) che specificano come il pezzo di software eseguito su un
sistema periferico possa chiedere a Internet di recapitare dati a un altro specifico pezzo di
software eseguito su un altro sistema periferico.
Che cos'è un protocollo?
Un protocollo definisce il formato e l'ordine dei messaggi scambiati tra due o più entità in
comunicazione, così come le azioni intraprese in fase di trasmissione e/o di ricezione di un
messaggio o di un altro evento
Ai confini della rete
I sistemi periferici vengono anche detti host in quanto ospitano (ed eseguono) programmi
applicativi quali browser e web server.
Gli host si possono dividere in client e server.
Le reti di accesso
Le reti di accesso (access network) sono le reti che connettono fisicamente un sistema al suo edge
router (router di bordo), che è il primo router sul percorso dal sistema d'origine a un qualsiasi altro
sistema di destinazione collocato al di fuori della stessa rete di accesso.
La mancanza di sincronizzazione tra le finestre del mittente e del destinatario ha importanti
conseguenze quando abbiamo a che fare con un intervallo finito di numeri di sequenza
La finestra deve avere ampiezza inferiore o uguale alla metà dello spazio dei numeri di sequenza
dei protocolli SR.
Nella pratica, bisogna assicurarsi che un numero di sequenza non venga riutilizzato finché il
mittente non sia sicuro che ogni pacchetto mandato precedentemente con lo stesso numero di
sequenza non si trovi più nella rete. Si fissa un lasso di tempo e lo si usa per determinare se possa
trovarsi o meno nella rete.
I meccanismi di Go-Back-N e di Ritrasmissione Selettiva (SR) hanno in comune:
La presenza di un buffer con finestra scorrevole sul lato sender
Raddoppio dell'intervallo di timeout
Se il timer scade, TCP ritrasmette il pacchetto ma aspetta il doppio del tempo
(indipendentemente da EstimatedRTT e tutto il resto). Di conseguenza, gli intervalli crescono
esponenzialmente ad ogni ritrasmissione.
Tuttavia, tutte le volte che avviene uno degli altri possibili avvenimenti (ricezione di un ACK o
ricezione di dati dall'applicazione superiore) il timer viene resettato in base a EstimatedRTT e
DevRTT. Se la rete è congestionata, TCP si comporta con rispetto verso essa!
Ritrasmissione rapida
Il mittente può in molti casi rilevare la perdita dei pacchetti ben prima che si verifichi l'evento di
timeout grazie agli ACK duplicati relativi a un segmento il cui ACK è già stato ricevuto dal
mittente.
Se il destinatario TCP riceve un pacchetto con un numero di sequenza superiore al prossimo
numero di sequenza atteso, rileva un buco nel flusso di dati [segmento mancante]. Tale vuoto
potrebbe essere dovuto a una perdita o a un riordinamento dei pacchetti all'interno della rete. Il
destinatario reinvia l'ack relativo all'ultimo byte di dati ricevuto correttamente.
Cosa succede se un server riceve un pacchetto TCP SYN da un client il cui numero di
porta/indirizzo IP non corrispondono ad alcuna socket nell'host? Per esempio, il server riceve una
richiesta sulla porta 80 ma non è in ascolto su quella porta.
Allora invia al mittente un messaggio di reset con il bit RST posto a 1.
Principi del controllo di congestione
Generalmente, la perdita di pacchetti è causata da buffer overflow nei router quando il traffico
diventa eccessivamente intenso.
Cause e costi della congestione
Scenario 1: due mittenti e un router con buffer illimitati
R = capacità del router
Il motivo della diminuzione del throughput al crescere del traffico diventa evidente quando si
considera la quantità di lavoro sprecato da parte della rete. In uno scenario di traffico intenso,
ogni qualvolta un pacchetto viene scartato sul router del secondo hop, il lavoro effettuato dal
router del primo hop nell'instradamento del pacchetto verso il secondo router finisce per essere
sprecato. La rete avrebbe funzionato altrettanto bene (anzi, altrettanto male) se il primo router
avesse semplicemente scartato il pacchetto e fosse rimasto inattivo. Più nello specifico, la
capacità trasmissiva utilizzata dal primo router per instradare il pacchetto al secondo potrebbe
essere utilizzata in modo più proficuo trasmettendo un altro pacchetto.
L'eliminazine di pacchetti per via della congestione costa!
Controllo di congestione TCP
TCP impone a ciascun mittente un limite alla velocità di invio sulla propria connessione in
funzione della congestione di rete percepita.
Il meccanismo di controllo di congestione TCP fa tener traccia agli estremi della connessione di
una variabile aggiuntiva: la finestra di congestione (congestion window), indicata con cwnd, che
impone un vincolo alla velocità di immissione di traffico sulla rete da parte del mittente.
LastByteSent - LastByteAcked ≤ min{cwnd, rwnd}
Assumiamo che il buffer di ricezione sia abbastanza grande da trascurare il vincolo della finestra di
ricezione
LastByteSent - LastByteAcked ≤ cwnd
Definiamo evento di perdita per il mittente TCP l'occorrenza o di un timeout o della ricezione di
tre ACK duplicati da parte del destinatario.
Un evento di perdita indica al mittente che c'è congestione!
Se gli ack arrivano con frequenza relativamente bassa, allora la finestra di congestione verrà
ampliata piuttosto lentamente.
Se gli ack arrivano con frequenza più alta, la finestra di congestione verrà ampliata più
rapidamente.
Dato che TCP utilizza gli acknowledgement per scatenare (o temporizzare) gli incrementi
dell'ampiezza della finestra di congestione, si dice che TCP è auto-temporizzato (self-clocking).
La maggior parte dei protocolli TCP usa l'algoritmo Reno che include fast recovery. L'originale
Tahoe non lo includeva.
Vegas tenta di evitare la congestione a priori.
CUBIC è l'algoritmo TCP di default su Linux.
Descrizione macroscopica del throughput TCP
Sappiamo che TCP ha un comportamento a dente di sega. Ma quale potrebbe essere il throughput
medio?
0.75 ∗ 𝑊
𝑡ℎ𝑟𝑜𝑢𝑔ℎ𝑝𝑢𝑡_𝑚𝑒𝑑𝑖𝑜 =
𝑅𝑇𝑇
Con W = ampiezza media della finestra
Detto L il tasso di perdita
1.22 ∗ 𝑀𝑆𝑆
𝑡ℎ𝑟𝑜𝑢𝑔ℎ𝑝𝑢𝑡_𝑚𝑒𝑑𝑖𝑜 =
𝑅𝑇𝑇 𝐿
Utilizzazione del canale
@ ∗ "/#
𝑈 =
#BB C "/#
Assenza di stallo:
W * MSS/R = MSS/R + RTT
W = 1 + R/MSS RTT
Consideriamo il caso di due terminali, uno al CERN di Ginevra e l'altro al Fermilab di Chicago
collegati tra loro da un link con ampiezza di banda R=1Gbps. Il tempo di RTT tra di essi vale 30 ms.
Supponiamo che i dati siano scambiati in pacchetti della dimensione L=1.000 byte. Quanto deve
essere grande la finestra affinché l'utilizzazione del canale sia continua? Il numero di pacchetti
minimo (si trascurino i meccanismi TCP di controllo flusso e congestione) è di:
3.751
Frammentazione dei datagrammi IP
I frame ethernet possono trasportare fino a 1500 byte di dati.
MTU (maximum transmission unit): dimensione massima di un frame a livello di collegamento
Le diverse tratte del percorso mittente-destinatario possono essere di tipologie diverse e avere
MTU diverse. Quindi un router può frammentare i dati del datagramma IP in due o più
datagrammi IP più piccoli, detti frammenti, e trasferirli sul collegamento di uscita. I frammenti
dovranno essere riassemblati prima di raggiungere il livello di trasporto alla destinazione, perché
TCP e UDP attendono segmenti interi dal livello di rete.
Sono i sistemi periferici che riassemblano i datagrammi, non i router interni.
Nell'header IPv4 ci sono i campi identificazione, flag, spiazzamento di frammentazione.
Durante una connessione TCP un pacchetto IPv4 in viaggio dall'host A all'host B viene
frammentato in nove parti. Una delle parti, diciamo la settima non arriva a destinazione all'host B.
Che cosa succede?
Dopo la ricezione di un ACK duplicato tre volte del pacchetto precedente o allo scadere del
timeout, A rimanda l'intero pacchetto
Algoritmi di instradamento
Gli algoritmi di instradamento, che vengono eseguiti nei router di rete, si scambiano e calcolano le
informazioni che vengono usate per configurare le tabelle di inoltro.
Generalmente, un host è connesso direttamente al cosiddetto router predefinito (default router),
chiamato anche first-hop router ("router di primo hop"), cui trasferisce tutti i pacchetti diretti
Un nodo x aggiorna la propria stima del vettore delle distanze quando vede il cambiamento di
costo in uno dei collegamenti direttamente connessi o quando riceve da qualche vicino un vettore
aggiornato.
Lorenzo Soligo Riassunto Reti e Sistemi Operativi UNIMIB 2016-2017
Un approccio, spesso utilizzato nella pratica, consiste nell'utilizzare un instradamento che prende il
nome di "instradamento a patata bollente" (hot-potato routing). In questo caso, il sistema
autonomo si sbarazza del pacchetto (la patata bollente) non appena possibile, per la precisione nel
modo meno costoso possibile. Ciò avviene facendo inviare il pacchetto da un router al gateway
con il minor costo (ovviamente scelto tra tutti i gateway che hanno un percorso verso la
destinazione)
Riepilogando, i problemi di scalabilità e di autorità amministrativa vengono risolti definendo dei
sistemi autonomi. All'interno del sistema autonomo, tutti i router adottano lo stesso protocollo di
instradamento interno. Tra loro, i sistemi autonomi eseguono lo stesso protocollo di
instradamento tra sistemi autonomi. Il problema di scalabilità viene risolto, dato che un router
intra-AS necessita soltanto delle informazioni sui router del proprio sistema autonomo. Il
problema dell'indipendenza amministrativa viene risolto dato che ogni organizzazione può
eseguire qualsiasi protocollo di instradamento intra-AS; però, ciascuna coppia di sistemi connessi
deve adottare lo stesso protocollo di instradamento inter-AS quando scambia informazioni di
raggiungibilità.
Considerate l’insieme di 8 nodi e 14 link con le seguenti caratteristiche: c(x,y)=6; c(x,v)=3; c(x,w)=1;
c(y,z)=14; c(y,v)=1; c(y,t)=4; c(v,w)=1; c(v;u)=1; c(v;t)=9; c(w;u)=3; c(u,t)=2; c(u,s)=4; c(s,t)=1,
c(t,z)=2. Determinare il numero di passi necessari al calcolo del percorso di minima distanza da x a
z, nonché il costo di questo percorso ed il nodo immediatamente precedente a z. Per passo si
intende l’insieme di operazioni eseguite in ogni ciclo, in particolare: aggiunta all’insieme dei nodi
esaminati di un nodo con percorso di costo minimo, aggiornamento dei percorsi di costo minimo.
Passi 6, costo 7, nodo t
Quale di queste caratteristiche si applica bene a BGP?
BGP deve essere usato all'interno di un autonomous system
Efficienza: frazione [sul lungo periodo] di slot con successo quando ci sono molti nodi, ognuno con
molti frame da inviare.
Per efficienza massima con N nodi, bisogna trovare p* che massimizza Np(1-p)N-1. Questo limite è
1/e = 0.37. Nel migliore dei casi il canale viene usato per trasmissioni utili il 37% del tempo!
La probabilità ottimale p* con cui viene ritentata una trasmissione dopo una collisione in slotted
ALOHA:
dipende dal numero di stazioni attive
Che caratteristiche ha il protocollo slotted ALOHA?
E' un protocollo che ha bisogno di sincronizzazione
2. ALOHA puro
È più semplice, non c'è sincronizzazione. Quando il primo frame arriva, viene tramsesso
immediatamente. La probabilità di collisione aumenta: un frame inviato a t0 collide con frame
inviati nell'intervallo di tempo [t0 - 1, t0 + 1].
In un protocollo CSMA/CD per LAN Ethernet il segnale di jam è di 48 bit. Quanto tempo impiega un
host a trasmettere il segnale di jam su una LAN a 10 Mbps?
4,8 micro sec
Preambolo: 7 byte 10101010 (hex: AA), un byte 10101011 (hex: AB)
Usato per sincronizzare gli orologi di receiver e sender
Indirizzi: Se l'adapter riceve un frame con l'indirizzo di destinazione che corrisponde al
proprio, o con un indirizzo broadcast (pacchetto ARP), l'adapter passa i dati
nel frame allo strato di rete, altrimenti scarta il frame
Tipo/Lunghezza: Indica il protocollo dello strato superiore, principalmente IP. Per valori fino a
1500 indica la lunghezza del payload
Dati: 46-1500 byte
CRC: Controllo al receiver: se un errore viene rilevato, il frame è scartato
N.B.: La lunghezza minima del payload è di 46 byte perché la lunghezza minima del frame è 64
byte + 8 di preambolo = 72 byte!
26 byte di header + CRC, 46 byte minimo di dati
In uno schema CRC a 32 bit il sender sceglie 32 bit addizionali e li appende al dato originale per
proteggerlo da eventuali errori. Quanti bit avrà il generatore G condiviso?
I 32 bit addizionali garantiscono protezione fino a 32+1 bit. Il generatore avrà 33 bit.
Il metodo CRC con un generatore G a 32 bit può:
segnalare qualunque sequenza di errori fino a 31 bit consecutivi compresi
Un messaggio di 1400 byte è incapsulato in un segmento TCP con header di dimensioni tipiche, a
sua volta incapsulato in un datagramma IP con header di dimensioni tipiche ed infine in un frame
ethernet. Quale sarà la dimensione del frame ethernet?
1466 byte
Questo perché un segmento TCP, che è lungo 1400byte + 20 byte di header, viene incapsulato in
un segmento IP (altri 20 byte di header), inclapsulato in un frame (altri 26 byte fra header [22] e
EDC [4])
Algoritmo di spanning tree
Avere ridondanza [percorsi alternativi da sorgente a destinazione] aumenta l'affidabilità.
Path multipli -> percorsi ciclici: i bridge possono moltiplicare e inoltrare i frame per sempre!
Quindi si organizzano i birdge in uno spanning tree disabilitando un sottoinsieme di interfacce.
Come viene gestito l'instradamento tra due switch collegati da percorsi multipli, cioè quando ci
sono più strade per andare da uno switch all'altro?
Algoritmo spanning tree che disabilita i percorsi ridondanti
Lo spanning tree per definizione è utilizzato da bridge e switch.
Confronto bridge/router
Sono entrambi dispositivi store-and-forward: il router è dello strato di rete (liv. 3), il bridge dello
stato di link (liv. 2).
Il router mantiene tavole di routing e implementa algoritmi di routing; il bridge mantiene bridge
table e implementa filtraggio, algoritmi di apprendimento e di spanning tree.
Tre LAN dipartimentali sono collegate tra loro da una dorsale in fibra. La topologia di ciascuna LAN
è a stella: le tre LAN usano rispettivamente le tecnologie ethernet 100BaseT, 10BaseT e 100BaseT.
Ciascuna Lan finisce in uno switch ethernet con una uscita sulla dorsale dove finiscono in un
concentratore (hub) che interconnette le tre LAN, che a sua volta esce nel router di frontiera dei
tre dipartimenti. Quale caratteristica deve essere richiesta per potere collegare le tre LAN in
questo schema?
Che tutti e tre gli switch di ciascuna LAN abbiano una uscita sulla dorsale alla stessa velocità delle
porte del concentratore
Questo perché l’HUB non ha buffer, ma gli switch sì
Tre LAN dipartimentali sono collegate tra loro da una dorsale in fibra. La topologia di ciascuna LAN
è a stella: le tre LAN usano rispettivamente le tecnologie ethernet 100BaseT, 10BaseT e 100BaseT.
Ciascuna Lan finisce in uno switch ethernet con una uscita a 1Gbps sulla dorsale dove finiscono in
un concentratore (hub) che interconnette le tre LAN. In quanti domini di collisione è divisa la rete
se tutti i collegamenti nelle LAN sono full-duplex?
1 (solo l'hub)