Esplora E-book
Categorie
Esplora Audiolibri
Categorie
Esplora Riviste
Categorie
Esplora Documenti
Categorie
- end system
- 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
Questi dispositivi vengono collegati tramite link, che possono essere mezzi trasmissivi cablati o wireless come cavi o onde radio.
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.
- creata è gestita da un Internet Service Provider che fornisce i servizi alle organizzazioni
Di due tipi:
1. WAN punto-punto, rete che collega due dispositivi di comunicazione tramite un mezzo trasmissivo
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:
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
+ Utilizzo simultaneo di linea telefonica per il traffico dati e per comunicazioni vocali
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.
Intervallo di frequenze che un mezzo fisico consente di trasmettere senza danneggiare il segnale in maniera irrecuperabile. + bandwidth +
informazioni trasmesse
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...}
Latenza (ritardo)
Quanto tempo serve affinché un intero messaggio arrivi completamente a destinazione dal momento in cui il primo bit parte dalla sorgente.
Tempo trasmissione del primo bit - tempo ultimo bit che viene messo in linea
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.
- 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)
LIVELLO APPLICAZIONE
La comunicazione avviene tra due processi (due programmi eseguiti a questo livello)
- 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
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.
connection oriented, stabilisce una connessione logica tra i due host a livello trasporto
- Funzionalità di controllo del flusso + dell’errore + della congestione per ridurre la perdita di segmenti
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
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
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
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
Ciascun livello rimuove l’header del pacchetto ricevuto estraendone il payload e passa al livello superiore fino a raggiungere il livello
applicazione.
INDIRIZZAMENTO
MULTIPLEXING E DEMULTIPLEXING
Lo STACK TCP/IP prevede più protocolli nello stesso livello
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
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:
- 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:
PARADIGMA MISTO
un’applicazione può utilizzare un mix tra paradigma client-server e P2P combinando i vantaggi di ciascuno.
PARADIGMA CLIENT-SERVER
- Processo client apre la connessione Internet e richiede un servizio al server, quando ha bisogno
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.
- 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.
Protocollo UDP
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
- 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.
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).
- controllore, riceve input da tastiera o mouse e accede al documento e utilizza un interprete per visualizzarlo
- Interpreti (HTML,Javascript)
Server web: dove vengono memorizzate le pagine, ad esempio Apache HTTP Server e Microsoft Internet Information
- Porta
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.
3. Il client legge i dati fino a incontrare il simbolo di fine, EOF, e chiude la connessione
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.
Messaggio di richiesta
Riga di richiesta
- metodo: che cosa il client sta chiedendo al server
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.
Messaggio di risposta
Riga di stato
-Versione del protocollo HTTP, attualmente 1.1
-100-199 informazioni
Righe di intestazione
Corpo: documento che viene inviato dal server al client, vuoto solamente se la risposta è un messaggio di errore
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
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...
3. Il browser memorizza il cookie in una directory suddivisa per nome di dominio del server
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 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
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.
- 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
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..)
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
Definisce con comandi e risposte come deve avvenire l’interazione tra client e server MTA.
Il client deve “tirare” messaggi dal server, direzione dei dat dal server al client.
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
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).
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.
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
IV. ...
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
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)
1. Domini generici: suddividono gli host in base al loro scopo generale (acro, biz, com, coop, edu, gov, info)
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
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
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
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 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:
- Recvfrom(s,...) blocca processo client fino all’arrivo della risposta dal server
- Gestione risposta
Il processo è finito, ricevuta la risposta termina. L’invio di un datagramma da uno stesso utente è considerato come un nuovo client.
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
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
- 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)
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).
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:
- 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 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
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.
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
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).
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:
Se i pacchetti del sistema hanno dimensione 1000bit il coefficente di utilizzo del canale è
1000/20000 ovvero 5%.
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.
Quanti timer ci sono? Uno solo, quello del primo pacchetto 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.
Numero di riscontro indica il numero di sequenza di uno specifico pacchetto ricevuto senza errori.
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.
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
- Meccanismo del checksum per il controllo degli errori: viene eliminato il pacchetto senza nessuna notifica
UDP è un esempio del protocollo semplice senza connessioni al quale è stato aggiunto un checksum per identificare
eventuali pacchetti ricevuti corrotti.
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.
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
- 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)
SERVIZI TCP
- 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.
- 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
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.
Flag di controllo:
Dimensione della finestra che deve avere l’altro host, RWND (receive
window) determinata dal ricevente
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:
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
- SYN per iniziare il numero di sequenza numerando i byte inviati dal server al client
- 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.
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
Solitamente iniziata dal client, ma può farlo anche il server. Ha due opzioni di chiusura, handshake a tre vie e half-Close.
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
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
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
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
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.
(Non esiste feedback da processo destinatario al TCP destinatario, ma il processo può chiedere i dati che vuole al TCP)
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
[SACK riscontro selettivo: notifica anche segmenti che non sono in sequenza e duplicati]
- 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
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.
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.
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)
Cwnd inizializzato con la dimensione del segmento massimale (MSS) e aumentata di un valore corrispondente a MSS a
ogni segmento riscontrato
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
Inizia quando arrivano tre riscontri duplicati (leggera congestione) e si comporta come il congestion avoidance
Nella versione Reno la dimensione della finestra di congestione, terminata la fase iniziale slow start, segue un profilo AIDM
Throughput = (0,75)Wmax/RTT Wmax è la dimensione media della finestra quando avviene la congestione
TIMER TCP
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
3. Quando vengono riscontrati cumulativamente uno o + segmenti vengono eliminati dalla coda
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
Dopo qualsiasi misurazione —> RTTs = (1- a ) RTTs + a x RTTm a solitamente = 1/8
Dopo qualsiasi misurazione —> RTTD = (1- b )RTTD + b x | RTTs - RTTm | b solitamente = 1/4
Algoritmo di Karn: Il protocollo TCP non utilizza l’RTT di un pacchetto ritrasmesso per aggiornare il valore dell’RTO
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).
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.
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.
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
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.
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.
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 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
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.
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.
È 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
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:
- 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
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.
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
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:
Gerarchia nell’indirizzamento:
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)
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);
/n
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
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:
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
- nsub = 32 - log2Nsub
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
- 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
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.
Inoltrare significa inviare il pacchetto all’hop successivo che può essere la destinazione finale o un dispositivo intermedio.
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
3. Numero d’interfaccia
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.
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:
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).
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.
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.
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.
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]
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)
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)
- 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
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)
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:
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.
- 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:
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:
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.
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)
- robustezza: 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
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.