Modello ISO-OSI e pila TCP-IP
In questa pagina 5
Il sistema di comunicazione e il protocollo
Uno scambio di dati tra due dispositivi attraverso un mezzo trasmissivo ha tre ingredienti: un mittente (sender), un ricevitore (receiver) e un mezzo (cavo, fibra, aria). Il messaggio non passa direttamente: ognuno dei due ha un insieme di regole, la pila di protocolli (protocol stack), che trasforma il messaggio in segnali e viceversa.
Tra persone è naturale: «Ciao!» chiama «Ciao!», poi si fa una domanda e si aspetta la risposta. Tra calcolatori succede lo stesso, ma tutto deve essere stabilito in anticipo: richiesta di connessione TCP, risposta alla richiesta, richiesta della pagina (GET https://www.google.it), invio del file, conferma (ACK).
Definizione (protocollo). Un protocollo è una serie di passi, che coinvolge due o più parti, progettata per svolgere un compito. Deve essere noto a tutti i nodi e accettato da tutti, non ambiguo (nessun margine di fraintendimento) e completo (c'è un'azione prevista per ogni situazione).
Un protocollo specifica tre cose: l'indirizzo (come si identifica l'interlocutore), il formato dei messaggi e le regole di comportamento (che cosa fare quando succede qualcosa).
Perché dividere in strati
Un solo protocollo dovrebbe risolvere: segnali elettrici/ottici e rumore, rilevazione e recupero degli errori, accesso al mezzo (MAC), delimitazione dei messaggi, instradamento e frammentazione, controllo di flusso e di congestione, perdite e duplicati, sincronizzazione, rappresentazione dei dati, vincoli delle applicazioni. Si può fare, ma con costi di sviluppo, complessità, energia e ritardo molto alti.
Si applica allora il principio divide et impera (layered approach): il software viene diviso in strati, ciascuno con interfacce di programmazione chiare e responsabile di un insieme limitato di problemi (uno per il controllo d'errore, uno per l'accesso al mezzo, uno per il controllo di flusso, ...). Ogni strato incapsula i propri dettagli, così gli altri non devono occuparsene.
- Vantaggi: meno complessità, modifiche isolate (si cambia il cavo senza toccare il web browser), ogni livello è responsabile di una classe di funzioni senza confusioni.
- Svantaggi: un po' di efficienza persa (intestazioni, copie), ampiamente compensata.
Il modello ISO/OSI
L'ISO (International Organization for Standardization) ha definito alla fine degli anni '70 il modello OSI (Open System Interconnection), con sette livelli, ciascuno con una funzione propria e un proprio protocollo. Lo stesso modello visto dal lato dei segnali e della trasmissione (che cosa fanno fisico e collegamento in un sistema di telecomunicazioni) è in Sistemi di telecomunicazioni e modello ISO-OSIUn servizio di telecomunicazioni porta informazione da una sorgente a una destinazione lontana attraverso trasmettitore, canale e ricevitore. Le comunicazioni si classificano per destinatari (unicast, broadcast, multicast) e per direzione (simplex, half-duplex, full-duplex); le reti hanno una topologia (stella, mesh, albero, anello, bus) e usano commutazione di circuito o di pacchetto. Le funzioni di rete sono divise in strati: nel modello ISO-OSI sono 7 e questo corso studia quasi solo lo strato fisico.Sistemi di telecomunicazioni e modello ISO-OSI →.
| # | Livello | Funzione | Esempi |
|---|---|---|---|
| 7 | Applicazione (Application) | elaborazione a livello utente, API di alto livello | HTTP, FTP, e-mail, Telnet |
| 6 | Presentazione (Presentation) | rappresentazione e sintassi dei dati: codifica dei caratteri, compressione, cifratura | ISO Presentation |
| 5 | Sessione (Session) | gestione degli scambi continui di più messaggi avanti e indietro (punti di sincronizzazione e dialoghi) | ISO Session |
| 4 | Trasporto (Transport) | canale affidabile end-to-end tra i due estremi | TCP, UDP |
| 3 | Rete (Network) | consegna non affidabile attraverso una rete a più nodi: instradamento e inoltro | IP, ICMP, protocolli di routing |
| 2 | Collegamento (Data Link) | consegna affidabile (nelle intenzioni) su un singolo collegamento tra nodi adiacenti | ARP, ARQ, HDLC, PPP, LLC; MAC: ALOHA, CSMA... |
| 1 | Fisico (Physical) | trasporto dei bit sul mezzo (linea non affidabile) | RS232, T1, 802.x |
Le funzioni dei livelli, uno per uno
Fisico (PHY). Trasforma gli 1 e gli 0 che arrivano dal collegamento (sopra) in un segnale che può viaggiare sul mezzo (corrente elettrica, impulsi di luce, onde radio), e al ricevitore fa l'operazione inversa. Fornisce la sincronizzazione di bit (stessa durata di bit e stessa temporizzazione per TX e RX). I mezzi su cui viaggiano i segnali (coppie intrecciate, fibre, collegamenti radio) e le loro caratteristiche sono in Mezzi di trasmissione - cavi, fibre e collegamenti radioIl mezzo di trasmissione fissa l'attenuazione $a_{ch}$ nel link budget. Nei cavi $H_{ch}=e^{-\gamma d}$ e l'attenuazione in dB cresce con la distanza ($a=\tilde a,d$, dB/km) e con $\sqrt f$. Le fibre ottiche hanno banda larghissima (10¹⁴-10¹⁵ Hz), attenuazione bassa in tre finestre di lunghezza d'onda e limitazione dalla dispersione. Nei collegamenti radio vale la formula di Friis, $g_{ch}=g_{tx}g_{rx}\left(\frac\lambda{4\pi d}\right)^2$, cioè $a_{ch}=32{,}4+20\log_{10}d_{km}+20\log_{10}f_{MHz}-G_{tx}-G_{rx}$ dB.Mezzi di trasmissione - cavi, fibre e collegamenti radio →. Il messaggio ha un inizio e una fine; ciò che sta in mezzo viene passato al livello di collegamento.
Collegamento (Data Link, DLL). Consegna un pacchetto da un nodo a un nodo fisicamente adiacente attraverso un collegamento: è limitato a un salto solo (single hop). Si divide in due sottolivelli: MAC (Medium Access Control), che gestisce la presenza di più utenti sullo stesso mezzo (evitare collisioni), e LLC (Logical Link Control), che fa controllo di flusso e di errore a livello locale. Indirizzi MAC: sono locali (valgono solo sul collegamento), fissati per ogni scheda di rete (NIC, Network Interface Card) e unici al mondo (assegnati dal costruttore). Dettagli: Livello di collegamento e framingIl livello di collegamento (DLL) consegna un frame da un nodo a un nodo adiacente su un collegamento. Servizi: framing, accesso al mezzo (MAC) con indirizzi MAC a 48 bit, controllo di flusso, rilevazione e correzione degli errori. Si divide in DLC (framing, controllo di errore e di flusso) e MAC (accesso al mezzo condiviso). Il framing delimita i frame con un flag: nei protocolli a byte (flag di 8 bit, ESC) si usa il byte stuffing, in quelli a bit (flag 01111110) il bit stuffing, che inserisce uno 0 dopo ogni cinque 1 consecutivi.Livello di collegamento e framing → e Protocollo ARPUn host ha tre «nomi»: nome DNS, indirizzo IP (rete) e indirizzo MAC (collegamento). Per spedire un datagramma IP in un frame serve il MAC del prossimo nodo, che si ottiene da quel nodo con ARP: richiesta in broadcast (MAC destinazione FF:FF:FF:FF:FF:FF, contiene IP e MAC del mittente e l'IP cercato) e risposta unicast con il MAC richiesto, memorizzata nella cache ARP. ARP risolve sempre il prossimo salto (host di destinazione o router), non la destinazione finale. Un broadcast non esce dalla sottorete: il proxy ARP del router risponde con il proprio MAC.Protocollo ARP →.
Rete (Network). Responsabile del recapito da host a host dei datagrammi (routing: trovare il percorso migliore; forwarding: spostare i dati attraverso una rete a più nodi, multi-hop). Mentre il collegamento ha una visione locale, la rete ha una visione globale. Non fa recupero degli errori: i dati possono andare persi (servizio non affidabile). Gli indirizzi sono IP: unici (ogni indirizzo identifica una sola connessione a Internet) e universali (accettati da qualsiasi host). Un indirizzo IP identifica una connessione, non un dispositivo.
Trasporto (Transport). Crea un canale virtuale trasparente uno-a-uno tra i due estremi della comunicazione, senza preoccuparsi della topologia: offre controllo di flusso come se esistessero solo le due entità. Offre affidabilità: controllo d'errore, ritrasmissione dei pacchetti corrotti, controllo di flusso (evita che chi trasmette vada più veloce di quanto il ricevitore riesca a gestire).
Livelli superiori. Sessione: gestione di scambi continui con più trasmissioni avanti e indietro. Presentazione: traduzione dei dati tra rete e applicazione (codifica dei caratteri, compressione, cifratura/decifratura). Applicazione: funzioni e API di alto livello.
Proprietà (indirizzi MAC e IP, da non confondere). MAC: 48 bit, identifica il dispositivo (la scheda) sul collegamento locale e non è instradabile. IP: identifica la connessione ed è usato per l'instradamento; la sua validità si estende su più salti. Un pacchetto di livello rete può viaggiare per molte reti; un frame di livello collegamento resta locale. Esempio dalle slide: IP
131.175.21.1, MACA3:34:45:11:92:F1.
Ogni indirizzo risponde a una domanda diversa. Al trasporto si aggiunge un terzo indirizzo, la porta: un host remoto può far girare più programmi server contemporaneamente (come più calcolatori locali, ognuno con più programmi), e il numero di porta dice a quale processo consegnare i dati. La coppia indirizzo IP + numero di porta si chiama socket, per esempio <158.108.33.3, 3000> o <113.23.30.0, 80>.
| Indirizzo | Livello | Risponde alla domanda |
|---|---|---|
| MAC | collegamento | quale dispositivo? (sul collegamento locale) |
| IP | rete | quale rete? (e quale connessione, a livello globale) |
| porta | trasporto | quale processo? (sull'host di destinazione) |
La terminologia a strati: PDU, SDU, PCI
Un'entità di livello offre un servizio all'entità di livello . Il dialogo avviene solo tra due entità dello stesso livello (peer), ma la comunicazione reale passa attraverso tutta la pila: scende fino al mezzo nel mittente e risale nel ricevitore.
Definizione (PDU, SDU, PCI). La PDU (Protocol Data Unit) è l'unità di dati scambiata tra due entità dello stesso livello. La PDU del livello diventa SDU (Service Data Unit) per il livello sottostante. Il livello non la inoltra semplicemente: aggiunge la propria informazione di controllo, la PCI (Protocol Control Information, l'intestazione, a volte anche una coda), e il risultato è la nuova PDU del livello :
Esempio. Il livello trasporto riceve dall'applicazione un messaggio da B e aggiunge B di intestazione TCP: PDU di trasporto B. Il livello rete aggiunge B di intestazione IP: B. Il collegamento aggiunge B di intestazione e coda Ethernet: B. Il fisico invia bit (un byte sono 8 bit). Il rapporto utile è (overhead ). I B di Ethernet sono B di intestazione (MAC di destinazione , MAC di sorgente , tipo ) più B di coda (controllo di errore, FCS); il preambolo, che serve solo alla sincronizzazione del ricevitore, non è contato. In generale, con un carico utile di byte e un'intestazione totale di byte, la frazione utile è : è bassa per messaggi piccoli (per vale , per vale ) e tende a 1 per messaggi grandi, perché l'intestazione ha dimensione fissa. Per questo i dati si inviano in pezzi grandi quanto l'MTU consente (Datagramma IP e frammentazioneIPv4 è un servizio senza connessione, non affidabile, best effort: i pacchetti (datagrammi) possono essere persi, corrotti, riordinati o ritardati. L'intestazione ha 20-60 byte (HLen conta parole da 4 byte, da 5 a 15); il campo Total Length (16 bit) dà la lunghezza totale fino a 65 535 byte; TTL limita i salti, Protocol identifica il protocollo trasportato (1 ICMP, 6 TCP, 17 UDP), il checksum copre solo l'intestazione. Se un datagramma è più grande dell'MTU del collegamento viene frammentato: solo il payload si divide, ogni frammento ha un'intestazione propria; l'Offset (13 bit) è in unità di 8 byte, MF=1 in tutti i frammenti tranne l'ultimo, e il riassemblaggio avviene solo a destinazione.Datagramma IP e frammentazione →).
Grafico interattivo: Frazione utile L/(L+58) al variare del carico utile L
Incapsulamento e decapsulamento
Definizione (incapsulamento). Al mittente, ogni livello impacchetta i dati del livello superiore insieme alla propria PCI (incapsulamento, encapsulation), scendendo lungo la pila. Al destinatario, ogni livello separa i dati del livello superiore dalla propria PCI e li passa su (decapsulamento, decapsulation).
I router intermedi risalgono solo fino al livello rete: leggono l'intestazione IP e creano un nuovo frame per il salto successivo (Elementi di rete - hub, switch e routerI dispositivi che interconnettono le reti si distinguono per il livello della pila che arrivano a leggere. Hub (livello 1): ripetitore, rigenera il segnale e lo manda su tutte le porte, tutte le stazioni condividono la capacità. Bridge e switch (livello 2): leggono l'indirizzo MAC e inoltrano solo verso la porta giusta, imparando la tabella (FDB) dagli indirizzi sorgente. Router (livello 3): leggono l'indirizzo IP e collegano reti indipendenti (internetwork). Switch e bridge isolano il traffico e sono plug and play; il router fa instradamento ottimo ma va configurato.Elementi di rete - hub, switch e router →).
Pila TCP/IP
La pila realmente usata in Internet è la suite TCP/IP. Ha cinque livelli: i livelli sessione e presentazione di OSI non esistono come livelli distinti e le loro funzioni vengono assorbite dal livello applicazione.
| OSI | TCP/IP | Protocolli |
|---|---|---|
| Applicazione, Presentazione, Sessione | Applicazione | HTTP, FTP, e-mail, DNS |
| Trasporto | Trasporto | TCP, UDP |
| Rete | Rete (Internet) | IP e protocolli ausiliari (ICMP, routing, DHCP) |
| Collegamento | Collegamento | tecnologie LAN e WAN sottostanti (Ethernet, Wi-Fi, PPP) |
| Fisico | Fisico |
Protocolli del corso, per livello: collegamento ARP, ARQ, HDLC, PPP, LLC e per l'accesso al mezzo ALOHA, slotted ALOHA, CSMA, CSMA/CD, CSMA/CA (e TDMA, FDMA, SDMA, CDMA, OFDMA); rete IP, ICMP e protocolli di instradamento, con BOOTP/DHCP; trasporto UDP e TCP; applicazione HTTP, FTP, e-mail. Un host ha tutti i livelli; un router solo i primi tre; uno switch i primi due; un hub solo il fisico (Elementi di rete - hub, switch e routerI dispositivi che interconnettono le reti si distinguono per il livello della pila che arrivano a leggere. Hub (livello 1): ripetitore, rigenera il segnale e lo manda su tutte le porte, tutte le stazioni condividono la capacità. Bridge e switch (livello 2): leggono l'indirizzo MAC e inoltrano solo verso la porta giusta, imparando la tabella (FDB) dagli indirizzi sorgente. Router (livello 3): leggono l'indirizzo IP e collegano reti indipendenti (internetwork). Switch e bridge isolano il traffico e sono plug and play; il router fa instradamento ottimo ma va configurato.Elementi di rete - hub, switch e router →).
I tre indirizzi dello stesso host: nome (giordani.dei.unipd.it, risolto dal DNS), indirizzo IP (147.162.97.17, livello rete) e indirizzo MAC (0:0:c:6:13:4a, livello collegamento). Il passaggio da IP a MAC lo fa Protocollo ARPUn host ha tre «nomi»: nome DNS, indirizzo IP (rete) e indirizzo MAC (collegamento). Per spedire un datagramma IP in un frame serve il MAC del prossimo nodo, che si ottiene da quel nodo con ARP: richiesta in broadcast (MAC destinazione FF:FF:FF:FF:FF:FF, contiene IP e MAC del mittente e l'IP cercato) e risposta unicast con il MAC richiesto, memorizzata nella cache ARP. ARP risolve sempre il prossimo salto (host di destinazione o router), non la destinazione finale. Un broadcast non esce dalla sottorete: il proxy ARP del router risponde con il proprio MAC.Protocollo ARP →.
Il resto del corso scende lungo la pila: Livello di collegamento e framingIl livello di collegamento (DLL) consegna un frame da un nodo a un nodo adiacente su un collegamento. Servizi: framing, accesso al mezzo (MAC) con indirizzi MAC a 48 bit, controllo di flusso, rilevazione e correzione degli errori. Si divide in DLC (framing, controllo di errore e di flusso) e MAC (accesso al mezzo condiviso). Il framing delimita i frame con un flag: nei protocolli a byte (flag di 8 bit, ESC) si usa il byte stuffing, in quelli a bit (flag 01111110) il bit stuffing, che inserisce uno 0 dopo ogni cinque 1 consecutivi.Livello di collegamento e framing →, poi le prestazioni di un collegamento in Analisi delle prestazioni di reteLe prestazioni di una rete si misurano con tre famiglie di metriche: traffico (bitrate $R_0$ massimo del collegamento, throughput $S\le R_0$ dati consegnati con successo, goodput al livello applicazione), ritardo (end-to-end $d_{tot}=d_{proc}+d_{queue}+d_{trans}+d_{prop}$ con $d_{trans}=L/R$ e $d_{prop}=d/v$; jitter; RTT) e capacità del tubo (BDP $=R\cdot$ ritardo, bit che riempiono il collegamento), più l'affidabilità (PER, PDR, PLR). Il throughput di un percorso è quello del collegamento collo di bottiglia, $\min$ dei bitrate, ricordando che i collegamenti condivisi dividono la capacità.Analisi delle prestazioni di rete →.
Versione ripasso
Protocollo. Serie di passi tra due o più parti, progettata per un compito. Deve essere noto a tutti, non ambiguo e completo (c'è un'azione per ogni situazione). Specifica indirizzo, formato dei messaggi e regole di comportamento.
Perché a strati. Una comunicazione richiede segnali, rilevazione e recupero errori, accesso al mezzo, delimitazione dei messaggi, instradamento, frammentazione, controllo di flusso e di congestione, sincronizzazione, rappresentazione dei dati. Un solo protocollo sarebbe troppo complesso. Il principio divide et impera divide il software in strati, ognuno con un insieme limitato di problemi.
- Vantaggi: meno complessità, modifiche isolate (si cambia il cavo senza toccare il browser).
- Svantaggio: un po' di efficienza persa (intestazioni, copie).
Modello ISO/OSI, 7 livelli.
- Fisico: trasporta i bit sul mezzo (corrente, luce, onde radio) e assicura la sincronizzazione di bit.
- Collegamento: consegna un frame a un nodo fisicamente adiacente (un salto). Sottolivelli MAC (accesso al mezzo, evita le collisioni) e LLC (controllo di flusso e di errore locale). Indirizzi MAC locali, a 48 bit, fissati dalla scheda.
- Rete: consegna da host a host attraverso più nodi (routing per scegliere il percorso, forwarding per spostare i dati). Consegna non affidabile. Indirizzi IP, globali.
- Trasporto: canale affidabile end-to-end (TCP, UDP): controllo d'errore, ritrasmissione, controllo di flusso.
- Sessione: gestione di scambi continui avanti e indietro, con punti di sincronizzazione.
- Presentazione: codifica dei caratteri, compressione, cifratura.
- Applicazione: funzioni e API di alto livello (HTTP, FTP, e-mail, Telnet).
PDU, SDU e PCI. La PDU è l'unità scambiata tra due entità pari dello stesso livello. La PDU del livello diventa SDU per il livello , che vi aggiunge la propria PCI (intestazione):
- Incapsulamento al mittente, scendendo nella pila; decapsulamento al destinatario, risalendo.
- Esempio: messaggio da B, intestazione TCP B, IP B, Ethernet B (intestazione e coda): B. Al fisico vanno bit. Overhead , utile .
Pila TCP/IP, 5 livelli. Sessione e presentazione non esistono come livelli: le loro funzioni sono nel livello applicazione.
| OSI | TCP/IP | Protocolli |
|---|---|---|
| Applicazione, presentazione, sessione | Applicazione | HTTP, FTP, e-mail, DNS |
| Trasporto | Trasporto | TCP, UDP |
| Rete | Rete (Internet) | IP, ICMP, routing, DHCP |
| Collegamento | Collegamento | Ethernet, Wi-Fi, PPP, ARP |
| Fisico | Fisico |
- Dispositivi: host con tutti i livelli; router fino al livello rete (); switch e bridge fino al collegamento (); hub solo il fisico () (Elementi di rete - hub, switch e routerI dispositivi che interconnettono le reti si distinguono per il livello della pila che arrivano a leggere. Hub (livello 1): ripetitore, rigenera il segnale e lo manda su tutte le porte, tutte le stazioni condividono la capacità. Bridge e switch (livello 2): leggono l'indirizzo MAC e inoltrano solo verso la porta giusta, imparando la tabella (FDB) dagli indirizzi sorgente. Router (livello 3): leggono l'indirizzo IP e collegano reti indipendenti (internetwork). Switch e bridge isolano il traffico e sono plug and play; il router fa instradamento ottimo ma va configurato.Elementi di rete - hub, switch e router →).
- Il router legge l'intestazione IP e crea un nuovo frame per il salto successivo.
Indirizzi di uno stesso host.
- Nome (
giordani.dei.unipd.it): risolto dal DNS. - IP (
147.162.97.17, livello rete): quale rete, instradabile su più salti. - MAC (
0:0:c:6:13:4a, livello collegamento): quale dispositivo, solo sul collegamento locale. Il passaggio da IP a MAC è Protocollo ARPUn host ha tre «nomi»: nome DNS, indirizzo IP (rete) e indirizzo MAC (collegamento). Per spedire un datagramma IP in un frame serve il MAC del prossimo nodo, che si ottiene da quel nodo con ARP: richiesta in broadcast (MAC destinazione FF:FF:FF:FF:FF:FF, contiene IP e MAC del mittente e l'IP cercato) e risposta unicast con il MAC richiesto, memorizzata nella cache ARP. ARP risolve sempre il prossimo salto (host di destinazione o router), non la destinazione finale. Un broadcast non esce dalla sottorete: il proxy ARP del router risponde con il proprio MAC.Protocollo ARP →. - Porta (livello trasporto): quale processo. IP porta è il socket, per esempio
<158.108.33.3, 3000>.
| Indirizzo | Livello | Risponde alla domanda |
|---|---|---|
| MAC | collegamento | quale dispositivo, sul collegamento locale |
| IP | rete | quale rete o connessione, a livello globale |
| porta | trasporto | quale processo, sull'host di destinazione |
Errori tipici:
- confondere il MAC, che identifica il dispositivo ed è solo locale, con l'IP, che identifica la connessione ed è instradabile;
- dire che TCP/IP ha sette livelli (sono cinque);
- dire che il livello rete è affidabile (non lo è, lo fa il trasporto);
- dimenticare che il dialogo avviene solo tra pari, mentre i dati attraversano tutta la pila.