La rete di casa, passo passo

Nozioni essenziali sulle reti di computers

La prima cosa da sapere: quando usate internet, per esempio guardando pagine web, vi servite di un programma sul vostro PC (detto browser) che parla con un programma su un computer lontano (il server web). In questo non c'e' niente di magico od astruso: sono solo due programmi che, via rete, si scambiano messaggi codificati secondo regole rigide, quello che in gergo tecnico si chiama protocollo di comunicazione. La comunicazione avviene fra un programma client (il vostro browser) ed un programma server (il server web, che ha le pagine).

Il vostro browser non fa tutto il lavoro da solo, il suo compito e' principalemente mostrare sul video il contenuto delle pagine, e' il software di rete che trasferisce i dati fra i due computers. Il browser da' incarico al software di rete di mandare ad un lontano server web le richieste di pagine web, e riceve dal software di rete le pagine da mostrare all'utente.

Vediamo con un esempio come tutto questo funziona:

  1. utilizzando il browser (Internet Explorer o Mozilla), voi richiedere una pagina web ad esempio: http://www.helldragon.eu/index.html;

  2. il browser codifica questa richiesta secondo un protocollo detto: HTTP e passa la richiesta al software di rete che corre sul vostro PC;

  3. il software di rete invia la richiesta, via rete, codificata secondo il protocollo TCP/IP, con l'indirizzo del server web ed il vostro indirizzo, come indirizzo del mittente;

  4. la richiesta arriva al vostro provider, poi fa un lungo viaggio, attraversando cavi e interconnessioni fra reti, gestite da computers specializzati per l'invio di dati (detti routers), fino a che non arriva al computer con il web server che ha la pagina che cercate;

  5. il software di rete sul computer col web server riceve la vostra richiesta e la passa al programma server, che capisce il protocollo HTTP;

  6. il web server decodifica la vostra richiesta HTTP e risponde: consegna la pagina web richiesta al software di rete ;

  7. il software di rete, sul server, invia la risposta in internet, con l'indirizzo del vostro computer ed il suo, come mittente;

  8. la pagina fa il suo viaggio in internet, fino a che arriva al vostro provider e poi al vostro computer;

  9. il software di rete, sul vostro computer, riceve la pagina e la passa al browser;

  10. alla fine il browser mostra la pagina sullo schermo.

Puo' sembrare complicato, ma non lo e', e' come scrivere una lettera ad un amico, metterla in una busta, scriverci l'indirizzo e consegnarla all'ufficio postale per l'inoltro.

L'ufficio postale e' l'analogo del software di rete, la busta l'analogo del protocollo di comunicazione TCP/IP, con l'indirizzo sopra. Il contenuto della lettera puo' essere in lingua italiana, come le richieste ad un web server sono codificate in HTML; i protocolli di comunicazione non sono altro che linguaggi specializzati.


Chiarito, molto per sommi capi, il funzionamento di un applicativo di rete, vediamo quali cose bisogna sapere per far funzionare il tutto:


numeri dei computers

Ogni computer su internet e' identificato da un numero, unico nel mondo. Questo identificativo e' in genere scritto con quattro numeri, separati da un punto, ad esempio: 192.168.2.32. Questo numero e' chiamato numero IP o numero internet. E' l'indirizzo del computer, analogo all'indirizzo che mettete su una lettera.

Intenet e' divisa in tante reti, ognuna con i suopi computers. Il numero IP contiene sia l'indirizzo della rete che l'indirizzo del computer nella rete; e' simile ad un indirizzo in citta' ove avete il nome della strada e poi il numero civico; le reti possono essere pensate come l'analogo delle strade ed i computers della rete come i numeri civici.

Per separare il numero della rete dal numero del computer e' utilizzata una chiave codificata, chiamata "maschera di rete". Anche la maschera di rete e' scritta con quattro numeri separati da punti, ad esempio la maschera: 255.255.255.0 dice che nell'indirizzo 192.168.2.32 l'ultimo gruppo di cifre: 32, e' il numero del computer ed il resto: 192.168.2 (oppure 192.168.2.0), e' il numero della rete.



