Articolo originale: What computer networks are and how to actually understand them

Indipendentemente dal fatto che tu sia nuovo al mondo dello sviluppo web o abbia una certa esperienza — anche se sei un utente quotidiano di internet a cui piace semplicemente la tecnologia — devi conoscere le basi del networking e in modo specifico delle reti informatiche.

Se ti piace approfondire il funzionamento dei server, la loro sicurezza e il modo in cui ti connetti a un server da un client remoto, tutto ciò richiede una certa conoscenza delle reti informatiche e dei loro componenti. In quest'articolo, ho tentato di includere gli argomenti più importanti che riguardano le reti informatiche.

Prima di tutto, partiamo dalla definizione di rete informatica:

Le reti informatiche possono essere definite come lo scambio di pacchetti dati tra computer attraverso il mondo con l'aiuto di linee dati come cavi, fibre ottiche, ecc.

Internet è un tipo di rete informatica.

Adesso, prenderemo in esame alcuni dei termini comunemente utilizzati, i componenti di una rete informatica e il loro funzionamento.

Da qui in poi, faremo riferimento alle "reti informatiche" semplicemente come "reti".

Termini comunemente usati

Nodi

I nodi in una rete fanno riferimento a tutti i dispositivi come ad esempio computer, cellulari, tablet, che inviano e ricevono pacchetti a un altro dispositivo simile attraverso la rete.

Pacchetti

I pacchetti non sono nient'altro che le informazioni o le unità di dati che un nodo sorgente vuole inviare al o ricevere dal nodo di destinazione. In quest'articolo, i termini pacchetto e pacchetto dati hanno lo stesso significato.

Internet Protocol (IP)

Considera di voler inviare un regalo di compleanno a un tuo amico. Immagino che vorrai spedirlo al suo indirizzo di posta.

Siamo nello stesso caso. I primi informatici volevano identificare i computer su internet con un numero unico, qualcosa come un odierno numero di telefono. Quindi crearono il concetto di TCP/IP.

L'IP di un computer è l'indirizzo del dispositivo all'interno di una rete. È il numero a 32 bit che identifica il dispositivo nella rete. Tutte le comunicazioni con il dispositivo in quella rete verranno effettuate in termini del suo indirizzo IP.

Considera di caricare un file su un sito qualsiasi, diciamo su Google drive.

Parlando del livello più basso delle reti di comunicazioni, il tuo file viene convertito in pacchetti e ogni pacchetto contiene l'indirizzo del nodo di destinazione, che non è altro che l'indirizzo IP.

Ad un livello più alto, gli indirizzi IP vengono classificati in due tipi:

  • IPv4: gli indirizzi IPv4 sono 32 bit (4 byte), come spiegato dalla definizione. Un esempio di indirizzo IPv4 è 104.244.42.129, l'indirizzo IPv4 di twitter.com. Sono stabili e quindi vengono utilizzati per identificare i computer nel mondo.
  • IPv6: gli indirizzi IPv6 sono abbastanza recenti e, in pratica, sono costituiti da 8 numeri esadecimali separati da “:”. Un esempio di indirizzo IPv6 è 2001:0cb8:85a3:0000:0000:8a2e:0370:7334. Sono instabili e quindi non sono ancora ampiamente utilizzati. Gli indirizzi IPv4 continuano a essere usati per via della loro stabilità e non esiste una stima su quando gli indirizzi IPv6 inizieranno ad essere utilizzati, dato che al momento non sono stabili.

Gli indirizzi IPv4 vengono divisi in 5 classi dette A, B, C, D, E.

1*Nn10SdJKJ_L2VDuQCwwHLQ
Ottetti in un indirizzo IP.

Bit del Network + Bit del Host = Bit totali dell'indirizzo IP (32)

Nota: A seconda del primo ottetto, l'indirizzo IP è classificato in diverse classi.

1*W_MW72XqL54QxKaPHk54UA
Source: tcpipguide.com

Classe A: come mostrato nella terza colonna dell'immagine qui sopra, in un indirizzo IP di classe A, il primo bit del primo ottetto è costante e il suo valore è "0".

La seconda colonna indica i bit di rete e i bit dell'host della corrispondente classe di indirizzo IP. Nel caso di un indirizzo IP di classe A, abbiamo la seguente formula:

