Premier Training & Business Partner Red Hat

Network primer parte 1

Andrea Costantino
Ti piacerebbe diventare anche tu uno di noi e
pubblicare i tuoi articoli nel blog degli RHCE italiani?

networking

 

Ciao,

per questo primo post, volevo spendere qualche parola sul funzionamento di una rete complessa (diciamo un po’ di più di quella di una casa con una ADSL), visto che tutti noi la usiamo ma le conoscenze in materia non sono ancora sufficientemente diffuse.

Innanzi tutto occorre richiamare qualche concetto un po’ teorico, che però, una volta tanto, ha importanti risvolti pratici e rende più agevole la comprensione delle argomentazioni che seguono, ovvero la pila ISO/OSI, che sarà l’argomento di questo post.

Lo stack ISO/OSI è una astrazione teorica su come funzionano (o dovrebbero funzionare) le reti di comunicazione, e suddivide la complessità degli aspetti della comunicazione sui suoi vari livelli.

Nello specifico, si compone si sette livelli, che rispondono ai seguenti nomi:

1) Physical Layer

2) Datalink Layer

3) Network Layer

4) Transport Layer

5) Session Layer

6) Presentation Layer

7) Application Layer

Essendo stata pensata astrattamente, non tutti questi livelli hanno un contraltare pratico, ma l’analisi attraverso questo modello ci svela molte delle peculiarità del funzionamento di una rete.

Andando in ordine crescente, il livello 1 rappresenta il media fisico e il suo sistema di standard fisici di utilizzo. Esempio banale è il cavo ethernet che usiamo per connettere i computer ad un rete cablata. Il layer 1 è l’insieme delle informazioni fisiche che lo distinguono, quali forma dei connettori, colore dei cavi (ebbene sì, c’è uno standard per la crimpatura delle porte ethernet in termini di colori da usare..), livelli elettrici dentro le coppie (codice Manchester NRZ nel caso di Ethernet/FastEthernet, per esempio) etc. Se usiamo un media diverso, per esempio la rete wireless Wi-Fi 802.11a/b/g/n, cambia lo strato fisico e gli standard (appunto quelle serie 802.11), ma non cambia il fatto che probabilmente lo useremo per Internet.

La potenza del modello è proprio questa, ovvero che gli strati sono fra loro indipendenti, e quindi, pur essendovi una interconnessione fra di essi, possono mutare con facilità, senza precludere il funzionamento della pila complessiva.

Il layer 2 rappresenta il DataLink, ovvero l’insieme dei meccanismi logici e di standard che vengono utilizzati sul media fisico (layer 1) per comunicare fra le due entità che vi si trovano all’estremo.

Senza scendere nei dettagli e facendo appiglio alla memoria di quanti hanno usato un cavo seriale per interconnettere due PC con i software per scambiarsi file prima che si diffondesse l’uso delle LAN e del WiFi, potete pensare al livello due come lo scambio di informazioni su questo cavo seriale. Ci sono due entità, connesse da un media fisico (cavo seriale, in questo caso) e si parlano fra loro direttamente, non ci sono indirizzi IP o netmask, ci sta un capo del cavo e l’altro.

Questi due oggetti parlano, con un protocollo di semplice livello due, senza bisogno di una vera e propria rete.

Nel caso invece delle reti locali, la LAN di casa nostra o dell’ufficio, il livello due è rappresentato dal segmento di rete a cui ci si collega. Nel caso dell’ADSL è il WiFi, nel caso dell’ufficio di solito una VLAN degli switch. Su questo segmento i nodi si conoscono con indirizzi di livello 2 che sono normalmente i MAC address delle schede di rete, e quindi si possono scambiare informazioni anche senza l’uso del protocollo IP (ed infatti in reti locali del genere funziona anche IPX o NetBeui), e comunque anche IP, come vedremo, farà uso di questi indirizzi di livello 2 per comunicare.

A questo punto siamo ancora dentro casa nostra, o nella VLAN del nostro ufficio. Non molta strada, direi, forse è il caso di avventurarci nel livello 3, il livello Network.

Qui le cose cominciano a farsi più interessanti, perchè a questo punto, nel caso di Internet, appare il protocollo IP. Il livello tre è contraddistinto dalla presenza di un protocollo, appunto, di rete, che quindi consente di instradare i nostri messaggi (pacchetti) su tutta la rete in questione. Cosa contengano questi messaggi non è interessante per sapere come vengono instradati, poiché queste sono informazioni dei livelli superiori.

Le informazioni del livello 3 sono dunque gli indirizzi IP del pacchetto (sorgente e destinazione), che vengono contenute appunto dentro l’header IP. Andando a sbriciare dentro un pacchetto nella nostra LAN, troveremo dunque 2 parti che contraddistinguono i livelli attraversati (visto che il livello 1 de facto, nel caso Ethernet, non da luogo ad alcun header specifico): una prima parte che contiene gli indirizzi di livello 2 (MAC Address), che hanno significato solo sul filo della rete di casa nostra (o del nostro ufficio), e la seconda che è appunto l’header IP, con le informazioni di livello rete. A voler essere pignoli a livello 2 vi è anche un (cosiddetto) trailer che contiene il controllo di parità della frame, per rilevare gli errori di trasmissione, ma non vogliamo essere così pignoli..

A questo punto il nostro messaggio può andare in giro su Internet, perchè a livello 3 si ha già la conoscenza dell’indirizzamento della rete.. ma ancora non siamo riusciti ad aprire neanche la pagina iniziale di Google.. perchè?

Se guardate un po’ in giro, il mondo intero non parla di IP, ma di TCP/IP.. perché vi sia questo ostracismo verso altri protocolli non mi è dato sapere, ma se tutti parlano di questo TCP a qualcosa servirà..

