Sei sulla pagina 1di 42

RETI

1.1 INTERNET: UNA PANORAMICA


Internet viene anche chiamata internetwork cioè una rete di reti.

Rete: interconnessione di dispositivi in grado di scambiarsi info, possono essere:

- end system

- Host: appartiene agli utenti per eseguire applicazioni (pc , tablet...)

- Server: computer con elevate prestazioni per eseguire programmi che forniscono servizio a diverse applicazioni utente (posta
elettronica o il web). Installati in uffici centrali e gestiti dagli amministratori di sistema

- router: collegano una rete ad altre reti

- switch: collegano tra loro più sistemi terminali a livello locale

- modem: trasformano la codifica dei dati

Questi dispositivi vengono collegati tramite link, che possono essere mezzi trasmissivi cablati o wireless come cavi o onde radio.

LAN (Local Area Network)


Rete privata che collega i computer in un singolo comprensorio.

- Solitamente di proprietà dell’organizzazione che la utilizza

- Interconnette prevalentemente sistemi terminali

Solitamente oggi le reti LAN utilizzano lo switch di interconnessione al quale sono connessi i dispositivi ed è
in grado di riconoscere l’indirizzo di destinazione ed inviare il pacchetto allo specifico host.

+ meno traffico rispetto a broadcast

+ Più coppie di dispositivi possono comunicare contemporaneamente

WAN (Wide Area Network)


Interconnessione di dispositivi in grado di comunicare con estensione maggiore, città nazione o addirittura intero globo.

- creata è gestita da un Internet Service Provider che fornisce i servizi alle organizzazioni

- Interconnette anche switch, router o modem

Di due tipi:

1. WAN punto-punto, rete che collega due dispositivi di comunicazione tramite un mezzo trasmissivo

2. WAN di commutazione, rete con più di due punti di terminazione

INTERNETWORK o internet (i minuscola)

connessioni di più reti LAN e WAN.

Reti a commutazione di circuito


C’è un circuito che collega i due dispositivi, comunicazione continua, e lo switch lo può attivare o disattivare.

-Gli switch sono in grado di inoltrare info ma non di memorizzarle

-Sottoutilizzata la capacità della rete quando solo due telefoni sono in


collegamento

Reti a commutazione di pacchetto

Comunicazione fra i due lati viene effettuata trasmettendo, scambiando blocchi di dati chiamati pacchetti.
-gli switch sono in grado di inoltrare i pacchetti e memorizzarli

-Il router ha una coda dove memorizza i pacchetti da inviare, ci possono essere ritardi

Internet ( i maiuscola)

Tipo di rete internet (i minuscola) più famoso, composto da migliaia di reti interconnesse.

- insieme di dorsali, reti particolarmente estese di proprietà di qualche compagnia telefonica, connesse tramite sistemi peering point,
chiamate ISP internazionali

- composte da reti dei provider, utilizzano a pagamento i servizi delle dorsali, sono chiamate ISP nazionali/regionali

- Le reti private utilizzano i servizi a pagamento forniti dalle reti dei provider

Qualsiasi utente può utilizzare questa rete, fisicamente deve essere collegato a un ISP; il collegamento con il primo router è chiamato
RETE DI ACCESSO e ci sono diversi tipi:

Accesso via rete telefonica

Collegarsi a internet modificando la linea telefonica fra la residenza e la centrale telefonica con una WAN punto-punto.

1. Servizio dial-up: inserisco sulla linea telefonica un modem che converte i dati digitali (del pc) in analogici (telefono)

- molto lento

- Se utilizzo la linea per internet non posso eseguire chiamate

2. Servizio DSL (Digital Subscribe Line)

+ comunicazione digitale ad alta velocità

+ Utilizzo simultaneo di linea telefonica per il traffico dati e per comunicazioni vocali

Accesso tramite reti wireless

Sempre più utilizzato, senza uso di cavi

Collegamento diretto

Aziende grandi possono diventare ISP locali, affittando reti WAN ad alta velocità da un operatore per collegarsi a un ISP regionale.
Esempio unimi crea un internetwork collegata a internet.

CAPACITA’ E PRESTAZIONI DELLE RETI


Ampiezza di banda (bandwidth) [Hertz]

Intervallo di frequenze che un mezzo fisico consente di trasmettere senza danneggiare il segnale in maniera irrecuperabile. + bandwidth +
informazioni trasmesse

Bit rate [bps]

Quantità di bit al secondo che un certo link garantisce di trasmettere. Indica la capacità massima della rete di trasferire dati.

Throughput [kbps]

Quanto velocemente riusciamo effettivamente a inviare i dati tramite una rete (in realtà).

E’ definito come il numero di bit che passano attraverso un punto della rete in un secondo; per misurare il throughput di un percorso devo
considerare che ogni link ne ha uno diverso e come misura prendo quello minore T = minimo {T1, T2...}

Throughput di un percorso attraverso il backbone Internet:

Minimo tra T1 e T2 , T è molto alto (Gbps)

Se T1=100Mbps e T2=40kbps —> throughput=40

Troughput con router collegato a vari dispositivi:

T= 600 viene condiviso tra i 3 link = 200kbps

Latenza (ritardo)

Quanto tempo serve affinché un intero messaggio arrivi completamente a destinazione dal momento in cui il primo bit parte dalla sorgente.

Latenza= ritardo di propagazione + ritardo di trasmissione + ritardo di accodamento + ritardo di elaborazione

1. Ritardo di trasmissione = lunghezza del pacchetto / rate

Tempo trasmissione del primo bit - tempo ultimo bit che viene messo in linea

2. Ritardo di propagazione = distanza / velocità di propagazione

Tempo che serve ad un bit per viaggiare dal punto A al punto B nel mezzo di trasmissione.

3. Ritardo di elaborazione

Tempo che serve a un sistema terminale per ricevere un pacchetto dalla porta input, rimuovere intestazione, eseguire procedura di
rilevamento errori e consegnare il pacchetto alla porta di output (router) o al protocollo del livello superiore.

4. Ritardo di accodamento

Tipico dei router che ha una coda in input collegata a una delle porte ingresso per memorizzare i pacchetti in attesa di elaborazione e una
coda in output per memorizzare i pacchetti in attesa di trasmissione.

5. rate x ritardo = numero di bit che il link può contenere (volume del tubo)

Perdita di pacchetti: se il buffer del router è pieno si ha una perdita del pacchetto successivo che dovrà essere rinviato.

1.2 ORGANIZZAZIONE DEI PROTOCOLLI I LIVELLI


Un PROTOCOLLO definisce le regole che i sistemi in rete devono rispettare per garantire la comunicazione, in situazioni semplici può
essere sufficiente uno, in situazioni più complesse si utilizza la layering di protocolli o strutturazione dei protocolli in livelli cosi un
compito complesso viene suddiviso in problemi semplici.

- modularizzazione: ogni livello è indipendente dall’altro (black box ingressi e uscite) e non si deve preoccupare della modalità con la
quale i dati in ingresso vengano trasformati nei dati di uscita

- Possibilità di separare servizi offerti e la loro implementazione: un livello deve essere in grado di utilizzare dei servizi dal livello inferiore
per offrirne al livello superiore indipendentemente da come sia implementato

- È possibile aggiungere altri sistemi terminarli intermedi, che non sono sorgente o destinazione, che richiedono solo alcuni livelli

Comunicazione bidirezionale, FRA LIVELLI: essa avviene in generale mediante lo scambio di messaggi che vengono detti Protocol Data
Unit (PDU). Una Protocol Data Unit (PDU) è dunque l'unità d'informazione scambiata tra due peer entity in un'architettura di rete a strati.

1. ciascun livello deve essere capace di effettuare i compiti opposti (ascoltare e parlare, crittografare e decrittografare)

2. Gli oggetti in input/output di ciascun livello devono essere identici

Se 1 e 2 vengono rispettati si parla di collegamento logico fra livelli :

LO STACK PROTOCOLLARE TCP/IP

Strutturazione in livelli dei protocolli utilizzati da internet

LIVELLO APPLICAZIONE

La comunicazione avviene tra due processi (due programmi eseguiti a questo livello)

Connessione logica end-to-end

- protocollo HTTP utilizzato per accedere al WWW

- Protocollo SMTP (Simple Mail Transfer Protocol) per la posta elettronica

- Protocollo FTP (File Transfer Protocol) per trasferire file da un host ad un altro

- Protocolli TELNET (Terminal Network) e SSH (Secure Shell) per accedere a un sito remoto

- DNS (Domain Name System) per trovare l’indirizzo di livello rete di un host

LIVELLO TRASPORTO

Connessione logica end-to-end

Host sorgente riceve il messaggio dal livello applicazione, lo incapsula in un archetto di livello trasporto (segmento) e lo invia tramite
connessione logica (virtuale) al livello trasporto dell’host destinatario.

- TCP (Transmission Control Protocol)

connection oriented, stabilisce una connessione logica tra i due host a livello trasporto

- Crea un canale logico per trasferire un flusso di dati

- Funzionalità di controllo del flusso + dell’errore + della congestione per ridurre la perdita di segmenti

- UDP (User Datagram Protocol)

connectionless, trasmette i datagrammi senza prima creare una connessione logica

- ogni pacchetto è indipendente

- non c’è controllo dell’errore, flusso e congestione

ideale per invio brevi messaggi

LIVELLO RETE

Responsabile della comunicazione host-to-host (da sorgente a destinazione) e dell’instradamento e inoltro dei pacchetti attraverso i
possibili percorsi.

- protocollo IP (Internet Protocol), definisce il formato e la struttura degli indirizzi utilizzati per i datagrammi e responsabile dell’inoltro di un
pacchetto dalla sorgente al destinatario. È connectionless

- Protocollo ICMP (Internet Control Message Protocol), supporta IP per segnalare anomalie di instradamento

- Protocollo IGMP (Internet Group Management Protocol) supporta IP nella gestione dei gruppi

- Protocollo DHCP (Dynamic Host Configurator Protocol) consente di ottenere IP da assegnare a un host

LIVELLO DI COLLEGAMENTO

Si occupa di trasferire il pacchetto attraverso il link scelto dal router.

Non ci sono protocolli specifici per TCP/IP, è sufficiente qualsiasi protocollo che prende il datagramma, che in questo livello viene viene
chiamato frame, e lo trasferisce attraverso il link.

LIVELLO FISICO

Si occupa d trasferire i singoli bit di un frame attraverso il link, comunicazione logica, perchè in realtà i bit ricevuti in un frame vengono in
realtà trasformati e inviati al mezzo trasmissivo.

INCAPSULAMENTO E DECAPSULAMENTO

INCAPSULAMENTO DELL’HOST SORGENTE

1. A livello applicazione i dati sono chiamati messaggi e vengono passati al livello sottostante di trasporto

2. Il livello trasporto riceve il messaggio e lo considera come payload (carico dati) da trasportare + aggiunge header (intestazione) con le
info per la gestione del pacchetto che diventa un segmento.

3. Il livello rete prende il segmento ricevuto come carico dati + aggiunge header (con indirizzi degli host sorgente e destinazione, controllo
errori, frammentazione...). Il risultato è il datagramma

4. Il livello di collegamento fa lo stesso aggiungendo intestazione con n dirizzo del livello di collegamento dell’host o next-hop (router) ,
cosi forma il frame che viene passato al livello fisico per la trasmissione

INCAPSULAMENTO E DECAPSULAMENTO NEL ROUTER

1. L’insieme di bit ricevuti dal livello fisico viene passato al livello di collegamento che decapsula il frame cioè rimuove l’header e passa il
datagramma a livello rete

2. Il livello rete consulta nell’header del datagramma gli indirizzi di sorgente e destinatario e consulta la propria tabella di instradamento
per decidere il next-hop. Il datagramma non frammentato viene ripassato a livello collegamento

3. Il livello collegamento incapsula il datagramma in un frame e lo passa a livello fisico per la trasmissione

DECAPSULAMENTO NELL’HOST DESTINATARIO

Ciascun livello rimuove l’header del pacchetto ricevuto estraendone il payload e passa al livello superiore fino a raggiungere il livello
applicazione.

- È compreso durante questo processo il controllo degli errori

INDIRIZZAMENTO

Per specificare il sito che fornisce i servizi (unhost.org.com)

locali per distinguere i programmi in esecuzione concorrente

globali per identificare il collegamento di un dispositivo in Internet

Locali per identificare interfaccia di rete su host o router (MAC)

MULTIPLEXING E DEMULTIPLEXING
Lo STACK TCP/IP prevede più protocolli nello stesso livello

MULTIPLEXING: un protocollo di un livello può


incapsulare i pacchetti ottenuti da più protocolli del
livello immediatamente superiore

DEMULTIPLEXING: un protocollo può decapsulare e


consegnare i pacchetti a più protocolli del livello
superiore

Un protocollo deve avere un campo nell’header che


identifichi a quale protocollo appartengano i pacchetti
incapsulati.

MODELLO ISO/OSI
ISO (International Organization for Standardization) ha standardizzato il modello OSI (Open System Interconnection) a fine anni 70’ ed è un
framework stratificato per il progetto di sistemi di rete che consentono la comunicazione fra qualsiasi tipo di dispositivo.

