Sei sulla pagina 1di 32

INTERNET E RETI

Internet è un’infrastruttura fisica di componenti interconnesse secondo un’architettura di rete, usata come
servizio di comunicazione dalle applicazioni secondo le regole stabilite dai protocolli. La componentistica è
di tre tipi:
 Terminale/host utente: un host è un sistema in grado di inviare e ricevere informazioni. Sono di vari
tipi (router, switch, modem, …) e hanno diverse specifiche di elaborazione, trasmissione e
dimensioni.
 Architettura di rete: insieme di sistemi che formano la rete per distribuire le informazioni
 Link: sono i mezzi trasmissivi (fibra, doppini, Wi-Fi). Variano per composizione e per capacità
trasmissiva, misurata in bit/s (detta banda o data rate)

Accesso a internet
Per entrare in internet un host utente deve avere un access point (prendere connettività). Il router
raggiunto (in questo caso) si trova sul “bordo” di internet e per questo di definisce last mile. Ogni
router è gestito da un ISP (internet service provider) e quello sarà il primo punto di accesso al core
network. Sono chiamate socket le porte di accesso a internet

Ci sono diversi tipi di access point:


 Dialup: Accesso diretto al router dell’ISP mediante circuito telefonico e trasmissione del
segnale in banda telefonica. Può arrivare a velocità di 56 Kbps
 ADSL (asymmetric digital subscriber line): Condivisione del doppino con la rete telefonica
fino alla centrale telefonica dove avviene una divisione. Download fino a 20Mbps e upload
a 1Mbps
 Fibra ottica (velocità decrescente, ma fino a Gbps):
o FTTH: Fiber To The Home
o FTTB: Fiber To The Basement
o FTTC: Fiber To The Curb
o FTTN: Fiber To The Neighborhood
 Reti cellulari: GPRS/EDGE, HSPA, LTE, 5G, …

Una rete di reti


Internet non è una rete unica, bensì è un sottoinsieme di reti e host
formate da terminali e mezzi trasmissivi eterogenei, appartenenti a
persone/società diverse. La comunicazione tra sotto reti è possibile
grazie al protocollo IP (internet protocol).

Le reti possono essere classificate in base all’area geografica che


coprono:
 LAN: (Local Area Network): Impiegate in aree limitate come
edifici, campus, uffici, …
 MAN: (Metropolitan Area Network): Coprono alcune decine
di km, usate nelle città
 WAN (Wide Area Network): Hanno copertura ampia a piacere
Interconnessione di reti
Ogni utente per connettersi ad internet deve
prendere connessione da un ISP, gli ISP però
non gestiscono i server, router, … della rete.
Questo è compito dei BSP che a loro volta
vendono connessione agli ISP. Per collegarsi ad
una rete un utente così come un ISP dovrà
essere connesso ad un POP. I BSP hanno
grandi quantità di informazioni, ma non tutte,
per questo esistono i NAP ovvero stanze dove
router di BSP diversi sono fisicamente collegati
in modo che tutte le informazioni siano
accessibili da ogni punto della rete

TRASFERIMENTO DATI

Il trasferimento di dati in rete avviene su architetture di rete, con metodi più o meno affidabili. I due
modelli principali sono:
 Client/server: i client richiedono il servizio, i server lo forniscono. Benché più facile da ottimizzare,
un problema col server bloccherà tutta la rete
 Peer-to-peer: Tutti i terminali collaborano, ognuno può comportarsi da client o da server in base
alla necessità. Una rete p2p è facile da espandere e riduce il rischio di blocco generale in caso di
problemi, tuttavia il tempo richiesto capire quale terminale ha le informazioni crescerà

L’informazione in rete può essere trasferita in due modi:


 Commutazione di circuito: Avviata la comunicazione viene cercata una via di trasmissione (circuito),
una volta trovata essa viene aperta e riservata a quegli utenti fino alla fine della comunicazione. Il
canale riservato permette una qualità garantita ma risorse vengono sprecate quando non si sta
traferendo informazione. Un metodo di ottimizzazione è la divisione in frequenze diverse su uno
stesso collegamento, o si può decidere di alternare l’uso del canale nel tempo tra più utenti.

I commutatori di circuito sono stazioni con un certo numero di circuiti in


ingresso e in uscita, il loro compito è collegare questi circuiti per formare i
canali. Le linee in uscita e in ingresso hanno stessa capacità quindi non serve
che il commutatore salvi informazioni.

 Commutazione di pacchetto: l’informazione viene divisa in porzioni di bit


(pacchetti) a cui viene aggiunto un header, una sequenza di bit che contiene
informazioni utili all’instradamento del pacchetto. I pacchetti vengono inviati
su più canali non riservati.

I router che funzionano a commutazione di pacchetto


contengono tabelle di instradamento che, data la destinazione
di un pacchetto (nell’header), forniscono l’indirizzo del nodo
successivo. Questi router devono poter salvare informazione
poiché ricevono pacchetti in maniera asincrona e devono quindi
analizzare la destinazione e gestire conflitti in l’uscita.
Questo procedimento è diviso in due fasi:
o store and forward: il commutatore deve ricevere l’intero pacchetto prima di poter
cominciare a trasmettere sul collegamento in uscita
o Multiplazione statistica: c’è un accodamento di pacchetti, l’attesa per l’utilizzo del
collegamento dipende dal numero dei pacchetti in quella singola coda.

Esistono due tipi di commutazione a pacchetto:


o Datagram: Pacchetti che appartengono allo stesso flusso sono trattati indipendentemente
o Circuito virtuale: tutti i pacchetti sono instradati sulla stessa via. Ogni flusso informativo ha
un identificativo di circuito virtuale (CVI o label) da cui dipende la scelta della strada.
Queste tabelle di instradamento sono precompilate in una fase di segnalazione preventiva.

La commutazione a pacchetto evita lo spreco di risorse ma avere una rete condivisa può rallentare
la comunicazione ed eventualmente ci può essere perdita di pacchetti quando le code in uscita dai
router si riempiono completamente.

Tempo di trasmissione
La velocità (data rate) R con cui l’informazione viene trasmessa su una linea
si misura in bit/s (bps), dipende dalle caratteristiche fisiche del mezzo
trasmissivo. Il tempo T di trasmissione di L bit è dato da T=L/R.
Il ritardo di propagazione è il tempo τ affinché un bit trasmesso dal
trasmettitore TX raggiunga il ricevitore RX a distanza D e alla velocità di
propagazione v, quindi τ=D/v
Il tempo totale di trasmissione sarà quindi Ttot=T+τ

Nella commutazione a pacchetto store-and-forward ogni nodo


commuta solo dopo aver ricevuto l’intero pacchetto. Una
modalità diversa è il cut-through, dove il nodo inizia a
commutare non appena riceve l’header del pacchetto.

Ricevuto un pacchetto, l’header viene passato alla CPU


attraverso il sistema bus. La CPU sulla base dell’header cerca
nella tabella di routing e procede a spostare il pacchetto nella
coda della NIC corretta. Il ritardo di trasmissione del pacchetto
è specifico per ogni coda d’uscita (multiplazione statistica).

A causa di queste operazioni al tempo totale di trasmissione si aggiunge un tempo


di elaborazione PB (trascurabile). Riguardo al ritardo di accodamento medio Ta si
possono sviluppare dei modelli statistici basati sulla “teoria delle code”

R = velocità del link [b/s]


L = lunghezza pacchetto [bits]
λ = frequenza di arrivo dei pacchetti [pack/s]

𝐿𝜆/𝑅~0: ritardo in coda piccolo


𝐿𝜆/𝑅 → 1 : il ritardo tende all’infinito

Detta μ la frequenza di trasmissione dei pacchetti [pack/s] si ha che 𝜇 = 𝑅/𝐿


I PROTOCOLLI DI COMUNICAZIONE

