Sophie

Sophie

distrib > Mandriva > 9.1 > i586 > by-pkgid > f1098342ec4a2b28475e34123ce17201 > files > 1239

howto-html-it-9.1-0.5mdk.noarch.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
 <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
 <TITLE>The Unix and Internet Fundamentals HOWTO: Come funziona Internet?</TITLE>
 <LINK HREF="Unix-Internet-Fundamentals-HOWTO-12.html" REL=previous>
 <LINK HREF="Unix-Internet-Fundamentals-HOWTO.html#toc13" REL=contents>
</HEAD>
<BODY>
Avanti
<A HREF="Unix-Internet-Fundamentals-HOWTO-12.html">Indietro</A>
<A HREF="Unix-Internet-Fundamentals-HOWTO.html#toc13">Indice</A>
<HR>
<H2><A NAME="s13">13. Come funziona Internet?</A></H2>

<P>Per aiutarvi a capire come funziona Internet daremo un'occhiata alle
cose che succedono quando fate una tipica operazione di Internet:
indirizzate un browser alla prima pagina di questo documento, sul sito
Web del Linux Documentation Project. L'indirizzo di questo documento &egrave;
<P>
<PRE>
http://metalab.unc.edu/LDP/HOWTO/Fundamentals.html
</PRE>
<P>che significa che si trova nel file LDP/HOWTO/Fundamentals.html sotto
la
web directory dell'host metalab.unc.edu.
<P>
<H2><A NAME="ss13.1">13.1 Nomi e locazioni</A>
</H2>

