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. 2. 3. 4.
impedire di sovraccaricare la rete • Non fornisce: garanzie di 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 richiestarisposta, 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. 2. 3. 4.
il cliend DNS sull’host contatta il LNS il LNS contatta il Root NS il Root NS contatta il TLD resposabile 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