Lo scambio di dati in rete avviene usando il servizio di comunicazione, che fornisce il servizio di trasporto
dell’informazione. Il servizio di comunicazione può essere descritto mediante delle chiamate di servizio
dette primitive di servizio, le quali descrivono il servizio, lo richiedono e ricevono informazioni sul servizio
dal fornitore. Le primitive di servizio sono caratterizzate da parametri tra cui:
• informazione da trasferire
• indicazione del destinatario
• caratteristiche del servizio richiesto

I due paradigmi di comunicazione principali sono:


• modalità a connessione: tra mittente e destinatario viene instaurata una connessione, su di essa
vengono trasferiti i dati e infine c’è il rilascio della connessione
• modalità senza connessione: tutto avviene in un’unica fase

I livelli di comunicazione e i protocolli-1


Due entità che colloquiano mediante servizio di comunicazione possono anche offrire un servizio di
comunicazione a entità terze, dette di livello superiore, e comunicare tra di loro mediante dei livelli inferiori.

Si definisce protocollo l’insieme delle regole (formato dei messaggi, informazioni di servizio, algoritmi di
trasferimento, …) che gestiscono il colloquio tra entità dello stesso livello, che avviene mediante unità di
trasferimento dati dette PDU (Packet Data Units) composte dai dati e da un header specifico di quel livello.

I servizi di comunicazione sono implementati a strati, ogni


strato può fornire servizi al livello superiore e
richiedere servizi al livello inferiore. Ogni livello ha
precise funzionalità e l’architettura a strati permette
una più facile ottimizzazione del sistema. Durante il
trasporto di dati i livelli inferiori di un’entità
aggiungeranno man mano i propri header, che
verranno usati dai corrispettivi livelli nella entità di
destinazione per capire cosa fare coi dati e verranno
tolti prima di essere inviati al livello superiore (stile
matrioska).

ARCHITETTURA A STRATI
WIRESHARK
Sniffing del traffico dalla rete.
Analisi dei livelli protocollari, statistica sul traffico in corso, analisi dei pacchetti.

Architettura a strati vuol dire incapsulamento dell’informazione, vari header dei vari protocolli ed infine
l’informazione vera e propria.

Ogni entità svolge attività per le entità che la precedono, una certa entità può svolgere un servizio per le
entità sovrastanti, varie funzioni.
FUNZIONI FONDAMENTALI
Descrizione delle funzioni base:

 multiplazione e de-multiplazione
 controllo d’errore
 instradamento e routing

Funzione multiplazione
Diversi ingressi dall’alto e una sola uscita verso il basso.
Il livello N riceve traffico molteplice dai livelli n+1 e verso il basso ha un solo access point verso il livello N-1

Deve essere in grado di reindirizzare le varie informazioni.


Multiplo, unisco varie informazioni in un solo fascio restando separate a livello logico.
Demultiplo, separo le informazioni precedentemente unite in più fasci

Queste funzioni possono essere mappate ad ogni livello, la funzione di multiplazione in internet è usata a
livello di trasporto, multiplando l’informazione per trasmetterla insieme, tramite gli indirizzi di porta il
livello di trasporto assegna un numero all’informazione che verrà indirizzata alla porta corrispondente in
arrivo

Il terminale di utente usa un'unica interfaccia d’utente per veicolare il traffico, con un unico indirizzo IP,
multipla le informazioni del client posta elettronica SMTP e quelle del web browser, in maniera tale che il
destinatario possa distinguerle in base al numero di porta (inseriti negli header) e demultiplarle.

I server hanno numeri di porta noti per vari processi.

CONTROLLO D’ERRORE (slide 127)


Garantisce l’affidabilità delle comunicazioni in presenza di errori.
Utilizzato a livello di trasporto (4) e di linea (2).

Cause di perdita di dati in internet:

 difetto fisico del collegamento


 congestione router per riempimento code, accodamento pacchetti (80% - 90%)

metodi di controllo:

 messaggio di segnalazione ACK


o riscontro dell’informazione inviata ACK, inviata al trasmettitore se il pacchetto ricevuto non
contiene errori
(viaggia codificato all’interno degli header)
- positivo (ha ricevuto l’informazione)
- negativo (non ha ricevuto l’informazione)
o timer/time-out (tempo di attesa ricezione positiva)
- scoprire quando un pacchetto è andato perso, quando è fallita la trasmissione
- il trasmettitore non riceve un ACK positivo entro un certo lasso di tempo. Se non riceve
l’ACK invia di nuovo.
- Se l’ACK viene inviato ma si perde nella trasmissione il trasmettitore invierà nuovamente
il pacchetto anche se questo fosse stato ricevuto correttamente;
senza ACK non c’è verifica di ricezione.
- Se trasmettitore e ricevitore sono collegati direttamente il time-out è facilmente
settabile, velocità di collegamento nota e sempre uguale.
A livello di trasporto il controllo di errore è END-TO-END tra il mio terminale e il server a
cui sto accedendo, tra cui possono esserci molteplici router/dispositivi con congestione
differente e ritardi di accodamento ignoti, quindi il tempo di trasporto sarà variabile.
Settare un timeout troppo basso causa un loop d’errore, l’ACK non torna mai in tempo.

FUNZIONE DI INSTRADAMENTO – routing (slide 129)


Un’entità instradante instrada un pacchetto da un livello superiore, il quale viene passato con un
parametro di INDIRIZZO, scritto nell’header; viene instradato su altri nodi in base alle tabelle di routing.

Un pacchetto può arrivare anche da un livello inferiore, da una porta di ingresso, per essere inviato ad altri
router (non sale mai più in alto nei livelli se non nella destinazione finale).

Un router IP instrada a livello 3, inoltra il pacchetto ad un altro router, dove salirà fino al livello 3 (no più in
alto), dove verrà re inoltrato fino alla destinazione finale dove salirà lungo i livelli più alti.
Un LAN Switch instrada a livello 2.
Un proxy instrada fino al livello applicativo, livello 5. (slide 132)

L’instradamento avviene sulla base delle informazioni contenute nelle tabelle routing,
Come sono scritte?

 Human Defined Networking


o Tabelle scritte a mano con rotte statiche
 Protocolli di instradamento distribuiti
o Scambio di informazioni tra i router per compilare le tabelle di routing
o Approccio autonomo, tabelle scritta dai protocolli di routing
 Software Defined Networking (nuovo approccio)
o SDN, applicazione software centralizzata che compila e modifica le tabelle di instradamento,
comunicando a tutti i router le informazioni per l’instradamento.

FINE PDF (1-Introduzione_Architetture.pdf)

INIZIO PDF (2-Livello_applicativo.pdf)

IL LIVELLO APPLICATIVO (processi e socket, web, Mail DNS, peer-to-peer)

ogni applicazione assolve a diversi servizi, ed ha requisiti ad hoc per la qualità del servizio richiesto. (slide 2)

- http
- SMTP
- P2P
- DNS

Il 51% del traffico internet viene da Netflix è Youtube.

Un applicazione è un software che è in esecuzione su un terminale internet, client o server, scritti in