- suddiviso in 7 livelli

Non ha avuto successo:

- pubblicato dopo il TCP/IP

- Livello presentazione e sessione non completati , non è mai stato


sviluppato uno specifico software

- Non sono state rilevate prestazioni migliori

LIVELLO APPLICAZIONE

Questo livello fornisce servizi all’utente tramite una comunicazione fornita per mezzo di una comunicazione logica tra due dispositivi
attraverso un canale bidirezionale attraverso il quale si possono inviare messaggi. La comunicazione reale tuttavia avviene attraverso più
dispositivi e vari canali fisici.

L’OFFERTA DI SERVIZI
Prima di internet le reti venivano create per singoli scopi specifici come la rete telefonica.

Internet è stata progettata per fornire servizi agli utenti in tutto il mondo ed è più flessibile data la possibilità di eliminare e aggiungere
protocolli. A livello Applicazione è facile perchè i protocolli di questo livello non forniscono servizi ad altri di livello superiore ma utilizzano
quelli dei livelli sottostanti.

Protocolli standard: costituiti da una coppia di programmi che interagiscono con utente e livello trasporto per fornire un servizio specifico.
Per ciascuno devo conoscere:

- tipo di servizio offerto

- Funzionamento

- Opzioni di utilizzo

Protocolli non standard: un’ente privato può creare un proprio protocollo specifico per comunicare ad esempio con i propri uffici sparsi
nel mondo, è sufficiente scrivere programmi in qualsiasi linguaggio, che utilizzano i servizi offerti dai protocolli di livello trasporto.

PARADIGMI

PEER-TO-PEER P2P

- un processo server non deve essere in continua esecuzione per attendere che si connetta il processo client

Un computer connesso a Internet, ciascun peer, può sia fornire che offrire un servizio.

CONTRO:

- sicurezza, difficile creare comunicazioni sicure far servizi distribuiti

- Applicabilità, non posso usarlo per tutte le applicazioni

Es: BitTorrent, Skype, IPVT

PARADIGMA MISTO

un’applicazione può utilizzare un mix tra paradigma client-server e P2P combinando i vantaggi di ciascuno.

PARADIGMA CLIENT-SERVER

- Processo server fornisce i servizi ed è sempre in esecuzione in attesa del client

- Processo client apre la connessione Internet e richiede un servizio al server, quando ha bisogno

API (Application Programming Interface)

Insieme di istruzioni usato per l’interazione tra il processo a livello applicazione e il sistema operativo che implementa i primi quattro livelli
dello stack TCP/IP.

- TLI (Transport Layer Interface)

- STREAMS

- INTERFACCIA SOCKET: riutilizzare l’insieme delle istruzioni che sono presenti in un linguaggio di programmazione riadattandole per
altre sorgenti (scrivere con tastiera) e destinazioni (monitor) o sorgenti-destinazioni (file).

Socket: struttura dati astratta, vista dal client come entità che riceve le richieste e fornisce risposte; dal server come entità che gli
sottopone richieste e alla quale inviare risposte

Socket address: necessario per comunicazione bidirezionale un indirizzo locale (mittente) e uno remoto (destinatario) i quali devono
identificare l’host sul quale il processo è in esecuzione.

Socket address locale (server): viene fornito dal sistema operativo che conosce indirizzo IP del computer sul quale il processo è in
esecuzione. Il numero di porta deve essere assegnato: o è standard (HTTP porta 80) oppure fine è scelto dal progettista. È fisso.

Socket address remoto (server): socket address del client che si collega, contenuto nel pacchetto di richiesta. Varia a ogni interazione con
un client differente.

Socket address locale (client): viene fornito dal sistema operativo che conosce indirizzo IP del computer sul quale il processo è in
esecuzione. il numero di porta viene assegnato ad ogni richiesta e viene scelto tra i numeri di porta effimeri (o temporanei).

Socket address remoto (client): un processo client all’avvio deve conoscere il socket address del server al quale vuole connettersi e
possono esserci due situazioni:

1. Conosco già indirizzo IP del computer del server e il numero di porta perchè voglio verificare il corretto funzionamento delle
applicazioni client e server sviluppate. Il programmatore fornisce queste info all’avvio del programma client.

2. Conosco il nome ma non l’indirizzo IP e quindi ad esempio utilizzo il DNS

UTILIZZO DEI SERVIZI DI LIVELLO TRASPORTO


Nello sviluppo di un’applicazione è necessario scegliere quale protocollo di trasporto utilizzare, in base alle caratteristiche.

Protocollo UDP

- Fornisce un servizio di trasferimento di datagrammi utente inaffidabile e privo di connessione

- Ogni messaggio è un’entità indipendente incapsulata in un pacchetto detto datagramma


- Orientato al messaggio, indica in modo chiaro i confini dei messaggi trasmessi

Es: servizio postale , due entità si scambiano lettere ciascuna con mittente e destinatario. Sono considerate Scorrelate dall’ufficio postale il
quale non è responsabile se una lettera è danneggiata o persa durante la consegna

USATO PER: programmi applicativi in cui si scambiano brevi messaggi ed è più importante la velocità e semplicità piuttosto che
l’affidabilità, come applicazioni multimediali e per amministrazione di rete

Protocollo TCP

- fornisce un servizio basato su un flusso di byte affidabile e orientato alla connessione


- Per comunicare si stabilisce una connessione logica tra le due entità e vengono scambiati pacchetti specifici per l’apertura della
connessione (handshaking) con dimensione dei pacchetti dati, dimensione dei buffer e altre info

- Le entità si inviano i dati in pacchetti chiamati segmenti

- Controllo di flusso e della congestione

- Non orientato al messaggio, è l’applicazione che deve individuare e delimitare i messaggi all’interno del flusso

Es: operatore telefonico, se due entità vogliono parlare stabiliscono una connessione, effettuano la conversazione e chiudono la
connessione. Affidabile, se una persona non comprende una parola richiede la ripetizione.

USATO PER: applicazioni che devono trasmettere lunghi messaggi

APPLICAZIONI CLIENT/SERVER STANDARD

WWW World Wide Web

Enorme collezione di informazioni nella quale i documenti, chiamati pagine Web, sono distribuiti (qualsiasi server Web può aggiungere una
nuova pagina e renderla disponibile in Internet ) in tutto il mondo e collegati l’uno all’altro come in una ragnatela.

Hypertext : tecnica utilizzata per collegare le pagine web tramite link. Oggi viene chiamata Hypermedia per indicare che una pagina può
contenere anche immagini, video e audio.

Architettura

Un client utilizza il browser per accedere a un servizio offerto dal server il quale è distribuito su locazioni fisiche chiamate siti, i quali
contengono pagine web (identificata da nome e indirizzo).

- pagina semplice: non ha collegamenti

- Pagina composta: contiene riferimento a altre pagine o siti

Browser (client web): interpreta e visualizza le pagine ed è composto da

- controllore, riceve input da tastiera o mouse e accede al documento e utilizza un interprete per visualizzarlo

- Modulo che implementa il protocollo client (HTTP o FTP)

- Interpreti (HTML,Javascript)

Server web: dove vengono memorizzate le pagine, ad esempio Apache HTTP Server e Microsoft Internet Information

URL (Uniform Resourse Locator) : identificatore univoco di una pagina composto da

- identificatore Protocollo, di solito di HTTP

- identificatore dell’host, indirizzo IP o nome univoco assegnato al server

- Porta

- Percorso, identifica la posizione è il nome del file nel file system

Documenti web:
1. Statici: con contenuto predeterminato al momento della creazione e vengono memorizzati in un server. Preparati utilizzando HTML,
XSL, XHTML

2. Dinamici: creato dal server web alla ricezione di una richiesta di un browser

3. Attivi: in applicazioni in cui vengono eseguiti programmi o script sul computer client. Quando un browser lo richiede il server invia una
copia del documento che incorpora lo script. Si utilizza javascript

HTTP (HyperText Transfer Protocol): protocollo che definisce come devono essere scritti i programmi client/server per accedere alle
pagine web.

- Un client HTTP invia una richiesta al server il quale attraverso la porta 80 restituisce una risposta.

- Sfrutta i servizi del TCP, affidabile e orientato alla connessione (viene prima stabilita una connessione tra client e sever e poi alla fine
della transazione deve essere chiusa).

Connessioni non persistenti: per ciascuna coppia richiesta/risposta viene stabilita una nuova connessione TCP. Se ho più getti su uno
stesso server recupero ciascuno di essi usando una nuova connessione.

1. Il client apre una connessione TCP e invia una richiesta

2. Il server invia la risposta e chiude la connessione

3. Il client legge i dati fino a incontrare il simbolo di fine, EOF, e chiude la connessione

Es: n immagini —> apertura e chiusura connessione n+1 volte

Connessioni persistenti: il server dopo aver inviato una prima risposta lascia la connessione aperta, la quale verrà chiusa su richiesta del
client o allo scadere di un timeout.

+ risparmio tempo e risorse

Formato dei messaggi:

cr: ritorno carrello if: fine linea

Messaggio di richiesta

Riga di richiesta
- metodo: che cosa il client sta chiedendo al server

- URL indirizzo e nome pagina

- Versione del protocollo, ultima aggiornata

Riga di intestazione (Header): info supplementari che il client invia al server. Dico quello che il client è capace di fare. Il client si aspetta
contenuti comprensibili e il server inserisce contenuti visibili dal client.

Corpo: info da inviare o file da pubblicare sul sito

Messaggio di risposta
Riga di stato
-Versione del protocollo HTTP, attualmente 1.1

-Codice di stato è lo stato della richiesta

-100-199 informazioni

-200-299 richiesta eseguita con successo

-300-399 redirezionano il client a una diversa URL

-400-499 si è verificato un errore a livello client

-500-599 si è verificicato un errore lato server

-Frase di stato, esplicita in formato testo il significato del codice

Righe di intestazione
Corpo: documento che viene inviato dal server al client, vuoto solamente se la risposta è un messaggio di errore

Il client preleva un documento il client spedisce al server una pagina Web

Richieste condizionali

Un client può aggiungere una condizione alla richiesta; il server invia la pagina richiesta solo se la condizione è soddisfatta altrimenti
motiva il client del mancato invio.

Es: il client chiede la pagina al server solo se essa è stata modificata ( if-modified-since)

Cookie
SCOPO: meccanismo di memorizzazione dello stato o conservazione del contesto

Creazione e memorizzazione dei cookie: variano a seconda dell’implementazione

1. Il server riceve una richiesta e memorizza le info relative al client in una stringa/file, come nome di dominio, contenuti di cookie
precedenti, orario...

2. Il server include il cookie nella risposta che invia al client

3. Il browser memorizza il cookie in una directory suddivisa per nome di dominio del server

Utilizzo dei cookie:

Quando un client invia una richiesta al server, se presente, include il cookie precedentemente inviato dal server, quest’ultimo lo riceve e
capisce che si tratta di un vecchio client. Il cookie è preparato e consumato dal server!

- per tenere memorizzati gli oggetti nel carrello

- per un portale Web in cui il server memorizza in un cookie le pagine preferite del client, cosi vengono mostrate al suo accesso

- per scopi pubblicitari, un’agenzia pubblicitaria può inserire dei banner sui siti e ogni volta che un utente clicca viene salvato in un cookie
il codice identificativo dell’utente. L’agenzia può accumulare info degli utenti e rivenderle

Web caching: il server proxy

Il server proxy sono computer che conservano una copia delle risposte alle richieste recenti: il client http invia una richiesta al proxy, il
quale se ha già nella memoria cache la risposta la invia direttamente altrimenti manda la richiesta al server. Quando riceve la risposta da
esso oltre a inviarla al client la memorizza anche nella propria cache cosi da renderla disponibile a tutti quelli che dovessero effettuare la
stessa richiesta.

+ riduce il carico sul server originale e il traffico in rete

+ Agisce sia da server che da client

Posizione del server proxy: posizionati in prossimità del client

- il software per operare come server proxy può essere installato sul computer del client

- In una azienda può essere installato nella LAN per ridurre il traffico

- Un ISP con tanti utenti può installare un proxy per ridurre il carico in entrata e in uscita della propria rete

Aggiornamento della cache: diverse strategie per definire il tempo di permanenza delle risposte nella memoria

Aspetti di sicurezza
Il protocollo HTTP non fornisce direttamente alcun servizio di sicurezza, tuttavia può far uso del protocollo SSL (Secure Socket Layer) —>
HTTPS fornisce: crittografia dei contenuti, autenticazione di client e server, integrità dei dati trasmessi

POSTA ELETTRONICA
Gli utenti possono scambiarsi messaggi e la transazione è unidirezionale.

Architettura:

- i due utenti sono collegati con LAN o WAN ad un server che contiene all’interno della memoria una mailbox (file o directory con
permesso di accedere solo al proprietario) con i messaggi ricevuti

- Spool, coda dove memorizzare i messaggi in attesa di invio

-UA e protocolli MTA, MAA

UA User Agent

Programma per scrivere, leggere, rispondere e inoltrare messaggi e gestisce la mailbox nei computer degli utenti. 2 tipi:

1. Con interfaccia a riga di comando: accetta un comando dalla tastiera il quale esegue un compito

2. Interfaccia grafica: contengono componenti GUI per interagire con software usando mouse e tastiera (icone, finestre..)

Invio di un messaggio (tramite UA)

Indirizzi

Parte locale: nome della mailbox in cui vengono memorizzati i messaggi ricevuti in attesa di
essere prelevati dalla MAA

Nome di dominio: l’organizzazione sceglie uno o più server di posta che si occupa di ricezione e
invio

SMTP Message Transfer Agent

Definisce con comandi e risposte come deve avvenire l’interazione tra client e server MTA.

Comandi: vengono inviati dal client al server [ Keyword: argomento/i ]

Risposte: vengono inviate dal server al client [ 3 cifre ]

Fasi della consegna di un messaggio di risposta


Message Access Agent: i protocolli POP e IMAP

Il client deve “tirare” messaggi dal server, direzione dei dat dal server al client.

POP3 Post Office Protocol

- software client POP3 installato sul computer del destinatario

- Software server POP3 installato sul server di posta

Il client scarica le mail dalla propria casella di posta (sul server) aprendo una connessione TCP tramite porta 110 e inviando il proprio nome
utente e password per accederci. Una volta entrato può richiedere la lista di messaggi presenti e prelevarli, uno alla volta.

Ha due modalità:

- Delete (elimina): i messaggi sono automaticamente eliminati dalla mailbox dopo il prelievo

- Keep (conserva): i messaggi vengono conservati , utile quando utente non utilizza il suo solito dispositivo

IMAP4 Internet Mail Access Protocol versione 4

Simile a POP3 ma più potente e complesso.

+ controllo intestazione dei messaggi prima del prelievo

+ Ricerca di una stringa specifica nei messaggi prima del prelievo

+ Prelevare i messaggi in modo parziale, utile se ho limitazioni di banda

+ Creare, cancellare, rinominare le mailbox sul server di posta

+ Creare una gerarchia di cartelle nella mailbox

MIME Multipurpose Internet Mail Extensions

Il protocollo della posta elettronica può gestire messaggi soltanto nel formato standard NVT ASCII a 7 bit (no alcune lingue come tedesco,
arabo.. + no file binari con audio o video).

MIME è un protocollo che permette l’invio di messaggi in formati


diversi dall’ASCII, ha un’insieme di funzioni per tradurre dati non
ASCII in formato NVT ASCII e viceversa.

Indica se il messaggio contiene immagine o file


audio o video

WEBMAIL

Caso 1

Gaia utilizza un server di posta tradizionale, trasferimento del messaggio via SMTP

Gabriele ha un account su un server di Webmail, trasferimento del messaggio dal server Web al browser è effetttuato via HTTP (no POP3 o
IMAP).

Caso 2

Sia Gaia che Gabriele utilizzano un server Web: Gaia invia dati e messaggio al server Web con HTTP, esso poi trasferisce il messaggio via
SMTP al server di posta di Gabriele, e quest’ultimo riceve il messaggio tramite HTTP.

SSH Secure Shell

Protocollo di L7 composto da 2 componenti:

1. SSH-TRANS (Tranport-Layer-Protocol) utilizza tecniche crittografiche per garantire la sicurezza del canale di comunicazione sfruttando
la connessione TCP + permette di verificare che il server a cui ci si connette sia legittimo

2. SSH-AUTH (Authentication Protocol) si occupa dell’autenticazione del client (user password o coppia di chiavi...)

3. SSH-CONN (Connection Protocol) offre i servii veri e propri di L7: accesso al terminale, trasferimento file, esecuzione remota e
creazione di tunnel

DNS Domain Name System

Sistema che associa un indirizzo IP di un dispositivo connesso in rete ad un nome

6 passaggi per associare l’indirizzo IP al nome simbolico dell’host:

Spazio dei nomi (in generale)


Spazio in cui viene assegnato in modo univoco un nome a un indirizzo. Ha una struttura gerarchica e ogni nome è composto da diverse
parti:

I. Definisce la natura dell’organizzazione

II. Definisce il Nome

III. Definisce i vari dipartimenti interni

IV. ...

Spazio dei nomi di dominio


I nomi hanno una struttura ad albero con radice in cima e un numero di livelli tra 0 e 127

Label: permette di identificare un nodo e è formato al più da 63 caratteri (la root ha label vuoto)

Domain Name: ogni nodo ha una sequenza di etichette separate da “.” Che lette da sx verso dx Forniscono tutte le etichette associate ai
vari nodi, da quello in questione alla radice. Top Level Domain: nodi figli della radice

- FQDN Fully Qualified Domain Name sequenza che termina con stringa nulla, ultimo carattere è “.”

- PQDN Partially Qualified Domain Name inizia da un nodo ma non raggiunge la radice

Domain: sottoalbero dello spazio dei nomi di dominio identificato dal suo nodo radice e può contenere sottodomini

Gerarchia dei Name Server

Necessari a salvare le informazioni relative ai nomi di dominio in diversi server DNS.

Zone: tutto ciò di cui è responsabile un server (parte dell’albero), può contenere meno sottodomini.

Ogni server ha un database, “file di zona” che contiene le info relative ai nodi del suo dominio.

Server radice: ha per zona lìintero albero e sono vari distribuiti sulla rete Internet

Server primari e secondari sono chiamati “autoritativi” o “autorevoli” cioè responsabili della loro zona di competenza

- Server primario: responsabile di creazione gestione e aggiornamento del file di zona memorizzato nel suo disco locale

- Server secondario: ottiene le informazioni da un server primario (può essere duplicazione del server primario, utile in caso di guasti di
quest’ultimo)

Server DNS nella rete Internet

Lo spazio dei nomi di dominio è diviso in 3 parti:

1. Domini generici: suddividono gli host in base al loro scopo generale (acro, biz, com, coop, edu, gov, info)

2. Domini nazionali: individuano una nazione (it, fr, us...)

Risoluzione

Processo che permette di associare un indirizzo IP a un nome: un host si rivolge a un client DNS (resolver) il quale invia la richiesta al
server DNS più vicino. Questi se ha l’informazione comunica indirizzo o nome al resolver altrimenti dice l’indirizzo di un altro server a cui
fare rimento. Ricevuta la risposta , il resolver la analizza per accertarsi che non ci siano errori e trasmette il risulto al processo.

RISOLUZIONE RICORSIVA

Un host A vuole trovare un indirizzo IP di un host B per inviare un


messaggio.

Il resolver se non conosce tale indirizzo invia la query al DNS locale, se


anch’esso non ha la risposta invia la query al server radice, il quale la
inoltra esso stesso al TLD server, il quale la inoltra al server autoritativo
e così via fino a raggiungere il server desiderato. La risposta DNS
procede in senso inverso fino a giungere al client che aveva fatto la
richiesta.

RISOLUZIONE ITERATIVA

Ogni server che non conosce la risposta alla domanda del client
risponde con l’indirizzo di un’altro server in grado di risolvere il
problema.

Caching

Quando un server si rivolge a un secondo server per inoltrare la richiesta di risoluzione di un indirizzo archivia la sua risposta in una
memoria cache, al fine di poter usare questa info per successive richieste. Quando un server riceve una richiesta e la risposta è in cache,
questa viene inviata segnalando al client che si tratta di una risposta unauthoritative.

Per non causare errori viene aggiunto il TTL (Time To Live) per stabilire per quanti secondi il server può conservare l’info in cache.

Record di risorsa

Ogni nome di dominio ha un record di risorsa che sta all’interno del database dei nomi del Server. Formato da 5 campi:

1. Nome di dominio

2. Tipo: come interpretare il campo valore

3. Classe: tipo di rete (classe IN internet)

4. TTL: numero di secondi per cui l’’info è valida

5. Valore: informazione memorizzata relativa al nome di dominio

Messaggi DNS Query: interrogazione o Response: risposta

Identificazione: utilizzato dal client per associare la risposta

Flag: messaggio di richiesta o risposta + segnalare errori

Protocollo di livello trasporto

Il DNS può usare UDP se la dimensione di risposta è inferiore a 512 byte, altrimenti TCP

Porta 53

Registrar

Aziende commerciali accreditate all’ICANN che aggiungono domini al DNS, verificando che il nome richiesto sia unico

PROGRAMMAZIONE DELLE SOCKET


La socket non ha un buffer dove memorizzare i dati che devono essere trasmessi o ricevuti ne invia o riceve, agisce solo come un
riferimento o un’etichetta.

Utilizzo delle socket con UDP

La socket creata lato server rimane aperta indefinitamente mentre quella lato client viene chiusa alla terminazione del processo client. Il
server utilizza sempre la stessa socket, modifica solo il socket address remoto.

Processo server: il server è in apertura passiva e aspetta che un processo client invii una richiesta:

- Chiama la funzione socket (...) per creare una nuova socket

- chiama la funzione bind(s,...) per ottenere dal SO il valore del socket address locale

- chiama recvfrom (s,...) che blocca il processo server fino a quando arriva un datagramma utente

- Arrivato, il processo server si sblocca ed estrae il socket address e la richiesta, la quale viene elaborata e creata la risposta con il socket
address prelevato. Il datagramma viene inviato con sendto(s,...).

Il processo inizia una nuova iterazione attendendo la prossima richiesta —> processo sempre in esecuzione, infinito

Processo client: effettua un’apertura attiva, ovvero per inviare il primo pacchetto:

- creazione socket s=socket(...) + completamento dei tre campi

- Sendto(s + socket address remoto) invio richiesta al server

- Recvfrom(s,...) blocca processo client fino all’arrivo della risposta dal server
- Gestione risposta

- Close(s) chiusura della socket

Il processo è finito, ricevuta la risposta termina. L’invio di un datagramma da uno stesso utente è considerato come un nuovo client.

Comunicazione con il protocollo TCP

TCP orientato alla connessione quindi client e server devono connettersi prima dello scambio dei dati. Un server TCP può operare in
modalità concorrente (servo + client contemporaneamente) o sequenziale (sevo un client per volta).

Il server utilizza 2 socket: listen socket per apertura della connessione + socket per trasferimento dati

Il client utilizza una stessa socket

Processo server:
- Chiama la funzione socket (...) per creare una nuova listen socket

- chiama la funzione bind(ls,...) per ottenere dal SO il valore del socket address locale

- Chiama la funzione listen(ls,...) per far accettare al SO le chiamate dei client e metterle in lista di attesa + definisce la dimensione della
lista d’attesa, di solito è 5

- CICLO per servire i client uno alla volta

- S= accept(sl,...) prende un client dalla lista e crea una nuova socket uguale alla listen (Se la lista è vuota si blocca )

- Viene utilizzato il socket address della listen per riempire il campo del socket address remoto

- Funzione send() e rev() per trasferire i dati (senza socket address remoto perchè ho già stabilito la connessione)

Processo client: molto simile a UDP

LIVELLO TRASPORTO
Si colloca fra il livello rete e applicazione, fornisce un servizio di comunicazione tra processi fra i due livelli applicazione, uno sull’host
locale e uno remoto, con una connessione logica (lavorano come se ci fosse connessione diretta, solo i computer dei comunicanti usano i
servizi a liv trasporto, i router intermediari invece i primi tre livelli dell’architettura).

SERVIZI DEL LIVELLO TRASPORTO


Fornisce servizi a livello applicazione e riceve servizi a livello rete

Comunicazione tra processi (programmi in esecuzione)

Un protocollo di rete consegna i messaggi all’host destinatario, il protocollo di trasporto specifica a quale processo attivo sono destinati.

Indirizzamento e numeri di porta: un client (processo locale) necessita di servizi svolti da server, solitamente hanno lo stesso nome. Per
individuare l’host locale e quello remoto si usa:

- indirizzo IP : individua un host nella rete

- numeri di porta : individua un processo applicativo dell’host (“Effimero” o di breve durata per il client - “Noti” o universali, conosciuti
dal client )

Intervalli ICANN (InternetCorporation for Assigned Names and Numbers) ha suddiviso i numeri di porta in:

- Numeri di porta noti, tra 0 e 1023 assegnati da ICANN

- Numeri di porta registrati, tra 1024 e 49151 non assegnati da ICANN ma possono essere registrati per evitare duplicati

- Numeri di porta dinamici, tra 491512 e 65535 usati come numeri di porta temporanei o privati, no registrati

Socket address: indirizzo IP + numero di porta

INCAPSULAMENTO: a lato mittente, il livello trasporto riceve i dati (socket address e altre info) da un processo che vuole inviare un
messaggio e aggiunge la propria intestazione formando il segmento o datagramma utente.

DECAPSULAMENTO: a lato destinatario, il messaggio arriva a liv trasporto, viene rimossa intestazione e il mess viene consegnato al
processo a liv applicazione + viene trasmesso socket address del mittente per mandare conferma

MULTIPLEXING: il client riceve informazioni da più sorgenti / DEMULTIPLEXING: il server distribuisce i messaggi a + proces

CONTROLLO DI FLUSSO:

Problema: se i dati vengono prodotti a una velocità superiore rispetto a quella con cui possono essere consumati, il consumatore
destinatario potrebbe trovarsi sovraccaricato e deve eliminarne alcuni —> perdita dati

