Internet Una rete di reti
Quadro generale Internet interconnette centinaia di milioni di sistemi periferici/end system (server, pc, smartphone, cornici digitali, automobili, …) La connessione è fatta attraverso una rete di collegamenti e commutatori di pacchetto I collegamenti avvengono attraverso mezzi fisici (cavi coassiali, fili di rame, fibre ottiche e onde elettromagnetiche) La velocità di trasmissione è misurata in bit/secondo (bps) Vengono trasmessi pacchetti
Quadro generale I commutatori di pacchetto ricevono pacchetti e li ritrasmettono instradandoli verso la destinazione Due tipi di commutatori di pacchetto: Router Commutatori a livello di collegamento I router vengono usati nel nucleo della rete I commutatori a livello di collegamento sono usati nelle reti di accesso Dall’invio alla ricezione un pacchetto segue un percorso: path
Quadro generale I sistemi periferici accedono ad internet tramite gli ISP (Internet Service provider: aziende, compagnie telefoniche,università,…) I provider sono organizzati in modo gerarchico (livello basso, livello nazionale, livello internazionale)
Quadro generale Tutte le parti in gioco nella comunicazione rispettano dei protocolli TCP e IP sono i due protocolli principali di internet e vengono indicati collettivamente con TCP/IP Gli standard di Internet vengono sviluppati dall’Internet Engineering Task Force IETF Gli standard sono documentati e i documenti vengono detti RFC (Request For Comment) La parola ‘comment’ ha una derivazione antecedente ad internet
Quadro generale Internet può essere vista come un’infrastruttura che fornisce servizi alle applicazioni Applicazioni tipiche: posta elettronica, navigazione web, telefonia (VoIP), streaming video, condivisione di file peer-to-peer (P2P), … Queste applicazioni sono dette distribuite Le applicazioni sono eseguite sui sistemi periferici
Quadro generale PROTOCOLLO Definisce il formato e l’ordine dei messaggi scambiati tra due o più entità in comunicazione, cosi come le azioni intraprese in fase di trasmissione e/o ricezione di un messaggio o di un altro evento
Quadro generale I sistemi periferici vengono anche chiamati host Gli host sono di due categorie: client e server I client richiedono servizi ai server
Quadro generale Da una qualunque rete (domestica, residenziale, mobile) si accede all’esterno attraverso un edge router I due accessi più diffusi sono: DSL e via cavo Le linee telefoniche trasportano dati e segnali telefonici in tre bande distinte in modo da condividere lo stesso collegamento DSL: Downstream (verso l’abitazione ad alta velocità tra 50KHZ e 1 MHZ) Upstream (verso DSLAM media velocità tra 4 e 50 KHZ) Canale telefonico a due vie (tra 0 e 4 kHz) Il DSLAM è un collettore che ha anche la funzione di separare dati e telefonia
Quadro generale La DSL utilizza l’infrastruttura esistente della compagnia telefonica L’accesso a internet VIA CAVO utilizza quelle della televisione via cavo Esistono inoltre l’accesso Ethernet e WiFi che avviene nel raggio di pochi metri l’accesso 3G e LTE in un raggio di decine di chilometri dalla stazione base
Quadro generale Le applicazioni distribuite scambiano tra loro messaggi Ogni messaggio viene suddiviso in pacchetti I pacchetti viaggiano attraverso commutatori di pacchetto (router e commutatore a livello di collegamento) che connette più collegamenti Ogni commutatore di pacchetto, dopo aver ricevuto l’intero pacchetto inizia a trasferirlo in uscita Per un pacchetto di L bit trasmesso su un canale con velocità di R bps, il tempo di trasmissione è L/R secondi I router necessitano di memorizzare l’intero pacchetto prima di inviarlo (ritardo di trasmissione)
Quadro generale Ogni pacchetto in arrivo al commutatore di pacchetto attende in coda di output per il suo turno (ritardo di accodamento) La coda ha dimensione finita e come conseguenza si ha perdita di pacchetti
Quadro generale Ciascun router ha una tabella di inoltro che utilizza per stabilire su quale collegamento instradare il pacchetto Più avanti vedremo come vengono impostate le tabelle di inoltro attraverso i protocolli di instradamento
Quadro generale Nella commutazione di circuito le risorse sono allocate per tutto il tempo della comunicazione (per esempio la telefonata) Internet usa la commutazione di pacchetto Molte reti telefoniche stanno migrando verso la commutazione di pacchetto, utilizzata in particolare per le comunicazioni internazionali
Quadro generale I sistemi periferici si collegano ad internet tramite un ISP di accesso La connettività avviene attraverso DSL, cavo, wifi, cellulare, … ISP, oltre che una compagnia di telecomunicazione o televisione, può essere un’azienda o università o altro Gli ISP si connettono tra loro creando una rete di reti Gli ISP di accesso si connettono agli ISP regionali che a loro volta si connettono all’ ISP di primo livello (ne esistono una dozzina) Gli ISP si distinguono per la copertura geografica
VIAGGIO DEI PACCHETTI Un pacchetto parte da un host ed attraversa una serie di router prima di giungere a destinazione (host destinazione) Ad ogni tappa subisce ritardi di: Elaborazione Accodamento Trasmissione Propagazione La somma dei ritardi è detta ritardo totale di nodo
VIAGGIO DEI PACCHETTI Ritardo di elaborazione (microsecondi o meno) Il router esamina il pacchetto per determinare dove dirigerlo Ritardo di accodamento (microsecondi o millisecondi) Attende in coda la trasmissione sul collegamento Ritardo di trasmissione (microsecondi o millisecondi) Come abbiamo visto è L/R
VIAGGIO DEI PACCHETTI Ritardo di propagazione (millisecondi) Tempo impiegato dal pacchetto per giungere dal router A al router B Dipende dal mezzo fisico e dalla distanza tra i due router ed è dato da d/v, dove d è la distanza tra i router e v la velocità di propagazione nel collegamento La velocità di trasmissione dipende dalla lunghezza del pacchetto (oltre che dalla velocità di trasmissione del collegamento), mentre quella di propagazione dipende dalla distanza tra i router (oltre che dalla velocità di propagazione del collegamento)
VIAGGIO DEI PACCHETTI A differenza degli altri ritardi, il ritardo di accodamento può variare da pacchetto a pacchetto Se a è la velocità di arrivo dei pacchetti ed L la lunghezza dei pacchetti, L x a è la velocità di arrivo dei bit in coda. Se R è la velocità di trasmissione, L x a / R è detta intensità di traffico. E’ auspicabile che tale rapporto sia inferiore ad 1. Si ha perdita di pacchetti quando l’intensità di traffico si approssima ad 1
VIAGGIO DEI PACCHETTI Throughput istantaneo: velocità alla quale B riceve il file inoltrato da A Throughput medio è dato da F/T bps dovee F è la lunghezza del file da ricevere e T il tempo necessario affinché B riceva tutti i bit inviati. Se su una rete vi sono solo A mittente e B ricevente, il throughput è dato dal minimo delle velocità di trasmissione dei vari collegamenti attraversati (collo di bottiglia) Se uno dei collegamenti, ad esempio quello a più alta velocità è condiviso tra più operazioni, potrebbe diventare il più lento e costituire esso il collo di bottiglia Quindi il throughput dipende dalla velocità di trasmissione dei collegamenti e dal traffico della rete
Livelli dei protocolli Pila di protocolli di internet consiste di 5 livelli ed assume come modello la pila OSI: APPLICAZIONE (corrispondente ad applicazione, sessione e presentazione nel modello OSI) TRASPORTO RETE COLLEGAMENTO FISICO
Livelli dei protocolli Applicazione – fornisce messaggi HTTP, SMTP, FTP, DNS, … Trasporto – fornisce segmenti + indirizzo TCP, UDP Rete – fornisce instradamento datagrammi IP e protocolli di instradamento Collegamento – effettua trasporto al nodo successivo (frame) Ethernet, PPP, … Fisico – sposta singoli bit del frame Protocolli dipendenti dal mezzo fisico
Livelli dei protocolli Ogni livello trasmette al livello successivo nella pila Il mittente trasmette un messaggio a partire dal livello ‘applicazione’ fin giù verso il livello ‘fisico’ Il destinatario riceve i pacchetti sul ‘fisico’ . Questi vengono spostati via via verso il livello superiore fino al livello ‘applicazione’
Livello APPLICAZIONE La maggior parte delle applicazioni consiste di coppie di processi che si scambiano messaggi attraverso la rete La SOCKET è un’interfaccia attraverso cui il livello applicazione riceve e trasmette messaggi da e verso il suo livello successivo: livello di trasporto Il processo ricevente è identificato da: IP e socket L’interfaccia socket è anche detta ‘PORTA’
Livello APPLICAZIONE Esempi di applicazioni WEB – HTTP TRASFERIMENTO FILE – FTP POSTA ELETTRONICA – SMTP SERVIZIO DI DIRECTORY – DNS
Livello APPLICAZIONE utilizzo protocolli del livello di trasporto Nella progettazione di un’applicazione si dovrà scegliere tra i protocolli di trasporto forniti da Internet: TCP UDP
Livello APPLICAZIONE utilizzo protocolli del livello di trasporto TCP Servizio orientato alla connessione-effettua handshaking prima di iniziare la comunicazione e la chiude la connessione dopo l’invio Servizio di trasferimento affidabile-trasporta i dati senza errori e nel giusto ordine Effettua controlli di congestione effettuando strozzature negli invii (client e server) I progettisti di applicazioni web scelgono TCP
Livello APPLICAZIONE utilizzo protocolli del livello di trasporto UDP Senza connessione-non effettua handshaking Trasferimento dati non affidabile-non garantisce l’arrivo del messaggio e non garantisce l’ordine Non effettua controlli di congestione I progettisti di applicazioni di telefonia come Skype scelgono UDP
Livello APPLICAZIONE HTTP E’ il principale protocollo a livello di applicazione Definisce le regole di colloquio tra client e server E’ implementato in due programmi: client e server Un browser web implementa il lato client di HTTP Un web server implementa il lato server di HTTP HTTP utilizza TCP anziché UDP Quando il client ha mandato un messaggio alla sua interfaccia socket, questo è gestito dall’altro protocollo HTTP è un protocollo senza memoria di stato (stateless protocol)
Livello APPLICAZIONE HTTP Il modello è un client che invia una richiesta al server ed il server che risponde Ciascuna coppia richiesta/risposta può avvenire su Connessioni TCP distinte - connessione NON persistente Unica connessione TCP – connessione persistente HTTP usa di default la connessione persistente ma può usarle entrambi RTT (round-trip-time) è il tempo impiegato da un piccolo pacchetto per viaggiare dal client al server e tornare indietro
Livello APPLICAZIONE HTTP: formato del messaggio RICHIESTA Riga di richiesta: metodo, campo URL, campo versione HTTP Righe di intestazione Metodi principali: GET – POST Nel metodo GET, l’URL contiene i dati trasmessi Nel metodo POST i dati sono presenti nel ‘body’ del messaggioche è vuoto nel caso di GET Il campo URL contiene l’oggetto richiesto Nelle righe di intestazione viene tra l’altro indicato: L’host in cui risiede l’oggetto richiesto Il tipo di connessione richiesto (persistente o non persistente) Il tipo di browser
Livello APPLICAZIONE HTTP: formato del messaggio RISPOSTA Riga di stato: versione protocollo, codice di stato, messaggio di stato Righe di intestazione: tipo di connessione, data, data ultima modifica, lunghezza del contenuto, tipo del contenuto Corpo Esempio di riga di stato: HTTP/1.1 200 OK
Livello APPLICAZIONE HTTP: cookie I server HTTP sono privi di stato Per ovviare a ciò, HTTP adotta i cookie Al primo collegamento, il sito crea un identificativo nel proprio database e risponde inviando l’identificativo Il browser riceve la risposta e registra il cookie nel client Ad ogni richiesta, il browser invia l’identificativo al server
Livello APPLICAZIONE HTTP: proxy server Per ottimizzazione, le richieste HTTP possono essere dirette verso un proxy server che contiene gli oggetti precedentemente richiesti Ad ogni richiesta il proxy server confronta la data dell’oggetto richiesto con quella del corrispondente oggetto sul server A seconda della data inoltra la richiesta al server o restituisce l’oggetto al client Generalmente un proxy server è installato ed acquistato da un ISP
Livello APPLICAZIONE HTTP: prova su PC telnet /index.php 80 GET /index.php HTTP/1.1 Host: www.categoriesdownload.com Connection: close
Livello APPLICAZIONE FTP Usato per trasferire file tra host locale ed host remoto L’host locale fornisce il nome dell’host remoto per ottenere una connessione e poi utente e password sulla connessione FTP utilizza due connessioni Connessione di controllo per informazioni di controllo come utente e password e informazioni relative alle cartelle Connessione dati per l’invio dei file La connessione di controllo avviene sulla porta 21 La connessione dati avviene sulla porta 20 Ad ogni invio di file, viene aperta una nuova connessione dati (non persistente) e rimane la stessa connessione di controllo per tutta la durata della sessione (persistente) Mantenere lo stato dell’utente e della sessione limita di molto il numero totale di sessioni
Livello APPLICAZIONE FTP ed HTTP HTTP e FTP sono entrambi protocolli di trasferimento file Entrambi fanno uso di TCP A differenza di FTP, nell’HTTP non ci sono informazioni di stato da mantenere
Livello APPLICAZIONE FTP: comandi I comandi inviati e le risposte usano la connessione di controllo e sono inviati in formato ascii a 7 bit Esempi di comandi: USER username PASS password Esempi di risposte: 331 Username OK, password required 125 Data connection already open
Livello APPLICAZIONE FTP: esempio Si possono verificare facilmente su un server di test come ftptest.net con cui si crea una connessione con: telnet ftptest.net 21
Livello APPLICAZIONE Posta elettronica: SMTP Vi sono tre componenti: User agent (per esempio Microsoft Outlook) per inoltrare e leggere messaggi Server di posta che contiene le caselle di posta Protocollo SMTP SMTP trasferisce i messaggi dal mail server del mittente a quello del destinatario SMTP fa uso del servizio di trasferimento dati affidabile TCP SMTP presenta un lato client in esecuzione sul mail server del mittente ed un lato server presente sul mail server del destinatario Client e server sono interscambiabili a seconda di chi dei due trasmette
Livello APPLICAZIONE Posta elettronica: SMTP SMTP fa uso di connessioni persistenti: se il mail server di invio ha molti messaggi da inviare allo stesso mail server in ricezione, può mandarli tutti sulla stessa connessione TCP telnet serverName 25 o 465
Livello APPLICAZIONE Posta elettronica: SMTP e POP3 SMTP è usato per trasferire la posta dal server del mittente a quello del destinatario ed anche per trasferire la posta dal server agent del mittente al server di posta del mittente Dal server del destinatario al suo user agent è usato un altro protocollo: POP3 E’ un protocollo di accesso alla posta. Entra in funzione quando lo user agent (il client) apre una connessione TCP verso il mail server (il server) sulla porta 110. A connessione stabilita il POP3 procede in 3 fasi: Autorizzazione Transazione Aggiornamento
Livello APPLICAZIONE Posta elettronica: SMTP e POP3 SMTP è usato per trasferire la posta dal server del mittente a quello del destinatario ed anche per trasferire la posta dal server agent del mittente al server di posta del mittente Dal server del destinatario al suo user agent è usato un altro protocollo: POP3 E’ un protocollo di accesso alla posta. Entra in funzione quando lo user agent (il client) apre una connessione TCP verso il mail server (il server) sulla porta 110. A connessione stabilita il POP3 procede in 3 fasi: Autorizzazione Transazione Aggiornamento
Livello APPLICAZIONE Posta elettronica: SMTP e IMAP In alternativa al POP3 esiste l’IMAP con le stesse peculiarità ed in più la capacità di gestire cartelle sul server
Livello APPLICAZIONE Posta elettronica: SMTP e posta web Sostituisce POP3 ed IMAP con HTTP quando gli user agent sono browser
Livello APPLICAZIONE SMTP e HTTP Entrambi i protocolli trasferiscono file da un host ad un altro Sia HTTP persistente che SMTP utilizzano connessioni persistenti HTTP è un protocollo pull, mentre SMTP è un protocollo push HTTP incapsula ogni oggetto in un separato messaggio: se vi sono N immagini in una pagina, crea N+1 messaggi. SMTP pone tutti gli oggetti in un unico messaggio. Il formato tipico di un messaggio costituito da un’intestazione: From: xxx@yyy.zz To: aaa@bbb.cc Subject: abcdefghijkl seguita da una riga vuota e poi dal testo del messaggio
Livello APPLICAZIONE DNS Ciascun host all’interno di internet è identificato attraverso un indirizzo detto IP e composto di 4 byte (ciascuno varia da 0 a 255) Quindi esistono due modi per identificare gli host: il nome e l’indirizzo IP DNS è un database distribuito implementato in una gerarchia di DNS server ed un protocollo a livello di applicazione che consente agli host di interrogare il database Il protocollo DNS utilizza UDP e la porta 53 DNS viene utilizzato da altri protocolli a livello di applicazione: HTTP,SMTP, FTP per tradurre i nomi degli host in indirizzi IP Ciò avviene nel modo che illustreremo:
Livello APPLICAZIONE DNS Il browser estrae il nome dell’host dall’URL e lo passa al lato client dell’applicazione DNS Il client DNS invia un’interrogazione contenente l’hostname ad un DNS server Il client DNS riceve la risposta A questo punto il browser può dare inizio ad una connessione TCP verso il processo server HTTP collegato alla porta 80 di quell’indirizzo IP Il DNS può avere a fronte di un hostname una famiglia di indirizzi IP. Questo è il caso di server replicati. Il DNS fornirà l’insieme degli indirizzi sempre in ordine diverso per consentire un utilizzo più equilibrato dei server.
Livello APPLICAZIONE DNS Il browser estrae il nome dell’host dall’URL e lo passa al lato client dell’applicazione DNS Il client DNS invia un’interrogazione contenente l’hostname ad un DNS server Il client DNS riceve la risposta A questo punto il browser può dare inizio ad una connessione TCP verso il processo server HTTP collegato alla porta 80 di quell’indirizzo IP Il DNS può avere a fronte di un hostname una famiglia di indirizzi IP. Questo è il caso di server replicati. Il DNS fornirà l’insieme degli indirizzi sempre in ordine diverso per consentire un utilizzo più equilibrato dei server. Anche il DNS gestisce il caching
Livello APPLICAZIONE P2P Lo scenario è quello di coppi di host connessi in modo intermittente, chiamati peer, che comunicano direttamente l’uno con l’altro. I peer sono computer fissi e portatili di utenti privati In una Client/Server, il server dovrebbe provvedere ad uploadare il file su ciascun client. In una P2P (di cui BitTorrent è un esempio), ciascun peer può redistribuire agli altri qualsiasi porzione del file abbia ricevuto aiutando cosi il server
Livello TRASPORTO INTRODUZIONE Un protocollo a livello di trasporto mette a disposizione una comunicazione logica tra processi applicativi di host differenti I protocolli a livello di trasporto sono implementati nei sistemi periferici, ma non nei router della rete. Lato mittente il livello di trasporto converte i messaggi che riceve da un processo applicativo in pacchetti a livello di trasporto Il livello di trasporto passa il segmento al livello di rete dove viene incapsulato all’interno di un pacchetto a livello di rete (datagramma). I router leggono solo i campi del datagramma e non quelli applicativi Il livello di rete del ricevente estrae il segmento dal datagramma e lo passa al livello di trasporto che a sua volta ne estrae il messaggio passandolo al livello applicativo
Livello TRASPORTO Overview Il livello di trasporto mette a disposizione due protocolli: UDP che fornisce un servizio non affidabile e non orientato alla connessione TCP che offre un servizio affidabile ed orientato alla connessione Un’applicazione sceglie uno di questi due protocolli Il protocollo a livello di rete è IP e fornisce comunicazione logica tra host Entrambi i protocolli hanno le seguenti due funzionalità: Consegna dati da processo a processo Controllo degli errori In particolare le due funzioni di sopra sono le uniche fornite da UDP, invece TCP ne fornisce molte altre che esamineremo in seguito
Livello TRASPORTO Multiplexing e Demultiplexing E’ la funzione «Consegna dati da processo a processo» Se ad esempio sul nostro computer abbiamo una sessione FTP, due sessioni Telnet e stiamo scaricando pagine web, avremo 4 processi applicativi in esecuzione: 2 Telnet, 1 FTP ed 1 HTTP. Quando la nostra macchina riceve dati dal livello di rete sottostante deve indirizzare i dati ricevuti ad uno di questi processi Un processo può gestire una o più socket, attraverso le quali i dati passano per raggiungere il processo Quindi il livello di trasporto non trasferisce i dati direttamente ad un processo ma ad una socket Una socket ha un identificatore univoco che ha un formato differente a seconda del protocollo di trasporto utilizzato (TCP o UDP)
Livello TRASPORTO >> Multiplexing e Demultiplexing Demultiplexing: trasportare i dati dei segmenti/pacchetti verso la giusta socket Multiplexing: processo inverso, prende i dati provenienti dalle socket e li inserisce in pacchetti con intestazione per passarli al livello di rete
Livello TRASPORTO Multiplexing e Demultiplexing UDP All’interno di un pacchetto a livello di trasporto viaggiano, tra le altre, le informazioni sulla porta origine, ip origine, porta destinazione e ip destinazione Il lato client dell’applicazione consente al livello di trasporto l’assegnazione automatica del numero di porta Il lato server dell’applicazione assegna un numero di porta specifico Una socket UDP viene identificata dalla coppia: indirizzo IP, numero porta di destinazione Quindi in UDP due pacchetti provenienti da diversi client ma diretti verso lo stesso processo verranno presi in carico dalla stessa socket L’indirizzo IP di origine ed il numero di porta di origine servono come indirizzo di ritorno
Livello TRASPORTO Multiplexing e Demultiplexing TCP All’interno di un pacchetto a livello di trasporto viaggiano, tra le altre, le informazioni sulla porta origine, ip origine, porta destinazione e ip destinazione Il lato client dell’applicazione consente al livello di trasporto l’assegnazione automatica del numero di porta Il lato server dell’applicazione assegna un numero di porta specifico Una socket TCP viene identificata da 4 parametri: indirizzo IP di origine, numero porta di origine, indirizzo IP di destinazione, numero porta di destinazione Quindi in TCP due pacchetti provenienti da diversi client ma diretti verso lo stesso processo verranno presi in carico socket differenti L’indirizzo IP di origine ed il numero di porta di origine servono come indirizzo di ritorno
Livello TRASPORTO WEB server e TCP Sia i segmenti per stabilire la connessione iniziale, sia quelli che trasportano messaggi di richiesta HTTP hanno la porta destinazione 80 In generale un web server genera un nuovo processo per ogni connessione e ciascuno di questi processi ha una propria socket attraverso la quale giungono richieste e sono inviate risposte HTTP Se client e server usano HTTP persistente, allora scambiano messaggi HTTP attraverso la stessa socket per tutta la durata della connessione Se client e server usano HTTP non persistente allora viene creata e chiusa una nuova connessione TCP per ciascuna coppia richiesta/risposta, e da quel momento viene creata e chiusa una nuova socket per ogni richiesta/risposta
Livello TRASPORTO UDP UDP è un protocollo di trasporto con le seguenti funzionalità: Consegna dati da processo a processo Controllo degli errori In pratica questo protocollo prende i messaggi dal processo applicativo, aggiunge il numero di porta di origine e di destinazione per il multiplexing / demultiplexing e passa il segmento risultante al livello di rete (IP) UDP utilizza il numero di porta di destinazione per consegnare il pacchetto al processo applicativo UDP non è orientato alla connessione
Livello TRASPORTO UDP: struttura dei pacchetti L’intestazione UDP presenta solo 4 campi di 2 byte ciascuno: Lunghezza: indica il numero di byte del pacchetto Checksum Numero di porta di origine Numero di porta di destinazione CHECKSUM Viene utilizzato per verificare che i bit del segmento siano rimasti inalterati durante il trasporto Lato mittente UDP effettua il complemento a 1 della somma di tutte le parole da 16 bit nel segmento e l’eventuale riporto viene sommato al primo bit. Tale risultato viene posto nel campo checksum del pacchetto
Livello TRASPORTO UDP: esempio per checksum Supponiamo di avere le seguenti tre parole di 16 bit: 0110011001100000 0101010101010101 1000111100001100 La somma delle prime due è: 1011101110110101 A cui sommo la terza ed ottengo 0100101011000001 Sommo il riporto al primo bit ed ottengo 0100101011000010 Calcolo il complemento a 1 1011010100111101 In ricezione si sommano le tre parole iniziali ed il checksum. Se non ci sono errori il risultato della somma dovrebbe essere 1111111111111111
Livello TRASPORTO UDP Sebbene UDP metta a disposizione tale controllo, non fa niente per risolvere la situazione di errore. Alcune implementazione di UDP scartano il segmento, altre lo trasmettono all’applicazione con un avvertimento di errore
Livello TRASPORTO TCP: inizio Viene detto ‘ORIENTATO ALLA CONNESSIONE’ -> handshake Handshake a tre vie: il client invia un pacchetto TCP-il server risponde con un secondo pacchetto-il client risponde con un terzo pacchetto Lo stato della connessione risiede nei due sistemi periferici -> i router sono ignari La connessione TCP è full-duplex -> può esserci passaggio contemporaneo di dati nei due versi sulla stessa connessione La connessione TCP è punto-punto -> tra singolo mittente e singolo destinatario -> non è possibile il multicast (da un mittente a molti destinatari)
Livello TRASPORTO TCP: invio dei dati Dopo aver instaurato la connessione, i due processi C/S possono scambiarsi dati (pacchetti) Il client manda dati attraverso la socket Dalla socket passano al TCP in esecuzione sul client TCP dirige i dati al buffer di invio Dal buffer di invio di tanto in tanto preleverà blocchi di dati e li invierà al livello di rete Ogni lato della connessione presenta un proprio buffer di invio e ricezione Una connessione conserva: buffer, variabili e connessione socket
Livello TRASPORTO TCP: pacchetti o segmenti La massima quantità di dati prelevabili e posizionabili in un pacchetto viene limitata dal MSS (maximun segment size) Ogni segmento ha un’intestazione a lunghezza variabile da 20 a 32 byte Struttura di un pacchetto TCP: Numero porta origine 16 bit Numero porta destinazione 16 bit Checksum 16 bit Numero di sequenza e numero di acknowledgement: usati per trasferimento dati affidabile - entrambi da 32 bit Campo finestra di ricezione indica il numero di byte che il destinatario può accettare e viene usato per il controllo del flusso 16 bit Campo lunghezza intestazione 4 bit Campo flag: ack, rst, syn, fin, psh, urg lungo 6 bit Il bit ack indica che trattasi di un segmento di acknowledgement
Livello TRASPORTO TCP: numeri sequenza e acknowledgement Numero di sequenza: numero nel flusso di byte del primo byte del pacchetto Numero di acknowledgement: scritto dal processo mittente è il numero di sequenza del byte successivo che l’host A attende dall’host B Se A ha ricevuto 500 byte da B, scriverà 501 nell’acknowledgement number TCP effettua l’acknowledgement solo dei byte fino al primo mancante nel flusso -> TCP offre acknowledgement cumulativi
Livello TRASPORTO TCP:sequenza e acknowledgement Cosa fa un host destinatario quando riceve segmenti fuori sequenza? Due approcci comunemente seguiti: Scarta i pacchetti non ordinati Li mantiene ed attende quelli mancanti (più seguito)
Livello TRASPORTO TCP: trasferimento dati affidabile Il servizio di rete IP non è affidabile –> Non garantisce la sequenza Non garantisce la consegna Non garantisce l’integrità dei dati I datagrammi di IP possono: Sovraffollare i buffer dei router Non raggiungere la destinazione Arrivare in ordine casuale Arrivare con bit alterati
Livello TRASPORTO TCP: trasferimento dati affidabile TCP usa: TIMER ACKNOWLEDGEMENT duplicati Ciascun segmento include un numero di sequenza Se il timer non è già in funzione TCP lo avvia quando il segmento viene passato ad IP Il timer è associato al più vecchio segmento che non ha ricevuto acknowledgement (variabile TimeoutInterval) Per timeout su ack, TCP ritrasmette il segmento che lo ha causato e riavvia il timer Se riceve un segmento di acknowledgement (lo capisce dal bit ack impostato) confronta il numero di sequenza con la sua variabile relativa all’ultimo numero di sequenza che non ha ricevuto acknowledgement e si comporta di conseguenza Ricordare che TCP adotta acknowledgement cumulativi
Livello TRASPORTO TCP: trasferimento dati affidabile Quando il destinatario riceve un segmento con numero di sequenza superiore a quella attesa, invia nuovamente un ack relativo all’ultimo segmento ricevuto nella corretta sequenza Se il mittente riceve 3 ack duplicati per lo stesso dato, il mittente ritrasmette il segmento mancante
Livello TRASPORTO TCP: controllo di flusso e di congestione TCP evita che il mittente saturi il buffer del ricevente TCP regola l’invio a seconda della congestione percepita Entrambi gli obiettivi si raggiungono rallentando il mittente TCP usa la variabile ‘finestra di ricezione’ per fornire al mitt un’indicazione dello spazio libero nel buffer del dest Il dato relativo alla ‘finestra’ viene inviato dal ricevente nel pacchetto Il mittente verifica costantemente che la differenza tra l’ultimo byte inviato e l’ultimo byte per cui ha ricevuto ack non superi il valore della finestra Quando la finestra è zero, il mittente continua ad inviare segmenti con dati da 1 byte ed il destinatario risponderà con un ack fino a che non si torni ad una situazione di finestra > 0
Livello TRASPORTO TCP: gestione della connessione Passo 1. Il TCP client invia uno speciale segmento al TCP server che non contiene dati applicativi ed il bit SYN è ad 1. il numero di sequenza è inizializzato. Passo 2. Il TCP server estrae il pacchetto dal datagramma, alloca i buffer e le variabili TCP ed invia un segmento al client TCP senza dati applicativi, con bit SYN ad 1 e campo ACK con valore inizializzato lato server che corrisponde ad un numero di sequenza iniziale lato server. Passo 3. Alla ricezione del pacchetto SYNACK il client alloca buffer e variabili ed invia un altro segmento con bit SYN posto a zero, il campo ack impostato con il valore ricevuto dal server ed il campo dati del segmento può contenere informazioni Per terminare una connessione ciascuno dei due (mittente o destinatario) può inviare un pacchetto con il bit FIN posto ad 1.
Livello TRASPORTO TCP: controllo di congestione Principi guida del controllo di congestione: Un segmento perso implica congestione e TCP decrementerà il tasso di trasmissione del mittente La ricezione di un acknowledgement non duplicato comporterà un aumento del tasso di trasmissione Per la verifica di questi eventi, mittente e destinatario utilizzano variabili associate alla connessione
Livello RETE Introduzione Il ruolo del livello di rete è quello di trasferire pacchetti da un host ad un altro In una generica trasmissione da H1 ad H2 Il livello di rete in H1 prende i segmenti dal livello di trasporto, li incapsula in un datagramma (pacchetto a livello di rete) e li trasmette al proprio router limitrofo (il più vicino), R1. Nell’host H2 il livello di rete riceve i datagrammi (che hanno una loro struttura definita) dal proprio router contiguo R2, estrae i segmenti e li consegna al livello di trasporto In questo schema i router hanno la sola funzione di inoltrare i datagrammi dai loro collegamenti di ingresso a quelli di uscita
Livello RETE Introduzione Due importanti funzioni del livello di rete: Inoltro: quando un router riceve un pacchetto lo deve trasferire da uno dei collegamenti di input (quello a cui è giunto) ad uno di output Instradamento: il livello di rete deve determinare tramite algoritmo di instradamento il percorso che i pacchetti devono seguire Per inoltrare i pacchetti i router estraggono dal campo di intestazione il valore che utilizzano come indice nella tabella di inoltro per ottenere l’interfaccia di collegamento a cui il pacchetto dovrà essere inoltrato. Il router riceve messaggi di instradamento che vengono utilizzati per configurare la sua tabella di inoltro. Tra i vari servizi che una rete può offrire (consegna garantita, consegna ordinata, …), il livello di rete Internet mette a disposizione un solo servizio: servizio best- effort. In realtà questo vuol dire ‘nessun servizio’ in quanto anche non consegnando nulla soddisferebbe la definizione di ‘servizio best-effort’.
Livello RETE Reti datagram Quando un pacchetto giunge al router, questo utilizza l’indirizzo di destinazione per cercare nella tabella di inoltro a quale interfaccia di collegamento avviarlo Nella tabella di inoltro presente in ciascun router non ci sono tutti gli indirizzi IP presenti nella rete (sarebbero 2^32 = 4.294.967.296). In genere nelle tabelle sono presenti prefissi o intervalli di valori. In caso di prefissi sceglie il prefisso più lungo per inoltrare Le tabelle di inoltro vengono gestite da algoritmi che le aggiornano con periodicità che va da 1 a 5 minuti
Livello RETE Architettura di un router Porte di ingresso Sono interfacce fisiche di input: nulla a che fare con le porte software associate alle applicazioni di rete ed alle socket E’ qui che, utilizzando le informazioni della tabella di inoltro, viene determinata la porta di uscita a cui dirigere un pacchetto attraverso la struttura di commutazione Una volta determinata la porta di output di un pacchetto esso può essere inviato alla struttura di commutazione. Se la struttura di commutazione è impegnata, il pacchetto viene accodato sulla porta di input
Livello RETE Architettura di un router Struttura di commutazione Connette fisicamente le porta di ingresso e quelle di uscita Porte di uscita Memorizzano i pacchetti che provengono dalla struttura di commutazione e li trasmettono sul collegamento in uscita Processore di instradamento Esegue i protocolli di instradamento Gestisce le tabelle di inoltro Gestisce le informazioni sui collegamenti attivi Implementa le funzioni di gestione della rete
Livello RETE Architettura di un router Le porte di input, le porte di output e la struttura di commutazione implementano la funzione di inoltro Questa implementazione avviene quasi sempre in modalità hardware per ragioni di ottimizzazione dei tempi di elaborazione (nanosecondi)
Livello RETE Architettura di un router Si possono formare code di pacchetti sia presso le porte di ingresso che presso quelle di uscita Quando queste code crescono, la memoria dei router può esaurirsi e quindi può avvenire perdita di pacchetti.
Livello RETE Indirizzamento IPv4 Il collegamento tra Host e collegamento fisico è detto interfaccia Un router è connesso almeno a due collegamenti Anche il confine tra un router ed il suo collegamento è detto interfaccia Ad ogni interfaccia è associato un indirizzo IP e non all’host o al router che la contiene Un router può interconnettere tre sottoreti su tre collegamenti. Ciascuno di questi collegamenti ha un proprio indirizzo IP. Ciascuna sottorete ha un indirizzo di sottorete L’indirizzo di una sottorete è nella forma a.b.c.d/x dove x rappresenta il numero di bit prefisso della sottorete
Livello RETE Indirizzamento IPv4 223.1.1.1 223.1.1.4 Nella figura vi sono 6 sottoreti 223.1.1.0/24 223.1.2.0/24 223.1.3.0/24 223.1.9.0/24 223.1.8.0/24 223.1.7.0/24 223.1.1.3 223.1.9.1 223.1.7.0 223.1.9.2 223.1.7.1 223.1.8.0 223.1.8.1 223.1.2.6 223.1.3.27 223.1.2.1 223.1.2.2 223.1.3.1 223.1.3.2
Livello RETE Indirizzamento Internet globale La strategia di assegnazione degli indirizzi Internet è detta CIDR (classless interdomain routing). L’indirizzo IP viene diviso in due parti ed ha la forma a.b.c.d/x dove x indica il numero di bit nella prima parte dell’indirizzo (prefisso) I router esterni alla rete dell’organizzazione considerano solo gli x bit del prefisso I bit 32-x possono essere usati per distinguere i dispositivi interni all’organizzazione che quindi avranno tutti lo stesso prefisso e saranno usati dai router interni alla rete Prima dell’adozione del CIDR le part di rete di un indirizzo IP dovevano essere lunghe 8, 16 o 24 bit. Tale schema di indirizzamento era noto come classful addressing dato che le sottoreti con indirizzi di sottorete 8, 16 e 24 erano note rispettivamente come reti di classe A, B e C
Livello RETE Indirizzamento Internet globale Il classful addressing portò ad un rapido esaurimento degli indirizzi della classe B e ad uno scarso utilizzo dello spazio di indirizzamento assegnato Indirizzo IP broadast 255.255.255.255. Quando un host emette un datagramma con destinazione 255.255.255.255, il messaggio viene consegnato a tutti gli host sulla stessa sottorete
Livello RETE Ottenimento blocco indirizzi Un blocco di indirizzi viene fornito dal provider a varie organizzazioni. Ad esempio, un provider che dispone del blocco di indirizzi 200.23.16.0/20 può fornire i seguenti blocchi di indirizzi a varie organizzazioni: 200.23.16.0/23 200.23.18.0/23 200.23.20.0/23 … 200.23.30.0/23 Notiamo che la terza parte di 20 bit è di 4 bit, cioè 16, quindi gli altri 4 bit possono variare generando i numeri da 17 a 255, fermo restando i primi 20 bit L’autorità globale per l’assegnazione degli indirizzi è ICANN (Internet Corporation for Assigned Names and Numbers), società senza scopo di lucro, che si occupa anche dell’assegnazione dei nomi di domini Esistono anche i registri internet regionali. Per l’europa è il RIPE
Livello RETE DHCP e NAT In una sottorete, ciascun host può ottenere un indirizzo IP sia in modo manuale che automatico e dinamico Esiste il protocollo DHCP che consente attraverso un server della sottorete di assegnare un indirizzo IP ad un host Nelle reti domestiche, ai dispositivi interni viene assegnato un IP che ha significato solo all’interno della rete Gli IP dei dispositivi sono ‘nattati’ attraverso un router NAT che ha un indirizzo IP riconosciuto all’esterno Un dispositivo che richiede una pagina web, ha nella sua richiesta numero di porta e indirizzo IP. Il router inoltra questa richiesta al destinatario sostituendo IP e porta e tenendo traccia in una tabella di traduzione NAT (NAT translation table) per il response
Livello RETE ICMP Le tre componenti del livello di rete sono: Protocollo IP Protocollo di instradamento (RIP,… che vedremo) Protocollo ICMP ICMP viene utilizzato per scambiarsi messaggi tra host e router. Tipicamente questi sono messaggi di errore. Per esempio quando un router non ha potuto trovare un percorso verso un host, il router stesso emette un messaggio di errore verso l’host mittente
Livello RETE Algoritmi di instradamento Un host è connesso direttamente ad un router di default che chiameremo router sorgente, cui trasferisce tutti i pacchetti diretti all’esterno della sottorete Anche l’host di destinazione ha un router di default che chiameremo router di destinazione La rete è un grafo fatto da nodi (router) collegati da archi (collegamenti). Ciascun arco ha un costo associato. Il problema è instradare un pacchetto tra questi due router, cercando un percorso a costo minimo La ricerca di un percorso fa uso di algoritmi detti ‘algoritmi di instradamento’
Livello RETE Algoritmo di Dijkstra In quest’algoritmo la topologia di rete e tutti i costi dei collegamenti sono disponibili in input all’algoritmo. Ciò si ottiene facendo inviare a ciascun nodo pacchetti sullo stato (identità e costo) dei suoi collegamenti a tutti gli altri nodi della rete (broadcast) Tutti i nodi avranno la stessa vista della rete e ciascun nodo che lancerà l’algoritmo avrà lo stesso risultato degli altri L’algoritmo in esame calcola il percorso a costo minimo da un dato nodo a tutti gli altri nodi della rete Al termine dell’algoritmo per ciascun nodo si avrà il suo predecessore lungo il percorso a costo minimo da nodo origine. Da qui si potrà costruire la tabella di inoltro.
Livello RETE Algoritmo di Dijkstra 5 Calcoliamo i percorsi a costo minimo da u a tutte le destinazioni v 3 w 2 5 u 2 3 z 1 1 2 x 1 y
Livello RETE Algoritmo di Dijkstra Indichiamo con D(v): il costo minimo del percorso dal nodo origine alla destinazione v per quanto concerne l’iterazione corrente dell’algoritmo P(v): il predecessore immediato di v lungo il percorso a costo minimo dall’origine a v N’: il sottoinsieme di nodi v già considerati, cioè quelli per cui il percorso a costo minimo dall’origine a v è già noto definitivamente
Livello RETE Algoritmo di Dijkstra Passo 0: inizializzazione N’ è composto solo da u Per ogni nodo n adiacente imposta D(n)=c(n , v) dove c(n , v) è il costo del collegamento Qui i valori dei percorsi a costo minimo noti da u ai suoi nodi adiacenti v, w, e x sono posti rispettivamente a 2,5,1 I costi verso y e z non sono impostati Passo N’ D(v) - p(v) D(w) -p(w) D(x) - p(x) D(y) - p(y) D(z) - p(z) u 2 – u 5 – u 1 – u -
Livello RETE Algoritmo di Dijkstra Passo 1: prima iterazione Individua un nodo n non in N’ tale che D(n) sia minimo ed aggiungilo ad N’ (dalla tabella, nel nostro esempio n è x) Aggiorna D(s) per ciascun nodo s adiacente a n e non in N’ nel seguente modo: D(s) = min (D(s), D(n)+c(n , s)) Nel nostro esempio i nodi s adiacenti ad x sono y, w, v, quindi la tabella diventa la seguente Passo N’ D(v) - p(v) D(w) -p(w) D(x) - p(x) D(y) - p(y) D(z) - p(z) u 2 - u 5 - u 1 - u - 1 ux 4 - x 2 - x
Livello RETE Algoritmo di Dijkstra Passo 2 : seconda iterazione I nodi v ed y hanno il costo D minimo, quindi scegliamo uno dei due, per esempio y. Aggiungiamo y ad N’ I nodi adiacenti non ancora in N’ da considerare sono w e z Applicando l’iterazione otteniamo la tabella seguente Passo N’ D(v) - p(v) D(w) -p(w) D(x) - p(x) D(y) - p(y) D(z) - p(z) u 2 - u 5 - u 1 - u - 1 ux 4 - x 2 - x 2 uxy 3 - y 4 - y
Livello RETE Algoritmo di Dijkstra Passo 3 : terza iterazione Il nodo v ha il costo D minimo Aggiungiamo v ad N’ I nodi adiacenti non ancora in N’ da considerare è solo w Applicando l’iterazione otteniamo la tabella seguente Passo N’ D(v) - p(v) D(w)-p(w) D(x) - p(x) D(y)- p(y) D(z) - p(z) u 2 - u 5 - u 1 - u - 1 u x 4 - x 2 - x 2 u x y 3 - y 4 - y 3 u x y v
Livello RETE Algoritmo di Dijkstra Passo 4 : quarta iterazione Il nodo w Aggiungiamo w ad N’ I nodi adiacenti non ancora in N’ da considerare è solo z Applicando l’iterazione otteniamo la tabella seguente Passo N’ D(v) - p(v) D(w)-p(w) D(x) - p(x) D(y)- p(y) D(z) - p(z) u 2 - u 5 - u 1 - u - 1 u x 4 - x 2 - x 2 u x y 3 - y 4 - y 3 u x y v 4 u x y v w 4 – y
Livello RETE Algoritmo di Dijkstra Passo 5 : quinta iterazione Il nodo z Aggiungiamo z ad N’ I nodi adiacenti non ancora in N’ da considerare … non ve ne sono Passo N’ D(v) - p(v) D(w)-p(w) D(x) - p(x) D(y)- p(y) D(z) - p(z) u 2 - u 5 - u 1 - u - 1 u x 4 - x 2 - x 2 u x y 3 - y 4 - y 3 u x y v 4 u x y v w 4 – y 5 u x y v w z
Livello RETE Algoritmo di Dijkstra Per ciascun nodo abbiamo il suo predecessore. Quindi possiamo costruire il percorso minimo da u a qualunque nodo. Per esempio da u a z: il predecessore di z è y, il cui predecessore è x, il cui predecessore è u, dunque il percorso sarà: u x y z. Un utile esercizio è cambiare i costi e vedere come variano i percorsi Passo N’ D(v) - p(v) D(w)-p(w) D(x) - p(x) D(y)- p(y) D(z) - p(z) u 2 - u 5 - u 1 - u - 1 u x 4 - x 2 - x 2 u x y 3 - y 4 - y 3 u x y v 4 u x y v w 4 – y 5 u x y v w z
Livello RETE Algoritmo distance vector (DV) L’algoritmo di Dijkstra usa informazioni globali, mentre il seguente algoritmo è iterativo, asincrono e distribuito. Iterativo: si ripete finché non avviene ulteriore scambio informativo tra nodi vicini Asincrono: non richiede che tutti i nodi operino al passo con gli altri Distribuito: ciascun nodo riceve informazioni dai nodi vicini e restituisce a questi i risultati
Livello RETE Algoritmo distance vector (DV) Relazione importante (formula di Bellman-Ford): Sia d (x,y) il costo del percorso a costo minimo dal nodo x al nodo y Sia c (x,y) il costo del percorso sull’arco che congiunge x ed y Allora d (x , y) = min ( c(x , v) + d(v , y) ) al variare di v dove v indica tutti i nodi vicini ad x La relazione dice che dopo aver viaggiato da x a v, consideriamo il costo minimo da v ad y; dunque il problema è individuare quel v per cui sia minima la somma.
Livello RETE Algoritmo distance vector (DV) Indichiamo con D(x , y) una stima del costo del percorso a costo minimo da x ad y per tutti i nodi y del grafo. Indichiamo con D(x) l’insieme (o vettore) delle distanze dal nodo x a tutti i nodi del grafo Nell’algoritmo che presentiamo, ciascun nodo x mantiene le seguenti informazioni: c(x , v) per tutti i suoi vicini v D(x) costo del percorso da x verso tutti i nodi D(v) per ciascun vicino v, cioè i vettori di tutti i suoi vicini (di x)
Livello RETE Algoritmo distance vector (DV) Di quando in quando un nodo invia una copia del proprio vettore delle distanze a ciascuno dei suoi vicini. Quando il generico nodo x riceve un nuovo vettore da uno dei suoi vicini v, applica la formula di Bellman-Ford per aggiornare il proprio vettore (e lo distribuisce a sua volta ai suoi vicini) come segue: D (x , y) = min ( c(x , v) + D(v , y) ) per ciascun nodo y del grafo Ogni volta che il vettore delle distanze cambia in un nodo, questo manderà il proprio vettore a tutti i suoi vicini. In questo modo la stima de costi D(x,y) convergerà verso d(x,y) che è l’effettivo costo minimo da x ad y. Ogni nodo quindi attende aggiornamento dai suoi vicini.
Livello RETE Algoritmo distance vector (DV) D (x , y) = min ( c(x , v) + D(v , y) ) per ciascun nodo y del grafo Vediamo con un semplice grafo il funzionamento dell’algoritmo: y 2 1 x z 7 X x y z 2 7 Y x y z 2 1 Z x y z 7 1
Livello RETE Algoritmo distance vector (DV) Quando x riceve il vettore da y e da z aggiorna il proprio così: D(x,x)=0 (non varia) D(x,y)=min(c(x,y)+D(y,y), c(x,z)+D(z,y))=min(2+0, 7+1)=2 (non varia) D(x,z)=min(c(x,z)+D(z,z), c(x,y)+D(y,z))=min(7+0, 2+1)=3 (varia) A questo punto x aggiorna la propria tabella di inoltro verso il nodo z: il percorso minimo passa da y per andare verso z Oltre ad aggiornare la propria tabella di inoltro invia il proprio vettore modificato ai suoi nodi vicini che aggiorneranno i propri rispettivi vettori y X x y z 2 7 Y x y z 2 1 Z x y z 7 1 2 1 x z 7 X x y z 2 3 1 7
Livello RETE Algoritmo distance vector (DV) Quando z riceve il vettore da x si aggiorna D(z,z)=0 (non varia) D(z,y)=min(c(z,y)+D(y,y), c(z,x)+D(x,y))=min(1+0, 7+2)= 1 (non varia) D(z,x)=min(c(z,x)+D(x,x), c(z,y)+D(y,x))=min(7+0, 1+2)=3 (varia) A questo punto z aggiorna la propria tabella di inoltro verso il nodo x: il percorso minimo passa da y per andare verso x Oltre ad aggiornare la propria tabella di inoltro invia il proprio vettore modificato ai suoi nodi vicini che aggiorneranno i propri rispettivi vettori y X x y z 2 7 Y x y z 2 1 Z x y z 7 1 2 1 x z 7 Z x y z 2 3 1
Livello RETE Algoritmo distance vector (DV) Anche y riceverà i vettori dai vicini e resta come esercizio per il lettore. Si noterà che il vettore delle distanze di y non cambia e quindi non invierà nulla ai vicini. In generale, ogni qualvolta interviene una modifica nel costo di un collegamento, il nodo interessato invia il vettore ai suoi vicini. Nell’algoritmo DV, ciascun nodo comunica solo con i vicini inviando i costi da sé stesso verso tutti i nodi che conosce. Nell’algoritmo Dijkstra invece comunica in modalità broadcast con tutti i nodi comunicando soltanto i costi dei collegamenti direttamente connessi.
Livello RETE Instradamento gerarchico Al crescere del numero dei router accade che: il tempo di calcolo diventa proibitivo è necessaria un’enorme quantità di memoria Il traffico generato dal broadcast occupa parecchia banda Per risolvere questi problemi si organizzano i router in sistemi autonomi (AS), mettendoli sotto l stesso controllo amministrativo (stesso ISP o stessa rete aziendale). I router sotto lo stesso AS eseguono lo stesso algoritmo di instradamento Vi sarà dunque un protocollo di instradamento intra-AS per ciascun AS ed un protocollo di instradamento inter-AS In internet tutti i sistemi autonomi usano lo stesso protocollo intra-AS chiamato BGP4 Ciascun router riceve informazioni sia dal protocollo intra-AS che da quello inter-AS per configurare la propria tabella di inoltro
Livello RETE Instradamento in internet In internet è usato RIP come protocollo di instradamento all’interno di un sistema autonomo. RIP è di tipo DV in cui tutti i collegamenti hanno costo unitario In RIP i router adiacenti si scambiano gli aggiornamenti approssimativamente ogni 30 secondi Ciascun router mantiene una tabella di instradamento che include il vettore delle distanze e la tabella di inoltro Una tabella di instradamento avrà una riga per ciascuna sottorete del sistema autonomo Per il routing interno ai sistemi autonomi a livello di ISP di livello superiore, viene usato OSPF e l’algoritmo Dijkstra BGP è lo standard dei protocollo di instradamento tra sistemi autonomi
Livello RETE Livello di collegamento