qualunque linguaggio di programmazione (es. browser web, software in esecuzione su un client (laptop,
desktop, smartphone ecc). non hanno a che fare solo sul terminale su cui sono installate ma dialogano con
applicazioni che non sono sulla stessa macchina ma su altre macchine server online. Tutti i nodi che stanno
dentro la core network generalmente non hanno software applicativi installati, lavorano a livelli inferiori
nell’architettura a strati, l’informazione risale fino al livello applicativo solo al destinatario finale.

Le applicazioni sono solo nei terminali e sono di facile sviluppo e diffusione.

HOST: dispositivo d’utente


PROCESSO: programma software in esecuzione su un host
IPC – Comunicazione inter-processo: tecnologie diverse con lo scopo di consentire a diversi processi di
comunicare scambiando informazioni e dati, sia processi sullo stesso host sia processi su host diversi in
rete.

Ingredienti per la comunicazione inter-processo:

INDIRIZZO, indirizzamento del processo


PROTOCOLLO DI SCAMBIO, tipi di messaggi scambiati, sintassi, semantica e regole di trasmissione.

Indirizzamento
i processi applicativi vengono controllati dall’applicazione. I processi applicativi (WEB,FTP,SMTP) si
appoggiano sul livello di trasporto, utilizzando i SAP, Service Access Point, o primitive di servizio. Ogni
processo applicativo ha un numero legato ad un SAP.
Dal livello di trasporto in giù i livelli sono controllati dal sistema operativo.

L’indirizzo di un SAP si chiama numero di porta, ogni processo applicativo è caratterizzato da un numero di
porta (16 bit). Indirizzare un processo applicativo significa assegnare una coppia di numeri di porta, entrata
e uscita (l’indirizzo del terminale (IP) e il numero di porta specifico (indirizzo logico) per quell’applicativo).

La coppia IP e numero di porta viene detto Socket (porta), assegnare un socket ad un processo applicativo
significa renderlo indirizzabile in rete.

Il server del politecnico è raggiungibile alla socket 131.175.12.34/80 (IP/porta).

Requisiti delle applicazioni

- AFFIDABILITA’
1. Tolleranza o meno di perdite parziali
- RITARDO
1. Richiesta di basso ritardo
- BANDA
1. Diverse esigenze di data rate per diverse tipologie di applicazioni

Servizio TCP

- Connection-oriented
1. connection-oriented:
2. instaurazione connessione
3. prima delle scambio dati
- • Trasporto affidabile senza
1. perdita di dati
- • Controllo di flusso: il
1. trasmettitore regola la
2. velocità in base al ricevitore
- • Controllo di congestione: per
1. impedire di sovraccaricare la
2. rete
3. • Non fornisce: garanzie di
4. ritardo e di banda

IMPLEMENTA

ARCHIETTTURE APLICATIVE

Client - Server

- i dispositivi o sono client o sono server


- i clieent possono solo inviare richieste
- i server non possono prendere iniziative, solo risposta a richieste ricevute

1. SERVER
 Deve essere sempre disponibile, host sempre attivo
 Indirizzo IP permamanemte, socket nota
 Richieste da client multiple
2. CLIENT
 Comunicano con il server
 Connessione discontinua
 Indirizzo IP variabile, possono cambiare
 Non comunicano con altri client
 Invio di molteplici richieste ad uno stesso server

P2P – Peer - To - Peer

- dispositivi implementano sia il proceso di client sia quello di server


- non ci sono server
- Terminali (peers) comunicano direttamente
- I peers sono collegati in modo intermittente e possono cambiare IP
- ES BitTorrent
- Difficile da gestire, bisogna sapere a quale peer andare a chiedere un determinato contenuto

IETF – Internet Engegniering Task Force (ietf.org)

- RFC Request For Comments (standard dei protocolli)

WEB BROWSING

- Hyper Text Transfer Protocol HTTP


Protocollo applicativo per supportare il web browsing

Pagine web, fatte di oggetti, HTML file, JPEG, applet JAVA, audio file, video file, link

Generalmente presente un file base che chiama altri oggetti (index file, main page)

URL – Uniform Resource Locator


indirizza ogni oggetto
http segue architettura client-server pura

- Client: browser che effettua richieste http di pagine


web, le riceve e mostra all’utente
- Server: web server inviano gli oggetti richieste tramite
risposte HTTP

Comunicazione HTTP

- si appoggia su TCP a livello trasporto


1. il client inizia una connessione TCP verso il
server (porta 80)
2. il server accetta la connessione TCP
3. Client e Server HTTP, data la socket nota,
scambiano informazioni
4. Chiusura della connessione TCP

Modalità di connessione tra client e server HTTP

CONNESSIONE NON PERSISTENTE

- Connessione TCP per una sola sessione richiesta-


risposta, inviato l’oggetto il server chiude la
connessione
- Procedura ripetuta per tutti i file collegati al
documento HTML base
- Le connessioni TCP per più oggetti possono essere
aperte in parallelo per minimizzare il ritardo

CONNESIONE PERSISTENTE

- La connessione rimanre aperta, usata per trasferire più oggetti


- Without pipelining
richieste inviate in serie
- With pipelining
richieste inviate in parallelo

Rount trip Time (RTT) tempo per trasferire un messaggio “piccolo” dal client al server e ritorno

Tempo di risposta di HTTP


Analisi del traffico HTTP

Molti browser offrono strumenti per la visualizzazione, analisi e valutzioene delle prestazioni di traffico
HTTP

Seminario fibra

La maggior parte del traffico online è basato su streaming video.

Abbiamo più dispositivi collegati a internet che persone.

Oggi sono installati circa 3 miliardi di km di fibra ottica.

La trasmissione del segnale è composta da campionamento + quantizzazione -= digitalizzazione

Un segnale in input continuo nel tempo e/o nello spazio trasformato in un segnale discreto continuo nel
tempo e/o nello spazio.

Banda di un segnale: frequenza più alta nella sinusoide del segnale

Un onda quadra che va da -1 a 1 è un segnale periodico a media nulla, oscillazione sempre uguale,

la banda indica quanto velocemente può cambiare il segnale nel tempo

Conversione analogico digitale, la realtà è continua, analogica, gli elaboratori gestiscono un informazione
discreta, digitale.

Trasformazion di segnali analogici in un equivalente digitale.

Filtraggio della banda illlimitata del segnale analogico in una banda limitata
campionamento, banda limitata, tempo e ampiezza continui
Quantizzazione, limitare l’informazione al tempo, quantità continua

TEOREMA DI NYQUIST:

un segnale del tempo è completamente determinato dai suoi campioni presi a distanza T tale che T<=1/2B,
dobe B è la banda del segnale, o usando la frequenza di campionamtn o fc=1/T:

fc>=2B=fn frequenza di Nyquist

la distanza fra i campioni presi dal segnale analogico non dev’essere troppo ampia per poter tornare ad un
segnale analogico

CAMPIONAMENTO

I campioni presi alla frequenza di Nyquist rappresentano il contenuto informatico del segnale

Campioni pià frequinti non sono indipendenti, l’eccesso è inutile

Campioni meno frequenti perdono informazione, il segnale non è più ricostruibile esattamente

Il contenuto informativo viene completamente preservato se si utilizza una frequenza di campionamento


maggiore della frequenza di Nyquist. Campioniamo al doppio della banda

La BANDA rappresenta il contenuto informativo


QUANTIZZAZIONE

Trasformazione del segnale continuo nelle ampiezze in un segnale discreto, con un numero finito di
ampiezze disponibili
nella trasformazioni si comette un errore di approssimazione (quantizzazione)
più livelli, meno errore, la dimensione della parte costatnte si riduce, migliore approssimazione
ogni livello viene rappresentato da una sequenza di bit.

HTTP è un protocollo satteless, i server HTTP non mantengono stati sulle richieste. Un modo per
manterenere lo stato di una richiesta sono i coockies, stringhe di numeri che vengono inserite nelle
richieste HTTP, mantenuti in una lista locale dell’host (browser) e un data base all’interno del server che
ospita il sito web. I coockies servono per mantenere una richiesta tra lato client e server, tutte le richieste
HTTP dallo stesso client allo stesso server avranno nell’header lo stesso coockie.

Implementa slide

PROXY HTTP

Dispositivi che instradano a livello applicativo, implementano la funzione di instradamento

Proxy HTTP (esistono diversi tipi di proxy per diversi applicativi): router di messaggi HTTP, servono per
migliorare, render più veloce, una sessione HTTP, riducendo il loading time di una pagina web.

Le pagine web possono risiedere su server web molto lontani, aumentando il ritardo di trasmissione, l’idea
dietro ai proxy è quella di spostare i contenuti delle pagine web più vicino possibile agli utenti che
richiedono. Memorizzano diversi contenuti HTTP che potrebbero interessare agli utenti. Se all’interno di
una rete è configurato un proxy HTTP tutti quelli che stanno sotto ad un proxy inoltrano la richiesta verso il
proxy e non verso il server. Se il proxy ha in memoria la pagina che richiedo la invia senza interrogare il
server (chiede al server se la pagina che ha in memoria è la più aggiornata o meno, if-modified-since),
altrimenti si comporta da client e chiede la pagina al server per inoltrarmela.

Il proxy è un router applicativo, l’informazione parte dal client, scende la pila protocollare, arriva al proxy e
sale fino a livello applicativo e in base al contenuto della richiesta decide come instradarla, scende la pila e
viene instradata verso il server (se non in memoria nel proxy).

I proxy sono application gateway, instradatori di mesaggi a livello applicativo.

La comunicazione con un proxy non è trasparente per l’utente, il client sa che sta parlando con un proxy.
generalmente i proxy funzionano in maniera proattiva, non aspettano la richiesta di un utente client per
scaricare e memorizzare una determinata pagina web ma proattivamente scaricano una serie di contenuti
che potrebbero essere di interesse.
Oggi i proxy vengono utilizzati anche per motivi di sicurezza, traffic inspection, è una macchina fisica dove
viene indirizzato tutto il traffico HTTP, contengono degli ispettori di pacchetto Deep Packet Inspector (DPI)
che analizzano le informazioni nel pacchetti.

HTTP/2

Ridurre la latenza (ridurre il loading time) e risolvere alcuni problemi dell’HTTP/1.1


il sito della gazzetta include 209 oggetti,
HTTP/1.0 consente una connessione per oggetto, sono richieste 209 connessioni TCP
HTTP/1.1 usa connessioni TCP persistenti ma seriali, se un oggetto è lento blocca gli altri (Head of Line
Problem).

- HTTP/2 è in formato binario e non testuale


 a differenza dei precedenti 1.0 e 1.0
non si trasferiscono messaggi ma frame
- Multiplazione
 connessione TCP per stream multipli
- Compressione degli header
 riduzione della dimensione degli header (HPACK)
- Servizio di server push
 consente ad un server di inviare informazioni senza che il client lo richieda, dati che con alta
probabilità andrei a chiedere
- Servizio di controllo di flusso a livello applicativo (flow control)
- Si appoggia su TLS/SSL
 protocollo sicuro HTTPs (disponibile anche versione in chiaro)

l’header delle richieste HTTP piò avere dimensioni non trascurabili, contiene molti coockie, molti header.
http2 comprime gli header tramite:

- codifica di Huffman
 assegno stringhe binarie a simboli più comune. Es “accept” = 101 0 0 111 110 100 (2 byte)
risparmia 4 byte per inviare la parola “accept”
- indexing
 assegna indice a header line più comuni e nei messaggi invia solo l’indice
- Codifica differenziale
 L’header di richiestre successive riposrta per esteso solo la differenza con l’header delle richieste
precedenti

Servizio di posta eletronica

Ai bordi del servizio ci sono i client di posta elettronica, Outlook, Gmail, Windows Live Mail etc
I mail server si fanno carico dei messaggi di posta ricevuti, un processo applicativo in esecuzione su un'altra
macchina, è un router di livello applicativo di emssaggi di posta elettronica.

- SMTP – Simple Mail Transfer Protocol


 Invio dei messaggi di posta elettronica, dal client al server e dal server al destinatario finale
- Protocollo di accesso
 Protocollo di accesso per scaricare i messaggi dal proprio server (POP3 / IMAP )

I MAIL SERVER

Servizio offerto generalmente da chi offre il servizio di connettività internet, o da esterni. L’utente ha un
account nel mail server. I mail server contengono due code per ogni client controllato: una coda di ingresso
mailbox, una coda di email in uscita

I mail server ricevono le mail in uscita da tutti i client d’utente che controllano, e ricevono da altri mail
server tutte le mail destinate ai client d’utente controllati

I mail server comunicano con SMTP con altri mail server e con i client d’utente in uplink (invio mail), e
POP3/IMAP con i client in downlink (download messaggi, ricezione), con il quale il client scarica i messaggi
dalla propria coda.

SMTP – Simple Mail Transfer Protocol

- Protocollo applicativo client – server (client: User agent | server: mail server )
- Il mail server riceve un mesaggio dal client utente
 Mette il messaggio in una coda
 Apre una connessione TCP con porta nota 25 del mail server del destinatario
 Trasferisce il messaggio
 Chiude la connessione TCP
- Interazione client - server comando - risposta
- Il protocollo SMTP è totalmente testuale, i documenti binari devono essere convertiti in ASCII 7-bit
-
-

Protocolli di accesso al mailbox

L’accesso alla casella di posta è asinctrono al SMPT, l’utente può connettersi in qualsiasi momento

- POP3 – Post Office Protocol, versione 3, RFC 1939): download dei messaggi
 Usa TCP : porta 110
 Autorizzazione (log on user | pass e risposta del server)
 Transazione (
 Stat info sulla mailbox
 list elenca numero messaggi,
 retr recupera messaggio,
 del cancella messaggi,
 quit)