Soluzione: utilizzare due buffer (x mittente e destinatario). Il liv trasporto del mittente (vale anche per destinatario) quando ha il buffer
saturo segnala al liv applicazione di sospendere invio mess, e quando si libera segnala di riprendere l’invio.

CONTROLLO DEGLI ERRORI: il livello trasporto ha la responsabilità di: rilevare e scartare pacchetti, tenere traccia dei pacchetti persi e
scartati e gestirne la rispedizione, riconoscere i pacchetti duplicati ed eliminati, bufferizzare i pacchetti fuori sequenza fino a quando
arrivano i mancanti. Per garantire ‘affidabilità vengono aggiunti servizi di controllo dell’errore:

- aggiunta del numero di sequenza ai pacchetti cosi il mittente può sapere quale pacchetto deve rispedire se avviene errore e il
destinatario riconosce pacchetti duplicati o fuori sequenza : 2m m= num bit

- Numero di riscontro o acknowledgement ACK per notificare al mittente la corretta ricezione del pacchetto

- Il mittente quando invia un pacchetto attiva un timer, se non riceve un ack prima della sua scadenza, lo rimanda

È possibile utilizzare due buffer numerati necessari sia al servizio di controllo di flusso che al controllo degli errori. Il buffer viene
rappresentato come una serie di settori chiamati finestra scorrevole.

CONTROLLO DELLA CONGESTIONE: quando il carico della rete (num di pacchetti inviati alla rete) è superiore alla capacità della rete (num
pacchetti che una rete può gestire). La congestione può avvenire in qualsiasi sistema che comporti un’attesa, ad esempio la coda di input
e output per l’interfaccia nei router che si verifica quando esso non riesce a elaborare i pacchetti alla stessa velocità con cui arrivano. A liv
trasporto la congestione avviene a quella causata nella rete.

Servizi Privi Di Connessione i pacchetti vengono mandati uno per uno senza mantenere alcuna relazione, alcuni potrebbero subire dei
ritardi e quindi il livello trasporto destinatario li riceve nell’ordine sbagliato. Non è possibile quindi implementare efficacemente controllo di
flusso, errori e congestione; al contrario dei Servizi Orientati Alla Connessione.

PROTOCOLLI DI LIVELLO TRASPORTO


1. PROTOCOLLO SEMPLICE

- Privo di connessione, senza controllo errori e di flusso

Il mittente riceve un messaggio dal livello applicazione e lo invia al liv trasporto del destinatario, il quale lo consegna al proprio livello
applicazione. I livelli trasporto forniscono quindi servizi di comunicazione ai propri livelli applicazione.

2. STOP-AND-WAIT

- orientato alla connessione, utilizza controllo di flusso e degli errori

Il mittente invia un pacchetto alla volta, facendo partire il timer e attende l’ack del destinatario prima di spendere il successivo. Quando un
pacchetto arriva al destinatario viene calcolato il checksum (valore di controllo): se corrisponde a quello del pacchetto ricevuto si invia un
ack, altrimenti significa che è corrotto e viene scartato.

Per gestire pacchetti duplicati utilizza numeri di sequenza e di riscontro (num di sequenza del prossimo pacchetto atteso dal
destinatario): bastano x e x+1
Es: il destinatario ha ricevuto il pacchetto 0, invia un riscontro con valore 1 (il prossimo pacchetto atteso ha numero di sequenza 1). Se il
destinatario ha ricevuto correttamente il pacchetto 1, invia il riscontro 0 (si attende pacchetto 0).

- S (spender) variabile di controllo mittente

- R (receiver) variabile di controllo destinatario

Inefficiente se il canale ha una velocità di trasmissione elevata e un lungo ritardo: prodotto banda-ritardo, che è una misura del numero di
bit che un mittente può trasmettere attraverso un sistema prima di dover attendere un riscontro dal mittente.

Esercizio:

Ampiezza di banda del canale = 1Mbps

Tempo necessario a 1 bit per fare andata e ritorno= 20millisec

Prodotto banda-ritardo= (1x106) x (20x10-3) =20000bit

Se i pacchetti del sistema hanno dimensione 1000bit il coefficente di utilizzo del canale è
1000/20000 ovvero 5%.

Se si impiega un protocollo che può inviare fino a 15 pacchetti prima di fermarsi e


preoccuparsi del riscontro la %di utilizzo sarà 15000/20000 = 75%.

3. GO-BACK-N (GBN)

Tecnica del pipeling: invio di piu pacchetti senza attendere il riscontro dei primi pacchetti inviati

Il mittente può inviare diversi pacchetti mantenendone una copia fino a quando non riceve un riscontro; il destinatario può bufferizzare un
solo pacchetto.

Numero di riscontro è cumulativo e indica il numero di sequenza di sequenza del pacchetto successivo che ci si aspetta di ricevere.

Finestra di invio è un concetto astratto che definisce una scatola immaginaria


di dimensione massima (2m -1) con 3 variabili:

1. Sf (send First) primo pacchetto in attesa di riscontro nella finestra di invio

2. Sn (send Next) prossimo pacchetto da inviare nella finestra di invio

3. Ssize dimensione della finestra di invio

Finestra di ricezione permette di ricevere i pacchetti dati corretti e inviare


riscontri. Accetta un solo pacchetto alla volta, il quale deve avere il numero di
sequenza uguale a Rn (receive next, prossimo pacchetto atteso ella finestra di
ricezione), altrimenti viene scartato.

Def: è un concetto astratto che definisce una scatola immaginaria di


dimensione 1, identificata da una solo variabile Rn. L finestra scorre quando
viene ricevuto il pacchetto atteso, lo scorrimento avviene una posizione alla
volta.

Quanti timer ci sono? Uno solo, quello del primo pacchetto in attesa di
riscontro.

Quando il timer scade, si rispediscono tutti i pacchetti in attesa di riscontro.

Qual è la differenza tra Stop-and-Wait e Go-Back-N? Lo Stop-and-Wait (si lavora in modulo 2) è in realtà un Go- Back-N (si lavora in
modulo 2m) nel quale vi sono due numeri di sequenza e la finestra di invio ha dimensione 1.

PRO: semplifica il lavoro del destinatario che tiene traccia di un solo pacchetto e non bufferizzare i pacchetti fuori sequenza

CONTRO: inefficiente se il livello rete perde molti pacchetti perchè devo rispedire tutti i pacchetti in attesa di riscontro

4. SELECTIVE- REPEAT

Migliora il precedente perchè il destinarlo rispedisce selettivamente, ovvero sono quelli che sono stati realmente smarriti.

Finestra di invio simile a GBN ma ha una dimensione massima minore, 2m-1

Finestra di ricezione ha una dimensione massima 2m-1 ; possono arrivare


fuori sequenza tanti pacchetti in base alla dimensione della finestra; i
pacchetti vengono memorizzati fino a quando si forma un blocco di pacchetti
consecutivi da passare a livello applicazione.

(Tutti i pacchetti nella finestra di invio possono arrivare fuori sequenza ed


essere memorizzati fino a quando possono essere consegnati)

Quanti timer ci sono? Teoricamente Un timer per ciascun pacchetto in attesa


di riscontro cosi quando un timer scade viene rispetto solo il relativo
pacchetto; in pratica viene usato un solo timer.

Numero di riscontro indica il numero di sequenza di uno specifico pacchetto ricevuto senza errori.

Es) un mittente invia 6 pacchetti: 0,1,2,3,4 e 5. Riceve un riscontro con ackNo=3

GBN: sono stati ricevuti correttamente 0,1 e 2 e il destinatario attende il pacchetto 3

SR: il pacchetto 3 è stat ricevuto, ma non si sa niente degli altri

5. PROTOCOLLI BIDIREZIONALI

Tecnica di piggibacking (“viaggiare in spalla a qualcuno”): quando un pacchetto trasporta dei dati da A e B può trasportare anche i riscontri
relativi ai pacchetti ricevuti da B e viceversa. Il client e il server hanno la propria finestra di invio e ricezione.

PROTOCOLLI INTERNET A LIVELLO TRASPORTO


PROTOCOLLO UDP (User Datagram Protocol)
Protocollo livello trasporto inaffidabile e privo di connessione, ma molto semplice con un overhead (carico aggiuntivo)
minimo, utilizzato per processi che vogliono inviare piccoli messaggi senza problemi di affidabilità.

STRUTTURA DEI DATAGRAMMI UTENTE

SERVIZI UDP

- UDP fornisce servizio di comunicazione tra processi utilizzando il socket address ed utilizzando il multiplexing e
demultiplexing dei pacchetti

- Quando un processo client viene avviato richiede al SO la disponibilità di una porta, quest’ultimo crea una coda
d’ingresso e una di uscita

- Incapsula e decapsula il messaggio per inviarlo da un processo all’altro

- I messaggi devono avere dimensione minore di 65507 byte

- Meccanismo del checksum per il controllo degli errori: viene eliminato il pacchetto senza nessuna notifica

- 0 se il mittente non vuole calcolarlo

- Tutti bit a 1 se il mittente vuole calcolarlo

UDP è un esempio del protocollo semplice senza connessioni al quale è stato aggiunto un checksum per identificare
eventuali pacchetti ricevuti corrotti.

- NON c’è controllo di flusso, NO finestre scorrevoli, NO controllo di congestione

Privo di connessione: ogni datagramma è indipendente da qualsiasi altro inviato dallo steso programma applicativo.

+ se un’applicazione client deve inviare una breve richiesta al server e ricevere una breve risposta

+ meno ritardi rispetto ai servizi orientati alla connessione, usato quindi quando il ritardo è un fattore imp x l’app

Esempio 1) applicazione DNS utilizza i servizi UDP poichè il client deve inviare una breve richiesta al server (primo
datagramma) e ricevere una breve risposta (secondo datagramma); poichè viene scambiato un solo messaggio in ciascuna
direzione client e server non devono preoccuparsi dei messaggi consegnati fuori sequenza.

Esempio 2) applicazione SMTP non utilizza i servizi UDP poichè un utente potrebbe inviare un messaggio voluminoso con
file multimediali, il quale non può essere suddiviso in più datagrammi perchè arriverebbero all’app destinataria fuori
sequenza. Inoltre non è importante ricevere immediatamente la risposta.

Assenza del controllo degli errori: è un servizio inaffidabile ma più rapido

Esempio 1) applicazione interattiva Skype utilizza i servizi UDP in cui ogni piccola parte delle immagini viene inviata con
un singolo datagramma utente, l?UDP destinatario ignora pacchetti smarriti e consegna i restati al programma applicativo.
Una parte dello schermo può non essere aggiornata correttamente ma per pochissimo tempo e l’utente non se ne accorge.

Esempio 2) quando si vuole prelevare un file voluminoso via Internet non si utilizza UDP poichè ci interessa che il
pacchetto non abbia part corrotte o mancanti e non ci importa del ritardo.

Assenza di controllo della congestione: non ho un traffico aggiunto in rete causato dagli errori

QUANDO VIENE USATO UDP:

- Per processi che richiedono uno scambio di dati di volume limitato con scarso interesse a controllo degli errori e di flusso
(no FTP)

- Per processi che hanno meccanismi interni di controllo dell’errore e di flusso come TFTP (Trivial File Transfer Protocol)

- Per trasmissioni multicast

- Per attività d gestione come SNMP

- Per aggiornamento delle informazioni di instradamento come RIP

- Per applicazioni interattive in tempo reale

PROTOCOLLO TCP (Transmission Control Protocol)


Il protocollo TCP è orientato alla connessione e affidabile, prevede meccanismi di apertura della connessione, di trasferimento dei dati e
chiusura della connessione. Per garantire l’affidabilità utilizza una combinazione di meccanismi GBN e SR con checksum per rilevazione
errori, ritrasmissione dei segmenti smarriti o corrotti e la conferma cumulativa e selettiva di timer. È il Protocollo più utilizzato in Internet.

SERVIZI TCP

- Effettua il multiplexing in trasmissione e demultiplexing in ricezione (come UDP)

- Orientato alla connessione, deve quindi stabilire una connessione per ogni coppia di processi prima di poter comunicare. La
connessione che si stabilisce è logica, non fisica

- Orientato al flusso di dati (stream-oriented) permettendo al livello applicazione di trasmettere un flusso continuo di dati. I due processi
sembrano collegati da un “tubo” che trasporta la sequenza di byte attraverso Internet. Poiché i processi in trasmissione e ricezione non
scrivono e leggono i dati con la stessa velocità servono due buffer per memorizzare i segmenti, uno di trasmissione e uno di ricezione
per ciascuna direzione.

Array circolare di celle da 1 byte

- TCP raggruppa i byte in unità dette segmenti: aggiunge un’intestazione con info di controllo e consegna al livello rete per la
trasmissione. I segmenti vengono incapsulati in datagrammi IP e trasmessi. TCP in ricezione gestisce gli errori senza che il programma
applicativo se ne occupi. I segmenti hanno diverse dimensioni costituiti da centinaia o migliaia di byte

- Servizio full-duplex, i dati possono fluire in entrambe le direzioni grazie all’utilizza dei buffer

NUMERI DI SEQUENZA E D RISCONTRO