<P>La prima cosa che il vostro browser deve fare &egrave; stabilire una
connessione remota al computer dove si trova il documento. A tal fine
deve prima trovare la locazione remota dell'<EM>host</EM>
metalab.unc.edu (`host' &egrave; la forma breve di `computer host' o `host
remoto'; metalab.unc.edu &egrave; un tipico <EM>hostname</EM>). La
locazione corrispondente &egrave; in realt&agrave; un numero chiamato
<EM>indirizzo IP</EM> (spiegheremo pi&ugrave; avanti la parte `IP'
di questa espressione).
<P>A questo scopo il vostro browser interroga un programma chiamato
<EM>name server</EM>. Il name server pu&ograve; trovarsi sul
vostro computer, ma &egrave; pi&ugrave; probabile che giri su un computer del
fornitore col quale il vostro computer dialoga. Quando vi collegate a
un ISP una parte della procedura consiste quasi sicuramente nel dire
al vostro software per Internet qual &egrave; l'indirizzo IP di un name
server sulla rete dell'ISP.
<P>I name server sui vari computer si parlano tra loro, scambiandosi e
tenendo aggiornate tutte le informazioni necessarie per risolvere i
nomi degli host (per metterli in corrispondenza con gli indirizzi IP).
Il vostro name
server pu&ograve; interrogare tre o quattro diversi siti sulla rete nel
processo di risoluzione di metalab.unc.edu, ma di solito questo si
verifica molto rapidamente (tipo in meno di un secondo).
<P>Il name server dir&agrave; al vostro browser che l'indirizzo IP di Metalab
&egrave; 152.2.22.81; a questo punto il vostro computer
sar&agrave; in grado di scambiare direttamente bit con metalab.
<P>
<H2><A NAME="ss13.2">13.2 Pacchetti e router</A>
</H2>

<P>
<P>Quello che il browser vuole &egrave; mandare al server Web su Metalab un
comando come questo:
<P>
<PRE>
GET /LDP/HOWTO/Fundamentals.html HTTP/1.0
</PRE>
<P>Ecco cosa succede. Dal comando si costruisce un
<EM>pacchetto</EM>, cio&egrave; un blocco di bit come un
telegramma che &egrave; `impacchettato' con tre cose importanti:
l'<EM>indirizzo di provenienza</EM> (l'indirizzo IP del
vostro computer), l'<EM>indirizzo di destinazione</EM>
(152.2.22.81), e un <EM>numero di servizio</EM> o
<EM>numero di porta</EM> (in questo caso 80) che indica che
si tratta di una richiesta World Wide Web.
<P>Il vostro computer spedisce allora il pacchetto lungo il cavo (la
connessione modem al vostro ISP o rete locale) finch&eacute; arriva a un
computer specializzato chiamato <EM>router</EM>. Il router
ha nella sua memoria una mappa di Internet, non sempre una completa,
ma
una che descrive completamente il vostro vicinato di rete e sa come
raggiungere i router per altri circondari di Internet.
<P>Il vostro pacchetto potrebbe passare attraverso svariati router lungo
la strada per la sua destinazione. I router sono
intelligenti. Guardano quanto tempo impiegano gli altri router per
avvertire che hanno ricevuto un pacchetto. Usano questa informazione
per dirigere il traffico verso i collegamenti veloci. La usano per
accorgersi se un altro router (o un cavo) sono fuori servizio o
irraggiungibili e quindi, se possibile, ovviare al problema trovando
un'altra strada.
<P>C'&egrave; una leggenda metropolitana secondo la quale Internet &egrave; stata
progettata per sopravvivere alla guerra nucleare. Questo non &egrave; vero,
ma la struttura di Internet &egrave; estremamente adatta a ottenere
prestazioni affidabili anche con l'hardware precario che caratterizza
questo mondo incerto. Questo deriva direttamente dal fatto che la sua
intelligenza &egrave; distribuita tra migliaia di router piuttosto che
riunita in poche enormi centrali (come la rete telefonica). Questo
significa che i malfunzionamenti tendono a essere ben localizzati e la
rete pu&ograve; aggirarli.
<P>Una volta che il vostro pacchetto &egrave; giunto al computer di destinazione
quest'ultimo usa il numero di servizio per inviare il pacchetto al
server Web. Il server Web pu&ograve; capire a chi rispondere guardando
l'indirizzo IP di provenienza del pacchetto con il comando. Quando il
server Web restituisce questo documento lo suddivide in un certo
numero di pacchetti. La dimensione dei pacchetti varia a seconda del
mezzo di trasmissione sulla rete e del tipo di servizio.
<P>
<H2><A NAME="ss13.3">13.3 TCP e IP</A>
</H2>

<P>Per capire come vengono gestite le trasmissioni a pacchetti multipli,
dovete sapere che Internet in realt&agrave; usa due protocolli, uno
sovrapposto all'altro.
<P>Il livello pi&ugrave; basso, l'<EM>IP</EM> (Internet Protocol), sa
come recapitare singoli pacchetti da un indirizzo di provenienza a un
indirizzo di destinazione (&egrave; per questo che si chiamano indirizzi
IP). Tuttavia l'IP non &egrave; affidabile: se un pacchetto si perde o
cade i computer di origine e di destinazione possono non venirne
mai a conoscenza. Nel gergo delle reti, l'IP &egrave; un protocollo <EM>senza
connessione</EM>; il mittente si limita a far partire un pacchetto per
il destinatario e non si aspetta un avviso di ricevuta.
<P>L'IP &egrave; veloce ed economico, comunque. A volte veloce, economico e
inaffidabile va bene. Quando giocate in rete a Doom o Quake, ogni
pallottola &egrave; rappresentata da un pacchetto IP. Se alcune vengono
perse, pazienza.
<P>Il livello superiore, <EM>TCP</EM> (Transmission Control
Protocol), vi d&agrave; affidabilit&agrave;. Questi due computer negoziano una
connessione TCP (cosa che fanno usando l'IP); il ricevente sa che deve
spedire al mittente un avviso di ricevuta dei pacchetti che legge. Se
il mittente non vede un avviso di ricevuta per un pacchetto entro un
certo periodo di tempo (timeout) allora rispedisce quel
pacchetto. Inoltre, il mittente attribuisce a ogni pacchetto TCP un
numero di sequenza, che il ricevente pu&ograve; usare per riassemblare i
pacchetti nel caso che risultino in disordine. (Cosa che si verifica
se un collegamento della rete viene attivato o cade durante una
connessione.)
<P>I pacchetti TCP/IP contengono anche un checksum per consentire
l'individuazione di dati rovinati da collegamenti difettosi. Cos&igrave;, dal
punto di vista di chiunque usi il TCP/IP e i name server, sembra
affidabile passare flussi di byte in coppie hostname/numero di
servizio. Chi scrive i protocolli di rete non deve quasi mai pensare
agli aspetti di basso livello relativi alla pacchettizzazione, al
riassemblaggio dei pacchetti, al controllo degli errori, al checksum e
alla ritrasmissione.
<P>
<H2><A NAME="ss13.4">13.4 HTTP, un protocollo applicativo</A>
</H2>

<P>Torniamo ora al nostro esempio. I browser e i server Web dialogano
usando un <EM>protocollo applicativo</EM> che si appoggia
al TCP/IP, usandolo semplicemente come un modo per passare stringhe di
byte avanti e indietro. Questo protocollo &egrave; chiamato
<EM>HTTP</EM> (Hyper-Text Trasfer Protocol, protocollo per
il trasferimento di ipertesti) e abbiamo gi&agrave; visto un suo comando: il
GET mostrato sopra.
<P>Quando il comando GET arriva al server Web metalab.unc.edu con numero
di servizio 80 verr&agrave; notificato al <EM>demone server</EM>
che &egrave; in attesa sulla porta 80. La maggior parte dei servizi Internet
sono implementati da demoni server che si limitano ad ascoltare sulle
porte, attendono ed eseguono i comandi in arrivo.
<P>Se il disegno di Internet ha una regola generale, questa &egrave; che tutte
le parti dovrebbero essere il pi&ugrave; possibile semplici e accessibili per
gli esseri umani. L'HTTP, e i suoi simili (come il Simple Mail
Transfer Protocol, <EM>SMTP</EM>, che viene usato per
trasferire la posta elettronica tra gli host) tende a usare comandi in
semplice testo stampabile che terminano con un codice di carriage
return/line feed.
<P>Questo &egrave; marginalmente inefficiente: in qualche circostanza potreste
ottenere una velocit&agrave; maggiore usando un protocollo binario di stretta
codifica. Ma l'esperienza ha dimostrato che i vantaggi di avere
comandi facili da descrivere e comprendere per gli esseri umani supera
qualsiasi guadagno marginale di efficienza che si possa ottenere al
prezzo di rendere le cose oscure e complicate.
<P>Di conseguenza, quello che il demone server vi rispedisce via TCP/IP &egrave;
anch'esso testo. L'inizio della risposta assomiglier&agrave; in qualche modo
a questa (alcuni header sono stati omessi):
<P>
<PRE>
HTTP/1.1 200 OK
Date: Sat, 10 Oct 1998 18:43:35 GMT
Server: Apache/1.2.6 Red Hat
Last-Modified: Thu, 27 Aug 1998 17:55:15 GMT
Content-Length: 2982
Content-Type: text/html
</PRE>
<P>Questi header saranno seguiti da una linea vuota e dal testo della
pagina Web (dopodich&eacute; la connessione viene lasciata cadere). Il vostro
browser si limita a visualizzare quella pagina. Gli header servono a
spiegargli come (in particolare, l'header Content-Type gli dice che i
dati restituiti sono veramente HTML).
<P>
<HR>
Avanti
<A HREF="Unix-Internet-Fundamentals-HOWTO-12.html">Indietro</A>
<A HREF="Unix-Internet-Fundamentals-HOWTO.html#toc13">Indice</A>
</BODY>
</HTML>