Similitudini tra HTTP e SMTP


- client server
- utilizzo TCP
- header testuale (no http2)

Differenze

- porte TCP diverse


- SMTP solo testuale, HTTP no
- HTTP protocollo pull ottenere informazioni
- SMTP procollo push, inviare informazioni

DNS

Gli indirizzi IP 32bit sono poco adatti ad essere usati dagli applicativi

È più comodo l’utilizzo di indirizzi simbolici www.google.it anziché 74.125.206.99

Occorre una mappatura fra IP e nomi simbolici. In rete le macchine parlano tramite IP, gli esseri umani
usano nomi simbolici.

DNS – Domain Name System

Ingredienti

- Database distribuito costituito da molti name servers con organizzazione gerarchica. Più punti, più
database con varie informazioni
- Protocollo applicativo basato su UDP tra name server e host per risolvere nomi simbolici, traduce il
nome in indirizzo)
- Il database mi dice dove sta l’informazione, il protocollo UDP mi dice come raggiungerlo

Servizi aggiuntivi

- Host aliasing (sinonimi di nomi simbolici)


- Mail server aliasing (risoluzione di nomi simbolici in mail server)
- Load distribution

DATABASE DISTRUBUITO

È gerarchico, distribuito in diversi server a livello gerarchico (l’url stesso è gerarchico).

- al top ci sono i Root DNS, contengono informazione aggregata su come risolvere i nomi simbolici
- a seguire i TLD, top level domain, macro gerarchici .com .it .org .edu etc
- a seguire DNS più particolareggiati yahoo.com amazon.com pbs.org etc
- Local Name Server

più in basse si scende più ci si avvicina all’indirizzo IP

i ROOT NS (Root Name Server) sono 13

Local Name Server - LNS

- ogni ISP (università, compagnia) ha un NS locale


- direttamente collegati agli HOST
- quando un host deve risolvere un indirizzo simbolico contatta il local name server
- eventualmente il local name server contatta i root name server nella gerarchia
Authoritative Name Server

- NS responsabile di un particolare hostname, sa a quale indirizzo IP corrisponder un determinato nome


simbolico, indipendentemente dal livello gerarchico a cui stiamo lavorando

OTTENERE UN MAPPAGGIO

Ogni host ha configurato l’indirizzo del LNS, le applicazioni che richiedono un mappaggio usano le funzioni
del DNS, una richiesta viene inviata al server DNS usando UDP (più veloce di TCP) come trasporto, il server
reperisce l’informazione e restituisce la risposta. L’HOST fa una DNS request al Local NS che contatta i DNS
e resituisce una DNS risponde all’HOST.

Uso UDP anche se non sicuro perché è più veloce e la probabilità di errore tra l’HOST e il Local Name Server
è minima, spesso sono sulla stessa rete.

Il protocollo DNS è molto semplice, un solo messaggio che può essere modificato per essere una DNS
request o DNS response.

Metodi di risoluzione di un nome simbolico:

MODALITA’ ITERATIVA