Porte:

associato ad ogni programma che lavora in rete c'e' un canale di comunicazione verso il software di rete, chiamato: "porta". Le porte sono numerate, molti numeri hanno un significato prestabilito per convenzione, ad esempio il server web usa la porta 80, per mandare posta si usa la porta 25, etc. etc.

Quando un programma server aspetta richieste da computers remoti si dice che sta in ascolto "ascolta" ad una porta; ad esempio i web server stanno in ascolto alla porta 80, i server di posta alla porta 25 etc.

Anche il programma client, che manda le richieste, usa una porta per parlare col software di rete, in genere una porta con un numero oltre il 1000.


Anche qui possiamo utilizzare l'analogia della citta'; se pensiamo ai computers come edifici, alle reti come strade ed a computers come edifici, con i loro numeri civici, possiamo pensare alle porte come a porte dei negozi; ogni edificio ha tanti negozi, con i commessi, che, come i programmi server, aspettano i clienti alla porta del negozio. E per fare la spesa si esce da una porta di casa. si percorrono diverse strade, guardando i cartelli agli incroci per orientarsi (come i messaggi sono indirizzati in internet dai routers), trovata la strada si cerca il negozio e si entra dalla porta per chiedere al commesso.



Nomi dei computers:

le macchine usano numeri per identificare i computers nella rete, ma agli umani piace usare dei nomi, per cui i computers, oltre che un numero, hanno anche un nome. I nomi dei computers sono fatti di campi separati da punti, come: www.helldragon.eu; i campi riflettono una struttura gerarchica ed i vari livelli della gerarchia sono chiamati "domini" : eu e' il dominio dell'Unione Europea, gestito dalla societa' EURid (www.eurid.eu), helldragon e' il mio dominio, gestito, per mio conto, dal mio provider, www e' il nome del computer.
Ad ogni nome corrisponde un numero (anche se la corrispondenza non e' sempre univoca), nomi e numeri corrispondenti sono in un database, distribuito su vari computers di internet, che si chiama: "domain name system" oppure: DNS.

Quando dite al vostro browser di trovare www.helldragon.eu lui devo trovare il numero che corrisponde al nome, per passarlo al software di rete, che usa numeri e non nomi. Per fare questo ha bisogno dell'indirizzo (il numero IP) di un server DNS, cui chiedere. Nella nostra analogia della lettera e' come cercare nelle'elenco telefonico l'indirizzo dell'amico cui mandare la lettera, sapete il nome dell'amico, ma non la via e il numero civico, per cui andate a cercarli in un database (l'elenco telefonico). Pero' dovete sapere dove trovare l'elenco telefonico, e, se non l'avete in casa, dovete sapere via e numero del negozio in cui ci sono gli elenchi.

Pacchetti:

i dati che mandate, o ricevete dalla rete, sono divisi in piccole parti, dette pacchetti, ognuno nella sua busta, ovvero con l'indirizzo IP del destinatario e del mittente e tutte le informazioni per l'inoltro. Questi pacchetti viaggiano ognuno per conto suo, facendo il proprio percorso in modo indipendente dagli altri. I pacchetti sono poi rimessi insieme all'arrivo, dal software di rete. Questo sistema che si chiama "a commutazione di pacchetto" e serve a migliorare l'efficienza della rete, che puo' essere usata meglio da piu' computer ed applicativi in contemporanea, che non devono rivservarsi un percorso ogni volta che mandano qualcosa, ma anzi, possono non sapere nulla del percorso che faranno i pacchetti.

Ogni pacchetto contiene 4 numeri, che identificano in modo univoco la comunicazione fra 2 computers:



Routing:

gli apparaati che collegano fra loro diverse reti si chiamano routers, i routers sono computer con diversi collegamenti, ognuno col suo cavo che va ad una rete diversa. Le uscite dei routers sono chiamate "interfacce di rete". Un router puo' avere diversi numeri IP, uno per ciascune delle sue interfacce, ed appartiene a piu' reti.

Un router ha una tabella, che dice quali reti si possono raggiungere dal ognune delle sue uscite; questa tabella si chiama "tabella di routing"(routing table). Quando arriva un pacchetto il router guarda l'IP di destinazione del pacchetto e cerca nella tabella a quale uscita deve mandare il pacchetto; se non trova l'uscita adatta lo manda ad un'uscita di default (default route), oppure, a seconda di come e' configurato, lo butta via ed il pacchetto e' perso.

Un router puo' essere pensato come un incrocio stradale, con tanti cartelli, che danno indicazioni per raggiungere diverse localita'. I cartelli sono un po' come una tabella di routing, che si consulta per sapere dove andare, e come un router collega piu' reti, cosi' l'incrocio collega piu' strade.

Anche il vostro PC puo' essere visto un po' come un router, ma ha una sola uscita ed un solo numero IP, per cui ha una tabella di routing molto semplice, che dice che la rete cui il vostro computer appartiene e' raggiungibile dall'unica interfaccia di rete, ed il resto va mandato al computer della rete collegato ad internet (il default route).




Le cose essenziali da sapere sono queste, vediamo adesso qualche altra nozione utile:

Firewall:

e' un software che seleziona i pacchetti, ne ferma alcuni e lascia passare altri, la decisione e' basata sui numeri IP e sui numeri delle porte di origine e destinazione del pacchetto. . Per configurare il router si devono definire delle regole per la selezione (filtering). ad esempio potete dire che i pacchetti diretti alla porta 80 non possono passare, ed in questo modo non potete piu' vedere pagine web, poiche' i server web ascoltano dalla porta 80.

Certi firewall moderni guardano anche dentro il pacchetto, cercando certe parole, od altre informazioni in base a cui fare la selezione.



Numeri IP statici e dinamici:

Ogni computer sulla rete deve avere un numero IP unico, ma i numeri IP disponibili sono meno di quelli necessari per tutti i computers del mondo, per cui, quando vi collegate ad internet, il vostro provider vi assegna un numero provvisorio, che usate finche' siete collegati, e poi viene riassegnato ad altri. Avete un numero IP "in prestito" e potete avere un numero diverso ogni volta che vi collagate. Questo si chiama "IP dinamico" Avere ogni volta un numero IP diverso non vi garantisce l'anonimato, dato che il provider mantiene una registrazione dei numeri che presta.

Potete farvi dare dal vostro provider anche un "IP statico", un numero che e' sempre riservato a voi. Vi costa di piu', ma cosi' e' piu' facile mettere dei servizi sul vostro PC, che siano sempre visibili sulla rete, in questo modo siete anche piu' agli hackers e correte piu' rischi.

La maggior parte della gente usa il computer solo per il mail, per guardare pagine web o per un po' di peer to peer, e non ha bisogno di IP statici. Ci sono anche dei trucchi per rendere visibili servizi sul vostro computer senza un IP statico.



IP pubblici ed IP privati:

Ci sono dei numeri IP che non sono usati in internet, i pacchetti diretti a questi numeri sono scartati dai routers ben configurati.
Ognuno puo' quindi fare uso di questi numeri per la sua rete personale ed i suoi computers non saranno visibili in internet. Queste reti non visibili fuori sono dette "reti private" gli indirizzi dei computer di queste "IP privati", gli altri visibili da tutta la rete, sono "IP pubblici". Tutti i numeri di rete che iniziano con 10. e con 192.168. sono privati ed anche alcune reti che iniziano con 172.16.

In genere si usano IP privati per i computer della propria rete interna ed IP pubblici per i server, computers con dei servizi che devono essere visti da fuori.



DHCP :

e' un programma che corre su un computer di una rete locale ed assegna agli altri computers numeri IP a richiesta. In questo modo non dovete configurare ogni computer della vostra rete; i computers, all'accensione, mandano messaggi di richiesta ad un DHCP, che gli risponde assegnandogli un numero IP e tutte le informazioni necessarie per configurare il software di rete, come l'indirizzo di un server DNS, informazioni di routing etc.



Network address Translation (NAT, NATP):

Vi domanderete come si possono avere diversi computers che condividono la stessa connessione ad internet se il vostro provider vi presta un unico numero IP.

C'e' un trucco, che si chiama NAT (o NATP, a seconda di alcuni dettagli tecnici). Il vostro router, od il PC con la connessione ad internet, ha il numero IP datovi dal provider ed e' visto sulla rete; tutti gli altri hanno numeri privati e comunicano con l'esterno tramite il router (che e' il loro default route). Il router riceve le richieste di connessione e le inoltra, come fossero richieste sue. Mantiene poi una tabella (chiamata tabella di NAT, basata su numeri IP e numeri di porte) che gli permette di mandare le risposte giuste ai computer giusti.

Dall'esterno si vede solo il router, tutti gli altri computers sono nascosti, loro possono iniziare una connessione per comunicare, ma da fuori non sono visibili.



Port forwarding (o server virtuale):

potete configurare il vostro router in modo che tutti i pacchetti che arrivano diretti a certe porte siano mandati ad uno dei computers della vostra rete interna. In questo modo certe porte di uno dei vostri computer nascosti diventano visibili dall'esterno, ma solo quelle, per il resto il computer resta nascosto. Potete cosi' mettere su un computer nascosto un servizio accessibile all'esterno, come ad esempio un server web.



Zona demilitarizzata (DMZ):

con questo termine si indicano i computer della vostra rete interna che non sono protetti da routers o firewall, ma sono direttamente connessi ad internet.

Potete configurare il vostro router in modo da mandare tutti i pacchetti ad un certo computer della rete interna. In questo modo il computerr e' visto sulla rete, come fosse il router.

E' una pratica rischiosa, che vi rende soggetti ad attacchi via rete, ed e' utilizzata quando si hanno molti servizi da rendere disponibili, o per i computer che si usano per test di sicurezza e monitoraggio; non e' la cosa giusta da fare quando una vostra applicazione non riesce a parlare con l'esterno e non capite perche', conviene cercare di i che porte ha bisogno e configurare il firewall per fare il port forwarding solo delle porte necessarie.



Proxy servers:

usate un proxy server quando non mandate le richieste direttamente ad un server, ma ad una macchina intermedia (il proxy server) che fa le richieste per conto vostro e vi manda le risposte.

Questo puo' rendere le risposte piu' veloci, se il server si ricorda le risposte e molti utenti chiedono le stesse cose. Puo' anche esere usato per controllare e filtrare il traffico, ad esempio tutto il traffico web puo' essere rediretto ad un proxy per fare della censura.

Alcuni provider usano IP privati per tutti i loro clienti e proxy servers per permettergli di accedere ad internet (come Fastweb in Italia). In questo modo i clienti non possono mettere sui loro computers servizi visibili fuori della rete del provider. In questi casi per avere un IP pubblico bisogna pagare un sovrapprezzo, ma la maggior parte degli utenti non ha realmente bisogno di un IP pubblico, gli basta il servizio offerto dal proxy e non si accorgono neppure di non avere un IP pubblico.



Loopback interface:

ogni computer ha un indirizzo IP speciale, che punta a se stesso; questo numero e' 127.0.0.1, e corrisponde al nome: localhost.

In questo modo ogni computer puo' vedere se stesso come un computer della rete, accessibile tramite una interfaccia di rete speciale, chiamata: "loopback interface". Puo' sembrare strano, ma certo software ha bisogno di questa cosa per funzionare.