In effetti il TCP è il livello superiore o, per meglio dire, uno dei possibili livelli superiori dell’IP. E sempre a voler essere pignoli, qui si spacca la simmetria fra la pila ISO/OSI e il modo di Internet, ma noi non siamo pignoli.

Il livello 4 è quello che si occupa del trasporto, ovvero delle tematiche relative all’assicurare che i dati spediti possano arrivare dall’altra parte più o meno uguali a come erano intesi alla partenza.

TCP fa questo mestiere e, vista anche la sua età, lo fa anche egregiamente bene.. non è un caso che si accompagni al blasonato IP in bibliografia.. ma non fa solo questo, perchè in qualche modo stabilisce anche una sessione di comunicazione, visto che fa nascere le connessioni che portano il suo nome.

Quindi, sempre stando dal lato della pignoleria, si occupa anche del livello superiore, ovvero quello di sessione. Lo scopo di questo livello, come si desume facilmente dal nome, è quello di creare una sessione di comunicazione fra le due entità che vogliono comunicare.
Anche il TCP inserisce il suo header, che sta subito accanto a quello IP, e consente di effettuare appunto le operazioni di trasporto, quali il recupero delle porzioni di comunicazione perse (pacchetti persi), multiplazione di più sessioni, e quelle di sessione, ovvero stabilimento dell’associazione logica (volgarmente chiamata connessione), controllo del flusso etc.

Ci sono altre scelte a livello 4/5, per esempio UDP (che vive a livello 4, non avendo una vera e propria connessione), oppure SCTP, che viene usato in applicazioni particolari, quali la segnalazione telefonica in IP, ove si comporta come un via di mezzo fra TCP e UDP (stabilisce sessioni ma non connessioni, rileva le perdite di comunicazione ma non recupera i dati autonomamente etc.).

A questi livelli cominciano anche ad apparire possibilità di loop dentro la pila ISO/OSI, con protocolli di livello di più alto che incapsulano protocolli di livello più basso.. Pensate alle VPN IPSEC (in Tunnel mode), che sono trasportate ovviamente da IP, ma al suo interno incapsula ulteriori pacchetti IP. IPSEC è quindi funzionalmente un protocollo di livello 4 (anche se ufficialmente è di livello 3, ma è solo una definizione, in questo caso) ma trasporta un protocollo di livello 3 (IP incapsulato al suo interno).

Il livello 6, quasi inesistente in Internet, è quello di presentazione, ovvero dell’insieme delle codifiche che consentono alle due entità di comunicare a prescindere dalla rappresentazione locale dei dati che i due lati hanno. Detto in soldoni, è una specie di traduzione fra lingue potenzialmente diverse.. un esempio per capire cosa fa questo livello può essere pensare ad una collaborazione fra scienziati di nazioni diverse, che prima di discutere dei loro esperimenti di laboratorio, stabiliscono di usare le unità del Sistema Internazionale per rappresentare le varie misure, quindi evitando che uno citi metri e l’altro pollici, o che i gradi siano Celsius per l’uno e Fahrenheit per l’altro. Questo non cambia la natura degli esperimenti di cui parleranno, ovviamente, ma consente di capirsi l’un l’altro. Unico esempio diffuso del mondo reale Internet è l’encoding delle email in MIME (usata ad esempio per gli allegati).

Il livello 7, che ci porta alla fine della gita, è quello dell’applicazione, ovvero lo scopo ultimo della comunicazione. A questo livello le entità riescono a parlarsi, possono mandarsi qualsiasi messaggio, e sono al riparo da perdite della rete o incomprensioni protocollari, ma a questo punto arrivano i contenuti della comunicazione. Con la stessa rete potete fare un FTP e scaricare un giochino (o meglio una distro Linux) o una richiesta HTTP per guardare un giornale, o fare una chiamata VoIP. E’ sempre IP, ma l’uso che ne fate è diverso.

Il livello applicativo è appunto l’applicazione usa la rete e il suo funzionamento. Non ci sono standard unici per questo, all’inizio c’era solo l’email e le sessioni di terminale, adesso ci sta il video on demand o la telediagnostica, le app sul cellulare per pagare le bollette o la timbratura ai tornelli di un’azienda.

A questo punto la domanda legittima è “ma tutto questo come fa a funzionare?” oppure “ma cosa mi importa di questo se Twitter funziona anche senza saperlo?”. Alla seconda domanda la risposta semplice è.. per amore di conoscenza, cultura e perché sto leggendo un blog tecnico.

Per quanto riguarda la prima domanda, invece, la risposta è che tutto questo funziona (se è ben configurato, s’intende) automaticamente, con l’uso di standard e protocolli. Standard che stabiliscono appunto come comportarsi, e protocolli che implementano questi comportamenti, direttamente, dentro i computer e tutti gli apparati di rete.

Se rispettate gli standard, e configurate bene i protocolli, la magia funziona..

Il vostro PC, sia che usi Windows (uhm..) o MacOSX (meglio) o Linux (ancora meglio), o il vostro smartphone, conosce questi standard e implementando lo stack TCP/IP (che in ultima analisi ricalca abbastanza fedelmente quasi tutti i livelli ISO/OSI) consente di avere comunicazioni affidabili, veloci (ADSL e provider permettendo) e sicure (se si usano standard crittografici) che vengono consegnate alle vostre applicazioni (o app, che vanno tanto di moda) per garantire il loro funzionamento.

Adesso che abbiamo condiviso un’idea su come funzionano teoricamente le cose, possiamo cercare di capire come praticamente si configurano, eserciscono e manutengono le reti.

Ma questo lo vedremo nel prossimo blog…

Info about author

Andrea Costantino