Un host presso cis.poly.edu vuole risolvere l’indirizzo simbolico gaia.cs.umass.edu.

1. il client DNS sull’host contatta il LNS


(conosce il suo IP) veicola un messaggio DNS request
tramite un segmento UDP
2. il LNS legge la richiesta, e contatta il Root NS, radice
del database distribuito DNS. Genera un’ulteriore
DNS request dalla DNS request generata dall’host e
la spedisce al Root NS
3. il Root NS segnala al LNS il TLD server responsabile
del dominio .edu tramite una response DNS
4. il LNS legge la response DNS ricevuta dal Root NS e
genera una DNS request verso il TLD indicato,
responsabile del dominio .edu
5. il TLD genera una response DNS verso il LNS
segnalando il server autoritativo (Autoritative DNS
Server) per il nome simbolico gaia.cs.umass.edu
6. il LNS contatta il name server autoritativo
7. il server autoritativo segnala al LNS l’indirizzo IP che
corrisponde a gaia.cs.umass.edu

il lavoro del LNS è completamente trasparente rispetto all’utente finale.


MODALITA’ RICORSIVA

Un host presso cis.poly.edu vuole risolvere l’indirizzo simbolico


gaia.cs.umass.edu.

1. il cliend DNS sull’host contatta il LNS


2. il LNS contatta il Root NS
3. il Root NS contatta il TLD resposabile
4. il TLD contatta il server autoritativo peri l nome
simbolico
5. il server autoritativo segnala al TLD l’indirizo IP che
corrisponde a gaia.cs.umass.edu
6. 7. 8. Percorso inverso

Il LNS fa una sola richiesta in modalità ricorsiva, mentre in


modalità iterativa si deve far carico di tutte le richieste

La modalità iterativa è più efficiente perché riduce la


congestione di traffico nei grandi name server

La modalità ricorsiva è più efficiente perché memorizza più in


profondità un collegamento tra nome simbolico e ip, in più
server, tramtie caching

CACHING

Un server che reperisce un informazione su cui non è autoritativo può memorizzarla temporaneamente,
all’arrivo di una nuova richiesta può fornire l’informazione senza contattare l’authoritative server

Il TTL (Time To Live) è deciso dal server autoritativo, è un indice di quanto è stabile nel tempo
l’informazione relativa

I TLD sono generalmente memorizzati nei LNS

I server non autoritativi usano il TTL per decidere un time-out, stabilendo per quanto tempo l’informazione
di collegamento nome simbolico / IP rimarrà memorizzata all’interno dei server non autoritativi
INFORMAZIONI MEMORIZZATE

RR (resource record) [ name, value, type, TTL]

I valori dipendono dal campo type:

- A
 Name: nome dell’host
 Value: IP Address
 ( morgana.elet.polimi.it, 131.175.21.1, A, TTL)
- NS
 Name: domain (dominio)
 Value: nome di un server che può ottenere le informazioni relative
 (elet.polimi.it, morgana.elet.polimi.it, NS, TTL)
- CNAME
 Name: alias (nome alternativo) per un host
 Value: nome canonico dell’host al cui è stato assegnato tale alias
 (www.polimi.it, zephyro.rett.polimi.it, CNAME, TTL)
- MX
 Name: dominio di mail o un alias di mail
 Value: nome del mail server
 (elet.polimi.it, mailserver.elet.polimi.it, MX, TTL)

FORMATO DEI MESSAGGI DNS

- identification: identificativo coppia richiesta/risposta


- flag: richiesta/risposta, authoritative/non auth.,
iterative/recursive
- number of: relativo al numero di campi nelle sez.
successive
- questions: nome richiesto e tipo (di solito A o MX)
- answers: resource records completi forniti in risposta
- authority: contiene altri record forniti da altri server
- additional infor.: informazione addizionale, ad es. il record
con l’IP ADDR. per il MX fornito in answers

AGGIUNGERE UN DOMINIO ALLA RETE DNS

- Una nuova startup vuore registrare il dominio soliton.com (da registrare)


- Soliton registra il dominio presso uno dei DNS Registrars
 Soliton deve formire al DNS registrar i nomi simbolici ed i relativi indirizzi IP dei name server
autoritativi
 Il DNS registrar inserisce i due RR nel TLD serve .com
 Soliton, dns1.soliton.com, 212.212.212.1, A
 Il DNS registrar eventualmente scriver un record di tipo MX per soliton.com
per fornire servizi di posta elettronica
CONTENT DISTRIBUTION NETWORKS (CDNs)

PROBLEMA:

- Distribuzione efficiente di molteplici contenuti contemporaneamente a molteplici utenti molto


distanti gli uni dagli altri

SOLUZIONE:

- Creare una rete di server geograficamente distribuita che ospita copie dei contenuti richieste (una
mega cache distribuita)
- La rete di server CDN può essere di proprietà di chi offre il servizio (google, netflix, facebook) o di
terze parti (akamai, limelight, KCDN)

Chi distribuisce contenuti su internet in genere non lo fa utilizzando macchine proprie ma appoggiandosi a
terze parti che mettono a disposizione macchine per creare reti CDN, rete di server geograficamente
distribuita, che replicano su scala geografica diversi servizi, massimizzando la probablità che il contenuto sia
più vicino possibile a chi lo chiede.

Così facendo l’utente finale può richiedere il servizio da punti diversi, ma conosce solo il nome simbolico
www.google.com, la cui copia può essere ospitata da diversi server vicino a lui.

L’azienda NetCinema si appoggia ad una CDN gestida da KingCDN. Il Client richiede un video su
http://netcinema.com/6Y7B23V

Il video si trova in CDN a http://KingCDN.com/6Y7B23V

La scelta del CDN può essere verso il più vicino geograficamente, verso il percorso più corto (minord
numero di hop) o lasciare scegliere all’utente, fornendo una lista di server possibili, l’utente scegle il
migliore.

PEER-TO-PEER

P2P file sharing

- Gli utenti utilizzano il software p2p sul proprio pc


- Si collegano in modo intermittente a internet prendendo indirizzi IP diversi ogni volta
- Se un utente cerca un file l’applicazione trova altri utenti che lo hanno
- L’utente sceglie da chi scaricarlo
- Il file è scaricato usando un protocollo come HTTP
- Altri utenti potranno, in seguito o in contemporanea, scaricare il file dall’utente
- L’applicazione P2P è sia client che server

DIFFICOLTA’

- Indirizzare i contenuti
- Cercare i contenuti

Quasi sempre lo scambio di contenuti è diretto tra chi lo richiede e chi lo fornisce
P2P: directory centralizzata

Meccaniscmo alla “NAPSTER”

- Quando i peer si conettono informano il server centrale


 Indirizzo IP
 File condivisi (il server sa quali file sto condividendo)
- Il peer interroga il server centrale per uno specifico file
- Il file viene scaricato direttamente da un client all’altro
(che diviene server)

PROBLEMI

- La ricerca è centralizzata nel server, se il server si rompe


crolla tutto
- Il server è un collo di bottiglia del sistema
- Chi gestisce il server può essere accusato i infrangere le
regole sul copyright

P2P: completamente distribuita

Meccanismo alla GNUTELLA

- Nessun serve centrale


- Protocollo di pubblico dominio
- Molti software diversi basati sullo stesso protocollo

Basato su una rete (grefo) di overlay

- I perr si attivano e si collegano ad un numero, minore di 10, di altro peer vicini


- La ricerca dei vicini è distribuita
- I vicini nella rete overlay possono essere fisicamente distanti

Tutti i peer accesi in un certo istante mantengono delle connessioni logiche con un po’ di propri vicini,
l’insieme di questa connessioni logiche forma una rete dinamica

Se la rete è attiva la ricerca dei contenuti si svolge all’interno della rete e non con un singolo server

- I messaggi di richiesta vengono diffusi sulla rete di overlay (query), messaggi che contengono
l’informazione sul pezzo di file al quale si è interessati. Messaggi applicativi veicolati su tunnel TCP
- I peer inoltrano le richieste fino ad una certa distanza
- Le risposte di query hit vengono inviate sul cammino opposto
- Trovato il match il collegamento è diretto

