によって ENZO BARBATO 1年前.
91
もっと見る
TESTIndipendentemente 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".
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.
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.
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:
Gli indirizzi IPv4 vengono divisi in 5 classi dette A, B, C, D, E.
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.
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:
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.
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.
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:
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.
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).
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:37641
→ 72.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 PRIVATOPORT PRIVATOIP PUBBLICOPORT PUBBLICOREMOTOPORT REMOTO192.168.1.10037641104.244.42.1295927372.14.204.14780
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:59273
→ 72.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.
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.
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.
Domain Name System (DNS)
Come funziona praticamente un DNS?
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.
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.
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.
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.
Finora, abbiamo imparato quali sono i componenti necessari per far funzionare tutto. Adesso li monteremo insieme.
Un diagramma dettagliato di una generica rete informatica.
Riassumiamo le cose che abbiamo imparato:
Quindi, è così che funziona Internet, ovvero un tipo di rete informatica che utilizza il protocollo TCP/IP.
Grazie per aver letto quest'articolo!
commento