Questi due campi sono contenuti nell’intestazione dei segmenti e garantiscono l’affidabilità.

TCP quando riceve i byte di dati da un processo, li memorizza nel buffer di trasmissione e li numera iniziando da un numero arbitrario fra 0
e 232-1;

TCP assegna poi un numero di sequenza a ogni segmento che viene inviato:

- numero casuale per il primo segmento, detto ISN (Initial Sequence Number)

- Per li altri segmenti è il numero di sequenza del precedente sommato al numero di byte (reali o fittizi) ivi contenuti

Numero di riscontro (ack) indica il numero di byte che l’entità host si aspetta di ricevere.

FORMATO DEI SEGMENTI

HLEN lunghezza dell’intestazione: # di parole di 4 byte presenti


nell’intestazione, varia da 5 (20/4) a 15 (60/4)

Flag di controllo:

Dimensione della finestra che deve avere l’altro host, RWND (receive
window) determinata dal ricevente

Puntatore urgente: # che deve essere sommato al numero di


sequenza per ottenere il # dell’ultimo byte urgente nella sezione dati
del segmento

LA CONNESSIONE TCP

La connessione TCP è virtuale, utilizza i servizi IP per consegnare i singoli segmenti al destinatario, ma. Lui stesso che controlla la
connessione quindi se un pacchetto danneggiato deve essere ritrasmesso, mentre IP è inconsapevole di questa ritrasmissione e anche del
riordinamento fatto da TCP. La trasmissione richiede 3 fasi:

1. APERTURA DELLA CONNESSIONE

Detta three way handshake (stretta di mano a tre vie).

Consideriamo un programma applicativo client che vuole collegarsi a un’altro chiamato server:

Server richiede al TCP un’apertura passiva, deve essere attivo e pronto a accettare connessioni

Client richiede al TCP un’apertura attiva, dice l TCP di iniziare la procedura three way handshake:

1. Il client invia il primo segmento SYN con il numero di sequenza iniziale ISN e lo invia al server. Questo segmento non contiene dati ma
usa il numero di sequenza che verrà incrementato di un’unità quando inizia il trasferimento

2. Il server invia il secondo segmento con flag SYN + ACK attivati

- SYN per iniziare il numero di sequenza numerando i byte inviati dal server al client

- ACK indicando il prossimo numero di seq che ci si aspetta

- dato che contiene un riscontro deve definire anche la RWND che l client dovrà utilizzare

3. Il client invia il terzo segmento ACK per confermare la ricezione. Se non continente dati utente, non usa numero di sequenza.

2. TRASFERIMENTO DEI DATI

Il client e il server inviano dati e riscontri in entrambe le direzioni, i dati viaggiano nel medesimo segmento dei riscontri (piggybacking)

PSH: Il mittente può utilizzare la funzione push inviando immediatamente il segmento senza aspettare che la finestra sia piena e attivando
il bit PSH per segnalare al destinatario che i dati all’interno del segmento devono essere consegnati al più presto.

URG: se il processo desidera che una porzione di dati venga elaborata dal TCP prima degli altri indipendentemente dalla sua posizione nel
flusso notifica al TCP mittente, il quale inserisce i dati urgenti all’inizio del campo dati + imposta i campo puntatore urgente
nell’intestazione per indicare l’inizio e la fine + attiva il bit URG del segmento. Il TCP destinatario consegnerà i dati in ordine al
programma applicativo indicandogli inizio e fine dei dati urgenti.

Es) #seq = 15000; PuntatoreUrgente = 200 —>. Primo byte datiUrg = 15000, ultimo byte datiUrg =15200

3. CHIUSURA DELLA CONNESSIONE

Solitamente iniziata dal client, ma può farlo anche il server. Ha due opzioni di chiusura, handshake a tre vie e half-Close.

Handshake a tre vie

1. Il client TCP dopo aver ricevuto la richiesta di chiusura dal processo invia un segmento con impostato flag FIN. questo segmento può
trasportare gli ultimi dati altrimenti se è un semplice segmento di controllo usa solo il #sequenza

2. Il server TCP dopo aver ricevuto il segmento FIN notifica la sua situazione al processo applicativo e invia il segmento FIN + ACK per
riscontrare la ricezione al client annunciando la chiusura nella direzione opposta. Se il segmento non trasporta dati usa solo #sequenza