Per entrare nella rete il peer x deve trovare almeno un altro peer, la ricerca di basa su liste note.

- X scandisce la lista finchè un peer Y risponde


- X invia un Ping a Y, che lo inoltra nalla sua rete di overlay
- Tutti i peer che ricevono il Ping rispondono a X con un messaggio di Pong
- X riceve molti messaggi di Pong e può scegliere a chi connettersi aumentando il numero dei suoi vicini
BitTorrent

- I file sono divisi in chunk, blocchi da 256kB


- I tracker tengono traccia dei peer che partecipano ad un torrent
- Un torre è un gruppo di peer che si scambiano chunk di un file
- L’utente ottiene la lista di peer dal tracker ed inizia a scambiare chunk con i peer nel torrent

ENTRARE NEL TORRENT

- I peer che entrano in un torrent si registrano persso un tracker per ottenere una lista di peer attivi
- Il tracker invia una lista di peer attivi su un torrent (IP address) (i tracker non sanno nel dettaglio quali
sono i pezzi di file che ogni peer ha disponibile, si evitano problemi di copyright)
- Il peer entrante stabilisce connessioni TCP con un sottoinsieme dei peer nella lista (neighboring peers)
- I neighboring peers inviano al peer entrante la lista dei chunk disponibili
- Il peer entrante sceglie quale chunk scaricare e da quale peer scaricare chunk secondo meccanismi
euristici, algoritmi.

PRINCIPIO DIEL REAREST FIRST

- Il peer entrante, tra tutti i chunk mancanti, scarica prima i chunk più rari nelle liste di chunk ricevute
da tutti i neighboring peer

MECCANISCMO DI INVIO DI CHUNK

- Il peer entrante risponde a richieste che provengono dagli x peer che inviano chunk al massimo rate
- Tutti gli altri peer sono strozzati
- I migliori x peer sono ricalcolati periodicamente (10s)
- Ogni 30s un nuovo peer viene scelto casualmente per l’invio di chunk (optimistic unchoking)
- ------------------------------------------------------------------------------

PROTOCOLLO DI TRASPORTO

Entità software che prendono informazioni attraverso le primitive di servizio direttamente dai processi
applicativi.

Serve per creare il canale di comunicazione ent-to-end tra la macchina su cui gira il processo applicativo
utente e la macchina su cui gira il processo applicativo destinatario, tra applicazioni residenti su host remoti

Il livello di trasporto rende trasparente tutto quello che sta sotto i processi applicativi

Le entità del livello di trasporto girano solo sulle macchine end system, dove girano i processi applicativi

Nei router e affini l’informazioni sale solo fino al livello di rete, generalmente queste macchine non hanno
entità di livello applicativo o trasporto (eccezione, Proxy)

Il livello di trasporto consente il collegamento logico tra processi applicativi

Il livello di trasporto svolge funzioni di multiplazione e demultiplazione, ossia definire degli indirizzi che
identificano i service acces point, punti di contatti tra entità di processi applicativi e di trasporto (SAP di lvl
4), utilizzando una coppia di socket.
Le Porte

Un indirizzo di porta è a 16bit e sono usati per indirizzare a livello di trasporto.

Divise in 3 sezioni:

- 0 – 1023 : numeri di porta noti, utilizzati per i SAP server, 80 HTTP, 25 SMTP, 110 POP3
- 1024 – 49151: numeri di porta registrati, dedicati generalmente a nuove applicazioni che non fanno
parte dei protocolli con numero di porta noto
- 49152 – 65535: numeri dinamici scelti casualmente per identificare SAP client

Il colloquio tra 2 processi applicativi è definito da una coppia di socket (IP e porta)

SERVIZIO DI BUFFERING

Tutte le volte che viene attivato un SAP tra proc applicativo e trasporto il processo di trasporto alloca due
buffer, due code, per raccogliere informazioni da multiplare / demultiplare

SERVIZIO DI TRASPORTO

Servizio di rete non è affidabile.

UDP e TCP generalmente si appoggiano su entità del livello di rete non affidabili, non hanno modo di
controllare errori.

Se uso UDP non ho nessun modo di controllare errori perché le entità inferiori non controllano

TCP è intrinsicamente sicuro, ha dei metodi per controllare errori, moderare la comunicazione e il ritmo di
trasmissione

PROTOCOLLO UDP – User Datagram Prorocol – RFC 768

Metodo più semplice di usare le funzionalità di IP

Il payload del segmento UDP è la GET dell’HTTP, risposte HTTP, DNS request/response, ossia il messaggio
applicativo

L’header del segmento UDP è di 8 byte, aggiunge poca informazione, ossia

- Indirizzamento delle applicazioni (mux/demux)


- Blando controllo dell’errore sull’header senza correzione (checksum: integro oppure no)

Source port e destination port


indicano chi è il client e chi è il
destinatario

Length indica quanto spazio si dovrà


dedicare al buffer, senza dover
leggere tutto il segmento

Il checksum è usato solo per l’error detection, non per l’error recovery. Se è rilevato un errore il segmento
viene scartato, non c’è informazione per re inviare un segmento o correggerlo. Inoltre non garantisce la
consegna e non controlla il rate del trasmettitore.
Checksum è composto da una stringa di 16bit, e indica se il segmento contiene tutti i bit trasmessi in
maniera corretta: il trasmettore calcola il checksum tramite un operazione e la scrive nel campo checksum,
il ricevitore farà lo stesso, se il numero è uguale ok

Il trasmettiotre divide il segmento in blocchi da 16 bit e ne fa la somma in C2, ottenendo un numero in


16bit, ne fa il complemento a 1 e lo inserisce nel checksum (nel calcolo conta il checksum a 0)

Il rivetivore divide il segmento in blocchi da 16bit, tutti i blocchi vengono simmati in complemento a 1, il
risultato è complementato, se sono tutti 0 il pacchetto è accettato.

Le somme vengono calcolate considerando anche uno pseudo header, che non viene inviato, viene ricreato
dal trasmettitore, in modo analogo.

UDP è più semplice e più veloce.

TRASPORTO AFFIDABILE

Protocolli di ritrasmissione

- Recupero d’errore
 Ogni segmento ricevuto correttamente viene riscontrata positivamente con un messaggi di
acknowledgment (ACK)
 A volte l’errore può essere segnalato da un NACK, Not Acknowledgment
 La mancanda di ACK o la presenza di NACK segnala la necessità di ritrasmettere

Necessità di canale di ritorno e di messaggi di servizio (anch’essi possono essere persi)

 Necessità di un timeout allo scadere del quale si deve ritrasmettere

Nella maggioranza dei casi gli errori a livello di trasporto sono dovuti alla congestione, perdo pacchetti per
buffer pieni

Gli errori di linea sono errori fisici

I protocolli di recupero dell’errore dipendono dal tipo di errore, dalla causa

Protocollo STOP & WAIT

- Usa solo ACK e timeout


- Ogni messaggi ricevuto correttamente è riscontrato dal ricevitore tramite un ACK
- Il ricevitore può inviare un informazione solo dopo aver ricevuto l’ACK dell’informazione precedente
- Se l’ACK non arriva il trasmettitore ritrasmette l’informazione persa
Il timeout dipende dal RTT, dal tempo che il
segmento impiega per andare dal ricevitore e
tornare indietro

I pacchetti e gli ACK sono numerati SN e RN:


se un pacchetti viene erroneamente trasmesso
più volte il ricevitore riconosce la duplicazione
perché i pacchetti hanno lo stesso SN. Quando
il trasmettitore riceve un ACK lo assegna al
pacchetto corretto confrontando l’RN con l’SN.

Se l’ACK va perso fa scattare il timeout.

Efficienza del protocollo: frazione di tempo in


cui il canale è usato per trasmettere
informazione utile in assenza di errori.