Numero di reti/sottoreti = 2^(# dei bit di rete) .

Numero di host validi in ogni sottorete = 2^(# di bit degli host) — 2 .

Il numero di bit di rete e bit degli host viene deciso dalla maschera di sottorete di default della classe dell'indirizzo IP.

La maschera di sottorete di default per un indirizzo IP di classe A è 255.0.0.0, ovvero 11111111.00000000.0000000.00000000. Quindi, per la classe A:

bit di rete = 8 e bit degli host = 24.

Dato che bit di rete = 8, bit degli host = 24, la loro somma deve essere 32, visto che gli indirizzi IPv4 hanno 32 bit. Ma visto che stiamo usando il bit uno (il primo bit nel primo ottetto) per identificare la classe:

Numero di bit di rete utilizzabili = Numero di bit di rete — Numero di bit costanti = 8–1 = 7

Quindi, il Numero di reti possibili di Classe A = 2^7 — 2 = 126 e il

Numero di possibili host (che è il numero di dispositivi che possono essere connessi alla rete) per rete di Classe A = 2^24-2 = 16277214.

Adesso, per la classe A, potresti chiederti perché ho sottratto un 2 extra dal numero di reti possibili. Ciò è necessario perché, per la classe A, 127.x.y.z è tenuto riservato. Per le altre classi, viene utilizzata la formula consueta.

Dunque, gli indirizzi IP di classe A vanno da 1.x.x.x a 126.x.x.x.

Classe B: il caso è simile per la classe B. L'unica differenza è che 2 bit del primo ottetto sono costanti (10) e identificano questa classe. Tutti gli altri calcoli sono identici (non li ripeterò dato che sono disponibili nei paragrafi precedenti). Gli indirizzi di classe B vanno da 128.0.x.x a 191.255.x.x.

Classe C: 3 bit del primo ottetto sono costanti (110) e identificano la classe come C. Vanno da 192.0.0.x a 223.255.255.x.

Classe D e Classe E: le Classi D e E sono usate per scopi sperimentali.

Gli indirizzi IPv4 sono principalmente di due tipi:

  • Statici: questi indirizzi IP sono quelli che restano costanti nel tempo per un dispositivo. Ad esempio, i server remoti che utilizziamo come host per le nostre app, siti web, ecc. in cui usiamo il client ssh per connetterci in maniera sicura al nostro server.
  • Dinamici: generalmente, questi sono gli indirizzi IP che vengono assegnati ai computer in una rete internet. Prova a spegnere il tuo router (ma solo dopo aver letto questo articolo!) e vedrai dei cambiamenti nell'indirizzo IP del tuo computer. Magari ti stai chiedendo come vengono assegnati questi indirizzi IP. Per questo si ricorre al server DHCP (Dynamic Host Configuration Protocol) che è brevemente illustrato più avanti in questo articolo.

Nota: un dispositivo può avere indirizzi IP multipli contemporaneamente. Considera un apparecchio connesso a due reti, una rete wifi e una rete LAN — avrà due indirizzi IP. Questo implica che gli indirizzi IP siano assegnati all'interfaccia e non direttamente al computer.

Fin qui tutto bene, continuiamo.

Router

Il router è un componente hardware che si occupa di indirizzare i pacchetti. Determina da quale nodo arriva un pacchetto e a quale nodo di destinazione viene mandato. Nessun computer conosce dove sono collocati gli altri computer e i pacchetti non vengono mandati a tutti i computer. Un router identifica l'indirizzo del nodo di destinazione a cui il pacchetto deve essere inviato e lo spedisce all'indirizzo desiderato.

I router posseggono un specifico "protocollo di routing" che definisce il formato in cui scambiano dati con altri router o nodi di rete. In altre parole, il protocollo di routing definisce il modo in cui i router comunicano tra di loro.

I router costruiscono una "tabella di routing" che identifica il percorso ottimale da percorrere nella rete per inviare pacchetti.

1*eTows8BQKhPE8j76SNSVNA
Un router.

Tecnicamente, una tabella di routing è solo una tabella con una lista di "percorsi" da un router a un altro. Ogni percorso contiene le informazioni riguardanti l'indirizzo dell'altro router/nodo nella rete e come raggiungerlo.

Tabella di routing:

Destinazione  Gateway     Genmask        Flags Metric Refs Iface
default       192.168.0.1 0.0.0.0        UG    1024   233  eth0
192.168.0.0   *           255.255.255.0  UC    0      0    wlan0
192.168.0.0   *           255.255.255.0  UH    0      2    eth0

Qui sopra, puoi vedere un esempio di tabella di routing. I punti chiave di cui prendere nota sono:

  • Destinazione: questo è l'indirizzo IP del nodo di destinazione. Indica dove devono giungere i pacchetti di dati.
  • Gateway: il gateway è il componente che connette due reti. Considera di avere un router connesso ad un altro router, ognuno dei quali ha dei dispositivi connessi. Quindi, l'indirizzo dell'ultimo router (chiamiamolo R1) dopo il quale il pacchetto dati entra nell'altra rete (chiamiamola rete di R2) viene chiamato gateway. Di solito, i gateway non sono altro che dei router. Facciamo un altro esempio. Ipotizziamo che la tua camera sia una rete e che la camera di tua sorella, adiacente alla tua, sia un'altra rete. La porta tra le due stanze può essere considerata un gateway. A volte, le persone fanno riferimento ai "router" come gateway, perché è ciò che sono, "la via d'accesso a un'altra rete".
  • Genmask/Subnet mask: non è altro che la maschera di rete/sottorete. Una maschera di sottorete è il numero che, combinato con un indirizzo IP, ti permette di dividere lo spazio dell'IP in porzioni più piccole da utilizzare in reti fisiche e logiche. La spiegazione di come svolgere i calcoli delle sottoreti va oltre lo scopo di questo articolo.
  • Flag: ogni flag ha un significato particolare. Ad esempio, nel primo percorso la "U" in "UG" sta per UP, mentre la "G" sta per GATEWAY. Dato che il percorso indica un GATEWAY, è una porta ad un'altra rete. Ogni volta che mandiamo dati attraverso questo percorso, vengono inviati ad un'altra rete.
  • Iface (Network interface): l'interfaccia di rete fa riferimento alla rete che ha il computer di destinazione nel percorso definito nella tabella di routing. Ovvero, se sei connesso al Wifi, sarà "wlan" e se sei connesso tramite LAN, sarà "eth".

Questo è il modo in cui funziona un router, con l'aiuto del protocollo di routing e della tabella di routing.

Per ora tutto bene. Ma potresti pensare  — “Ok! Ma stiamo imparando i componenti qui. Ho bisogno di mettere tutto insieme e capire come funziona internet.”

Qualche altro termine e inizierai ad avere una comprensione generale di come funzionano le cose.

Network Address Translation (NAT)

Il Network address translation (o traduzione degli indirizzi di rete) è una tecnica usata dai router per garantire il servizio internet su più dispositivi con un minor utilizzo di IP pubblici. Dunque, il fornitore di servizi internet assegna un singolo indirizzo IP a un router, che assegna degli IP privati a tutti i dispositivi che vi si connettono. Il NAT aiuta il fornitore di servizi internet a raggiungere più clienti.

Quindi, se sei connesso al router della tua casa, il tuo IP pubblico sarà visibile al mondo, ma quello privato no. Qualsiasi pacchetto trasmesso sarà rivolto al tuo IP pubblico (l'IP pubblico assegnato al router).

1*rjlWoUU-AeshrGLt0NF1Uw
Network address translation (NAT)

Considera la figura qui sopra. Diciamo che dalla rete della tua casa, stai cercando di accedere a medium.com (IP remoto statico: 72.14.204.147), dal tuo computer (IP privato: 192.168.1.100).

Quindi per il tuo computer, la connessione è:

192.168.1.100:3764172.14.204.147:80.

“37641” è il numero di porta random assegnato dal router NAT al tuo dispositivo/computer (quando c'è una comunicazione di rete tra demoni in esecuzione su porte differenti su un computer, le rispettive porte vengono utilizzate dal NAT). A ogni connessione in uscita viene assegnata una porta dal router NAT.

La connessione viene stabilita nel NAT come:

IP privato Port privato IP pubblico Port pubblico Remoto Port remoto
192.168.1.100 37641 104.244.42.129 59273 72.14.204.147 80

Ma visto che il mondo esterno alla rete non conosce il tuo indirizzo privato, la connessione a medium.com assomiglia a:

104.244.42.129:5927372.14.204.147:80.

In questo modo, riusciamo ad assegnare un numero maggiore di indirizzi IP senza sprecare molti IP pubblici.

Quando medium.com manda indietro la risposta a 104.244.42.129:59273, questa viaggia fino al tuo router di casa che poi cerca il rispettivo IP privato e numero di porta privato e direziona il pacchetto al tuo dispositivo/computer.

Nota: NAT è un concetto generalizzato. Il NAT può essere ottenuto come 1:1, 1:N, dove 1,N sono il numero di indirizzi IP nella rete. Una tecnica chiamata "IP masquerading" è un 1:N NAT.

Dynamic Host Configuration Protocol (DHCP)

Il protocollo DHCP (Dynamic Host Configuration Protocol) è responsabile dell'assegnazione di indirizzi IP dinamici agli host. Il server DHCP viene gestito dal fornitore di servizi internet o dal router precedente se esiste una catena di router per raggiungere l'host.

Quindi, l'assegnazione degli indirizzi IP è svolta dal server DHCP. In generale, il fornitore di servizi internet gestisce un server DHCP, che assegna un indirizzo IP pubblico ai router nella tua casa.

Nota: ogni volta che viene effettuata della manutenzione sul router, sul server DHCP oppure il router si riavvia, l'assegnazione degli indirizzi IP riparte e i dispositivi ricevono degli indirizzi IP diversi dai precedenti.

Domain Name System/Server

Abbiamo già detto che ogni macchina è identificata da un indirizzo IP.

Ok, quindi un server web è attivo sul tuo localhost sulla tua macchina. Se hai spulciato gli host di una macchina Linux qualsiasi, hai incontrato qualcosa del genere:

127.0.0.1        localhost
255.255.255.255  broadcasthost
::1              localhost

che vuol dire che scrivere 127.0.0.1 nella barra degli URL del tuo browser, equivale a localhost.

Analogamente, i siti web che utilizzi quotidianamente sono server web che girano su qualche istanza/nodo remoto con un indirizzo IP statico. Quindi, scrivendo un indirizzo IP nella barra degli URL del tuo browser arriverai al sito corrispondente?

Sì, certamente. Ma, per caso, hai il superpotere di ricordare gli indirizzi IP di migliaia di siti?

NO.

Ed ecco perché utilizziamo i domini, come medium.com, twitter.com, behance.net, codementor.io, ecc.

Un DNS (Domain Name Server) è un server che contiene una enorme quantità di dati di indirizzi IP che mappano i nomi di dominio. Cercano degli input di dominio e restituiscono il rispettivo indirizzo IP della macchina su cui è localizzato l'host del sito web al quale vuoi accedere.
1*1uiMJkS8rqJDn7eyKRd-ew
Domain Name System (DNS)

Come funziona praticamente un DNS?

  1. Il DNS è gestito dal tuo ISP (internet service provider).
  2. Quando scrivi un URL nella barra degli URL, i pacchetti dati viaggiano attraverso il tuo router, probabilmente anche tra vari router, fino all'ISP dove è localizzato il DNS.
  3. Il server DNS presente nell'ISP cerca il dominio nel suo database. Se trova una corrispondenza, la restituisce.
  4. Nel caso in cui non trovi nessuna corrispondenza nel suo database primario, il server DNS percorrerà internet fino a un altro server DNS gestito da un altro ISP e controllerà se esiste una corrispondenza all'interno del secondo DNS. In questo modo, restituirà l'indirizzo IP preso dall'altro server DNS e aggiornerà il suo database primario.
  5. Quindi, a volte (ma di rado), un server DNS potrebbe dover attraversare svariati altri server DNS per trovare una corrispondenza.
  6. Se dopo aver percorso molti altri server DNS nella rete internet non trova nessuna corrispondenza, il server DNS restituisce un errore che indica che il nome di dominio è invalido o non esiste.

Nota: L'ICANN (Internet Corporation for Assigned Names and Numbers) è un'associazione no profit che gestisce l'assegnazione dei nomi di dominio e dei range degli indirizzi IP nell'interesse della comunità.

Un dominio è diviso in tre parti come mostrato nella seguente figura.

1*DFJyA2XEEUesen6y5sSkEA
  1. Protocollo: il protocollo utilizzato per accedere a un sito web, ad esempio, HTTP, HTTPS, ecc.
  2. Nome di dominio: il nome principale del dominio. Può essere un nome qualsiasi disponibile per il registro ICANN.
  3. Estensione del dominio: questa è la parte considerata importante nell'acquisto di un dominio. In genere, viene classificata in due tipi:
  • Domini di primo livello generici (gTLD): includono le estensioni di dominio più popolari, come .com, .org, .net, .edu, .co, ecc.
  • Domini di primo livello nazionali (ccTLD): indicano che il dominio è legato al codice del Paese specificato nella sua estensione. Ad esempio, ".in" indica che il sito web è originario dell'India. Alcuni ccTLD richiedono che la persona che acquista il dominio sia dello stesso Paese. La maggior parte delle estensioni dei piccoli Paesi non sono ricercabili dall'esterno del Paese in questione.

Internet Service Providers (ISP)

I fornitori di servizi Internet (Internet Service Provider, ISP) sono compagnie che forniscono internet a tutti. In questo momento, stai leggendo questo articolo perché il tuo ISP ti fornisce internet.

Gli ISP forniscono internet, gestiscono le tue richieste, risolvono i nomi di dominio con l'aiuto di cache DNS e gestiscono tutte la rete di infrastrutture che ci permette di utilizzare internet.

1*fHPSdrVkjQ9tr72ncc7jjQ
Internet Service Providers (ISP)

Gli ISP hanno una struttura gerarchica che funziona tramite internet e possono essere di vari tipi, ossia Tier 1, Tier 2, Tier 3.

  • Gli ISP Tier 1 sono quelli che connettono le reti principali di internet. Considerali come le autostrade di internet. Inoltre, forniscono l'accesso a internet agli ISP Tier 2 (ad esempio CERFNet, UUNet, PSINet). Sono anche chiamati fornitori di servizi di rete (Network Service Providers, NSP). Questi ISP sono connessi tra loro grazie a grandi cavi sottomarini.
  • Gli ISP Tier 2 (Regionali) sono quelli che forniscono principalmente i servizi internet a organizzazioni, clienti (noi) o ISP Tier 3. La connessione internet che stai usando viene da un ISP Tier 2. Comunque, le organizzazioni possono avere accesso a internet anche da ISP Tier 1.
  • Gli ISP Tier 3 (Locali) sono proprio come i Tier 2. Si trovano soltanto a un livello gerarchico inferiore e acquistano il servizio internet dagli ISP Tier 2 per venderlo ai clienti.

Il  traffico che attraversa il tuo router passa anche dai Tier 3 (se presenti), Tier 2, e infine dagli ISP Tier 1 fino a un'altra rete.

Sono felice che sei ancora qui con me. Ora cerchiamo di rimettere tutto insieme.

Riassumendo

Finora, abbiamo imparato quali sono i componenti necessari per far funzionare tutto. Adesso li monteremo insieme.

1*8FEZEwZSBHKXGOsevHyeZQ
Un diagramma dettagliato di una generica rete informatica.

Riassumiamo le cose che abbiamo imparato:

  • Quando un computer/dispositivo va online, ottiene un IP privato assegnato dal router. Il router ottiene un IP pubblico dall'ISP.
  • Ad altri dispositivi nella rete vengono assegnati IP privati unici.
  • Gli ISP sono presenti in tutto il mondo e sono connessi tra loro. Vendono i servizi internet agli ISP regionali e locali, da cui noi, i consumatori, acquistiamo il servizio internet.
  • Quindi, quando un dispositivo prova a stabilire una connessione di rete con un altro dispositivo o con un'altra rete, lo fa con l'identità del suo gateway (il router). Il router mappa gli IP privati e i numeri di porta privati con l'IP pubblico e il numero di porta pubblico.
  • Il router manda i pacchetti alla destinazione desiderata dove un altro router o gateway svolge lo stesso lavoro del router precedente e analizza da quale computer/dispositivo proviene il pacchetto.
  • Il computer/dispositivo remoto risponde inviando la destinazione come IP pubblico e numero di porta del router.
  • Poi, il router controlla di nuovo l'IP privato e il numero di porta privato e inoltra il pacchetto dati.

Quindi, è così che funziona Internet, ovvero un tipo di rete informatica che utilizza il protocollo TCP/IP.

Grazie per aver letto quest'articolo!