3. Il client invia un segmento ACK per riscontrare la ricezione. Esso contiene SOLO il numero di riscontro (1 + #sequenza)

Half-close

“Chiusura a metà” solitamente iniziata dal client, permette a uno dei due processi di smettere di inviare dati mentre ne sta ancora
ricevendo; ad esempio quando il server ha bisogno di tutti i dati prima di poter procedere alla loro elaborazione e il client chiude

1. Il client invia un segmento FIN

2. Il server accetta richiesta di chiusura inviando segmento ACK. Il trasferimento dei dati dal client al server termina ma il server può
continuare a inviare dati

3. Quando il server termina l’invio di dati elaborati invia un segmento FIN

4. Il client invia l riscontro ACK

RST [reset]: flag per rifiutare una richiesta di connessione, interrompere una connessione attiva o chiudere una connessione non attiva

FINESTRE TCP

Questo protocollo utilizza 4 finestre: finestra di invio e di ricezione per ciascuna direzione del trasferimento dati

Finestra di invio

La dimensione viene determinata dal ricevente (controllo di flusso) e dalla congestione nella rete (controllo congestione)

Simile a quella utilizzata con il meccanismo SELECTIVE REPEAT ma con alcune differenze:

1. Unità di misura della dimensione della finestra: in SR numero di pacchetti, in TCP numero di byte

2. Il TCP può memorizzare i dati ricevuti dal processo per spedirli dopo

3. Numero di timer: SR può impiegare più timer per ciascun pacchetto, TCP utilizza un solo timer

Finestra di ricezione

Due differenze tra TCP e SR:

1. TCP cose te al processo destinatario di richiedere dati al ritmo desiderato, il buffer de destinatario può avere byte
ricevuti e confermati, ma inattesa di essere consumati dal processo ricevente. Dimensione della finestra

rwnd = dimensione buffer - numero di byte in attesa di essere consumati


2. Meccanismo di riscontro: in SR è selettivo, in TCP è cumulativo indicando il prossimo byte che ci si attende di ricevere

CONTROLLO DI FLUSSO

Consente di bilanciare la velocità con cui un produttore genera i dati con la velocità con la quale il consumatore li utilizza.

(Assumiamo che il canale logico sia privo di errori)

(Non esiste feedback da processo destinatario al TCP destinatario, ma il processo può chiedere i dati che vuole al TCP)

4. Feedback inviato dal TCP destinatario al TCP


mittente

5. Feedback inviato dal TCP destinatario al


processo mittente: il TCP mittente rifiuta i dati dal
processo quando la sua finestra è piena

Il TCP forza il mittente e il destinatario a regolare


la dimensione delle proprie finestre:

- la finestra di ricezione si chiude quando


arrivano byte dal mittente, si apre quando
vengono richiesti byte dal processo. Non può
essere ridotta

- la finestra di invio viene controllata dal


destinatario, si chiude quando c’è un riscontro e
si apre quando rwnd segnalata dal destinatario
lo consente

nuovo ackNo + nuovo rwnd > ultimo rwnd


La finestra viene ridotta quando il destinatario
imposta rwnd inferiore al precedente.

[alcune implementazioni non permettono la


riduzione: nuovo ackNo + nuovo rwnd >
ultimo rwnd + ultimo rwdn]
CONTROLLO DELGI ERRORI

TCP utilizza tre strumenti per garantire affidabilità del controllo degli errori: checksum, messaggi di riscontro e timeout

Checksum: campo obbligatorio del segmento, di 16 bit x identificare segmenti corrotti cosi il destinatario non l considera

Riscontri: segmenti ACK per confermare ricezione dei segmenti dati e segmenti di controllo, non usano numeri di sequenza
e non sono riscontrati. Riscontro cumulativo positivo:
- “cumulativo”, il destinatario notifica il numero di byte che si attende

- “positivo”, i segmenti scartati smarriti o duplicati non vengono notificati

[SACK riscontro selettivo: notifica anche segmenti che non sono in sequenza e duplicati]

Quando il destinatario genera riscontri:


- quando un’entità invia un segmento dati deve includere un riscontro con il prossimo numero di byte che prevede di
ricevere x diminuire # di segmenti necessari e ridurre traffico

- ACK posticipato: il destinatario ritarda l’invio di un ACK se ha un solo segmento nella sequenza corretta da riscontrare

- Quando arriva un segmento con #seq atteso e il segmento precedente non è stato riscontrato viene subito inviato ACK

- ACK per notificare un segmento fuori sequenza cosi da consentire la ritrasmissione rapida di segmenti smarriti

- ACK per notificare al mittente l’avvenuta ricezione di un segmento precedentemente annunciato come smarrito

- ACK per notificare che è arrivato un segmento duplicato

Ritrasmissione dei segmenti: quando un segmento viene inviato è memorizzato nella coda in attesa di riscontro, alla
scadenza del timer di ritrasmissione o quando il mittente riceve tre ACK duplicati per il precedente segmento nella coda,
viene ritrasmesso

1. Il TCP mittente inizializza RTO (Retrasmission Time-Out) per ogni segmento inviato. Allo scadere del tempo limite senza
aver ricevuto riscontro il segmento all’inizio della coda viene ritrasmesso e si fa ripartire il timer. RTO ha un valore
dinamico in base a RTT (Round Trip Time, tempo del segmento x raggiungere destinatario + tempo del riscontro x
raggiungere mitt).

2. Ritrasmissione veloce: quando vengono ricevuti tre ACK duplicati di un segmento, quello successivo viene trasmesso
senza attendere il timeout.

I dati possono arrivare fuor sequenza ed essere temporaneamente memorizzati da TCP destinatario, ma TCP garantisce al
processo applicativo la consegna dei dati nell’ordine corretto.

Riscontro smarrito corretto con la


rispedizione del segmento

CONTROLLO DELLA CONGESTIONE

Finestra di congestione

La dimensione della finestra di invio è controllata dal destinatario che indica nel segmento il valore rwnd , così che la
finestra del ricevente non venga mai sovraccaricata con i dati ricevuti. MA non garantisce che i buffer nei router non si
congestionino ricevendo dati da più mittenti.

Dato che il protocollo IP non garantisce questo controllo TCP deve trovare delle strategie per accelerare la trasmissione dei
dati quando non vi è congestione e ridurre la trasmissione quando è presente.

Dimensione della finestra = min (rwnd, cwnd) cwnd (congestion window)

Rilevare la congestione

1. se un mittente non riceve riscontro entro la fine del timeout suppone che i segmenti sono stati smarriti x congestione

2. Se un mittente riceve tre riscontri duplicati significa che un segmento è stato smarrito ma ricevuti altri tre, la rete è al
limite della congestione o appena entrata (congestione debole)

Algoritmi di gestione della congestione

1. Slow start: incremento esponenziale

Cwnd inizializzato con la dimensione del segmento massimale (MSS) e aumentata di un valore corrispondente a MSS a
ogni segmento riscontrato

(se arriva riscontro, cwnd = cwnd +1)

Termina quando raggiunge la soglia ssthresh

2. Congestion avoidance: incremento lineare

Cwnd = i (ssthresh), ogni volta che viene riscontrata l’intera finestra di segmenti, cwnd viene incrementata di 1, la
dimensione aumenta linearmente fino alla rilevazione della congestione

(Se arriva un riscontro, cwnd = cwnd + (1/cwnd) )

3. Fast recovery (opzionale)

Inizia quando arrivano tre riscontri duplicati (leggera congestione) e si comporta come il congestion avoidance

Cwnd = i + 3 MSS (anzichè 1)

(Se arriva un riscontro duplicato, cwnd = cwnd + (1/cwnd) )

Strategie di transizione fra algoritmi

TCP Taho: utilizza solo i due algoritmi slow start e congestion


avoidance

TCP Reno: si aggiunge lo stato di fast recovery

Quando avviene un timeout TCP passa allo stato slow start;


quando riceve tre duplicati passa allo stato fast recovery e vi
rimane fintanto che arrivano altri riscontri duplicati.

- se avviene timeout —> slow start

- Se arriva un nuovo riscontro —> congestion avoidance e


cwnd = ssthresh

TCP NewReno: TCP controlla, quando arrivano i tre riscontri


duplicati, se è stato smarrito più di un segmento nella finestra.
Il segmento smarrito viene ritrasmesso cosi da non ricevere
altri riscontri.

Nella versione Reno la dimensione della finestra di congestione, terminata la fase iniziale slow start, segue un profilo AIDM

Additive increase: quando arriva un riscontro, cwnd = cwnd + (1/cwnd)

Multiplicative Decrease: quando viene rilevata la congestione, cwnd = cwnd/2

Throughput = (0,75)Wmax/RTT Wmax è la dimensione media della finestra quando avviene la congestione

TIMER TCP

4 timer: ritrasmissione, persistenza, permanenza in attività e tempo d’attesa

1. Timer di ritrasmissione

Utilizzato per ritrasmettere i segmenti smarriti gestendo RTO (Timeout di Ritrasmissione) ovvero il tempo di attesa massimo
del riscontro di un segmento. Regole:

1. TCP fa partire il timer quando invia il segmento all’inizio della coda di invio

2. Quando scade il timer, TCP rispedisce il primo segmento e fa ripartire il timer

3. Quando vengono riscontrati cumulativamente uno o + segmenti vengono eliminati dalla coda

4. Se la coda è vuota TCP arresta il timer, altrimenti lo fa ripartire

RTT ( Round Trip Time ) : Tempo di andata di un segmento e di ritorno del relativo riscontro

- RTTm misurato: tempo richiesto affinché il segmento raggiunta il destinatario e venga riscontrato, anche se il riscontro
può includere altri segmenti. TCP può eseguire una sola misurazione di RTT alla volta

- RTTs mediato (smoothed): media pesata dell’RTTm e dell’RTTs precedente

Inizialmente —> nessun valore

Dopo la prima misurazione —> RTTs = RTTm

Dopo qualsiasi misurazione —> RTTs = (1- a ) RTTs + a x RTTm a solitamente = 1/8

- RTTD Deviazione dell’RTT:

Inizialmente —> nessun valore

Dopo la prima misurazione —> RTTD = RTTm/2

Dopo qualsiasi misurazione —> RTTD = (1- b )RTTD + b x | RTTs - RTTm | b solitamente = 1/4

RTO ( Timeout di ritrasmissione) :

originale —> valore iniziale

dopo qualsiasi altra misurazione —> RTO= RTTs + 4 x RTTD

Algoritmo di Karn: Il protocollo TCP non utilizza l’RTT di un pacchetto ritrasmesso per aggiornare il valore dell’RTO

Strategia di back-off esponenziale: il valore di RTO viene raddoppiato ad ogni ritrasmissione

2. Timer di persistenza

Viene attivato dal mittente quando riceve un messaggio di riscontro con dimensione della finestra nulla. Quando il timer
scade il mittente invia un messaggio detto probe (sonda) contente un solo byte di dati per notificare al TCP destinatario che
il suo messaggio di riscontro è stato perso e quindi deve essere ritrasmesso (usa solo un #seq che viene ignorato).

Tempo limite = tempo di ritrasmissione

Raggiunto il limite TCP mittente invia un nuovo messaggio probe, raddoppia tempo limite e fa partire il timer di persistenza.

Il processo continua fino a quando viene ricevuto un riscontro da TCP ricevente o raggiunta una soglia prestabilita.

3. Timer keepalive (di permanenza in attività)

Usato per evitare connessioni con periodi troppo lunghi di inattività.

Solitamente ha un tempo limite di due ore che viene azzerato dal server ogni volta che riceve notizie dal client. Raggiunto t
limite il server invia 10 mess sonda, ogni 75sec e se non riceve niente dal client chiude la connessione.

3. Timer tempo d’attesa (2MSL)

Usato durante le operazioni TCP di chiusura attiva di una connessione con invio del riscontro finale. La connessione rimane
aperta il doppio di MSL cosicché TCP possa rispedire l’ACK finale nel caso in cui un riscontro si smarrisca. Consente
anche all’RTO dall’altro lato di scadere e Ch si possano rispedire nuovi segmenti FIN e ACK.

MSL: tempo massimo di vita di un segmento in rete prima di essere scartato, tipicamente 30sec o 1 o 2 minuti

LIVELLO RETE

Nello stack TCP/IP è responsabile della consegna dei datagrammi tra gli host, comprende quindi la progettazione degli indirizzi
logici necessari per identificare in maniera univoca gli host connessi in Internet e protocolli di instradamento per far arrivare i
pacchetti a destinazione.

Internet è un internetwork (una rete di reti) cioè una combinazione di LAN e WAN, connesse grazie a router e switch.

Nell’host sorgente il liv rete accetta un segmento dal liv trasporto, incapsula in un datagramma e consegna al liv collegamento;

Nell’host destinazione il datagramma viene decapsulato, il pacchetto viene estratto e consegnato a livello trasporto

SERVIZI A IVELLO DI RETE

SUDDIVISIONI IN PACCHETTI Packetizing

Compito di portare da sorgente a destinazione un payload senza modificarlo o utilizzarlo.

L’host sorgente riceve un payload da un protocollo di liv superiore, aggiunge header con indirizzi sorgente e destinazione +
altre info e lo consegna a liv collegamento;

L’host destinazione riceve il pacchetto di liv rete dal suo liv collegamento, lo apre e consegna il payload al liv trasporto. Se il
pacchetto durante il tragitto è stato frammentato il liv rete deve aspettare tutti i frammenti, riassemblarli e poi consegnare.

I router non possono aprire i pacchetti, ne modificare gli indirizzi di essi, ma verificano solo gli indirizzi per inoltrare il pacchetto
alla rete corretta.

INSTRADAMENTO (routing)

Per scegliere il percorso migliore per portare un pacchetto da sorgente a destinazione, data la moltitudine di percorsi, vengono
utilizzati i protocolli di routing (o di instradamento) così da creare delle tabelle di instradamento utilizzate per decidere come
instradare i pacchetti quando arrivano nei router.

INOLTRO (forwarding)

Azione eseguita dai router quando un pacchetto arriva ad una delle sue interfacce.

Il router quando riceve un pacchetto da una delle reti a cui è collegato prende le informazioni nell’intestazione, indirizzo di
destinazione o un’etichetta e consulta la tabella d’inoltro per trovare la giusta interfaccia di output e instradare il pacchetto
nella rete successiva corretta.

CONTROLLO DEGLI ERRORI

Non è presente in questo livello poichè i pacchetti nel tragitto possono essere frammentati in ciascun router. È presente nel
pacchetto il campo checksum per rilevare cambiamenti o errori nell’intestazione.

Internet utilizza un protocollo ausiliario ICMP che fornisce un controllo degli errori nel caso un pacchetto venga scartato o
contenga info sconosciute nell’intestazione.

CONTROLLO DI FLUSSO

Non è presente dato che il ricevente visto che non deve controllare gli errori non ha molto lavoro da fare e quindi con fatica
sarà sommerso; i liv superiori che utilizzano i servizi di liv rete hanno un buffer per riceve i dati appena sono pronti ma senza
avere la necessità di consumarli all’istante; il controllo di flusso viene implementato a liv superiore quindi sarebbe ridondante.

CONTROLLO DELLA CONGESTIONE

La congestione avviene quando troppi pacchetti sono presenti in una certa area della rete superando la capacità dei router o
della stessa rete. Potrebbero essere scartati tanti pacchetti e quindi grazie al controllo degli errori dei liv superiori e il mittente
invierà i continuo i duplicati dei pacchetti persi. Se la congestione continuo si può arrivare al collasso del sistema e nessun
pacchetto verrà consegnato. La congestione si riferisce maggiormente al throughput e al ritardo.

Controllo della congestione a ciclo aperto (prevenzione per non far avvenire la congestione)

- Politica di ritrasmissione buona

- Politica di gestione delle finestre, meglio SELECTIVE REPEAT che reinvia solo pacchetti persi o danneggiati

- Politica di riscontro

- Politica di scarto

- Politica di ammissione permette la creazione di un nuovo circuito virtuale solo se esso non provocherà congestione

Controllo della congestione a ciclo chiuso (rimozione)

Diverse tecniche: Backpressure, Choke packet, Segnalazione implicita o esplicita

SICUREZZA

Non è presente nel liv rete alcun controllo della sicurezza, dato che originariamente quando è stato progettato la rete era
utilizzata da pochi studenti e ricercatori, oggi invece è fonte di enorme preoccupazione.

Per fornire sicurezza al liv rete privo di connessione si può aggiungere un livello virtuale per far diventare il servizio orientato
alla connessione (come IPsec).

PACKET SWITCHING

Il router è un commutatore di rete che crea un collegamento tra una porta di input e una o più di output.

Approccio a datagramma x servizio senza connessone

Ogni datagramma che naviga in rete è un’entità indipendente quindi un router può ridere in successione un datagramma che
appartiene a un messaggio seguito da un successivo che può non appartenere allo stesso messaggio oppure venire da una
sorgente diversa. L’inoltro di basa solamente sull’indirizzo di destinazione del datagramma.

Approccio a circuito virtuale x sevizio orientato alla connessione

È presente nei datagrammi un’etichetta di flusso (flow label) per identificare il percorso virtuale che deve seguire. L’inoltro si
basa sull’etichetta del datagramma. 3 fasi:

1. Set up (creazione del circuito virtuale): indirizzi sorgente e destinazione utilizzati per configurare nei router le tabelle
necessarie per l’impostazione dei circuiti virtuali

2. Data transfer (trasferimento dati)

3. Teardown (distruzione del circuito virtuale): viene informato il router di cancellare le info di un circuito che si sta eliminando

STRUTTURA DI UN ROUTER

Processore di routing implementa le funzionalità del liv rete: ricerca nella tabella (table lookup) l’indirizzo di rete successivo

Switching Fabric: necessario a spostare i datagrammi dalla coda di input a quella di output (es crossbar switch)

PROTOCOLLO Versione 4

Livello rete formato da un protocollo principale Internet Protocol versione 4 (IPv4) responsabile della suddivisione dei pacchetti,
dell’inoltro e della consegna dei datagrammi + 3 protocolli ausiliari:

- ICMPv4 InternetControlMessageProtocol x gestire alcuni errori nella consegna

- IGMP InternetGroupManagementProtocol x supportare IPv4 nella gestione del multicast

- ARP AdressResolutionProtocol x permettere associazione tra gli indirizzi di livello rete e quelli di collegamento

IPv4 è inaffidabile e senza connessione basato su datagrammi, offre un servizio di consegna best-effort ovvero fa del suo
meglio per consegnare i dati ma i datagrammi possono essere danneggiati, persi, arrivare fuori ordine o in ritardo e generare
congestione, è quindi consigliato associare un protocollo trasporto affidabile come TCP.

FORMATO DI DATAGRAMMI

-VER numero di versione del protocollo (4)

-HLEN lunghezza totale dell’intestazione in parole formate da 4 byte

-Tipo di servizio, ci possono essere dei servizi differenziati per dire il


modo in cui il datagramma deve essere gestito dai router

-Lunghezza totale = intestazione+dati ,campo necessario al ricevente


per capire se sono arrivati tuti i dati

-Identificazione, flag, scostamento di frammentazione (offset) x


quando dim datagramma > dim supportata dal liv inferiore

-Time-to-live (TTL), numero di router visitati dal datagramma.

Quando = 0 il router scarta il datagramma

-Protocollo, x definire a quale protocollo va consegnato il payload


estratto dal datagramma (TCP,UDP, protocollo di instradamento..)

-Checksum dell’intestazione, per gestire il controllo degli errori


dell’intestazione

-Indirizzi IP sorgente e destinazione

-Opzioni , utili per il test o il debug della rete

-Payload (dati) contenuto del pacchetto

FRAMMENTAZIONE

Un datagramma IP può dover viaggiare attraverso diverse reti con caratteristiche differenti. Ogni router toglie il datagramma
dal frame di livello collegamento che ha ricevuto, lo elabora e lo incapsula in un nuovo frame, il quale dovrà avere un certo
formato e dimensione in base alla tecnologia fisica e dal liv collegamento della rete su cui viaggerà, può essere quindi
suddiviso in parti più piccole, “frammentato”.

MTU Maximum Transfer Unit: dimensione massima del payload del frame

Per una LAN = 1.500 byte , per una WAN maggiore o inferiore.

Lunghezza massima del datagramma IP fissata = 65.535 byte

Se un datagramma incontra una rete con MTU più piccola deve essere frammentato. L’host sorgente o il router che esegue la
frammentazione deve cambiare i valori dei 3 campi dell’intestazione: i flag, lo scostamento di frammentazione e la lunghezza
totale, il resto dei campi deve essere copiato, il valore del checksum viene ricalcolato ad ogni hop. I vari frammenti di uno
stesso messaggio possono viaggiare lungo percorsi differenti, quindi il riassemblaggio del datagramma deve essere fatto
dall’host destinazione all’arrivo di tutti i frammenti.

- Campo identificazione: il protocollo IP usa un contatore per identificare i datagrammi. Quando viene inviato un
datagramma viene copiato il valore del contatore nel campo identificazione e il contatore viene incrementato. Ogni
frammento del datagramma dovrà contenere questo valore nel campo identificazione per permettere all’est destinazione di
ricostruire il datagramma prendendo tutti i frammenti con lo stesso valore

- Campo flag: composto da 3 bit

1. Bit più a sx non viene utilizzato

2. Bit D “do not fragment “ se 1 allora non bisogna frammentare il datagramma (Se il dispositivo non è in grado di
trasmetterlo in nessuna rete fisica invia un messaggio d’errore ICMP all’host sorgente); se 0 può essere frammentato

3. Bit M “more fragment” se 1 il datagramma non è l’ultimo frammento della serie; se 0 è l’ultimo o unico frammento

- Campo scostamento di frammentazione (offset): posizione relativa del frammento rispetto l’intero datagramma, misurato
in unità di 8byte. (La divisione deve essere per 8)

INDIRIZZI IPv4

Indirizzo IPv4 è formato da 32bit e definisce in modo universale e unico il collegamento di un host o un router ad Internet.

Spazio degli indirizzi (address space): numero totale degli indirizzi utilizzato dal protocollo = 232

Notazione:

—> ogni numero compreso tra 0 e 255

Gerarchia nell’indirizzamento:

INDIRIZZO DI RETE (network address): primo indirizzo, usato


nell’instradamento dei datagrammi per trovare la giusta rete di destinazione

Classful addressing è diventato obsoleto a causa dell’esaurimento degli indirizzi: solo 128 organizzazioni al mondo
potevano avere classe A con ciascuno una rete da 16.777.216 nodi, un numero esageratamente grande, molti inutilizzati; lo
stesso anche per la classe B, quelli C invece avevano disponibili solo 256 indirizzi, molto poco.

—> subnetting: in un blocco di classe A o B si dividono gli indirizzi tra varie organizzazioni (nessuno voleva dividere)

—> supernetting: combinare più blocchi di classe C (complicava il routing dei pacchetti)

unico vantaggio: lunghezza del prefisso fissa

Classless addressing creato a causa della saturazione degli indirizzi e la nascita degli Internet Service Provider.

Lo spazio degli indirizzi è diviso in blocchi di lunghezza variabile (da 1, 2, 4, 128 indirizzi e cosi via);

Il numero degli indirizzi in un blocco deve essere una potenza di 2;

Lunghezza del prefisso n variabile aggiunta alla fine dopo /

/n

Per trovare il primo e l’ultimo indirizzo del blocco

Maschera dell’indirizzo: numero composto da 32 bit in cui i primi n bit a sinistra sono impostati a 1 e il resto dei bit (32-n) a 0

1. Il numero degli indirizzi nel blocco è N =NOT (maschera) +1

2. Il primo indirizzo nel blocco = (qualsiasi indirizzo nel blocco) AND (maschera)

3. L’ultimo indirizzo nel blocco = (qualsiasi indirizzo nel blocco) OR (NOT (maschera))

ICANN Internet Corporation for Assigned Names and Numbers si occupa di assegnare grandi blocchi di indirizzi a ISP. Per
il corretto funzionamento del CIDR (numerazione slash) ci sono due restrizioni che devono essere applicate a ogni blocco:

1. Il numero degli indirizzi assegnati (N) deve essere una potenza di 2

2. Primo indirizzo = (prefisso in decimale) x 2 32-n = (prefisso in decimale) x N

Una ISP può fare subnetting dividendo un blocco con N indirizzi e lunghezza del prefisso n , in più sottoreti (subnet) ciascuna
con Nsub indirizzi e lunghezza del prefisso nsub

- il numero degli indirizzi di ogni subnetwork deve essere una potenza di 2

- nsub = 32 - log2Nsub

- Si assegnano prima gli indirizzi alle sottoreti più grandi

INDIRIZZI SPECIALI

Indirizzo this-host: 0.0.0./32 Un host deve inviare un datagramma IP ma non conosce l’indirizzo sorgente

Indirizzo limite-broadcast: 255.255.255.255/32 Un host deve inviare un datagramma a tutti i dispositivi all’interno della rete

Indirizzo di loopback: 127.0.0.0/8 Usati per il test e il debug del software in esecuzione sull’host locale per testarli prima di
installarli su diversi computer

Indirizzi privati: 10.0.0.0/8 172.16.0.0/12 192.254.0.0/16 169.254.0.0/16

Indirizzi multicast: 224.0.0.0/4

DHCP Dynamic Host Configuration Protocol


Programma di livello applicazione basato sul paradigma client/server che assegna gli indirizzi in modo automatizzato. Molto
usato e spesso definito protocollo plug-and-play. Può essere usato per fornire all’host l’indirizzo del computer, il prefisso,
l’indirizzo del default router e l’indirizzo IP del server dei nomi di dominio.

Formato dei messaggi DHCP

Campo Option può:

- trasportare info aggiuntive

- specifica opzioni DHCP: lo capisco se i primi 4byte sono [99.130.83.99] magic cookie. I restanti 60
sono opzioni, ciascuna composta da un campo tag da 1byte, un campo lunghezza da 1 byte e un
campo valore di lunghezza variabile

FUNZIONAMENTO DEL DHCP

NAT Network Address Translation

Consente di usare una serie di indirizzi privati per la comunicazione interna e una serie di indirizzi Internet globali (almeno uno)
per la comunicazione con il resto del mondo. La rete interna necessita di un solo collegamento all’internet globale per mezzo
di un router NAT il quale sostituisce l’indirizzo IP sorgente del datagramma in uscita dalla rete privata con l’indirizzo NAT
globale del router e fa il contrario con il datagramma in entrata modificando indirizzo destinazione con quello della rete priv.

Possiede una tabella di traduzione per capire


l’indirizzo di destinazione corretto di un datagramma
che arriva da Internet.

Utilizzo di un solo indirizzo IP,

Tabella di due colonne: indirizzo privato e esterno


(indirizzo IP destinazione)

Utilizzo di un gruppo di indirizzi IP


NAT può usare un gruppo di indirizzi globali (non solo
ad esempio 200.24.5.8) cosicché se ho ad esempio 4
indirizzi, 4 host della rete privata possono comunicare
contemporaneamente con lo stesso host esterno.

MA non si possono instaurare più di 4 connessioni


contemporaneamente con stessa destinazione + un
host non può accedere a due server esterni
contemporaneamente + due host della rete privata
non possono accedere allo stesso programma server
esterno contemporaneamente —>

Utilizzo degli indirizzi IP e di numeri di porta


Tabella di traduzione a 5 colonne: indirizzo privato, porta privata (univoca), indirizzo esterno, porta esterna, protocolloTrasporto

INOLTRO DEI DATAGRAMMI IP

Inoltrare significa inviare il pacchetto all’hop successivo che può essere la destinazione finale o un dispositivo intermedio.

Inoltro basato sull’indirizzo di destinazione (approccio tradizionale)

L’’host o il router che deve inoltrare il pacchetto fa riferimento la tabella d‘inoltro per trovare il salto successivo. Se
l’indirizzamento senza classi la tabella deve includere 4 info:

1. La maschera

2. L’indirizzo di rete [1 e 2 si possono combinare, ad es 180.70.65.192/26]

3. Numero d’interfaccia

4. Indirizzo IP del router successivo

Aggregazione degli indirizzi: più blocchi di indirizzi (di diverse


società) vengono aggregati in un blocco più grande per diminuire la
dimensione della tabella d’inoltro e velocizzare il meccanismo di
ricerca.

Ad esempio R2 ha una tabella più piccola perchè non inserisce una


riga per ogni blocco ma ha un’unica interfaccia m0 che indirizza i
datagrammi a R1

Corrispondenza con la maschera più lunga (longest mask matching):


la tabella d’inoltro viene inoltrata dalla maschera + lunga a quella +
corta per risolvere la situazione in cui un’organizzazione è separata
dalle altre

Routing gerarchico: è possibile implementare una sorta di gerarchia


all’interno della tabella d’inoltro per facilitare la ricerca seguendo la
struttura gerarchica di Internet divisa in dorsali e ISP nazionali,
quest’ultime suddivise in regionali, partizionate a loro volta in locali.

Routing geografico: per diminuire ulteriormente la dim della tabella


d’inoltro. L’intero spazio degli indirizzi è diviso in pochi blocchi in
base al continente.

ICMPv4
È un protocollo di livello rete. I messaggi ICMP vengono incapsulati all’interno di datagrammi IP prima di essere passati al liv
inferiore, e viene messo come valore del campo protocollo 1.

Type: tipo di messaggio

Code: ragione del messaggio

Messaggi di segnalazione errori: necessari per riportare alla sorgente originale gli errori che possono verificarsi durante
l’elaborazione dei datagrammi IP. Non viene generato messaggio ICMP:

- se indirizzo destinazione del datagramma è This-host o loopback

- Se il datagramma contiene un messaggio di errore ICMP

- Se ho un datagramma che è non è il primo frammento di una serie

Messaggi di richiesta (query): possono essere utilizzati senza bisogno di una relazione specifica con un datagramma IP, ma
ovviamente questi messaggi devono essere incapsulati in datagrammi. Sono utilizzati per rilevare o verificare il funzionamento
di host o router nella rete (echo), per trovare il tempo necessario ad un datagramma per raggiungere una destinazione o per
scoprire se gli orologi di due destinazioni sono sincronizzati o meno (Timestamp).

Query generate in coppia: prima richiesta e poi risposta

Il programma Ping, che viene utilizzato per verificare il funzionamento di un host, si base su messaggi eco dell’ICMP

ROUTING UNICAST

Se il pacchetto è destinato a una sola destinazione si parla di routing unicast. Per trovare il percorso migliore per far giungere a
destinazione il pacchetto una rete di reti viene modellata come un GRAFO in cui ogni nodo è un router e ogni rete un arco
pesato.

INSTRADAMENTO A COSTO MINIMO

Ogni router deve trovare il percorso a costo minimo tra se stesso e tutti gli altri router —> Alberi a costo minimo

N router —> (N-1) percorsi a costo minimo da ogni router —> N x (N-1) percorsi a costo minimo in rete

ALGORITMI DI ROUTING

Distance Vector (DV) routing: ogni nodo crea il proprio albero a costo minimo solo con i nodi vicini; questi alberi
incompleti vengono scambiati tra i vicini per rendere l’albero sempre più completo e rappresentare l’intera rete.

Equazione di Bellman-Ford : per trovare costo minimo tra un nodo sorgente x e uno d’estrazione y, tramite dei nodi intermedi
(a, b, c...) con noti i costi tra x e y e tra nodi intermedi e sorgente o destinazione

Vettore distanza: array monodimensionale che rappresenta l’albero riportando i costi minimi per le destinazioni

Ogni nodo quando viene inizializzato invia messaggi di benvenuto ai nodi vicini attraverso le sue interfacce per capire l’identità
dei vicini e la loro distanza e costruisce il vettore distanza con i valori che ha scoperto. Poi invia questo vettore a tutti i nodi
inseriti ciascuno dei quali provvederà ad aggiornare il proprio vettore distanza applicando l’equazione di Bellman-Ford.

Problema del conteggio all’infinito: i decrementi di costo si diffondono rapidamente mentre gli aumenti lentamente, servono
molti aggiornamenti prima che il costo di un collegamento rotto venga registrato come infinito da tuti i router.

Un esempio è il ciclo a due nodi in cui si ha un guasto nel nodo A per raggiungere X e B invia la sua tabella d’inoltro prima che
A rinvii la sua modificata il sistema diventa instabile. I pacchetti rimbalzano tra A e B.

SOLUZIONE 1 Split horizon: non viene inviata un’informazione che è già presente in un nodo, ciascun nodo invia quindi solo
una parte della sua tabella attraverso ogn interfaccia.

SOLUZIONE 2 Poisoned Reverse

Link-State (LS) routing


Il costo associato ad ogni arco definisce lo stato del collegamento: meglio costo minore / se infinito non esiste o interrotto

LSDB Link-State Database, matrice unica e completa della rete in cui il valore di ogni cella definisce il costo del collegamento
corrispondente.

Ogni nodo per creare l’albero a costo minimo ha la sua copia LSDB grazie al procedimento di flooding: ogni nodo invia un
messaggio di benvenuto ai nodi vicini e raccoglie LSP (LS packet) contenente identità del nodo e costo del collegamento.
LSP viene inviato attraverso ogni interfaccia del nodo; quando un nodo riceve LSP lo confronta:

- se è più vecchio di quello che ha già (guardando #seq) LSP viene scartato

- Se è più recente o primo ricevuto viene cancellato il vecchio LSP e il nuovo viene conservato

A questo punto il nodo invia una copia dell’LSP da ogni sua interfaccia tranne quella da cui è arrivato il pacchetto.

Dopo aver ricevuto tutti i nuovi LSP ogni nodo crea la sua copia LSDB globale, uguale per tutti.

Con questo algoritmo ogni router riferisce all’ intera rete ciò che sa dei suoi vicini mentre con il vettore distanza ogni router
comunica ai suoi vicini ciò che sa sull’intera rete.

Costruzione degli alberi a costo minimo —> algoritmo di Dijkstra

PROTOCOLLI DI ROUTING UNICAST

In Internet ciascun ISP è considerato un Autonomous System (AS) e per gestire il routing viene implementata una gerarchia in
cui vi è un protocollo di routing globale che riunisce tutti gli AS detto protocollo di routing interdominio o EGP (Exterior
Gateway Protocol) [BGP] + protocollo usato all’interno degli AS chiamato protocollo intradominio o IGP (Interior Gateway
Protocol) [RIP e OSPF]

Autonomous System (AS)


Viene assegnato ad ogni AS un numero identificativo di 16 bit [ASN] dall’ICANN

Sono classificati in base al modo con cui sono connessi agli altri AS:

- AS stub ha un solo collegamento verso un altro AS (rete di una grande azienda che può essere solo sorgente o destinazione
dei dati )

- AS multihomed ha più di una connessione con altri AS, ma non consente al traffico dati di passare attraverso esso. (Azienda
che può usare i servizi di più network provider ma gli AS collegati non possono sfruttare la sua rete per transito dati)

- AS di transito è collegato a vari AS e consente traffico dati (network provider e dorsali)

OSPF Open Shortest Path First


Protocollo aperto intra-dominio che si basa sull’algoritmo di instradamento a stato del collegamento (con delle piccole
modifiche ed aggiunte: dopo che ogni router ha creato l’albero l’algoritmo deve usarlo per creare la corrispondente tabella
d’inoltro + l’implementazione deve gestire l’invio e la ricezione dei vari messsaggi OSPF)

Il costo per raggiungere una destinazione dall’host si calcola dal router sorgente alla rete di destinazione.

Progettato per poter gestire il routing in AS di tutte le dimensioni, se ha grandi dimensioni l’invio per ogni router del proprio
LSP a tutti gli altri router nella rete potrebbe creare un enorme traffico —> AS viene diviso in aree ciascuna con un
identificatore, una di queste è l’area dorsale (0) che ha il compito di collegare tutte le diverse aree e metterle in comunicazione

È implementato come applicazione che sfrutta la comunicazione a livello rete usando direttamente il protocollo IP. I
datagrammi che incapsulano un messaggio OSPF hanno valore campo protocollo 89.
Esiste la versione 1 o 2 (più usata)

Utilizza 5 diversi tipi di messaggi

- hello (tipo 1) usato dai router per annunciare la propria esistenza e per indicare tutti gli altri nodi che sono già noti

- Database description (tipo 2) inviato in risposta ad un messaggio hello per ottenere l’intero LSDB

- Link-state request (tipo 3) inviato da un router che ha bisogno di uno specifico collegamento

- Link-state update (tipo 4) messaggio principale usato da OSPF per la costruzione dell’LSDB

- Riscontro Link-state (tipo 5) per dare affidabilità, ogni router che riceve un mess di agg link-state deve darne il riscontro

L’intestazione del messaggio ha anche un campo Authentication per evitare che un malintenzionato possa inviare messaggi a
OSPF per alterare la tabella d’inoltro di uno o + router.

Prestazioni

- i messaggi di aggiornamento devono essere inviati a tutti i router dell’area, se è ampia possono generare molto traffico

- L’esecuzione, per ogni router, dell’algoritmo di Dijkstra può richiedere un certo quantitativo di tempo

- Più robusto di RIP poichè dopo aver completato LSDB ogni router è indipendente dagli altri quindi un guasto in uno non
influisce sugli altri

BGP4 Border Gateway Protocol Versione 4


Unico protocollo inter-dominio utilizzato in Internet, si basa sul’algoritmo a vettore distanza, ma è fatto per fornire informazioni
sulla raggiungibilità delle reti in Internet.

Su tutti i router dell’AS bisogna installare internalBGP e se è un border router bisogna installare anche externalBGP (i router
di confine eseguiranno 3 protocolli d’instradamento: intra-dominio, iBGP e eBGP)

eBGP: protocollo punto-punto, quando viene


installato il software in due router (chiamati peer
BGP o speaker BGP) essi cercano di creare una
connessione logica TCP (chiamata sessione)
usando la porta 79 per scambiarsi messaggi di
aggiornamento per indicare ad alcuni router come
instradare i pacchetti.

iBGP: simile a eBGP ma crea una sessione tra ogni


possibile coppia di router all’interno di un AS —>
con n router avrò [n x (n-1)/2] sessioni interne

Ogni router dopo aver applicato il criterio scelto


per trovare il percorso migliore, combina le info
ricevute da eBGP e iBGP per creare una tabella dei
percorsi che verrà inserita nelle tabelle d’inoltro intra-dominio per l’instradamento dei pacchetti.

ATTRIBUTI DEL PERCORSO

RIP e OSPF associa ad una destinazione due info: prossimo hop e il costo

BGP associa ad una destinazione al massimo 7 attributi di percorso inseriti dopo il prefisso di destinazione all’interno di un
messaggio di aggiornamento e sono divisi in:

- Noti (well-known) , riconosciuti da tutti i router e possono essere obbligatori o discrezionali


- Opzionali , transitivo se può essere passato all’AS successivo o non transitivo
Tipo 1, ORIGIN : attributo noto e obbligatorio che definisce la sorgente delle info di instradamento, definito dal valore:

- 1 info deriva dal protocollo intra-dominio

- 2 info deriva dal BGP

- 3 info ha origine da una fonte sconosciuta

Tipo 2, AS-PATH : attributo noto è obbligatorio che definisce la lista degli AS tramite i quali si può raggiungere la destinazione.
Utilizzato nella selezione dei percorsi. (Usato nell’instradamento path-vector contribuisce a evitare i cicli)

Tipo 3, NEXT-HOP : attributo noto e obbligatorio che definisce il prossimo router al quale il pacchetto dati va inoltrato.
(Permette di inserire le info di percorso raccolte da eBGP e iBGP all’interno dei protocolli di instradamento intra-dominio)

Tipo 4, MULT-EXIT-DISC : attributo opzionale non transitivo che discrimina tra i percorsi multipli verso una destinazione. Se
un router ha più percorsi verso la destinazione con diversi valori viene selezionato quello inferiore.

Tipo 5, LOCAL-PREF : attributo noto e discrezionale che viene impostato dall’amministratore di rete in base alla politica della
sua organizzazione. Valore intero senza segno di 4 byte che viene dato ai percorsi preferiti.

Tipo 6, ATOMIC-AGGREGATE : attributo noto e discrezionale che definisce indirizzo di destinazione come non aggregato,
definisce una singola rete di destinazione. Non usa il campo valore, campo lunghezza = 0

Tipo 7, AGGREGATOR : attributo opzionale e transitivo che enfatizza che il valore prefisso di destinazione è aggregato. Il
valore attributo fornisce il numero dell’ultimo AS che ha fatto aggregazione, seguito dall’indirizzo IP del router che l’ha
effettuata.

SELEZIONE DEL PERCORSO

Se un router deve scegliere il percorso migliore verso una destinazione:

- Il protocollo di instradamento intra-dominio si basa sull’albero a percorso minimo

- In BGP è più complesso: per scegliere il percorso sfrutta gli attributi che ciascun percorso ottiene da sessioni eBGP e iBGP

MESSAGGI

4 tip di messaggi per la comunicazione tra speaker sia all’interno di un AS che tra AS:

1. Messaggio open : per collegarsi a un router vicino aprendo connessione TCP

2. Messaggio update : per eliminare delle destinazioni note o annunciare una nuova destinazione

3. Messaggio keepalive : per verificare se il peer all’altro lato della connessione è ancora funzionante

4. Messaggio notification : se un router vuole chiudere la sessione o ogni volta che rileva una condizione d’errore

PRESTAZIONI

Gli speaker BGP si scambiano molti messaggi per creare tabelle d’inoltro, ma è esente da cicli e conteggio all’infinito.
Debolezze nella propagazione dei guasti e l’alterazione delle info.
RIP Routing Information Protocol
Protocollo di routing intra-dominio basato sull’algoritmo di instradamento a vettore distanza.

Conto dei salti (hop): ​ogni router implementa l’algoritmo a vettore distanza ma con delle modifiche:

- Rendono noto il costo per raggiungere le diverse sottoreti invece dei costi per raggiungere nodi
- Il costo viene definito come numero di hop (sottoreti) che u pacchetto deve visitare per adare dal router sorgente a
destinazione senza considerare la rete e le prestazioni (ritardi, ampiezza banda…)

+ l’host sorgente non usa la tabella d’inoltro, il pacchetto viene semplicemente inviato al router di default
+ il costo massimo di un percorso è di 15 hop ( 16 = infinito = nessuna connessione)

Tabelle d’inoltro: necessarie per far raggiungere i pacchetti alla loro rete di destinazione, 3 colonne:

1. Indirizzo rete di destinazione


2. Indirizzo del prossimo router
3. Numero di hop per raggiungere la rete di destinazione

Grazie alla colonna 2 Si riesce a costruire l’intero albero minimo; la colonna 3 serve per aggiornare la tabella quando ci sono
modifiche del percorso.

Implementazione di RIP: ​implementato per mezzo di un processo demone, sempre attivo, che ascolta sulla porta 520 UDP, messaggi
di RIP vengono incapsulati all’interno di datagrammi utente UDP, che a loro volta sono incapsulati in datagrammi IP (RIP lavora a
livello di applicazione ma crea le tabelle d’inoltro per IP).

Messaggi di RIP: si basa sullo scambio di messaggi tra una coppia di processi client e server.

Voce o entry (può essere ripetuta) e fornisce le info


relative a una riga della tabella d’inoltro del router che
invia il mess.

Due tipi di messaggi:

1. Di richiesta, viene inviato da un router appena acceso o se ha voci scadute in memoria


2. Di risposta (Aggiornamento), se sollecitato viene inviato come risposta a un mess di richiesta con info sulla destinazione del
mess di richiesta; se non sollecitato viene inviato periodicamente quando c’è un cambiamento nella tabella d’inoltro

Algoritmi RIP: implementa algoritmo d’instradamento a vettore distanza con alcuni cambiamenti per aggiornare le tabelle:

- Un router invia l’intero contenuto della sua tabella d’inoltro all’interno di un mess di risposta (non solo vettori distanza)
- Il destinatario aggiunge un hop a ciascun costo e modifica il campo “router successivo” inserendo l’indirizzo del router
mittente. Ogni percorso nella tabella d’inoltro modificata viene definito ​percorso ricevuto​ e quello nella vecchia, ​vecchio
percorso. ​Il router effettua questa modifica del percorso ad eccezione:
o Se il percorso non esiste nella vecchia tabella allora va aggiunto
o Se costo del percorso ricevuto < costo vecchio percorso ​ ​ ​percorso ricevuto diventa nuovo percorso
o Se costo del percorso ricevuto > costo vecchio percorso MA il valore del prossimo router è lo stesso ​ ​ percorso
ricevuto diventa nuovo percorso
- La nuova tabella d’inoltro deve essere ordinata in base al percorso di destinazione (in ordine di lunghezza del prefisso)

3 Timer in RIP​:

1. Periodico​, (tra 25 e 35sec) Fa il conto alla rovescia, quando arriva a 0 viene inviato un messaggi di aggiornamento
2. Di scadenza​, per regolare la validità dei percorsi: se non viene ricevuto un aggiornamento entro 180sec il percorso viene
considerato come scaduto e il suo conto dei salti viene impostato a 16 (destinazione irraggiungibile)
3. Per la garbage collection​, usato per eliminare percorsi dalla tabella d’inoltro: quando è presente un percorso con costo
infinito il router continua ad annunciarlo, allora viene impostato il timer a 120sec, quando raggiunge lo 0 il percorso viene
definitivamente eliminato dalla tabella. I vicini vengono a conoscenza di un percorso non valido prima che sia eliminato.

PRESTAZIONI:

- messaggi d’aggiornamento​: formato semplice e inviati solo ai vicini (locali), non creano picchi di traffico perché i router
cercano di evitare di inviarli contemporaneamente
- convergenza nelle tabelle d’inoltro​: utilizza algoritmo a vettori distanza che può convergere lentamente se dominio ampio.
I problemi che possono rallentare la convergenza sono il conteggio all’infinito e i cicli creati nel dominio (uso split e inv avv)
- robustezz​a: nel caso di un guasto a un router il problema verrà diffuso a tutti i router e l’inoltro in ognuno di questi ne sarà
influenzato dato che ogni router invia ai vicini ciò che sa dell’intero dominio

MULTIMEDIA E QUALITA’ DEL SERVIZIO


CARATTERISTICHE DEL FLUSSO DATI

Ad ogni flusso dati vengono attribuite 4 caratteristiche:

1. AFFIDABILITA’ ​: capacità di un flusso d consegnare i pacchetti in modo corretto alla destinazione, se non è affidabile posso
perdere pacchetti o riscontri o eventi che comportano la ritrasmissione. Ciascuna applicazione ha una sensibilità diversa, ad
esempio per la posta elettronica è più importante rispetto che per la telefonia o video-conferenza su Internet. Per le
applicazioni che necessitano affidabilità bisogna implementare il controllo degli errori e scartare pacchetti danneggiati.
2. RITARDO da sorgente a destinazione​: Ciascuna applicazione ha una sensibilità diversa, per la posta elettronica è meno
importante rispetto che per la telefonia o video-conferenza che hanno bisogno di ritardo minimo. Per app sensibili al
ritardo bisogna garantire priorità ai loro pacchetti .
3. JITTER​: variazione del ritardo per pacchetti che appartengono allo stesso flusso (arrivano con var di tempo diversi). Audio e
video non tollerano il Jitter. Per app sensibili al Jitter bisogna accertarsi che tutti i pacchetti di quella app attraversino la
rete con lo stesso ritardo.
4. AMPIEZZA DI BANDA​: ciascuna applicazione necessita di una specifica ampiezza di banda. Nella video-conferenza è
necessario inviare una grande quantità di dati per aggiornare immagine su schermo molte volte al secondo, per la mail il
consumo di banda è molto più ridotto.

Potrebbero piacerti anche