Se T<< tau l’efficienza è bassa

PROTOCOLLO Go-back-N

- Variante rispetto allo Stop and Wait


 Possibilità di trasmettere fino a N pacchetti (finestra) senza aver ricevuto alcun ACK
 Se il riscontro del primo pacchetto arriva prima della fine della finestra essa viene fatta scorrere di
una posizione (sliding window)
 Se non ci sono errori la trasmissione non si ferma mai, efficienza 100%
 Se si verifica un errore si ricomincia a trasmettere la finestra dal primo pacchetto non riscontrato,
torna indietro di N pacchetti
- Il time out funziona come nello Stop&Wait
 Raggiunto l’ultimo pacchetto della finestra la trasmissione si blocca in attesa di un nuovo ACK o
della scadenza del timeout
 La trasmissione del primo pacchetto non riscontrato inizia allo scadere del timeout
 All’inizio di ogni pacchetto viene fatto partire un timeout che viene cancellato alla corretta
ricezione dell’ACK
 Ciò può causare la ritrasmissione di pacchetti corretti ma il ricevitore ignora le ricezioni fuori
sequenza, l’ordine è mantenuto automaticamente, per i pacchetti ignorati non viene trasmesso
nessun ACK
 Il riscontro è collettivo, se un ricevitore riscontra un pacchetto implicitamente riscontra anche i
pacchetti precedenti (dato che si esclude il fuori sequenza)
 La dimensione ottima della finestra coincide con il RTT (trasmissione pacchetti, propagazione tx-rx,
trasmissione ACK e propagazione rx-tx:
 La finestra aumenta di un pacchetto
alla volta e la trasmissione non si
interrompe mai
 La finestra può essere anche
dimensionata in tempo, in byte…
 Se i tempi di propagazione non sono
noti il dimensionamento si complica
USO DEL NACK

- Riscontro negativo
- L’uso del NACK può abbreviare i tempi di ritrasmissione in casi di errore evitando di aspettare la fine
della finestra
- La scoperta dell’errore è esplicita, l’evento di errore è esplicitato dal ricevitore
- Il ricevitore spesso non sa quando un segmento è andato perso, non posso inviare il NACK subito
perché dovrei conoscere l’SN di un pacchetto perso
- Ma se arriva un pacchetto fuori sequenza posso ipotizzare di aver perso il pacchetto precedente e
invio un NACK per il pacchetto precedente.
- Quando il NACK arriva il Go-back-N si blocca e riprende dal pacchetto per il quale ha ricevuto il NACK

GO-back-N full-duplex

il flusso informativo viaggia nei due sensi

GO-back-N e piggy backing

- Gli ACK possono essere inseriti negli


header dei pacchetti che viaggiano in
direzione opposta
- SN: numero di sequenza del pacchetto trasmesso (canale diretto)
- RN: numero di sequenza del pacchetto atteso in direzione opposta, vale come riscontro cumulativo
dei pacchetti fino a RN-1

SN e RN vanno inizializzato ad un t=0

Controllo di flusso a finestra mobile

perché? Il ricevitore potrebbe non essere disponibile, buffer di ingresso del ricevitore pieno, evitare
congestione nei router attraversati

Il buffer di ricezione è limitato a W posizioni


il ritmo di assorbimento dell’utente è arbitrario

L’obiettivo è quello di evitare che i pacchetti vadano persi causa buffer pieno regolando il ritmo d invio

Sliding Window Flow Control (Controllo di flusso a Finestra Mobile)

- Meccanismo simile a quello del Go-back-N


- La sorgente non può inviare più di W frame senza ricevere riscontro
- I riscontri vengono inviati dal ricevitore solo quando i pacchetti vengono letti, ovvero tolti dal buffer,
dal livello superiore
- Se il ricevitore ritarda di molto l’invio di ACK a causa di una lentezza del livello superiore la
ritrasmissione ricomincia quando scade il time out. PROBLEMA

USO DEL CAMPO W

- Risoluzione radicale separando i meccanismi di controllo d’errore e di controllo di flusso


- Si inserisce nel riscontro (o nell’header) un campo finestra W ulteriore
 Il ricevitore invia i riscontri sulla base dell’arrivo dei pacchetti e usa il campo W per indicare lo
spazio rimanente nel buffer
 Il ricevitore può tenere un margine di sicurezza assegnando a W un valore minore, segnalando il
buffer vuoto anche se non lo è, in modo che se arrivassero dei pacchetti prima che il nuovo valore
di W=0 sia ricevuto non vengano persi

TCP – Transmission Control Protocol – RFC 793

Trasporto affidabile, in corretta sequenza e senza errori o perdite dati

Connection Oriented, la connessione di appoggia su una rete, le due entità devono accordarsi
sull’instaurazione e l’abbattimento della connessione, con una fase di set up seguita dalla fase dati e da una
fase di tear down.

Le connessioni TCP sono full-duplex, flusso di dati in entrambi i versi

Trasmissione di flussi continui di dati (stream di byte), converte il flusso in segmenti che possono essere
trasmessi in rete, a dimensione variabile, parametro della TCP stessa. La dimensione del segmento ha un
impatto sulla connessione, TCP ottimizza la dimensione del segmento.

L’applicazione trasmittente passa i dati a TCP che li accumula in un buffer, periodicamente TCP forma un
segmento prendendo dati dal buffer, le dimensioni del segmento sono critiche per le prestazioni

Il TCP adotta un meccanismo di controllo tipo


Go-Back-N

Sistema di numerazione e riscontro dei dati


inviati, TCP numera ogni byte trasmesso, in
modo sequenziale, i segmenti sono gruppi di
byte, le dimensioni delle finestre sono espresse
in byte

Nell’header è incluso il numero di sequenza del


primo byte del segmento

Il ricevitore riscontra i dati inviando il numero


di sequenza del prossimo byte che si aspetta di
ricevere, se non arriva riscontro entro time out
ritrasmissione
Le opzioni possono essere corte o lunghe

Le opzioni corte servono per riempire l’header per farlo diventare un multiplo di 32bit

Le opzioni lunghe (>1 byte) servono per accordarsi su alcuni parametri della TCP stessa
(massima dimensione del segmento, fattore di scala della finestra)

MSS – Maximum Segment Size

Definisce dimensione massima del segmento usato nella TCP


Decisa dal mittente durante il setup
Valore di default 536byte (permette di non segmentare a livelli inferiori), valore massimo 65535byte

Fattore di scala della finestra


Dafault value 1
Fa si che venga moltiplicato il valore del campo window di un fattore pari a due elevato al fattore di scala

Servizi e porte

Setup delle connessioni

Prima del call setup le applicazioni client/server comunicano con il TCP

- Il server fa una Passive Open verso la TCP locale, il server si mette in ascolto su una porta (vedi sopra)
aprendo una socket costante verso la TCP locale
- Il client fa una Active Open che comunica al TCP locale che l’applicativo vuole aprire una connessione
verso un dato socket, con porta di destinazione nota in base al servizio
- La TCP client genera un numero di sequenza SN iniziale, randomico, e manda un messaggio di
sincronizzazione con flag SYN=1 contenente tale SN (si indicano eventualmente anche i parametri
della connessione quali MSS e Windows Scale)
(l’estrazione casuale del SN evita problemi nel caso il setup non vada a buon fine e un nuovo setup
venga iniziato subito dopo)
- La TCP server, ricevuto il SYN estrae random un SN e invia un segmento SYN/ACK (con parametri SYN
e ACK =1) contenente un ACK number uguale al SN del client + 1, per riscontrare il numero di
sequenza iniziale inviato dal TCP client
- Il TCP client notifica l’apertura della connessione
- Il TCP server che riceve l’ACK del TCP client notifica al su o applicativo l’avvenuta apertura della
connessione

Tale processo viene definito come THREE-WAY-HANDSHAKING

Tear Down delle connessioni – chiusura

- Il TCP che chiude la connessione invia un messaggio con flag FIN=1 con gli ultimi dati
- Il TCP dall’altra parte invia un ACK per confermare
- La connessione rimane aperta in un senso
- Il TCP dall’altra parte chiude la connessione inviando un messaggi di FIN
- Il TCP che aveva chiuso la connessione in direzione opposta invia un ACK finale per confermare

Reset della connessione

- La connessione può essere chiusa senza scambio di messaggi


- Il flag reset interrompe la connessione in entrambe le direzioni
- Il TCP che riceve un Reset chiude la connessione interrompendo ogni invio di dati

Flag push

I flag di push settano la proprietà del pacchetto rispetto agli altri nel buffer

Flag URG

Se settato a uno si leggeranno prima i dati puntati dall’urgent pointer

Controllo di flusso

Il TCP ricevente controlla il flusso del trasmittente

- Ricevitore
 Buffer di ricezione, accumula i byte ricevuti e non assorbiti
 Receive Windows (RCVWND) indica lo spazio disponibile nel
buffer, si riempie e si svuota nel tempo la dimensione è segnalata
in ogni segmento inviato dal ricevitore al trasmettitore
 Si estende dall’ultimo byte inoltrato all’applicazione fino alla fine
del buffer

- Trasmettitore
 Buffer di trasmissione, accumula i byte in attesa di essere
trasmessi
 Send Windows (SNDWND), parte di buffer inutilizzata,
rappresenta quanti byte possono essere trasmessi senza
attendere riscontri
 La dimensione della finestra è dinamica, cambia in base ai
riscontri che riceve
 il buffer di trasmissione tiene traccia di
 Dati trasmessi ma non riscontrati
 Dimensione della finestra di ricezione del ricevitore
 Si estende dal primo byte non riscontrato all’estremo a destra
della finestra di ricezione

Problemi con la finestra – Silly Window Syndrome

Lato ricevitore

Il ricevitore svuota lentamente il buffer di ricezione, invia segmenti con finestra molto piccola, inviando
segmenti corti con molto overhead (più header che file), congestionando inutilmente

Soluzione – Algoritmo di Clark: il ricevitore mente indicando una finestra nulla al trasmettitore finchè il
buffer di ricezione non è vuoto per metà o per una porzioni pari almeno al MSS, in modo che si inviino
meno messaggi più lunghi.

Lato trasmettitore

L’applicazione genera dati lentamente, invia segmenti molto piccoli man mano che vengono prodotti
Soluzione: Algoritmo di Nagle: il TCP sorgente invia la prima porzione di dati anche se è corta, gli altri
segmenti vengono generati e inviati solo se il buffer d’uscita contiene dati sufficienti per riempire un MSS
oppure quando si riceve un ACK per un segmento precedente

Controllo d’errore TCP

Serve a recuperare pacchetti persi in rete, causa principale overflow di una delle code dei router

Tipo Go-Back-N con timeout

Differenze:

- TCP mantiene nel buffer anche i segmenti fuori ordine


- Quando arrivano segmenti mancanti la finestra scorre avanti fino al primo segmento non riscontrato
in quelli ricevuti fuori ordine
- Viene mandato un ACK che riscontra collettivamente anche i segmenti fuori ordine

La finestra di trasmissione dipende dal meccanismo di controllo di flusso e dalla congestione

Stima del RTT

TCP adatta il timeout di ritrasmissioni alle condizioni della rete, algoritmi di Kam e Jacobson

I campioni di RTT sono definiti come il tempo che passa tra la trasmissione di un segmento e la ricezione
del relativo riscontro

Stima del valor medio sulla base delle misure, il sender TCP calcola lo SRTT Smoothed Rount Trip Time,
tramite algoritmo di Jacobson

Con alfa compreso tra 0 e 1


(tipicamente 1/8)

TCP stima la deviazione standard del valor medio


(DEV)

Anche la DEV viene filtrata, smoothed

Il time out viene calcolato tramite TIMEOUT=SRTT + 4 SDEV


All’inizio il timeout è settato a 1s

Se è necessaria una ritrasmissione significa che il timeout stimato non è ottimale, la rete deve essere
congestionata in qualche punto, si passa quindi all’algoritmo di Karn, per evitare perdita di pacchetti
futuri:

- Il RTT non viene aggiornato


- il timeout è moltiplicato per un fattore fisso ( tipicamente 2 )
- il timeout cresce fino ad un valore massimo
- dopo un numero massimo di ritrasmissione la connessione viene chiusa
Controllo di congesione

Obiettivo: modulare il ritmo di trasferimento di trasmissione sulla base del grado di congesione della rete

Non dipende solo dalla capacità del ricevitore e non è sufficiente ad evitare la congestione nella rete

Nella rete INTERNET non ci sono eccanismi sofisticati di controllo di congesione a livello rete, le entità di
rete non parlano TCP, arrivano solo fino al livello 3, il controllo di congestione è delegato al TCP

( se il traffico in rete porta a situazioni di congesione il TCP deve ridurre velocemente il traffico in ingresso
per evitare di perdere dati per overflow delle code )

Il TCP è implementato solo negli host, quindi il controllo di congestione è di tipo end-to-end

Il modo più naturale per ciò è regolare la finestra di trasmissione:

Il trasmettitore mantiene una CWND – Congestion Window cha varia in base agli eventi (ricevzione ACK,
timeout)

Il trasmettitore non può trasmettere più del minimo tra RCVWND e CWND

Il TCP interpreta la perdita di un segmento per timeout come un evento di congestione:

si riduce la finestra CWND

Slow Start & Congestion Avoidance

Il valore della CWND viene aggiornato dal trasmettitore TCP secondo algoritmi

Se CWND < SSTHRESH si è in Slow Start


Se CWND > SSThRESH si è in Congestion Avoidance

Ricontrollare ssthresh

Evento di congestione

Quando il ritmo di trasmissione porta a congestione un link sul percorso di rete


un link è congestionato quando la somma dei ritmi di trasmissione è maggiore della sua capacità
Condivisione equa delle risorse

In condizioni ideali TCP è in grado di limitare la congestione in rete e dividere in modo equo la capacità dei
link tra i diversi flussi

Le condizioni ideali sono alterate tra l’altro da differenti RTT per differenti flussi e buffer dei nodi minori del
prodotto banda-ritardo

LIVELLO DI RETE

Molti più servizi di segnalazione rispetto al livello di trasporto

Il protocollo a livello di rete è IP

Livello di trasporto end to end, rete no

Rete include protocolli di routing

Funzioni fondamentali:

- indirizzamento
 ogni dispositivo deve essere in grado di assegnare un nume ad ogni altro dispotivivo con cui vuole
dialogare, indirizzo IP. Identificazione univoca di un host/router
- Inoltro/Forwarding
 Funzione locale con cui il router trasferisce i pacchetti dall’ingresso all’uscita
- Instradamento/Routing
 Determina i percorsi dei pacchetti da sorgente a destinazione
 Processo globale svolto da algoritmi di routing
 Processo centralizzato vs distribuito
statico vs dinamico
manuale vs dinamico

I protocolli di instradamento/routing si usano per distribuire l’informazione topologica tra i router tramite
servizi di segnalazione tra router

DATA PLANE A LIVELLO RETE

Il data plane è implementato in ogni dispositivo della rete

I dispositivi in core network in genere implementano fino al livello di rete

Implementa slide 6
IPv4

È un numero binario di 32bit


scritto in forma x.y.z.w
ciascun x,y,z,w rappresenta 8 bit e può assumere tutti i valiri da 00000000 a 11111111 (0.255)

Un indirizzo IP è associato in modo univoco ad un interfaccia di rete di un host o router

- Non è associato direttamente ad un host o router perché questi possono avere più interfacce di rete
- Indirizzo ip deve avere valenza e univocità universali
 Il routing in IP è basato sull’indirizzo dell’host destinazione
- Ognii gestore di rete ha a disposizione un blocco di indirizzi che sitribuisce alle interfacce dei singoli
apparati

DHCP

NAT