Teoria: impariamo a conoscere le reti Di questi tempi le reti sono dovunque: ogni dispositivo è connesso.
Qual è il meccanismo che permette alle nostre macchine di comunica re? E come può avvenire una connessione?
Carlo Manuali <c.manuali@linuxpratico.com>
ispositivi dalle più diverse caratteristiche, basati su hardware differenti, come palmari o computer nel senso più esteso del termi ne (dai server Unix ai portatili Windows, dalla
al quale inviare i dati, tale modo di procedere, in
nostra stazione grafica Mac ai cluster di PC per il
caso di interruzione della trasmissione (dovuta, ad
supercalcolo). collegati tra loro con le più svariate
esempio, alla rottura del cavo), isolerebbe i due
tecnologie, dal cavo in rame al doppino telefonico,
sistemi, cosa che invece non avviene per le reti "a
alle onde radio, possono comunicare tra loro attra
commutazione di pacchetto".
verso una serie di regole e protocolli: la suite TCP/IP.
Una volta suddivisa l'informazione in più piccole entità, è necessario specificare un criterio con cui
Tutta interconnesso
ricostruire l'informazione iniziale una volta raggiun
Questa estrema versatilità è da ricercare nella
ta la destinazione: i pacchetti, quindi, dovranno
bontà del progetto iniziale del sistema di comunica
essere marcati in un modo che permetta di rico
zione e dalla struttura estremamente modulare dei
struire l'ordine preciso, così come lo vedeva il mit
procolli utilizzati; essi, infatti, si sviluppano a livelli,
tente. Nel caso della suite TCP/IP questa suddivisio
o layer e sono congegnati in modo tale che quelli
ne viene eseguita aggiungendo alla parte di
superiori possono "ignorare", in parte o del tutto, i
informazione vera e propria, detta payload (nel
dettagli di realizzazione dei livelli inferiori.
nostro esempio il testo della lettera) una prima
Un po' come quando viene spedita fisicamente una
parte, detta header, (nel nostro esempio la data di
lettera in una busta: il livello più alto, il mittente,
spedizione) che contiene tutta una serie di campi
deve soio controllare alcune informazioni, come l'in
ed informazioni che consentiranno la gestione di
dirizzo di destinazione e l'affrancatura, mentre può
ogni specifica porzione di dati.
- e deve - ignorare come vengano implementati (cioè messi in pratica) i livelli inferiori, ad esempio il trasporto: il mittente ignorerà il mezzo di trasporto
fisico della busta, che potrà essere treno, aereo o bicicletta... l'importante è che venga consegnata a destinazione.
Affinchè una applicazione possa interagire con altri computer collegati in rete deve poter inviare "dati", organizzandoli in modo che possano essere "spediti":
tornando all'esempio precedente, la lettera è il dato
INFORMAZIONI
lo sapevate che... Le reti "a commutazione di pacchetto" sono nate per scopi militari: era infatti necessario sviluppare un protocolio che permettesse, anche in caso di guerra, di stabilire la comuni
cazione tra due impianti militari. Grazie all'accorgimento di scomporre le informazioni e lasciarle viaggiare tra host diffe renti lo scopo è stato raggiunto pienamente...
da spedire, la busta è la struttura che il dato deve
avere per poter essere inviato. Nella suite TCP/IP, avremo che la veicolazione delle
A grandi linee, questo è esattamente ciò di cui si
informazioni sarà a carico di due protocolli, detti
occupano questi due protocolli: TCP infatti imple
appunto procolli di trasporto, il TCP (Trasmission
menta un canale per la trasmissione dei dati, si
Contrai Protocol) e UDP (User Datagram Protocol).
preoccupa di suddividere i dati (detti TCP segmenti
Prima di proseguire, è bene approfondire alcuni
passatigli dalle applicazioni e gestisce l'eventuale
concetti fondamentali della moderna comunicazio
ri-trasmissione dei pacchetti necessaria per quelli
ne: ogni volta che si vogliono scambiare dati con un
non correttamente arrivati a destinazione (se un
host remoto, ad esempio un file di grandi dimensio
pacchetto si perde, il protocollo provvede autono
ni piuttosto che una E-Mail con le ultime previsioni
mamente a rispedire il pacchetto); UDP invece,
di Borsa, essi vengono, ogni volta, suddivisi in parti
offre un servizio molto più semplice: esso invia pac
più piccole {chiamate pacchetti) ed organizzati in
chetti di dati (detti UDP datagram) da un host ad un
modo tale che sia possibile, per il ricevente, rico
altro senza preoccuparsi del fatto che essi giungano
struire l'informazione originaria.
effettivamente a destinazione.
Non sempre la comunicazione segue questo proces
Attraverso questo protocollo (UDP) quindi non viene
so di "pacchettizzazione": per quanto sia possibile,
stabilita una connessione preventiva tra i computer
in alcuni casi, un collegamento diretto con il computer
coinvolti nella comunicazione (per questo è detto
Un esempia reale di funzionamento Consideriamo due host sulla stessa rete locale Ethernet che vogliono comunicare attraverso il pro tocollo HTTP; non a caso abbiamo chiamato un host
HTTP client ed un altro HTTP server: la maggior parte delle applicazioni di rete sono disegnate in modo tale che una parte sia considerata il client dell'applicazione, mentre l'altra si preoccupa di assolvere le funzioni di server, ovvero offre un ser
vizio specifico ai client (tale architettura prende il nome di modello client-server). In questo caso, visto che si parla del servizio HTTP, si intende la
possibilità di consultare una pagina web resa dispo nibile da un qualsiasi server web remoto (ad esem pio Apache). In figura 1 vengono specificati quattro protocolli:
HTTP, TCP, IP ed Ethernet; la suite TCP/IP è quindi client A richiede una pagina web al server B: ecco i diversi protocolli implicati nella connessione
una combinazione di diversi protocolli che prende il nome dai due protocolli più significativi quali il TCP e l'IR.
~
Mentre il livello Ethernet, il più basso, gestisce i det tagli per la comunicazione con il mezzo fisico, ed il livello applicazione, il più elevato, si preoccupa della gestione di una specifica applicazione che supporta il protocollo HTTP (nel nostro caso un qual
siasi browser), c'è da chiedersi cosa avviene nei Frame
IP datagram
Bthemef Ethernet Header
IP
Heoder
TCP Header
Dati (payload)
TCP segment Ethernet
IP
TCP
Application
piani intermedi. Il comportamento dei vari livelli si ricollega al fatto
che essi permettono una astrazione di quelli supe riori rispetto a quelli inferiori: questa astrazione, in pratica, si attua aggiungendo, al dato iniziale (che ricordo viene detto payload) creato dal livello appli cazione, una serie di informazioni (header) prima
del dato stesso, come visibile in figura 2. Potremmo quindi dire che, ogni pacchetto TCP [TCP Un pacchetto spedito utilizzando il
protocollo Ethernet: ogni livello aggiunge un header con alcune informazioni
segment) prodotto dal nostro client, viene inserito
in un pacchetto IP (IP datagram), che a sua volta viene incapsulato nella frame Ethernet e spedito sulla rete. Quando esso giungerà a destinazione, il server estrarrà il pacchetto IP dal frame Ethernet
connectionless) e qualsiasi meccanismo di sicurez
ricevuto, per poi ricavare il pacchetto TCP contenu
za della trasmissione o della connessione dovrà
to in esso e quindi il dato.
essere implementato, se necessario, dalle applica zioni di livello superiore.
Il formato dei pacchetti e
Tale protocollo, anche se molto più inaffidabile, risulta di fondamentale importanza per quei servizi di rete (ad esempio per ogni query o risposta del
E' arrivato il momento di dare uno sguardo più da
DNS) che necessitino di una elevata velocità anche
vicino al formato dei pacchetti TCP e IP, in modo da
a discapito della sicurezza: infatti, in tali casi, può
capire dove e come vengono memorizzate le princi
essere accettabile dover semplicemente procedere
pali informazioni. Il pacchetto IP (visibile in figura 3),
con una nuova richiesta nei caso di una perdita di
è formato da un Header (di 5 o 6 parole da 32 bit)
qualche pacchetto.
più un Body, che contiene il payload (ovvero i dati
Una volta che questo canale trasmissivo è stato
incapsulati) del messaggio.
definito (mediante TCP o UDP). occorre organizzare
Nel campo Protocol viene inserito il protocollo utiliz
il movimento dei pacchetti sulla rete, ovvero occor
zato {sostanzialmente TCP o UDP, ma anche ICMP)
re determinare il percorso che questi diversi miliardi
mentre nei campi Source Address e Destination
di pacchetti dovranno seguire, istante per istante,
Address gli indirizzi IP rispettivamente del mittente
per giungere a destinazione.
e del destinatario.
Questa funzione viene svolta da diversi protocolli,
Il pacchetto TCP (mostrato in figura 3), è anch'esso
ma fecalizzeremo la nostra attenzione sul solo pro
formato da un Header di 20 byte più il Payload che
tocollo IP {Internet Protocol).
contiene i dati nel segmento. In questo pacchetto si notino i campi Source Port e
to
~
INFORMAZIONI
La Three-Way
(15:28:41.231816) è possibile notare i due host coinvolti nella
Handshake
comunicazione (nautilus.unipg.it. 1803 > seti.unipg.it.telnet) ad ognuno dei quali viene associata la relativa porta (ovvero viene creato un socket): ephemeral per il client (la 1803) e
II TCP è un protocollo connection-oriented: prima che uno degli interlocutori possa comunicare deve essere stabilita una connessione tra le parti. I passi fondamentali perché questo avvenga sono tre:
well-known per il server (la 23, indicata con il .telnet, essendo una porta nota). Dopo ciò, è presente una S che sta ad indicare che la flag di
SYN nell'header del pacchetto TCP è settata (ciò indica che una connessione sta iniziando): segue quindi l'ISN del client
> II client invia un pacchetto con la flag di SYN settata specificando il numero di porta del server al quale vuole connettersi ed il proprio numero di sequenza iniziale ISN (Initial Sequence Number); > II server risponde con un pacchetto contenente di nuovo la
flag di SYN settata, l'ISN del server e quello del client
(3579088597) e la finestra TCP (window) di trasmissione in byte (win 64240). Nel secondo pacchetto, molto simile al primo, è presente l'ISN
del server (1881957154) e l'acknowledgement dell'ISN del client (ack 3579088598). Nel terzo ed ultimo pacchetto, che conclude la 3-Way
precedentemente ricevuto, incrementato di uno
Handshake. è possibile notare subito un punto ■
(acknowledgement);
(che sta ad
indicare che nessuna flag TCP è settata) seguito da un ack 1
> A sua volta il client rispedisce al server il suo ISN
(detto relative sequence number acknowledgement) che in
incrementato di uno. effettuando il secondo
questo caso corrisponde all'ack dell'ISN del server, ovvero
acknowledgement e stabilendo così la connessione.
1881957155.
L'intero processo prende il nome di Three-Way Handshake
Si noti come gli ISN di client e server siano diversi; questo è
(letteralmente "stretta di mano a tre fasi").
ciò che ci si aspettava in quanto, essendo in presenza di una
Come esempio pratico, nel riquadro seguente si mostra, attra
rete a commutazione di pacchetto, dove ogni pacchetto è
verso uno sniffer di rete - un programma che permette di
indipendente dagli altri in fase di trasmissione, ognuno di essi
mostrare il contenuto dei dati circolanti sulla rete - quali pac
conterrà un valore numerico diverso, via via incrementato,
chetti vengono spediti e ricevuti quando si vuole instaurare
che lo distingue in relazione ad ogni singola connessione.
una connessione fra due host, Nel caso in esame i due client
Da questo momento in poi, la connessione risulta stabilita ed
saranno nautilus (il client) e seti (il server); nautilus cer
il ciient ed il server possono realmente iniziare a comunicare
cherà di collegarsi tramite telnet a seti.
ed a scambiarsi dati; al termine della [oro comunicazione il
Quelli mostrati sopra sono gli header dei primi tre pacchetti
client indicherà di aver terminato l'invio delle proprie richieste
che permetteranno l'avvio della comunicazione, ovvero i tre
(ovvero vorrà terminare la connessione) mediante un pacchet
pacchetti che realizzano la Three-Way Handshake.
to TCP contenente la flag di FIN (FINal acknowledgement) e la
Sul primo pacchetto possiamo notare alcune informazioni
connessione sarà chiusa dal server attraverso un pacchetto
molto interessanti: dopo il cosiddetto timestamp
TCP contente la flag di RST (ReSeT connection}.
15:28:41.231816
nautilus.urilpg.lt.
1803
seti.unipg.lt
.teLuet
: S
3579088597:3579088597(0)
win
6424G
15:2B:41.231970
seti.iinipg.it.
telnet
nautilus.unipg. 11
.1803
: S
1881957154:1801957154(0)
ack
3579G88598 win 5B40
15:28:41.232111
nautUus.unipg.it.
1803
seti,unlpg.lt
.lelnel
:
ack
1 win
,
642-10
Destination Port, che conterranno rispettivamente i numeri di porta del mittente e del destinatario (vedremo nel paragrafo successivo di capire cosa
sono ed a che cosa servono), i campi relativi ai Sequence Number ed Acknowledgement Number
f
Vers
TOS
HLen
Flags
Identification
TTL
ed il campo Window, che contiene il numero massi
Length
mo di byte che il ricevente è in grado di accettare.
Offset
Il mittente potrà quindi continuare a spedire senza
CRC
Protocol
aver avuto conferma della ricezione dei dati inviati
Source Address
fino al limite impostato nella Window: se poi non
Destination Address
arriverà una conferma (acknowledgement) per tali
Options (w/ Padding)
dati, essi stessi verranno ritrasmessi in seguito allo
Payload
t
Destination port
Source port
Sequence number
Rat.
13
-
<
t
>■
checksum
considerata un buffer temporaneo in scrittura per il mittente e in lettura per il ricevente. Nel commentare ciò che contiene il pacchetto TCP
Acknowledgement number Offset
scadere del time-out; la Window può di fatto essere
ci siamo volutamente dimenticati delle flag TCP;
window
esse consistono di sei bit (i quali possono essere
Urgent pointer
"accesi" anche contemporaneamente a seconda
Payload
del particolare significato) che specificano una serie di azioni da intraprendere (ad esempio iniziare o
V
chiudere una connessione, come vedremo più avan In alto, il formato di un pacchetto IP. In basso, quello di un pacchetto TCP
ti} e riportano informazioni sullo stato della connes sione stessa, in particolare quelli di interesse sono:
11
^ SYN
INFORMAZIONI
sincronizza i sequence number per iniziare una connessione;
ACK
convalida l'acknowledgement number;
FIN
indica che il mittente ha finito di inviare i propri dati;
RST
resetta e chiude al connessione;
tasì
una connessione
Ogni connessione completa prevede i seguenti passi: 0 11 client ed il server sono inizialmente in stato di closed: 1 II server crea un socket ed entra in stato di listen {apertura passiva);
Pori Humber e SocRet Ogni applicazione viene identificata, dai livelli di tra sporto TCP e UDP, attraverso numeri di 16 bit chia
mati port number.
2 II client crea anch'esso un socket, invia un segmento TCP con ii flag 5YN settato ed entra in stato di SYN Sent (aper tura attiva); 3 Avviene la Three-Way Handshake: il client ed il server sta biliscono la connessione ed entrano in stato di established;
Ogni servizio è identificato da un preciso numero di
4 Avviene il trasferimento dei dati;
porta, in un intervallo compreso fra 0 e 1023 (tali
5 II client rilascia la connessione inviando un segmento con
porte vengono dette well-known port number); ad
esempio ogni Telnet Server è associato alla porta 23 {TCP), ogni HTTP Server è definito sulla porta 80 (TCP) mentre i'implementazione del TFTP (Trivial File Transfer Protocol) è mappato sulla porta 69 UDP: potete darne uno sguardo alle porte presenti nel file /etc/services.
Per ogni host, la coppia "indirizzo IP/porta" prende il
tenente la flag FIN settata ed entra in stato di FIN Wait 1:
6 II server lo riceve e invia un ACK entrando in stato di dose wait:
7 II client, ricevuto l'ACK. entra in stato di FIN Wait 2, che è caratterizzato dalla chiusura della connessione dal client al server:
8 II server chiude anch'esso la connessione inviando un pac chetto con la fiag di FIN settata e si porta in stato di Last ACK:
nome di socket. Ogni comunicazione in Internet tra
9 II client riceve il pacchetto di FIN ed invia un ACK attivando
due socket viene di fatto resa univoca: tipicamente
un timer al termine del quale potrà effettivamente termi
potrà esistere, in ogni istante, un solo indirizzo IP
nare la comunicazione: questo tempo di attesa è necessa
(client) che, attraverso una applicazione, "apre una porta" (compresa tra 1024 e 65535) e comunica con un altro indirizzo IP (server) che ascolta su una porta
standard (80) relativa al servizio in essere (server
~
rio per aspettare che, nel caso in cui l'ultimo ACK vada perso, il server possa rispedire un nuovo pacchetto di FIN;
IO II server riceve l'ACK finale del client e chiude la comunica zione con un pacchetto contenente la flag di RST settata.
HTTP). Un client, di solito, non deve prestare attenzione a
APPROFONDIRE
quale numero di porta utilizzare dalla propria parte:
tutto ciò di cui ha bisogno è di essere sicuro che esso sia unico all'interno dell'host. I port number iato client sono chiamati ephemeral port number. questo
perché, tipicamente, un client esiste solo mentre l'u
Riferimenti ulteriori Tantissimi sono i link web che parlano di reti, vi segnalo in particolare: http://en.wikipedia.org/wiki/TCP/IP
tente, attraverso un'applicazione, utilizza uno speci
Tra i libri un must è la serie di Richard Stevens "TCP/IP
fico servizio. Un server invece è sempre in esecuzio
Iliustrated", pubblicato da Addison-Wesley.
ne fino a che l'host risulta acceso. Ad esempio il servizio di Domain Name System (DNS) utilizza entrambi i protocolli TCP e UDP sulla
Quindi, per il corretto funzionamento di una rete,
porta 53, il servizio di Telnet utilizza la porta 23 su
ogni host deve saper compiere questa distinzione:
TCP e HTTP l'80, sempre su TCP.
ciò avviene grazie all'ausilio delle subnet mask (let
Inoltre, ogni sistema Unix utilizza il concetto di porte
teralmente, maschere di sottorete), dette anche net-
riservate: infatti, solo attraverso i privilegi di superu-
mask, che indicano quale parte è riservata all'indiriz
tente (root) è possibile utilizzare le porte inferiori alla
za m ento della rete e quale è invece riservata
1024, mentre le restanti sono di solito utilizzate, da
all'indirizzamento dei singoli host.
ogni implementazione TCP/IP, per le ephemeral pori.
In particolare abbiamo:
L'indirizzamento
classe A da 0.0.0.0 a 127.255.255.255 (netmask 255.0.0.0); c/asse B da 128.0.0.0 a 191.255.255.255 {netmask 255.255.0.0); ctesse Cda 192.0.0.0 a 223.255.255.255 (netmask 255-255.255.0).
Ogni computer, ma più precisamente ogni interfaccia
12
di rete, per comunicare deve avere un unico indirizzo
Alcuni di questi indirizzi IP, però, non sono disponibili
Internet, chiamato indirizzo IP.
su Internet, ma sono riservati all'uso all'interno delle
Questi indirizzi sono normalmente scritti attraverso
reti locali: vi sono indirizzi privati appartenenti a cia
quattro numeri decimali, uno per ogni byte di indiriz
scuna classe, A, B e C. In particolare, tutti gli indirizzi
zo (notazione chiamata dotted-decimai); essi sono
della classe A lO.x.y.z, sono liberi per usi locali, con
inoltre organizzati in classi (sostanzialmente tre se
ben 16 milioni di indirizzi IP. Anche gli indirizzi da
tralasciamo le classi particolari o quelle riservate per
172.16.x.y a 172.31.x.y sono disponibili per usi loca
usi futuri) e si differenziano per il fatto che viene
li: si tratta di 16 classi B da circa 65.000 indirizzi cia
riservato un numero diverso di byte per specificare la
scuna. Infine, gli indirizzi privati nelle classi C appar
rete di riferimento piuttosto che l'indirizzo IP dell'host
tengono al range 192.168.x.y, ossia 254 classi C da
all'interno della rete stessa.
254 indirizzi IP ciascuna.
~
Teoria: una introduzione
al protocollo HTTP L'Hi/pcr-Tcxt Transfer Protocol è alla base della comunicazione che
sottende tiliti struttura del World Wide Web: scopriamo insieme come funziona, i suoi limiti e le sue potenzialità.
Carlo Manuali <c.manifaU@Unuxpratico.com>
III protocollo HTTP,
acronimo di Hyper-Text
Transfer Protocol, è un insieme di regole che stabilisce "come" le risorse su internet (file
la transazione HTTP
html, immagini, documenti di diverso tipo} debbano essere scambiate tra un server ed un client.
Come detto,
Esso definisce, insieme al più sicuro HTTPs, il
client/server: un client HTTP apre una connessione
anche HTTP
utilizza il
modello
celebre World Wide Web, o, più semplicemente
ed invia un messaggio di richiesta ad un server
web, almeno per come questo ultimo è general
HTTP; questo ultimo restituisce al client un messag
mente inteso.
gio di risposta che. di solito, contiene la risorsa che
Questo protocollo, come molti altri, segue il modello
è stata richiesta. Dopo aver ricevuto risposta, il
client/server: esiste un client HTTP, rappresentato
server chiude la connessione (questo nella versione
da un quasiasi browser (ad esempio Mozilla o
1.0 del protocollo; nella versione 1.1 il server può
Internel Explorer), che invia richieste ad un server
rispondere a più richieste prima di chiudere): per
http (ad esempio Apache, Microsoft IIS), che si
questo modo di operare il protocollo viene definito
preoccupa di restituire le opportune risposte.
stateless, ovvero non mantiene alcuna informazione
HTTP lavora sopra lo stack TCP/IP, rispondendo
di stato tra connessioni successive.
generalmente alle richieste effettuate alla porta 80
L'esempio di richiesta HTTP inviata da un browser
(sebbene sia possibile specificare qualsiasi altra
potrebbe essere la seguente;
porta, come vedremo più avanti negli esempi pro posti in questo articolo) e si colloca a livello applica
GET
/index.html
HTTP/1.0
zione, ovvero all'ultimo livello che interagisce con lo spazio utente.
La seguente è un esempio tipico di risposta
Come mostrato in figura 1. ogni richiesta HTTP (o parte di essa) verrà incapsulata in un pacchetto
Header-Hame:
valore
TCP, a sua volta passato al livello IP che verrà infine
Header.Naroe:
valore
spedito sulla rete tramite l'interfaccia fisica, gene
taltri
ralmente una scheda Ethernet; ogni passaggio di
<una Unea vuota>
livello comporterà quindi l'aggiunta degli opportuni
<corpo del messaggio
header]
(opzionale)?
header specifici del particolare protocollo. Analizziamo in dettaglio cosa è avvenuto: è stata utilizzata la parola chiave GET, che è uno dei meto
di più comuni utilizzati con il protocollo HTTP; esso, sostanzialmente, serve a richiedere una risorsa, nel nostro caso il file index.html della root.
Uteri*
Il percorso specificato come secondo parametro (/index.html) è relativo alla risorsa locale che viene richiesta ai server web con il quale è stato
Doti (lichi est a htlpj
instaurato il collegamento.
Elhernei Hcoder
TCP
Doli (mhieslD htlp) s: ■., ■■"*.:■
Heodof
o livello TCP (TCP segmenl)
IP
TCP
Doli (richiesta http) iiccpWal;
Headei
Header
a livello IP {IP dorogrom)
IP Header
ICP Header
Doli ( richieda http) incapiti lai i
L'ultimo valore è la versione del protocollo HTTP uti lizzata, che può essere la 1.0 o la 1.1, più recente e ormai standard tra i browser più moderni.
Una tipica linea iniziale di risposta potrebbe essere:
a livella Ethernet (Elhernet Fiume)
HTTP/1.1 2G0 OK
Date: i
) Uno schema dell'incapsulamento di una richiesta HTTP in una connessione
Wed.
Server:
14 Apr 2G04
Apache/2.8.47
13:21:14 GMT (Debian GNU/Linux)
La prima riga è un controllo sullo stato della richie sta: in dettaglio, viene specificato la versione del
INFORMAZIONI
y) Altri metodi: HCftP, POST
una form HTML) sia con il metodo GET che con il metodo POST; diventa però indispensabile utilizzare quest'ultimo quando i dati trasmessi risultano essere dati sensibili che
A fianco del metodo GET. il più utilizzato per effettuare una
devono essere mantenuti segreti e protetti da sguardi indi
semplice richiesta, esistono almeno altri due metodi di uso
screti, come ad esempio informazioni di autenticazione o
comune: HEAD e POST
numeri di carta di credito.
Una richiesta effettuata con il metodo HEAD. è identica ad
In particolare, l'invio di informazioni attraverso form HTML o
una qualsiasi richiesta effettuata con il metodo GET, eccetto
tecniche simili (come l'utiìizzo di campi HIDDEN) è uno dei
che HEAD richiede al server di restituire solamente gli header
metodi die permettono di implementare la persistenza delle
della risorsa specificata e non l'eventuale risorsa stessa; per
connessioni (o la loro illusione...) sul protocollo HTTP. ovvero
esempio, tale metodo è utile per determinare le caratteristi
la possibilità di mantenere le informazioni su quello che si è
che di una risorsa senza effettuarne il download.
fatto in precedenza senza perdere quindi il proprio stato.
Il metodo PO5T invece è utilizzato per inviare dati da un client
Tipicamente il server, ricevute le opportune informazioni, può
al server; tipicamente viene utilizzato all'interno di script CGI
manipolarle, aggiornarle e restituire il nuovo stato al client;
o simili per trasmettere informazioni quali ad esempio login e
ciò è reso possibile attraverso l'utilizzo dei cosiddetti cookies
password per l'accesso ad una risorsa protetta. Esso differisce
(letteralmente "biscotti"), ovvero semplici file di testo memo
dal metodo GET per i seguenti caratteri:
rizzati temporanea
> esiste sempre un blocco dati nel corpo del messaggio che
contengono una
mente sul client che segue gli header della richiesta;
serie di informazioni
> i dati passati non sono visibili sulla URL inviata al server (e
persistenti, definite
quindi ad esempio non vengono memorizzati sui file di log
dal server, che
del server web), ma contenuti all'interno della richiesta
identificano univo
stessa:
camente l'utente
> la risorsa richiesta è di solito un programma per manipolare
web permettendo
i dati inviati e non una risorsa da restituire;
quindi al server
> la risposta HTTP è normalmente l'output del programma e
stesso di capire a
non un file o simili.
che punto era arri vata la transazione
E: quindi possibile effettuare l'invio di dati (ad esempio attraverso
INFORMAZIONI
I codici di stato
e di proseguirla.
protocollo HTTP utilizzato (riprende, in questo senso, l'ultimo campo della richiesta formulata dal browser. come visto poco sopra), viene riportato un codice di ritorno che, nel caso specifico. 200 OK.
Ecco i più comuni codici di stato restituiti dal server: lxx indica un messaggio informativo; 2xx
indica una richiesta che ha avuto successo;
3xx indica una redirezione della richiesta su un'altra locazione; 4xx
indica un errore nella richiesta da parte del client;
5xx indica un errore nella risposta da parte del server.
Alcuni esempi tra i più frequenti: 200 OK
la richiesta ha avuto successo e la risorsa viene restituita nel corpo del messaggio: 301 Moved Permanently
la risorsa richiesta è stata assegnata permanentemente ad
indica che la risorsa richiesta è stata restituita correttamente.
Seguono alcune linee di intestazione che riportano
informazioni circa le richieste, le risposte e gli oggetti presenti nel corpo del messaggio; ad esem
pio possono essere presenti informazioni sulle auto rizzazioni, sul tipo di contenuto, sulla data dell'ulti
ma modifica della risorsa, sulla data di scadenza, la lista dei metodi consentiti, il tipo di browser o se la pagina può essere o meno posta nella cache del browser.
Come ulteriore esempio di risposta si riportano gli header di una pagina web (index.php) di un server
un'altra URL. il client dovrebbe utilizzare la nuova URL per
web Apache con il supporto al linguaggio PHP; si
accedere alla risorsa;
noti che dopo un'ora la risorsa non sarà più valida
302 Moved Temporarily
ed il client dovrà effettuare una nuova richiesta per
la risorsa richiesta risiede temporaneamente su un'altra
URL, il client dovrebbe continuare ad utilizzare l'URL originaria:
401 Unauthorized
la consultazione della pagina. Date:
Sun,
08 Feti
2004
17:54:58 GHT
la risorsa richiesta richiede l'autenticazione da parte del
Server: Apache/1.3.20 {Unix)
client: tipicamente è necessario disporre di login e password per accedere a risorse di questo tipo;
X-Powered-By:
PHP/4.0.6
Eipires:
08
403 Forbidden
Sun.
Content-Tyoe:
Feb 2894
PHP/4.9.6
18:24:58 GHT
text/html
il server ha interpretato la richiesta, ma non si dispongono
i giusti permessi per accedere alla risorsa: tipicamente si parla di directory il cui accesso è consentito solo ad alcune reti o indirizzi IP o, ancora, problemi di permessi: 404 Not Found
il server non ha trovato la risorsa richiesta; 500 Internai Server Error
il server ha generato un errore interno che non ha permesso l'elaborazione della richiesta.
14
L'ultima parte, opzionale, di un qualsiasi messaggio HTTP è il Message Body; comunemente, si trovano qua gli eventuali dati che il client invia al server (come ad esempio i parametri per effettuare una
ricerca) piuttosto che la risorsa che il server invia, su richiesta, al client, come ad esempio un file testuale, un'immagine o un archivio.
Wirtual Host e HTTP/1.1
si desidera connettersi nell'apposita barra del browser
Come si è potuto osservare è sufficiente utilizzare
e premere Invio. Ma cosa accade dopo?
un browser per effettuare richieste HTTP: per "sco
Il browser risolve l'indirizzo recuperando il relativo
prire" il protocollo, è possibile utilizzare il comando
IP, ed effettua, se non viene specificata nessun'al-
telnet collegandosi alla porta 80 del server web, in
tra informazione a parte il dominio, una richiesta di
questo modo
tipo GET sulla root del dominio richiesto. Non si incontrano problemi fino a quando un server
S
telnet
indirizzo server web
Web è configurato per fornire risorse di un solo
80
dominio (ad esempio, http://wvw.alfa.org). E' molto semplice: basta digitare l'indirizzo al quale
Ma se io stesso server Web potesse fornire anche le risorse (pagine, immagini) di un aftro sito, ad esem
INFORMAZIONI
lo standard CGl Con CGl (acronimo di Common Gateway Interface) si fa riferi
pio www.beta.org oppure www.gamma.org? La richiesta che è stata effettuata inizialmente
GET
/
HTTP/1.6
mento ad un protocollo standard che specifica una serie di
in nessun modo specifica quale siano le risorse
variabili d'ambiente e di regole per la gestione della comuni
desiderate.
cazioni tra un client e un server mediate il protocollo HTTP.
Questo è uno dei limiti della versione 1.0 del proto
I cosiddetti script CGl sono quindi dei programmi che vengo
collo HTTP: ad ogni coppia (Indirizzo
no eseguiti sul server web per intraprendere una serie di azioni a seconda degli input forniti in ingresso: tipicamente raccolgono una serie di parametri provenienti dal client. li
IP,
porta),
può corrispondere un solo dominio. Questo, quando gli indirizzi IP sembravano veramente tanti e si
elaborano localmente, e producono l'opportuna risposta,
potevano associare vari indirizzi al server web {uno
adeguatamente formattata. Tali programmi possono essere
per ogni dominio ospitato), non era un problema.
scritti utilizzando diversi linguaggi come C, C++, Peri, Shell
Quando gli indirizzi IP si sono dimostrati assai limi
Unix, TCL, JAVA ed altri ancora.
tati in numero, si è dovuto correre ai ripari: la solu
Le variabili CGl - come ad esempio la "celebre" QUERY STRING, che contiene tutte le informazioni presenti dopo il ? in una URL oppure le variabili CONTEWTTYPE o CONTEA LENGTH utilizza
zione si chiama HTTP l.l, la nuova versione del pro tocollo. Fino alla 1.0, infatti, l'unico modo di avere
te rispettivamente per specificare il tipo e la lunghezza di un
più domini forniti dal solito server web era di asso
messaggio HTTP - possono essere manipolate attraverso pro
ciarli a diverse coppie IP:porta.
grammi che vengono eseguiti sul client, scritti attraverso lin
Spesso TIP era unico e l'unico modo possibile di
guaggi come Javascript o VBscript.
procedere consisteva nell'assegnazione di porte diverse ai vari URL, in questo modo:
INFORMAZIONI
ubi, ubi Una URL (acronimo di Uniform Resource Locator) è l'indirizzo
di una risorsa che è recuperabile attraverso uno dei protocolli (chiamati schemi) distribuiti su Internet. Nel caso del protocollo HTTP, una URL è definita dalla sintassi: ctipo schema>;//<http server host>:<http server oort> </percorso alla_ri5orsa>?=parametri delta query>
ad esempio: http://www. alt relinux. coni :8G/index.php
o più semplicemente: http://www.olt relinux. corti
Una URI (acronimo di Uniform Resource Identifier) è la defini zione più astratta per l'accesso alle risorse in maniera univer sale; in particolare, una URL è semplicemente un sottoinsieme
delle URI che fa utilizzo del concetto di "locazione di rete" per la definizione dì una risorsa, mentre una URN utilizza il concet to di "nome persistente". Le URI di uso più comune sono: ftp://ftp.is.co.za/rfc/rfclS08.txt Schema (ftp) per il servizio di trasferimento file;
http://www.kernel.Org/pub/linux/kerneT/v2.6/patch-2.6.3.bz2 Schema (http) per il servizio di trasferimento di ipertesti;
mai!to:c,manuali@oltrelinux.cam
Porta
80
http://www.alfa.org
Porta 8089
http://wwvi.beta.org
Porta eaei
http://hww.gamna.crg
Più che una soluzione, si trattava di una toppa, visto che. a parte www.alfa.org, gli altri indirizzi dovevano essere raggiunti con un URL di questo tipo, assai scomodo e poco immediato http://www.beta.org:8080 http://wvw.gamma.org:8081
Perché, digitando solo http://www.beta.org sul browser, senza specificare alcunché, si sarebbe raggiunto rURLwww.alfa.org e non quelio richiesto. Con HTTP l.l la soluzione diventa elegante; anziché effettuare una semplice GET, la richiesta diventa un minimo più complessa: GET
/
Host:
HTTP/1.1 wrto,alfa.org:80
Adesso, anche se più URL vengono tradotti in un
solo indirizzo IP, la direttiva Host non permette equìvoci di sorta.
GET
/
Host:
HTTP/1.1
www.alfa,org:80
Schema (maìlto) per il servizio di posta elettronica: news:comp.infosystems.www.servers.unix Schema (news) per il servizio di newsgroups.
HTTP/1.1
2GG
Date: Wed,
OK
14 Apr 2064
14:16:29 GMT
Server: Apache/2.0.47 (Debian GNU/Linux)
15
Last-Modified: ETag:
Wed,
14 Apr 28B4
Date;
14:QS:58 GMT
Accept-Ranges:
Content-Type:
X-Pad:
ETag:
24
text/html;
14
Apr
Wed,
Content-Type: X-Pad:
In grassetto si può osservare la richiesta, poi gli
sei
14 Apr 2G94 14:96:17 GHT
bytes
Content-Length:
sei nel dominio dì ALFA
14:17:16 GMT (Debian GNU/Linux)
"638dl-18-7b69484GM
Accept-Ranges:
charset=IS0-BB59-l
avoid browser bug
2B64
Apache/2.Q.-17
Last-Hadified:
bytes
Content-Length:
Wed.
Server:
-Iff31-18-7a475d8e-
24
text/html;
charset=I50-8859-1
avoid browser bug
nel dominio
di
BETA
header di risposta e, in rosso, il corpo del messag
gio. Ecco come cambia richiesta e risposta per il
L'output "sei nel dominio di Alfa" e "sei nei domìnio
dominio http://www.beta.org
di BETA" sono il contenuto di due file index.html
GET
sul web server (Apache in questo caso).
posti nella directory radice relative ai virtual host /
Host:
HTTP/l.l www.beta.org:BB
HTTP/l.l
Estensioni al protocollo HTTP: WebPIIV
200 OK
HTTP. come si è potuto verificare. è un protocollo in continua evoluzione. Sono molte le caratteristiche via via aggiunte degne di nota: tra queste, una in particolare risulta estremamente utile. WebDAV, acronimo di Web-based Distributed Authoring and Versioning.
L'uso più semplice che si può fare di WebDAV è la Windows
Mia
(sopra) e Linux (sotto,
f* System: FAT
S»» dsporAfc: 1,ro GB
ij' Parato A t&tialiQ
Wnasm lutai: 24,4 GB
creazione di "dischi virtuali" (figura 2) sul web. interrogabili utilizzando semplicemente dei web browser (quelli di nuova generazione supportano
konqueror):
nativamente le estensioni WebDAV).
una
Tali dischi virtuali possono essere "mappati" sul
condivisione
webbsv può
sistema utilizzato come fossero, a tutti gli effetti,
essere vista
delle unità fisiche, la cui velocità di collegamento,
come un
normale device
ovviamente, dipenderà dalla connessione. Ecco le fondamentali caratteristiche di WebDAV: > la possibilità di creare, eliminare, coilegare ed
1 7«Ei«uaBleF*e MUMUnHprin.
i
interrogare ie diverse pagine web, per recuperare informazioni come la data di creazione o l'autore della risorsa (properties);
> la possibilità di creare insiemi di documenti orga
INFORMAZIONI
nizzati gerarchicamente, come in un filesystem
~
(collections);
Bilerimenti e BfCs HTTP: Thè Definitive Guide Autori: D. Gourley, B. Totty - Editore: O'Reilly HTTP Made Really Easy http-7/j marshall.com/easy/http/
:-- la possibilità di mantenere e permettere a più persone di lavorare su una stessa risorsa contem poraneamente, evitando collisioni (locking);
> la possibilità di muovere (ad esempio copiare o spostare) risorse web fra locazioni remote (namespace operation).
What is SSL? http://www.r5asecurity.com/rsalabs/faq/5-l-2.html
R5A-based Cryptographìc Schemes http://www.rsasecurity.com/rsalabs/rsaalgorithm/ WebDAV Homepage http://www.webdav.org/
Thè Common Gateway Interface (CGl) Specification http://hoohoo.ocsa.uiuc.edu/cgi/interface.html
HTTP/1.0 (RFC 1945) http://www.faqs.org/rfcs/rfcl945.html
HTTP/l.l (RFC 2616) http://www.faqs.org/rfcs/rfc2616.html
Uniform Resource Identifiers - URI (RFC 2396) http://www.faqs.org/rfcs/rfc2396.html
HTTP Extensions for Distributed Authoring - WebDAV (RFC2518) http://www.faqs.org/rfcs/rfc251S.htmi
16
Attraverso le estensioni WebDAV è quindi possibile
avere un unico servizio, l'HTTP. che comprende le stesse funzionalità che di solito vengono offerte da
servizi quali ad esempio FTP (File Transfer Protocol) per il trasferimento di file remoti o CVS (Concurrent
Versions System) per la gestione delle versioni nello
sviluppo di software da parte di una comunità di utenti Internet.
Conclusioni II protocollo HTTP, pur nella sua semplicità, non fini sce certo qua: sono ancora molti gli aspetti da trat
tare (uno per tutti, le connessioni sicure, HTTPs), che verranno analizzate nelle prossime pagine.
~
Comprendere il DNS: accenni di teoria Capire a fondo il DNS è fondamentale non solo per un utente Umi.x
ma per chiunque abbia a die fare con le reti: siamo di fronte ad un protocollo atipico, utilizzato da tutti gli altri sennzi...
Carlo Manuali <c.manuali@linuxpratico.comj
Ogni persona può essere identificata attra verso una serie di strumenti come la carta d'identità, la patente di guida, un certificato
di nascita o dalle proprie impronte digitali; più o
127.0.e.1
localhost
meno nello stesso modo anche ogni singolo host.
80.17.149.253
karma
collegato ad Internet, può essere identificato con
varie tecniche. Ogni computer, come noto, deve
Tale file deve essere presente per tutti gli host che
essere dotato di un proprio indirizzo IP per poter
vogliono utilizzare tali nomi, un sorta di copia della
comunicare attraverso una rete basata sul protocol
stessa agenda con gli indirizzi.
lo TCP/IP; si parla (per il momento) di 4 byte, solita
E' ancora una soluzione molto utilizzata in ambito
mente espressi in una notazione decimale x.y.w.z.
locale: se avete pochi computer a casa o in ufficio,
Tutte le tecniche di identificazione sono ugualmente
anziché configurare un DNS potrebbe essere una
utilizzate? Certo che no.
prima soluzione utilizzare un tale elenco su
Cosi ogni mattina accogliamo nostra sorella con un
/etc/hosts.
semplice "Buongiorno Claudia", e non attraverso i
I limiti di un simile approccio sono ben noti: pensate
suoi identificativi propri (e univoci) come ad esem
che ogni volta che deve essere effettuata una modi
pio "Buongiorno CI. AE12345678": nello stesso
fica (anche la semplice variazione del nome del
modo, ci si è preoccupati di rendere più semplici,
computer, da Shinji a Ataru ad esempio) costringe
intuitive e mnemoniche tutte le operazioni necessa-
tutti i computer che dispongono di tale file ad
rie in una rete di computer, identificando i singoli
aggiornarlo con le modifiche effettuate, altrimenti ii
computer su Internet con un nome e non con i! pro
nuovo nome del computer. Ataru. sarebbe scono
prio indirizzo IP (www.oltrelinux.com, ad esem
sciuto alia rete.
pio, e non 80.17.149.253)
Se i nomi dei computer da cambiare fossero più di
Raggiungere questo obiettivo, però, non è stato né
uno, addirittura in due centri differenti, andrebbe
semplice né tantomeno immediato. Inizialmente, la
analizzato ii file hosts voce per voce per trovare le
soluzione più semplice che fu trovata riguardò la
modifiche, e creare un nuovo file con le registrazio
scrittura di un file all'interno del quale fossero elen
ni tutte aggiornate...
cati tutti gli host. come in una agenda.
Insomma. c'è proprio bisogno di una centralizzazio
Ad oggi sembrerebbe follia, visto i milioni di host
ne delle competenze!
sparsi per il mondo, ma all'epoca, quando i computer nella rete Internet erano veramente pochi
Arriua il DNS
(qualche decina al massimo), la cosa funzionava e
Per risolvere i problemi appena visti si pensò di pro
anche piuttosto bene.
gettare un protocollo che garantisse scalabilità (non
II file /etc/hosts possiamo considerarlo un retaggio
doveva soffrire più di tanto l'aumento degli host
di quegli anni: in esso, infatti, sono elencati indirizzi
collegati), che organizzasse le informazioni in
IP e nomi dei computer, in questo modo:
maniera gerarchica ma che, allo stesso tempo, ren desse automatica e consistente ogni
INFORMAZIONI
hosts anche su Windows li file hosts è presente anche sulle vari versioni di Windows,
modifica
rispetto all'intera rete Internet (per evitare le sovrapposizioni di nomi e indirizzi IP). La scommessa non era delle più facili: quello che sarebbe nato si configurava come uno dei più grossi
database distribuiti all'interno della grande rete. Né
e mantiene lo stesso formato di quelli presenti nei vari
si poteva centralizzare tutto in maniera totale, solu
Unix. E' possibile rintracciare tale file al percorso:
zione forse facile da implementare, ma sicuramente
\WINDOWS\system32\dnvers\etc\tiOStS
non ottima perché avrebbe sofferto di grossi proble mi di crescita e di gestione.
Considerate che \WIND0WS può cambiare a seconda delle versioni di tale sistema (in alcune installazioni la directory e\WINNT).
l'idea del DHS L'idea di base è semplice, ma è quanto di più inge gnoso sia stato progettato: non potendo sapere
17
mediante una gerarchla di server dei nomi, sia il
"tutto", si è scelto un approccio diverso, che possia mo identificare con "saper sempre a chi chiedere".
protocollo di livello applicativo che permette agli
Un esempio estremamente banale (e estremamen
host di comunicare con i server dei nomi in modo
te semplificativo, serve comprendere l'idea) chiarirà
da fornire il servizio di traduzione.
l'approccio: gli oggetti di casa hanno una loro collo
Esso utilizza la porta 53 generalmente su UDP (ma
cazione che gli altri membri della famiglia poco
anche TCP) ed è comunque un protocollo applicati
conoscono; la madre saprà tutto della cucina, il
vo leggermente atipico rispetto agli altri servizi; in
padre del garage, voi della stanza dei computer.
effetti gli altri protocolli fanno utilizzo del servizio di
L'approccio "file /etc/hosts" prevede una unica lista
DNS stesso come base circa il proprio funzionamen
che presenta l'indicazione di ogni singolo oggetto di
to, come ad esempio per l'HTTP: in ogni transazione
tutte le stanze, una tecnica di gestione scomoda
di questo tipo, il browser prima di tutto si preoccu
come si è visto: l'acquisto di un nuovo mouse o di
perà di recuperare l'indirizzo IP del server web da
un nuovo trapano obbligherebbe l'aggiornamento
consultare, e solo allora potrà finalmente procedere
della lista per tutti i membri.
all'instauramento della connessione HTTP.
L'approccio nuovo "alla DNS" prevede un "respon
Tale fase di traduzione preventiva viene quindi
sabile" che gestisca la collocazione degli oggetti
effettuata tramite un server DNS che risponde alla
nella propria zona di "controllo": quando qualcuno
richiesta del browser.
vuoi conoscere la collocazione dei DVD vergini,
il DNS fornisce, oltre alla traduzione degli hostname
chiede al responsabile della stanza computer, che
in indirizzi IP, altre importanti funzionalità come ad
gli indicherà la collocazione esatta dove andarli a
esempio l'aliasing degli host: un host con un
prendere.
hostname
Ogni volta deve avvenire questa richiesta? Non
Hostname, può avere uno o più alias (letteralmente,
complesso,
chiamato
nome; ad
Canonical
sempre: ad esempio, se avete appena effettuata
pseudonimi) del
una richiesta dei DVD vergini, e il DVD masterizzato
zeu5-pub.kernel.org corrispondono due alias quali
esempio al
nome
si è rovinato, non sarà necessaria domandare nuo
kernel.org ewww.kernel.org.
vamente riguardo la locazione dei supporti da inci
Se si dovesse cambiare per qualche motivo l'indiriz
dere: è passato un tempo "ragionevole" (poi si
zo IP o l'hostname di uno dei server conosciuto da
vedrà questi termini come vengono formalizzati), e
amici o società e magari registrato su diversi motori
si darà per buono che la locazione precedentemen
di ricerca, ciò risulterà totalmente trasparente
te comunicata sia ancora valida.
attraverso la modifica di poche righe di configura zione: il sito sarà sempre raggiungibile attraverso
Un po' di rigore
l'indirizzo solito (www.kernel.org), anche se in real
Esempi a parte, cerchiamo un minimo di rigore
tà esso corrisponderà ad un diverso hostname con
nelle definizioni: con DNS (Domain Name System) si
un differente indirizzo IP.
identifica sia il database distribuito, organizzato
INFORMAZIONI
I Messaggi DHS
diversi indirizzi IP; quindi od esempio potrà specificare tutti gli indirizzi IP che sono associati al serverwww.kernel.org.
I messaggi di richiesta e di risposta del protocollo DNS pre
authority section: contenuta in un messaggio di risposta,
sentano il formato visibile in figura.
comprende i record di risorsa RR relativi ad altri server elei
I primi 12 byte costituiscono l'header del messaggio, costi
nomi assoluti, ad esempio nella risposta di un root name
tuito da sei campi: il campo ident if ication (2 byte) è un
server che specifica chi sia il server dei nomi autoritativo di
numero che identifica la richiesta; esso viene copiato nel
un particolare dominio.
messaggio di risposta, in modo tale da permettere al client di associare la risposta ricevuta alla richiesta inviata. II campo flags (2 byte) contiene invece diversi indicatori che specificano informazioni quali, ad esempio, se il mes
saggio è una richiesta o una risposta, se un server dei nomi è un server autoritativo per il nome richiesto, se la richiesta è ricorsiva o se il server in questione supporta la ricorsione. l successivi quattro campi (di 2 byte ciascuno) indicano il numero di occorrenze di ogni tipologia di dati presente nello specifico messaggio DNS, in particolare: questions section: contiene informazioni sulla richiesta
(query) che è stata inoltrata: questa sezione comprende il nome che è stato richiesto e il tipo di richiesta relativa al nome: ad esempio se si sta richiedendo l'indirizzo IP di un hostname si parla di query di tipo A, oppure se si stanno
rnUh.ioii.i! information section: contenuta in un messag
gio di risposta, comprende altri record di risorsa RR utili; ad esempio, in una risposta ad una query di tipo MX, conterrà un RR di tipo A che specificherà anche l'indirizzo IP del server di posta, il cui hostnome è già specificato nella sezio ne answers.
r
31
16
Il
idonlificolion
(lag*
numbor of questioni
numhci o( nniv erRRi
number o( outhority RRi
nurnbof ot odo Hi :nol RR&
questioni section (DNS query) answers section
(numero variabile di RR)
ricercando informazioni sul server di posta di un dominio si parla di query di tipo MX.
answers section: contenuta in un messaggio di risposta, comprende i record di risorsa RR per il nome che era stato richiesto in origine: ogni risposta potrà quindi contenere RR multipli, poiché ad un hostname possono corrispondere
18
121
authority section (numero variabile di RR) odditionol imormalion section (numero variabile di RR)
variabile
INFORMAZIONI
lina zona DNS
zione: se questo non può soddisfare la richiesta - cerca nella propria "memoria", ma non trova la
registrazione - il server locale diventa a tutti gli
Prendiamo spunto da come il più popolare tra i DNS Server.
effetti un ciient che vuole portare in fondo la richie
Bind, gestisce i parametri di configurazione delle zone per
sta per conto del ciient iniziale.
mostrare una loro rappresentazione.
Interroga quindi il server dei nomi radice che, se ha la registrazione richiesta invia la risposta a destina
STTL 3h
casauia.lan. IH SOA
dns.casamia.lan.
2D04D61501
tiostmaster.dns.casamia.tan.
zione, se non ce l'ha gira la richiesta al server DNS
;
Serial
3h
;
Refresh
autoritativo, quello che ha "sicuramente" la risposta
Ìli
;
Retry
alla richiesta posta.
IH
;
Expire
Ih]
;
Negative cache
Il ciient iniziale (il browser) non ha visibilità di tutta questa serie di passaggi effettuati tra vari server
casamia.tan.
IN
NS
tìns
catiera. casamia. lari.
IN
A
192 .168. ie. tee
cucina.casanua.lan.
IN
A
192 .168. 1D. BO
sorella.casamia.lan.
IN
A
192 .168. ie. 90
dns.tasamia.lan.
IN
A
192 .168. 1Q. 200
.casa mia
. lan.
router.casamia.lan.
IN
A
192 .168. 10. 1
ns.casamla.lan.
IN
CNAHE
dns
gateway.essamia.lan.
IN
CNAHE
.casa
ila . lan.
DNS: tutto avviene in maniera trasparente. Proprio per migliorare le performance rispetto al
ritardo e per ridurre il numero di messaggi DNS nella rete esiste il cosiddetto meccanismo di caching del DNS. Quando un server dei nomi riceve una correlazione DN5 per qualche hostname, esso la deposita nella sua memoria locale (disco o RAM)
Questa è la struttura di una zona locale di una casa tecnologica. Viene fissato un TTL di 3 ore: tale valore indica la validità della
mentre il messaggio attraversa la catena dei server dei nomi. Data una correlazione hostname/indirizzo
cache relativa alle informazioni della zona stessa: trascorso il
IP depositata nella cache (di solito valida per non
periodo indicato con TTL, sarà necessario effettuare una nuova
più di due giorni), se al server dei nomi arriva un'al
richiesta.
tra richiesta per lo stesso hostname, esso potrà
La direttiva SOA (Start of Autorityì sta a significare che questo DNS è autoritativo per la zona casamia.lan. Il serial è un valore progressivo, che deve essere aumentato ogni volta che viene aggiornata la zona, per far capire altri altri server che sono state effettuate modifiche. Da notare alcuni parametri:
> il campo NS identifica il nameserver per la zona (dns.casamia.lan):
> il campo A indica l'associazione diretta tra hostname e indi rizzo \P (carnera.casamia. lan risolverà l'indirizzo 192.168.10.100);
> il campo CNAME identifica un alias:
router.casamia.T.an e
quindi fornire l'indirizzo IP desiderato anche se esso non rappresenta il server dei nomi autoritativo per
quell'hostname.
Io spazio dei nomi: Domini e Zone Lo spazio dei nomi DNS è organizzato gerarchica mente, sullo stile di un classico filesystem Unix (figura 2) con una radice comune e una serie di
gateway.casalina.lan identificano lo stesso hostname. In questo esempio manca il campo MX. che identifica il server
di posta (che può essere più di uno), il campo PTR, che viene utilizzato per la risoluzione inversa (da un 1P si risale all'hostname), il campo HINFO, che fornisce informazioni
aggiuntive di diverso tipo, ad esempio l'ubicazione delle
|
macchine o il nome dell'amministratore. Server dei Nomi Radice (Root Name Server]
k.root-servers.net
Come funziona il ONS II DNS è, di fatto, uno degli esempi più riusciti di 'Chiesta /7\
come implementare un database distribuito attra
ncorsiva V+J
verso Internet; esso è difatti strutturato mediante
diversi server dei nomi, organizzati in modo gerar chico e distribuiti in tutto il mondo. Nessun server dei nomi ha tutte le informazioni relative a tutti gli
host in Internet, che sono invece ripartite attraver
Server dei Nomi Locale
Server dei Nomi Intermedio
(Locai Nane Server)
dns.unipg.it
dns.olt relinux. coni
so ogni server DNS, ma gode di una completa auto nomia amministrativa e gestionale per la propria organizzazione di competenza. Quando un server DNS ha un record DNS (una voce nel file di configurazione della zona) che traduce il
Server dei Nomi Assoluto
nome host con il suo rispettivo IP. si dice che quel server DNS è autoritativo per quell'host (ricordate il responsabile dell'esempio iniziale?).
PC Ciient
pc -linux.oltrelinux.com
(Absolule Name Server] dns.mg.unipg.it
Quando vi è una richiesta di risoluzione DNS, ad esempio dal browser, il primo server ad essere
interrogato è quello locale (locai name server), nor
I vari passaggi che possono entrare in gioco nella risoluzione di un indirizzo IP
malmente inserito all'interno della stessa organizza-•■'"■"■-.
19
foglie; a differenza del filesystem gli indirizzi devo no essere letti al contrario: www.oltrelinux.com. si
leggerà con (.)
{com)
(oltrelinux)
(www): il
caratterizzati dal fatto che essi sono riservati ad organizzazioni degli Stati Uniti;
> arpa domain: dominio speciale utilizzato per
punto in fondo all'indirizzo non è punteggiatura, ma
ottenere la cosiddetta "risoluzione inversa",
indica il termine dello stesso (l'indirizzo è quindi
quando, dato un indirizzo IP, si vuole ricercare il
completamente specificato).
nome DNS ad esso relativo.
I nomi di dominio (o semplicemente domini) di livel
lo più alto sono chiamati Top-Level Domain (TLD); essi si suddividono in tre categorie principali:
Ogni TLD viene gestito da una entità chiamata Registration Authority (www.nic.it per l'Italia), la quale, tra l'altro, definisce ed armonizza le procedu
> country domains: domini di due caratteri che
re di registrazione per i domini di secondo livello
tipicamente indicano reti appartenenti al relativo
{Second Level Domain) del TLD, assegnandone agii
paese (identificato dai country code presenti
intestatari del dominio appena registrato la respon
nelle specifiche 150 3166); ad esempio .it per
sabilità tecnica ed amministrativa.
l'Italia o .de per la Germania;
Ogni porzione dell'albero DNS gestita a livello
> generic domains: domini di tre caratteri che
amministrativo da una diversa organizzazione pren
tipicamente indicano reti commerciali (.com), reti
de il nome di zona: potremmo quindi dire che
internazionali (.int), reti educational (.edu), reti
l'Università di Perugia possiede l'autorità ammini
genenche (.net e .org) e reti militari o reti gover
strativa di gestione per la zona unipg.it.
native (.mil e .gov); questi ultimi due domini sono
A sua volta, qualsiasi gestore di una determinata
zona può prevedere una ulteriore suddivisione interna della zona stessa assegnando la responsabi lità delle nuove 'sotto-zone' create a diverse strut
ture; ad esempio la stessa Università può assegna re la responsabilità della zona dipmat.unipg.it al dipartimento di Matematica e la responsabilità della
zona inf .unipg.it al Dipartimento di Informatica.
Server DNS primari e secondari Per ogni zona vengono specificati, normalmente, due server dei nomi; tipicamente si parla di un Primary Domain Server (DNS Primario) per il server Bt-linu.
ing MUng. li
country
domains
DNS principale che carica tutte le informazioni circa gli host di quella zona e di un Secondary Name Server (DNS Secondario) il quale provvedere ad aggiornarsi con le stesse informazioni presenti nel
J.!
J«
I41.in-twr.ir»»
server primario, al fine di garantire una ridondanza del servizio in caso il DNS Primario dovesse risultare
La struttura del DNS; da notare il TLD arpa,
che permette la risoluzione inversa partendo dall'indirizzo IP e arrivando all'hostname.
non disponibile. Il DNS secondario potrà trasferire le informazioni dal server dei nomi primario senza poter aggiungere, togliere o modificare alcunché; la
risposta di un server DNS secondario, infatti, è
WEBOGRAFIA
Libri e Risorse sul web Computer Networking: A Top-Down Approach Featuring thè Internet - Second Edition" J.F. Kurose, K.W.Ross
"TCP/IP Illustrated. Volume 1 ■ Thè Protocols" W. Richard Stevens
autoritativa come quella del primario. Tale trasferimento di informazioni dal DNS primario al DNS secondario prende il nome di Zone Transfer;
esso è quindi richiesto dal server dei nomi seconda rio tramite una particolare richiesta (un Resource Record di tipo AXFR/IXFR); questa avviene ad inter valli regolari, tipicamente ogni tre ore, ed utilizza
TCP come protocollo di trasporto, perché viene richiesta una maggiore affidabilità. Un ruolo fondamentale nel trasferimento di zona la
> Domain Names ■ Concepts and Facilities
gioca un particolare valore, detto serial number:
http://www.faqs.org/rfcs/rfclO34.html
quando vi è una modifica ai server primario, esso
> Domain Names - Implementation and Specification http://hww.faqs.org/rfcs/rfclO35.html - DNS Extensions to support IP version 6 http://www. faqs.org/rfcs/rf e 1886.html > Incrementai Zone Transfer in DNS
http://www.faqs.org/rfcs/rfcl995.html > Dynamic Updates in thè Domain Name System http://wwrf.faqs.org/rfcs/rfc2136.html
deve essere aumentato rispetto al precedente, in modo da far capire ai DNS secondari che sono state apportate modifiche: proprio per questo, di solito
viene utilizzato come serial number la data in for mato americano {anno-mese-giorno della modifica alla zona DNS) aggiungendo un numero sequenzia le al termine alla cifra così composta, per permette re diverse variazioni nell'arco della stessa giornata.
Conoscere le basi del protocollo FTP In queste pagine ci occuperemo del protocollo FTP, pensalo apposita
mente per il trasferimento di file tra host differenti: un protocollo assolutamente atipico... vediamo perché.
Carlo Manuali <c.manuali@linuxpratico.com>
II protocollo FTP è una delle applicazioni Internet più utilizzate e rappresenta ormai lo standardper quanto riguarda il trasferimento di file fra host collegati in rete.
dalla porta N+l (figura 1).
E' importante sottolineare che FTP permette sola
La modalità passiva risolve diverse problematiche
mente di copiare per intero un file, o una directory,
legate al campo della sicurezza; in particolare, essa
da un sistema ad un altro; per effettuare il trasferi
permette dì non preoccuparsi se il client risieda die
mento sarà necessario disporre di credenziali per
tro un sistema di firewall o NAT: è, infatti, sempre il
l'accesso FTP (spesso le stesse che si utilizzano per
client che effettua le connessioni di apertura e non
altri servizi, come la posta o l'accesso shell via SSH)
il server, che in tal caso dovrebbe disporre delle
suil'host al quale si vuole trasferire il file, o dal
necessarie autorizzazioni per accedere ad ogni
quale lo si vuole scaricare, oppure utilizzare una
client protetto.
modalità particolare dei server FTP, chiamata Anonymous FTP, che consente l'accesso anonimo.
I! protocollo La principale differenza fra questo protocollo e gli altri che implementano i servizi disponibili su
SONO
Internet, è l'utilizzo di due connessioni TCP invece
IN ASCOLTO
SULLA PORTA 1134
di una sola. Rispettivamente, tali connessioni saran no stabilite sulle porte TCP 20 e 21.
Ogni volta che ci si connette ad un server FTP viene stabilita la cosiddetta connessione di controllo, o Control Connection. che rimane attiva per tutta la
durata della comunicazione client/server e serve per scambiare i comandi impartiti dal cìient e le relative risposte del server.
CLIENT
(ACTIVE MODE)
INI7I0 l»
SERVER
CONCESSIONE !
Ogni volta che bisogna effettivamente trasferire un file, viene aperta un'altra connessione, chiamata
connessione dati o Data Connection, e verrà chiu
CONNESSIONE
sa solo a! termine del trasferimento di tale file.
INIZIO
La comunicazione fra un client ed un server
CONNESSIONE
DI
CONTROLLO
CONNESSIONE
DATI
DATI
mediante il protocollo FTP può avvenire in due modalità distinte: modalità attiva (active mode) e modalità passiva {passive mode). In active mode, il client si connette alla porta 21 del server da una porta non privilegiata N, con N mag giore di 1024 (figura 1). La connessione viene, quin
di, stabilita ed il trasferimento dei file avverrà tra la porta 20 del server e la porta N+i del client, il quale si mette in ascolto su tale porta e lo comunica al
server durante la fase iniziale di connessione. Con questo approccio, è il server che viene invitato a collegarsi ad una porta specificata arbitrariamente
CLIENT (PASSIVE MODE)
DATI
SERVER
dal client. Nei passive mode, quando un client inizia una con nessione FTP. esso apre nuovamente due porte, N
La struttura del DN5: da notare il TLD arpa,
maggiore di 1024 e N+l. Questa volta, però, sarà il
che permette la risoluzione inversa partendo
server che comunicherà al client una ulteriore porta
dall'indirizzo IP e arrivando all'hostname.
P maggiore di 1024, alla quale il ciient si connetterà
Ciò comporta una gestione più onerosa dal lato del server, ma risolve il problema che molti ammini stratori di rete hanno dovuto affrontare, di concede re l'accesso indiscriminato alle porte maggiori di
1024 verso tutti i client della propria LAN. Le impostazioni per tale modalità vengono gestite
Client
Server
D
dal lato server dove, fra l'altro, è comunque possibi
Connessioni di controllo;
le restringere il campo delle porte non privilegiate ad un range specificato, al fine di ridurre ancora di più l'esposizione della Linux box che offre il servizio.
av per Is
La rappresentazione
Conntislon* dati:
r schiesta
si oo-nloso
mina :! d il Ali pona ;e alla porta N>1
dei dati
(jreteOp-Tpn^n;» comunicata dal cll-nt
Trovandoci in presenza di sistemi eterogenei, è necessario specificare come un file sia trasferito e
il download è terminato.
memorizzato fra host differenti. Normalmente, FTP intende un file come un flusso
aperta di nuovo, li attesa di altri diti
continuo di byte senza particolari informazioni circa
aa
trasferir»
la sua struttura, le sue dimensioni ed il formato. Si avrà quindi bisogno di un meccanismo per identi ficare queste caratteristiche; in particolare, i pro
C Canale Controllo 1131
1133
20
D Canale Dati
gettisti di questo protocollo hanno previsto l'esi stenza di due connessioni in modo tale che, mentre Una connessione FTP; i comandi vengono
la connessione di controllo rimane sempre attiva
impartiti tramite la connessione di controllo,
per gestire i comandi, la connessione dati viene
i dati viaggiano sulla connessione dati.
creata e poi distrutta ad ogni trasferimento dati. In questo modo, il flusso di byte trasferito durante
tale connessione corrisponde esattamente al file: il primo byte presente nella connessione è il primo
PQRT 141,250.1,138.4,150
byte del file e la fine è costituita, di fatto, dalla chiu
11
tonimi ciinncri ii
2.
sura della connessione stessa. Prima di effettuare ogni trasferimento è quindi
SYN
importante indicare a priori se si stia trasferendo un
data connechon
file binario, cioè un documento pdf, un'immagine o un file compresso, piuttosto che un file testuale. La differenza consiste nel fatto che, nel caso di file
In figura, lo schema di collegamento tra
binari, essi vengono trasferiti come un flusso conti
l'host seti.unipg.it e ftp.oltrelinux.com
nuo di bit, mentre quelli di tipo testuale vengono convertiti in uscita dal formato locale nel formato
NVT-ASCII, per poi essere convertiti di nuovo in rice zione da NVT-ASCII nel formato testuale del sistema
La terza cifra quindi specifica informazioni addizio
di destinazione.
nali circa il particolare messaggio; per esempio, col
Questa seconda modalità di trasferimento, necessa
leghiamoci al server FTP ftp.oltrelinux.com e creia
ria in relazione alle diverse modalità di rappresenta
mo
zione del formato testuale su sistemi eterogenei,
documenti:
una directory Docs/
per il
~
download dei
risulta più lenta in quanto non supporta alcun tipo di compressione ed è soggetta al meccanismo di
#
doppia decodifica appena descritto.
Connesso a
I comandi del protocolla
ftp
ftp.oT.trelinux.com haro5a.oltrelinux.com.
22B Oltrelinux FTP service. Utente
(karraa.oltrelinux.com:(none)):
Ogni volta che viene stabilita una connessione FTP,
331
si hanno a disposizione una serie di comandi per la
Password:
navigazione all'interno del sito, lo scaricamento,
238
l'upload o la cancellazione di file, piuttosto che la
ftp>
creazione di sotto-directory, se consentito.
2B8
PORT
cornmand
Normalmente, ogni comando FTP impartito dal
15B
Here
comes
client genera una risposta da parte del server di
Hailtiir
una linea contenente 3 cifre ed eventualmente un
mali
messaggio informativo.
publichtrnl
In particolare, la combinazione delle prime due cifre
226
specifica la classe del messaggio e la terza identifi
ftp;
28
cherà il particolare codice d'uscita positivo o d'erro
ftp>
mkdìr Oocs
re, come mostrato nel riquadro.
257
Please
specify
craanuali
thè password.
Login successful.
Have
fun.
\s
Directory bytes
"/Docs"
successful.
thè
send
using
PASV.
OK.
received
created
Consider
directory Usting.
in
0,05secondi 0,56Kbyte/sec)
~
> 150: here comes thè directory listing.
ftp> dir 200 PORT command
successfut.
Consider
using PASV.
Questo messaggio ci indica che l'azione è stata
158 Here Comes thè directory listing.
drwxr-xr-x
2 3053 1986 4G96 Jul 11
drwx
5 3053
drwx drwxr-xr-x
Docs
prima cifra), ovvero si attende II risultato del
2 3053 I960 4096 Jul 06 68:41
comando Is riguardo la directory corrente, e che la
3 3053 I960 4G96 Oct e?
publie_htmt
risposta è appunto relativa a! filesystem del server
258 bytes
send
198G 4096 Dee 27
2991
2Q82
(si ha 5 come seconda cifra).
OK.
receìved
in B.lBsecondi
l,43Kbyte/sec)
ftp> quit ??l
avviata ma non ancora completata (si ha 1 come
Maìldir
2Z6 Directory
ftp:
13:24
Goodhye.
La gestione delle connessioni
Durante questa sessione FTP possiamo notare le
FTP è un servizio che utilizza esclusivamente il pro
risposte del server la cui prima cifra è 2 (ovvero la
tocollo TCP. La connessione di controllo, effettuata
risposta è positiva):
sulla porta 21 TCP, viene utilizzata per stabilire la connessione, e quindi per riportare tutti i messaggi
> 220: connessione effettuata;
relativi ai vari comandi impartiti dal client verso il
> 230: login completato;
server.
> 200: comando OK;
In particolare, è attraverso questa connessione che
> 226: list OK;
il client, nel caso di active mode, specificherà al
> 257; directory creata;
server la porta da utilizzare per il trasferimento dati
> 221: disconnessione completata.
oppure indicherà l'utilizzo della modalità passiva
mediante il comando PASV; in questo caso sarà poi Analizziamo quindi altri due tipi di messaggi:
il server che specificherà al client la porta maggiore di 1024 alla quale il client si dovrà connettere.
> 331: please specify thè password. Password:
Ogni volta che un server o un client debbono speci ficare la porta per la connessione dati, essi fanno
Questo messaggio ci indica che la risposta è positi
utilizzo del comando PORT.
va, ovvero il login inserito è stato accettato, ma
Tale comando prevede come argomenti sei numeri
ancora intermedia (si ha 3 come prima cifra), infatti
decimali che indicano il socket di connessione che
per completare la fase di autenticazione è necessa
dovrà essere utilizzato, ad esempio:
rio inserire anche la relativa password. P9RT
INFORMAZIONI
le risposte del server fTP ed 81 loro significata
140,259,1,138,4,159
In questo caso, l'indirizzo dell'host che invia il
comando è 141.250.1.138, il quale poi specifica all'host ricevente la porta alla quale si dovrà con nettere: dato che il numero di porta viene espresso
attraverso 16 bit, gli ultimi due numeri, previsti per questo scopo, vanno intesi come (4
Risposta lyz
2yz
Descrizione
150,
In figura 3, il client FTP seti.unipg.it, con indiriz
zo IP 141.250.1.138, invia un comando PORT al ser
Risposta positiva completa. L'azione richiesta è
ver ftp.oltrelinux.com specificando il proprio
stata completata ed è possibile inviare un nuovo
indirizzo IP e la porta alla quale il server FTP dovrà
Risposta positiva intermedia. Il comando è stato inviato. Risposta negativa temporanea. L'azione richiesta
non può essere eseguita, ma l'errore è dovuto ad una causa temporanea e io stesso comando
potrà essere inviato successivamente. 5yz
+
è avviata ed è in attesa di completamento.
accettato ma un altro comando deve essere
4yz
256)
Risposta positiva preliminare. L'azione richiesta
comando.
3yz
x
ovvero la porta specificata sarà la numero 1174.
Risposta negativa permanente. Il comando non è stato accettato.
XOz
Errore di sintassi.
xlz
Messaggio Informativo.
x2z
La risposta è riferita alla connessione, quella di controllo o quella dei dati.
poi connettersi, nella modalità attiva, per l'effettivo trasferimento dei dati.
Il server risponderà tentando di instaurare la con nessione dati mediante un pacchetto di sincronizza zione 5YN verso il socket indicato.
In active mode, il client invia il comando PORT sulla contrai connection ed il server invia un pacchetto di SYN per cotlegarsi sulla porta specificata, instauran do la data connection.
La connessione relativa alla trasmissione dei dati invece, effettuata sulla porta 20 TCP, viene utilizza ta in tre casi distinti: quando si invia un file dal client al server (upload), quando si invia un file dal server al client (download) e quando viene restitui
x3z
La risposta è riferita alla fase di autenticazione.
ta la lista dei file e delle directory dal server al
x4z
Non utilizzato.
client.
x5z
La risposta è relativa allo stato del filesystem del
Quest'ultima funzionalità viene realizzata, come
server FTP.
mostrato nel paragrafo seguente, mediante la data
connection in quanto ciò evita qualsiasi limite circa
23
la lunghezza dell'output restituito offrendo inoltre la
linux-2.6.7.tar.gz
possibilità al client di salvare l'output in un file.
linux-2.6.7.tar.gz.5ign
il trasferimento dei file I comandi imperativi durante una qualsiasi sessione
linux-2.6.7.tar.slgn Z26
ftp:
Directory
send
OK.
1863 bytes received in e,12secondi 15,53Kbyte/sec)
FTP sono quelli necessari per effettuare l'upload di
ftp>
un file, o di un insieme di file, dal client al server
200
FTP o quelli per il download da un server FTP al
ftp> get
linux-2.6.7.tar.gz
nostro client.
2B0
command
Si parla quindi del comando PUT l'upload e del comando GCT
<nomefile> per
bin Switching
PORT
150 Opening
to
Binary mode.
successful.
BINARY mode data
<nomefile--- per il
connection
for Unux-2.6.7.tar.gz
download; ad esempio, dopo essersi collegati a
226
ftp.kernel.org, posizionamoci nella directory conte
ftp:
File send
[440G697G bytes).
OK.
44696970 bytes
received in
nente i sorgenti del kernel 2.6, scaricandone solo
132.79secondi 331,4GKbyte/secl
l'ultima versione nel formato . tar compresso:
Analizziamo due risposte molto interessanti da ftp> ed pub/linux/kernel/i/2.6
parte del server durante la sessione FTP:
25Q Directory successfully changed. ftp> Is 200
ftp;
l'ORT
1SS Here
command comes
1B63 bytes
received
in 0,12secondi
15.53Kbyte/sec)
successful.
Questo messaggio, riportato al termine del risultato
thè directory Usting.
del commando \s, inviato sulla connessione di con Unux-2.6.7.tar.bz2
trollo, indica che l'output di tale comando è
linux-2.6.7.tar.b*2.Sign
anch'esso un flusso di byte, inviati sulla connessio ne dati anche se non si è in presenza di un vero e
proprio trasferimento di fife.
INFORMAZIONI
Alcuni dei comandi del protocolla FTP ascii
Specifica che il tipo di trasferimento file è ASCII
bin
Specifica che il tipo di trasferimento file è binario
ed
<dir>
del <file> dir,
Is
<file>
put
(44G0697G bytes)
Questo messaggio ci mostra invece come è solo in questo momento che viene aperta la connessione dati per trasferire il file interessato; esso viene quindi trasferito nella modalità binaria in quanto è un file compresso nel formato .gz. ta rispettivamente dai comandi MPUT e MGET, i quali accettano wildcard come ad esempio
Visualizza i file contenuti nella directory
Copia il file remoto dal server FTP al sistema
Cambia la directory corrente sulla macchina
ftp> mget
linux-2.6.■.tar.gz
per scaricare tutte le versioni dell'ultimo kernel
linux attraverso un unico comando. Un ulteriore utilizzo del comando GET è quello di
Crea la directory specificata sul server FTP
testuale, direttamente all'interno della sessione FTP senza doverlo trasferire sul client; ciò viene fatto
pwd
Visualizza la directory corrente del server FTP
mediante il carattere -, ad esempio con il comando
bye
Termina la sessione FTP
rmdir <dir>
'
visualizzare il contenuto di un file, tipicamente
Invia un file locale al server FTP
<f ile>
quit,
connection
linux-2.6.7.tar.gz
Cancella il file specificato
locale
mkdir <dir>
for
Una variante per gestire file multipli è rappresenta
locale
led <dir>
BINARY mode data
Si sposta nella directory specificata
corrente del server FTP get
Opening
ftp> get "Is-IR"
-
Cancella la directory specificata sul server FTP
utile per determinare l'intero contenuto di un sito FTP laddove l'amministratore del server abbia posto sulla directory radice un file di questo tipo riportan
WEBOGRAFIA
Libri e Risorse sul web "TCP/IP Illustrateci. Volume 1 - Thè Protocols" W.R. Stevens
te la lista completa dei file presenti disponibili per il download.
Conclusioni La scelta tecnica della duplice connessione è indub biamente vantaggiosa: grazie alla divisione dei
"Active FTP vs. Passive FTP, a Definitive Explanation"
compiti, ogni connessione sarà ottimizzata per ciò
http://www.slacksite.com/other/ftp.html
che deve fare, con latenza minima per la gestione
"File Transfer Protocol (FTP)"
dei comandi e massima banda passante per la tra
http://www.faqs.org/rfcs/rfc959.html
smissione dei dati,
~
Firewall: le mura di difesa della rete Ujìrewtdl è la difesa per eccellenza, è un muro che si frapponefra un ambiente (ipotizzato ostile) e la rete locale, che va difesa da possibili attacchi ed intrusioni: ecco ciò che serve sapere
Carlo Manuali <c.manuali@linuxpratico.com>
E
■ impensabile, ad oggi, non disporre di alcuna protezione per gli accessi non autorizzati provenienti dalla Rete, ancor
più impensabile per chi utilizza Linux: senza coin
altro computer, un pacchetto di sincronizzazione,
volgere scenari da telefilm, è sufficiente il virus di
contraddistinto dal flag di SYN dell'header TCP,
turno per creare quantomeno scompiglio nel proprio
identifica l'apertura di una nuova connessione,
computer o in tutta la LAN.
riportando tutte le informazioni sopra menzionate:
Non si tratta di installare il programma X o Y per
in base all'host di provenienza, a quello di destina
dormire sonni più tranquilli: è necessario capire ciò
zione, alle rispettive porte ed al protocollo utilizzati,
che avviene realmente dietro le quinte del protocol
si consentirà o meno a tale pacchetto di attraversa
lo TCP/IP e conoscere gli strumenti a nostra disposi
re la nostra rete o il nostro computer: questa attivi
zione per contrastare eventuali attacchi.
tà è conosciuta come Packet Filtering, ovvero il fil
La sicurezza locale
conoscibili dai livelli di rete e di trasporto del proto
Prima di affrontare le diverse problematiche di sicu
collo TCP/IP.
rezza, è fondamentale individuare cosa si vuole pro
E' doverosa una premessa: il nostro computer di
teggere, cosa può raggiungere la nostra rete ed in
casa, una volta collegato ad Internet, via modem o
quale modo.
attraverso una connessione ADSL con indirizzo IP
Quando si vuole salvaguardare la nostra automobile
statico o dinamico, è generalmente raggiungibile da
si utilizzano accorgimenti diversi a seconda del
ogni host del pianeta.
traggio dei pacchetti in base alle informazioni
valore della stessa o degli oggetti in essa contenuti:
In mancanza di dispositivi di filtraggio intermedi,
per alcuni sarà sufficiente un blocca pedali, per altri
ovvero strumenti di Packet Filtering, ogni servizio di
un allarme, per altri ancora serviranno entrambi.
rete attivo su! nostro computer potrà quindi essere
E' possibile lavorare su tre livelli distìnti: nascon
raggiungibile dall'esterno (a meno che non sia
dere i beni di valore (ad esempio gli occhiali) ad
opportunamente configurato in modo da sfruttare
uno sguardo distratto, una soluzione che ha un
solo interfacce che sono collegate alla rete locale):
grado di sicurezza molto basso dovuto alla diffi
dal servizio per la posta elettronica a quello di DNS,
coltà per un intruso di reperire informazioni; si può
dal server web che ospita il nostro sito Internet al
dotare la nostra automobile di un buon allarme,
servizio di stampa in rete, certamente pensato per
ovvero proteggere la nostra Linux box a livello loca
la sola rete locale.
le; oppure si può parcheggiare la nostra auto all'in
Dal punto di vista della sicurezza, ogni servìzio
terno di un parcheggio custodito, ovvero focaliz-
esposto rappresenta una possibilità in più per il
zare l'attenzione sulla protezione complessiva
ladro di riuscire a rubare la nostra macchina.
della nostra rete.
Ovviamente l'idea è quella lasciare aperti solo quei
In tutti i casi, ci chiederemo quali siano i punti
servizi realmente indispensabili alla nostra attività,
nevralgici da fecalizzare: un intruso potrà infatti for
provvedendo a chiudere tutti i servizi di rete super
zare la nostra automobile sostanzialmente rompen
flui e non utilizzati.
do un vetro, manomettendo la serratura o passan
Tale procedura si rivela, in realtà, molto semplice:
do attraverso il
ogni servizio, infatti, gira su una determinata porta
bagagliaio:
in
un computer
collegato in rete si parlerà di indirizzi IP sorgente e
(80 per il web, 53 per il DNS, 25 per SMTP e così
destinazione, porte di connessione utilizzate dagli
via); attraverso la combinazione dei comandi net-
host coinvolti in ogni connessione di rete e tipo di
stat e grep si potranno facilmente ricavare la serie
protocollo utilizzato, di solito UDP, TCP o ICMP.
dei servizi che attualmente sono attivi e raggiungi
Sono queste, quindi, le informazioni fondamentali
bili dall'esterno.
sulla base delle quali si riuscirà a discriminare l'ac cesso ai nostri computer e, più in generale, alla
S
nostra rete.
tep
0
0
9.8.0.6:80
O.G.0.0:'
LISTE»
Il Pachet Filtering
tep
G
0
G.9.G.0:53
0.0.0.0:*
LISTEN
tep
G
0
G.0.0.0:25
G.0.0.0:"
LISTEN
tep
G
0
127.8.0.1:631
9.3.8.6:-
LISTEN
Ogni volta che un computer tenta di accedere ad un
netstat
-na
Igrep
LISTEN
In questo caso, si noti che, in mancanza di altri accorgimenti, saranno raggiungibili dall'intera rete
Internet tutti i tre servizi sopra menzionati, che sono in ascolto su tutte le interfacce di rete della mia Linux Box (0.0.0.0). L'Internet Pnnting Protocol (IPP) invece, ovvero il
servizio di stampa in rete, che gira sulla porta 631,
non è raggiungibile dall'esterno in quanto è attivo solo per l'interfaccia di loopback (127.0.0.1), ovve
ro risulta accessibile solo collegandosi dall'host accesso
locale.
negato
Vediamo un altro esempio per chiarire meglio il con cetto di servizio in ascolto solo su un'interfaccia, questa volta utilizzando anche il flag -p che per mette di associare il PID o il nome del programma alla porta su cui questo ascolta: accesso #
netstat
Active
consentito
-nap
Internet
connections
Iservers
and established)
Proto
Locai Addr
Foreign Addr State
PIO
tcp
0.0.0.0:30
0.0.0.0:•
LISTEN
9566/apache
tcp
192 .168 .0. 1:53
B .e. e .0:'
LISTEN
2448/nameG
tcp
137 .e. e • Ir 53
8 .6. e .0:"
LISTEN
2448/named
Diagramma di flusso che mostra il funzionamento del tcp wrapper
in questo caso, possiamo vedere che named {il
demone che si occupa di fornire il servizio DN5, in questo caso configurato come caching DNS) è in
ascolto solo sulle interfacce 192.168.0.1 e 127.0.0.1. mentre Apache è in ascolto su tutte le
interfacce, quindi raggiungibile anche su una ipote tica interfaccia esterna, non facente parte della rete locale 192,168.0.0/24, al contrario di quel che accade per il DNS.
Una semplice protezione: tGpjwrapper Dopo aver ridotto all'essenziale i servizi esposti,
Un classico esempio di firewall posto tra la rete locale ed Internet
vediamo come poterne discriminare l'accesso
mediante lo strumento più semplice a disposizione, chiamato tcp wrapper; in realtà esso consiste di due file, presenti sulla directory /etc, chiamati
Purtroppo tale strumento non è valido per tutti i
hosts.allow e hosts.deny che già realizzano alcu
servizi di rete e quindi spesso ci si dimentica di que
ne funzionalità di filtro; ogni riga di questi file speci
sto potente software di controllo.
fica la tripla servizio,
A questo punto, però, dobbiamo necessariamente
intervallo
IP,
azione
porci una diversa serie di interrogativi: come pro
ad esempio:
teggere a monte i PC della nostra rete locale? Come ftpd:
192.168.1.0/24:
ALL0W
rendere flessibili le politiche di accesso in modo tale da essere valide per tutti i servizi, lavorando ad un
In questo caso l'accesso ai server FTP per il trasferi
livello più basso, ovvero il livello di rete? Come rea
mento file, così configurato, sarà consentito alla
lizzare un dispositivo che ci consenta di accentrare
sola rete locale 192.168.1.0/24.
tutte le nostre politiche di sicurezza? Come impo
Perché due file distinti? La logica utilizzata dal
stare diverse politiche di filtraggio distinte fra traffi
tcpwrapper può essere facilmente rappresentata
co interno (o locale) e traffico esterno, proveniente
dal flow-chart di figura l.
dalla rete Internet?
In poche parole: ogni connessione che effettua il
E' giunto il momento di parlare di firewall e delle
matching con una definizione presente nei file
loro architetture principali.
hosts.allow verrà immediatamente consentita; in alternativa, se presente nel file hosts.beny essa verrà negata. Se la connessione in atto non corri
Le architetture dì un firewall
sponde a nessuna delle regole presenti, verrà comunque consentita.
Un firewall, è un dispositivo, hardware o software.
che realizza funzioni di filtraggio, separazione e con
dagli host della mia LAN.
trollo del traffico di rete.
Tipicamente, questo tipo di firewali verrà realizzato
Esso può riguardare sia la protezione del singolo
mediante una macchina con almeno due interfacce
computer, che la protezione della
di rete {dual-homed), dove la prima verrà collegata
nostra rete locale
dal traffico proveniente da Internet o diretto verso
alla rete locale e la seconda sarà collegata ad un'al
di essa.
tra rete (solitamente Internet), consentendo di
Un dispositivo posto al confine della nostra rete
separare il traffico interno della LAN da quello
locale ci permetterà di effettuare tutte le funzioni di
esterno della rete Internet.
Packet Filtering per il traffico in entrata, ovvero
Con ogni probabilità ci siamo già accorti come l'in
diretto verso gli host della nostra LAN, definendo
sieme delle regole per gestire tutte le possibilità
regole come, ad esempio, consentire il passaggio di
possa essere molto complesso e generare confusio
tutte le connessioni verso la porta 80 solo se dirette
ne o sovrapposizioni; al tal scopo sarà importante
all'indirizzo del server web oppure negare l'acces
adottare una politica di base, chiamata Default
so dall'esterno a qualsiasi host sulla porta 22,
Deny Stance, la quale prevede che tutto ciò che
ovvero connessioni SSH.
non
Allo stesso modo, lo stesso firewall potrebbe consen
negato, complessa da gestire, ma estremamente
tire di filtrare il traffico in uscita, cioè proveniente
efficace.
sia
esplicitamente permesso, venga
In alternativa, la corrispondente politica di Default
Accept Stance, per la quale tutto ciò che non sia espressamente negato verrà permesso, appare
molto più debole, ma sicuramente più semplice da realizzare.
Screening Bouter Questa semplice architettura mostrata, presenta
comunque una debolezza: a fronte di un'intrusione in un apparato firewall dual-homed {chiamato in let teratura anche Screening Router), un attaccante
non avrà dì fronte a sé altri ostacoli e disporrà del l'accesso verso tutte le risorse presentì sulla rete locale che da tale apparato veniva protetta. Eppure, di fronte ad una intrusione nella nostra automobile, ci può andar bene che, nella sfortuna, si portino via l'autoradio e gli occhiali da sole, ma
non l'automobile stessa. Nel nostro intento abbiamo quindi la necessità di considerare ulteriori dispositivi di sicurezza, ma soprattutto di prevedere che, a fronte di un malfun-
zionamento o manomissione di uno di questi, ciò Un esempio di rete avanzata con DMZ perimetrale
riduca al minimo le possibilità di accesso alle risor se più importanti. L'architettura che si vuole presentare distingue innanzitutto, all'interno delle macchine della nostra rete locale, quegli host che necessariamente dovranno offrire un servizio rivolto ad Internet, come ad esempio il server web. il server DNS o il server di posta elettronica, da quegli host che non
connessione
FTP
necessitano l'esposizione di questi servizi, come ad esempio i PC personali dei dipendenti (clìent) di un'azienda, il server database, il server di backup o
un ambiente di sviluppo software.
De-Miiitarìzed Zone Va effettuata una suddivisione in modo che tali macchine verranno considerate come appartenenti a due reti distinte; gli host esposti su Internet ver
ranno collocati nella cosiddetta DMZ (De-Militarized Zone), una rete perimetrale tra la rete esterna (ovvero Internet) e la rete interna formata dal secondo gruppo di host (i client, i server interni), che non forniranno servizi verso l'esterno. II funzionamento di un firewall con tre interfacce di rete e DMZ
Come mostrato in figura 3, il sistema di firewall
questa volta includerà, due dispositivi chiamati Intehor Router ed Exterior Router.
27
Per accedere alle macchine ed ai servizi presenti
loro destino: accettare il pacchetto, ovvero lasciare
sulla rete interna, sarà necessario attraversare (o,
che il pacchetto entri o esca da una o da tutte le
nel caso di un attaccante, manomettere) entrambi i
interfacce di rete del firewall, negare il pacchetto,
dispositivi dt protezione.
ovvero scartarlo come se non fosse mai stato rice
L'Exterior Router protegge la rete perimetrale e la
vuto, oppure respingere il pacchetto, ignorandolo, di
rete interna dal traffico Internet; spesso le funzioni
fatto, ma notificando al mittente l'avvenuto scarto.
di filtering a questo livello appaiono limitate in
Queste tre azioni, rispettivamente denominate in
quanto, per definizione, l'accesso ai servizi delle
iptables come ACCEPT, DROP e REJECT, sono tre fra
macchine presenti sulla DMZ dovrà essere consenti
i principali target sui quali è basato l'intero proces
to a tutti mentre i servizi in uscita sono già solita
so di Packet Filtering.
mente ristretti alle specifiche funzionalità offerte
Ma come fanno i pacchetti ad attraversare il filtro?
dai diversi server.
E quali sono i percorsi possibili?
L'Interior Router, invece, protegge la rete interna dalla rete Internet e dalla rete perimetrale; qui le
regole di Packet Filtering sono più specifiche in quanto verrà effettuato un controllo più capillare
INFORMAZIONI
circa i servizi in uscita consentiti alle macchine
interne ed a quelli in entrata provenienti dalla DMZ o più genericamente dall'esterno. In realtà, per la realizzazione di tale architettura, chiamata in letteratura Screened Subnet, è suffi
/'\ attivare il forward Per concludere, si ricorda che, affinchè una Linux box possa assolvere le funzioni di dual-homed firewall, quindi abilitando
ciente un unico dispositivo hardware con tre inter
la possibilità di effettuare il forwarding dei pacchetti da un'in
facce di rete, ad ognuna delle quali verrà collegata
terfaccia di rete ad un'altra, risulterà necessario attivare il
una delle tre reti distinte: la rete locale sull'interfac
forward stesso mediante il comando:
cia ethQ, la DMZ sull'interfaccia eth.2 e la rete Internet sull'interfaccia ethl, come mostrato in
figura 4, Tale soluzione, pur presentando di nuovo la debo lezza dovuta all'unico punto cruciale (single point of
# echo
1
>
/proc/sys/net/ipv4/ip
forward
che potrà essere comodamente inserito negli script di avvio del sistema Linux.
faiìure), sia in termini di tolleranza ai guasti che in termini di rischio a fronte di eventuali manomissio ni, mantiene la separazione logica del traffico di
INFORMAZIONI
rete attraverso la definizione di regole specifiche
I
che riguarderanno il traffico in ingresso ed in uscita
sulle tre interfacce coinvolte, consentendo un netto risparmio economico e di gestione.
Il firewall di Linux iptables è il software di firewalling di riferimento in ambiente Linux per i nuovi kernel delle famiglie 2.4
La lista completa de) servizi Internet viene mantenuta nel file
/etc/servìces, presente in ogni sistema operativo Unix-like: la responsabilità della coerenza e dell'aggiornamento di que ste definizioni è demandata all'lnternet Assigned Numbers Authority (IANA).
La versione corrente ed aggiornata sarà quindi reperibile all'in
e 2.6; esso succede a IpChains ed a IpFwadm.
dirizzo
rispettivamente dì riferimento per i kernel 2.2 e 2.0,
http://wwvj.iana.org/assignnients/port-numbers
estendendone notevolmente le funzionalità ed aumentandone le performance complessive.
In realtà iptables appartiene ad una suite di stru menti più completa, chiamata Netfilter, atta a gesti re tutte le diverse esigenze di Packet Filtering, redi
rezione degli indirizzi di rete e delie porte di connessione nonché la manipolazione deli'header OUT
dei pacchetti IP.
In generale, per ciò che riguarda il Packet Filtering,
un hosì remoto
diciamo che iptables lavora sostanzialmente su una tabella, chiamata filter, dove sono raccolte un insieme di regole, organizzate in diverse catene percorriteli, chiamate chain, dove ad ogni regola
de; pacchetto è l'host locale
verrà associata una specifica azione da compiere. Più propriamente, iptables è in realtà un tool che
OUT
permette semplicemente di aggiungere o di elimi nare le diverse regole dalla suddetta tabella di
Packet Filtering, gestita a livello di kernel, cioè dal sistema operativo stesso. In particolare l'intera attività può essere ricondotta,
Diagramma di flusso del percorso di un
per ogni pacchetto in ingresso o in uscita da una a
pacchetto nell'ambiente Netfilter
più interfacce di rete, alla scelta da compiere circa il
28
RIQUADRO 1
I campi degli
header IP e TCP
o
II packet filtering viene effettuato dal kernel, prendendo In considerazione campi degli header del livello di rete e di quello di trasporto per il controllo delle connessioni.
16
a
hlen
vere
24
offset
flags
Identifica tlon
ttì
31
length
tos
protocol
X
CRC
source address
Per quel che riguarda il livello di rete, i campi più importan ti dell'header IP che verranno considerati, sono il tipo di
destlnation address
protocollo utilizzato (ovvero TCP, UDP o ICMP] e gli indi
■i
optlons e pariding
rizzi IP delie macchine sorgente e destinazione coinvolte in ogni connessione di rete.
payload
Per quanto concerne il livello di trasporto, invece, i campi che verranno presi in considerazione dal packet filter saranno la porta sorgente del computer che inizia ogni connessione, la porta di destinazione de! computer
24
verso cui si effettua la connessione e che offre un determi che permettono di identificare lo stato della connessione
sequence number
stessa.
acknowledgment number
In particolare, il flag di sincronizzazione (SYN) ci consentirà di individuare il primo pacchetto di ogni nuova connessione (l'inizio della three-way handshake) in entrata, in modo tale da poter effettuare le nostre operazioni di Packet Filtering sostanzialmente solo su questo tipo di pacchetti.
31
desti nation port
nato servizio e le sei flag (URG, ACK, PSH, RST, SYN, FIN)
UiAjP R[S F
offset
r
-
■
window
:
n i HT s'\ checksum
urgent pointer
Gli altri flag vengono utilizzati più di rado per effettuare
payload
packet filtering, in quanto sono relativi a stati di connessio ne meno importanti, dal punto di vista della sicurezza, di quella di inizio della connessione.
le catene INPUT, OUTPUT e FOBWflRD
l'uscita. E' inoltre possibile, tramite il flag -N del comando
iptables, creare catene personalizzate, ovvero La tabella filter di iptables ha per default tr^ dif
definite dall'utente: ognuna di queste dovrà essere
ferenti liste di regole, chiamate comunemente
invocata da una regola che presenta il nome della
chain o catene: INPUT, OUTPUT e FORWARD.
catena stessa in luogo dei target consueti quali
Quando un pacchetto arriva al firewall, la prima
ACCEPT, DROP e DENY: il pacchetto verrà quindi ana
cosa che dovrà essere determinata è se la destina
lizzato dalle regole presenti nella catena personaliz
zione di questo pacchetto è l'host locale, ad esem
zata e, in mancanza di corrispondenza, il controllo
pio una connessione 55H diretta al firewall stesso,
ritornerà alla regola successiva a quella da cui è
oppure se il pacchetto è destinato agli altri host
stato spostato alla catena personalizzata.
sulla rete, sia esso in ingresso o in uscita, come
Le regole presenti in ogni catena verranno sempre
mostrato in figura 5.
esaminate in ordine sequenziale, fino a trovarne
Nel primo caso il pacchetto verrà sottoposto alla
una che comprenderà il pacchetto in questione; se
serie di regole presenti sulla catena di INPUT: se,
si giungerà alla fine della catena senza aver trovato
invece, la destinazione non è l'host dove è in esecu
una regola che effettui la corrispondenza col pac
zione il firewall verrà inviato sulla catena di
chetto, verrà applicata la politica di default della
FORWARD, che, quindi, riveste una particolare impor
catena.
tanza per quello che riguarda la protezione dell'in
Per verificare il valore dell'azione dt default della
tera rete.
catena è sufficiente digitare, da riga di comando:
L'ultima catena, quella di OUTPUT, verrà presa in considerazione esclusivamente in due casi: quando
# iptables
-L
i pacchetti arrivati focalmente, ovvero che hanno attraversato la catena di INPUT, dovranno uscire dal
Chain INPUT
firewall, oppure più semplicemente quando essi
target
[policy ACCEPT)
prot
opt
source
destinatici!
source
destination
source
destination
sono stati generati dal firewall stesso, ad esempio una connessione 5SH diretta verso Interne! o verso
Chain FORWARD
un host interno.
target
prot
[policy ACCEPT) opt
In generale quindi si dirà che un pacchetto genera
to dal firewall attraverserà esclusivamente la cate
Chain OUTPUT
na di OUTPUT prima di uscire, un pacchetto diretto al
target
prot
(policy ACCEPTI opt
firewall attraverserà esclusivamente la catena di INPUT prima di entrare, mentre un pacchetto in
Si otterrà un output simile a quello sopra presenta
transito sul firewall attraverserà prima la catena di
to con, tra parentesi, il comportamento standard
FORWARD in ingresso e poi quella di OUTPUT durante
della catena, che normalmente è di ACCEPT, cioè
29
accettare, tutto il traffico.
relativo a connessioni già in essere.
E' possibile modificare tale comportamento con una
Con iptables e con l'ausilio di paroie chiave come
istruzione
NEW (nuova connessione), ESTABLISHED (connessio ne che ha superato con successo la fase del 3-way
# iptables
-P
handshake) e RELATED (traffico relativo ad una con
INPUT DENV
nessione, ad esempio ICMP di controllo) è possibile
rilanciando il comando sopra evidenziato si potrà
ottenere una buona flessibilità con il minimo sforzo.
notare come il valore di default della catena INPUT sia cambiato.
In questo modo, quindi, è possibile impostare il
Oltre ad offrire la possibilità di filtrare i pacchetti,
paradigma di filtraggio desiderato, se negare tutto,
tramite le tabelle nat e mangle permette di manipo
tranne quanto voluto (Deny Stance) oppure far pas
lare il traffico in entrata ed uscita per soddisfare
sare tutto tranne quanto espressamente negato
qualsiasi necessità.
(Accept Stance).
E' infatti possibile non solo decidere cosa fare di un
filtrare con IPTabies iptables permette di impostare regole che poi
certo pacchetto, se accettarlo o scartarlo, ma addi rittura di sostituire parti di esso, come l'indirizzo sorgente o destinazione, in modo da alterarne il
saranno verificate da NetFilter, che agisce a livello
normale comportamento.
del kernel (di cui, in effetti, fa parte).
Ad esempio, tramite la tabella nat e la catena
Tali regole potranno decidere di far passare il traffi
POSTROUTING, è possibile effettuare quel che comu
co buono ed escludere quello cattivo agendo su una
nemente si chiama masquerading e permettere la
serie di parametri, come l'indirizzo IP, la porta, lo
navigazione a più computer contemporaneamente:
stato di alcune flag. Nel riquadro 1 avrete un detta
le connessioni che verranno instaurate saranno
glio, anche visivo, sui campi più comuni sui quali si
viste, dall'esterno, come provenienti dal firewall,
effettua un filtraggio.
anche se in realtà saranno generate da host che
Le funzioni di iptables, tuttavia, non si limitano
risiedono in una rete locale posta dietro di esso.
solo al filtro dei pacchetti, perché questo potrebbe
Una regola tipo, applicabile alla maggior parte delle
essere limitante: in alcuni casi un pacchetto prove
connessioni dìalup ed ADSL diffuse attualmente,
niente da un certo host può essere rifiutato in un
potrebbe essere (posta pppo l'interfaccia pubblica):
certo contesto, ma può passare in altro contesto. Ecco, quindi, che servono delle regole orientate
* lptables
-t
nat
-A POSTROUTING
alla connessione.
■S
-o ppp9
192.168.Q.B/24
-j
MASQUERADE
Un esempio sarà illuminante: si decide di bloccare il traffico proveniente dal dominio EvilHacker.com
Questa regola si potrebbe leggere come: aggiungi
perché ritenuto non sicuro. Una regola del tipo bloc
alla tabella nat, nella catena POSTROUTING, una
ca
regola per cui tutti i pacchetti provenienti dalla rete
tutti i pacchetti provenienti dal dominio
EviiHacker.com potrebbe essere più che sufficiente.
locale C192.168.0.0/24J che verranno tnstradati
Cosa succede, però, se decido di coliegarmi al ser
sull'interfaccia esterna ('pppGj vengano mascherati.
vizio web del sito bloccato per controllare, ad esem
Per fare un altro esempio, si potrebbero ricevere
pio, i loro ultimi defacement? Il collegamento via
dall'esterno i pacchetti ed inoltrarli a computer
browser fallirò, in quanto la regola impostata non
diversi a seconda della porta di destinazione, oppu
permetterà il loro traffico di risposta alla richiesta.
re dell'IP di provenienza: se, ad esempio, abbiamo
Con una direttiva orientata alla connessione questo
deciso di mettere in ascolto un server web sul PC A
non sarebbe successo: sarebbe bastato indicare un
ed un server di posta sul PC B, tramite il nostro
filtro del tipo biocca le nuove connessioni prove
firewall Linux potremo riscrivere l'indirizzo di desti
nienti da EviiHacker.com, ma permetti il traffico
nazione de! pacchetto facendo credere ai server web e mail che quel pacchetto fosse destinato pro prio ad essi: il tutto grazie sempre alla tabella nat e
WEB0GRAF1A
alia catena PREROUTING.
Riprendendo l'esempio precedente e posti a
Riferimenti web
192.168.0.3 l'indirizzo di PC A ed a
192.168.0.4
quello di PC B, una regola tipo potrebbe essere: Linux IpTables H0WT0 http://www.linuxguruz.com/iptables/hovrto
*
iptables
-t
Firewall and Proxy Server HOWTO http://www.ibiblio.org/pub/Linux/docs/HCWTO /other-formats/html single/Firewall-HOWTO.html
nat ■p
*
iptables
-t
nat -p
-A PREROUTING tcp
-i
pppO
80
-]
DNAT
-A PREROUTING
-i
ppp8
tcp
-dport
--dport
25
■)
DNAT
--to
192.168.Q.3
-to
192.168.0.4
NetFilter/IpTables Project Homepage http://www.netfilter.org
In questo caso potremo leggere: aggiungi alla tabel
Building Internet Firewalls 2nd edition
la nat, nella catena di PREROUTING, una regola tale
D. B. Chapman and E. D. Zwicky
O'Reilly & Associates
TCP/IP Illustrated, Volume 1: Thè Protocol W. Richard Stevens
per cui i pacchetti in arrivo dall'interfaccia esterna (pppQ) e destinati alla porta 80 (25) vengano redi
retti all'indirizzo 192.168.0.3 (192 .168.0.4J.
Just Linux... ovvero il kernel! // kernel ideato da Linus Torvatds è il nucleo attorno al quale sono costruite tutte le distribuzioni Linux, vediamo meglio come funziona
e come riesce ad armonizzare i vari processi Carlo Manuali <c.manuali@linuxpratico.coirp
Oggigiorno si sente spesso parlare di distribu zioni Linux, programmi per Linux, compatibi
lita di Linux e, perché no. di pinguini; ma che
•~
cos'è Linux? Una persona, un simpatico animaletto,
o quando si dovranno recuperare informazioni quali
un insieme di programmi od un sistema operativo?
ad esempio il numero identificativo di un processo
fn realtà nulla di tutto ciò; Linux dì per sé non rap
(PID). eseguire altri processi figli delle applicazioni
presenta altro che il Kernel, il cuore sul quale si basa il
in esecuzione, o semplicemente eseguire un
funzionamento di un sistema operativo Unix-like, più
comando del sistema operativo, come mostrato in
propriamente chiamato GNU/Linux, ovvero un insieme
figura 2.
di applicativi OpenSource più il Kernel stesso.
La normale esecuzione di un processo in User
Linus Torvalds ne è l'ideatore ed il pinguino ne risulta
Space può inoltre essere interrotta dai cosiddetti
di fatto il simbolo; intorno ad esso vengono quindi
IRQ, acronimo di Interrupt ReQuest. ovvero delle
raccolte una serie di applicazioni, il cui insieme
richieste generate di solito da un dispositivo che
forma una distribuzione Linux.
deve comunicare con urgenza il proprio stato o il
Esse differiscono l'una dall'altra sostanzialmente
completamento delle proprie operazioni.
per l'insieme dei programmi forniti, il sistema di
Ad esempio, durante un programma che effettua
gestione dei pacchetti e la licenza; ma il Kernel è
dei calcoli scrivendo i risultati su disco, può capitare
unico, lo stesso per tutte le distribuzioni, l'Imman
di imbattersi in un blocco danneggiato: in questo
cabile direttore d'orchestra che armonizza i diversi
caso l'hard-disk genererà, mediante un proprio
suonatori ed i loro strumenti.
canale dedicato, un IRQ per segnalare questo
User Space e Kernel
Space: le system cali e gli eventi WQ
evento; il Kernel quindi interromperà temporanea mente l'esecuzione della CPU e gestirà la particolare eccezione mediante il relativo gestore specifico di ogni IRQ. il cui codice verrà eseguito in Kernel Space. Al termine della gestione dell'eccezione il controllo
II Kernel è quindi un particolare software tramite il
verrà restituito al processo iniziale, che riprenderà,
quale gli utenti possono condividere ed accedere
se possibile, la normale esecuzione come mostrato
alle diverse risorse; in generale si parla di User
in figura 3.
Space intendendo l'insieme delle applicazioni e delle operazioni eseguite dagli utenti, mentre indi chiamo con Kernel Space l'insieme delle operazioni
più a basso livello gestite direttamente dal Kernei, come ad esempio la gestione della memoria o l'ac
Applicazioni
cesso ai diversi dispositivi hardware, la cui intera
utente
zione risulta trasparente all'utente finale, come mostrato in figura 1.
User
Ad esempio, ogni volta che si vuole leggere o scri
Space
vere in un file, sarà necessario accedere alla por zione di software che si occupa della gestione del particolare tipo di filesystem, così come quando
Kernel
si vuole accedere ad un device, come ad esempio
Space
il CD-Rom, verranno invocate le routine specifiche contenute
nel
Kernel relativamente a questo
dispositivo.
al disco
Hardware
Ciò avviene mediante le cosiddette chiamate di sistema, una sorta di collegamento fra le necessità delle applicazioni utente e le routine di gestione del Kernel del sistema operativo utilizzate. In generale quindi, le system Cali intervengono ogni
L'interazione fra User Space e Kernel Space risulta completamente trasparente all'utente
volta che si dovrà accedere ad un qualsiasi device.
31
Il Multitasking, i Kernel monolitici ed ì microkernel II concetto fondamentale dei moderni sistemi ope
Applicazioni
rativi è il concetto di Task, ovvero un'applicazione
utente
in esecuzione in memoria che condivide tutte le
jS est /etc/sysctl.conf
risorse disponibili, incluse la memoria fisica ed il
User
processore, con gli altri task.
Space
Questa condivisione è appunto gestita da un mec
: sys_read()
canismo chiamato Multitasking: sostanzialmente questo meccanismo prevede che il programma cor
Kernel
—
Space
rentemente in esecuzione, ovvero il relativo pro cesso, venga ruotato con gli altri processi ad inter-
al disco
vaili di tempo regolari chiamati consuetamente
Hardware
Timeslice; l'utente quindi avrà l'illusione di eseguire più processi in parallelo, contemporaneamente, anche se in realtà essi verranno eseguiti in piccoli
y
v
intervalli successivi, alternandosi velocemente in
L'esecuzione di comandi di sistema
base a slot di tempo predefiniti.
mediante l'utilizzo delle system Cali
Ogni task può quindi essere in uno stato di READY, ovvero pronto per l'esecuzione, oppure in uno stato di BLOCKED. ovvero un processo che sta aspettando la disponibilità di una risorsa; al termine di ogni Timeslice, generalmente di lOms, o quando il task in esecuzione va in attesa per accedere ad un device
Urne
sequenziale, come ad esempio una stampante, un nuovo task presente nella lista dei processi pronti verrà avviato, come mostrato in figura 4. Questo meccanismo a 'quanti di tempo', che pren de il nome di Task Switching, viene gestito da un porzione di codice chiamata Scheduler; tale mecca
Nonnaie esecuzione
nismo è comunque utilizzato esclusivamente per i
del programma
processi presenti in User Space, mentre le singole
#2
attività in Kernel 5pace vengono eseguite in un'unica operazione con la massima priorità e senza interru
Kernel Space
User Space
zioni: questi tipi di Kernel, a cui Linux appartiene, sono detti Kernel monolitici. Di contro, i cosiddetti microkernel gestiscono ogni tipo di operazione tramite task, comprese i'accesso
ai device, alla memoria ed alla rete, rendendo di
Schema di un ÌRQ (Interrupt ReQuest)
ovvero l'interruzione di un operazione
fatto questi nuclei, come ad esempio il Kernel del
~
sistema operativo Minix, più gestibili e facilmente comprensibili; tale architettura, seppur ottimale a
livello didattico, offre però notevoli problemi di pre stazioni in quanto non viene fatta alcuna distinzione fra le priorità delle diverse operazioni che si rendono di volta in volta necessarie. In Linux, un'eccezione è rappresentata dai cosid detti Kernel Threads, ovvero un piccolo insieme di task che implementano una sorta di mini-microkernel
per operazioni particolari quali ad esempio la gestione della memoria di swap, come verrà evi denziato nel paragrafo successivo.
La Gestione della Memoria: la virtual memory e la swap
Task 1 Scheduler
Task 2 Task 3
\
J
Ogni computer dispone della cosiddetta memoria RAM, acronimo di Random Access Memory, ovvero
una memoria molto veloce, utilizzata per caricare i dati ed i programmi pronti per essere eseguiti dai pro cessore e per memorizzare tutti gli stadi intermedi presenti durante l'esecuzione, poi generalmente
32
meccanismo che gestisce il multitasking noto come Task Switching
w
rimossi alla conclusione dì ogni operazione.
Per ovviare a ciò, è stata pensata una seconda tec
A fronte della disponibilità di tale memoria fisica,
nica, chiamata a paginazione: in pratica essa consi
esistono diversi metodi per organizzare al meglio la
ste nel suddividere la memoria fisica in N pagine di
gestione e l'utilizzo della RAM: sostanzialmente si
dimensioni fisse e ben note a priori in modo tale da
parla di gestione a segmentazione e gestione a
poter essere facilmente indirizzabili; in questo
paginazione.
modo sarà possibile caricare un processo in una o
La prima tecnica prevede di organizzare la memoria
più pagine, a seconda delle dimensioni del codice
fisica suddividendola in segmenti contigui dove, in
da allocare in memoria.
ognuno di essi, verrà caricata la particolare applica
Il problema di questo approccio deriva dal fatto che
zione da eseguire; avremmo quindi un segmento di
una volta che verrà allocato un processo in una
lunghezza variabile per ogni processo che andrà in
pagina, l'eventuale spazio libero di quella pagina
esecuzione.
andrà di fatto sprecato, come mostrato in figura 6.
li problema di questo approccio è che, come
La soluzione a questi inconvenienti è basata sulla
mostrato in figura 5, ipotizzando che i processi B e
combinazione dei precedenti due approcci: nel
D siano terminati, e che si voglia caricare ed eseguire
Kernel Linux viene infatti utilizzata una gestione di
il processo E. questo, pur essendo di dimensioni
tipo misto che prevede l'utilizzo di quattro segmenti
inferiori alla memoria resa disponibile dall'uscita di
phmari dove vengono inizialmente caricati i processi
B e D, non potrà essere allocato in quanto in una
da mandare in esecuzione; in particolare si hanno
gestione a segmentazione della memoria un qual-
due segmenti per il codice ed i dati in Kernel Space
siasi processo non potrà essere suddiviso in più
e due segmenti per il codice ed i dati in User Space.
parti, dato che i segmenti sono aree fisse le cui
La reale allocazione della memoria fisica verrà poi
dimensioni non risultano note a priori al momento
effettuata per paginazione, dove ia dimensione
dell'allocazione.
della singola pagina risulterà essere molto piccola al fine di evitare sprechi che possono coincidere, nel caso peggiore, con il numero dei task attivi moltiplicato per la dimensione di una singola pagina, di
solito di 4096 0 8192 Bytes.
processo A processo B
Processo E
Un altro meccanismo molto utile implementato da
exit
tutti i moderni sistemi operativi è la memoria di swap.
Tale area di memoria viene utilizzata per espandere ia disponibilità della memoria RAM complessiva e B+D
per ridurre al minimo il numero degli accessi diretti
E>B
al disco fisso; in realtà essa corrisponde ad una par
Processo C
E>D
tizione del disco stesso, o ad un file, esclusivamente dedicato a tali funzioni.
il processo E
Possiamo immaginare la swap ed il disco fisso come
non può essere eseguito
processo D
exìt
Memoria RAM
la cache di un browser per la rete Internet: si cerca infatti di ridurre al minimo gli accessi diretti alla rete al fine di velocizzare il tempo di risposta. Il Kernel Linux implementa questa area di memoria
La gestione a segmentazione della
memoria può presentare qualche problema
intermedia mediante un meccanismo a paginazione puro, gestito da un insieme di Task eseguiti in
Kernel Space; le principali operazioni consistono nel determinare quando una pagina dovrà uscire dalla
memoria di swap per essere poi memorizzata nel disco fisso, operazione denominata Swap-Out, e quando invece una pagina dovrà essere acceduta dalla memoria principale, operazione denominata Swap-ln.
Tali operazioni, eseguite sempre in Kernel Space,
non presentano i consueti svantaggi derivanti da un'architettura a microkernei in quanto la gestione della memoria di swap risulta essere un processo molto lento che quindi non richiede particolari esi
genze di velocità di esecuzione.
Il Networking Ma di che cosa si occupa il Kernel durante tutte le operazioni che coinvolgono la nostra scheda
di rete? Ed in particolare, ricordando l'architet tura a livelli del protocollo TCP/IP, come opererà La gestione a paginazione della memoria: la
memoria in azzurro è utilizzata dal processo A
per trasferire i pacchetti comunicazione?
nei due sensi della
RIQUADRO 1
Alcuni segnali Unux/i386 I segnali rappresentano un meccanismo molto simile agli IRQ descritti nell'articolo, utili per segnalare ad un processo, o ad un insieme di questi, un particolare evento di sistema; a differenza di questi ultimi però, i segnali sono accessibili anche in User Space, ad esempio tramite il comando Itili (1).
I principali segnali di un sistema Linux. identificati ognuno da un proprio numero, sono riportati nella seguente tabella:
Descrizione
Nome
Numero 1
SIGHUP
Interrompe e
9
SIGKILL
Forza
11
SIGSEGV
Indica che è stato utilizzato un
18
SIGCONT
Fa
19
SIGSTOP
Sospende l'esecuzione di
La
fa
ripartire
terminazione di
ripartire
WEBOGRAFIA
Books & Lìiìks Thè Linux Kernel Mailing List (LKML1 FAQ: http://www.tux.org/lkml Kernelnevvbies.org Site:
http://www.kernelnewbies.org
Documenti On-line: http://jungla.dit.upm.es/-jmseyas
/linux/kemel/hackers-docs. html GNU Operating System - Free Software Foundation: http://www.gnu.org
Officiai Linux Kernels and Patches Download Site; http://www.kernel.org KernelAnalysis-HOWTO:
http: //tltfp. org/HOWTO/KernelAnalysis - HOWTO. html Linux Loadable Kernel Module HOWTO: http://tldp.org/HOVrO/Module-HOWTO/index.html Kernel Rebuild Guide; http://www.digitalheniiit.com/linux/Kernel-Build-HOWro.html
un un
processo. processo.
l'esecuzione di
un
indirizzo di memoria non valido. processo
precedentemente
sospeso.
un processo.
eseguite in Kernel Space che possono essere aggiunti o rimossi in tempo reale tramite comandi
quali insmod{8), rmmod(8) o modprobe(8).
Durante la compilazione del Kernel, è possibile spe cificare che alcune delie funzionalità desiderate
dovranno essere rese disponibili sotto forma di moduli esterni e non compilate all'interno de! Kernel stesso; ciò permetterà, oltre che di ridurre all'es senziale il core del Kernel Linux di base, anche di introdurre una modulante molto ampia per suppor tare i più svariati dispositivi hardware come ad
esempio le diverse schede di rete o i più diversi dis positivi USB.
In questo modo, si avrà un unico Kernel di dimen sioni molto ridotte, più veloce ed efficiente, arricchito dinamicamente da una serie di moduli per la gestio ne delle specifiche periferiche laddove necessario; la lista dei moduli caricati dal sistema è recuperabi le mediante il comando lsmod(8). Una volta che si sono individuati i moduli che si vorran
no aggiungere di default al nostro Kernel Linux, è possi bile specificarne la lista nel file modules.conf di solito presente nella directory /etc, in modo da permetterne
Sostanzialmente il Kernel lavora in modo molto
il caricamento automatico durante l'avvio del sistema
semplice a seconda se si stia trasmettendo o rice
operativo, come mostrato di seguito.
vendo un pacchetto; in trasmissione, esso si preoc
cuperà infatti di convertire i dati ricevuti dall'appli cazione tramite
#
cat
/etc/modules.conf
il corrispondente socket in
pacchetti TCP/IP. di effettuare lo split di tali pac
alias ethO
chetti in trame di 1500 Bytes per il livello inferiore,
alias usb-controller usb-uhcì
ed infine di inviare tali frame alla scheda di rete
alias
{N!C) mediante gli opportuni driver della scheda.
options
pcnet32
char-major-14 5b
io=Bx226
5b irq=5 dma=l
dmal6=5
mpu
10=0x338
In ricezione invece, verrà eseguito il processo inverso: prima di tutto verranno ricevute i diversi frame dai
In questo esempio verranno caricati all'avvio ì moduli
dispositivi di rete mediante l'opportuna gestione
necessari per la gestione dell'interfaccia di rete, del
delle fasi di handshake, come ad esempio la sincro
sottosistema USB e della scheda audio, alla quale
nizzazione che avviene nei modem durante l'inizia-
verranno passati una serie di parametri, come ad
lizzazione della connessione.
esempio il numero di IRQ, mediante il comando
Una volta ricevuti i frame, il Kernel si preoccuperà di
options.
costruire i pacchetti TCP/IP e di spedirli ai livelli
Un notevole vantaggio derivante dell'utilizzo dei
superiori; tali pacchetti verranno infine convcrtiti
cosiddetti Loadabie Kernel Modale (LKM) è rappre
nei dati finali da passare all'applicazione specifica
sentato anche dal fatto che il più delle volte non
che ne aveva fatto richiesta, o che era in ascolto,
sarà necessario ricompilare l'intero Kernel ai fine
attraverso il relativo socket.
1 Moduli del Kernel I moduli del Kernel Linux sono porzioni di codice
di effettuare eventuali modifiche al funzionamento
dei nostri dispositivi o di fronte alla sostituzione o all'aggiunta di ulteriori periferiche appena acquistate.
m
II protocollo SMTP: al cuore delle e-mail Conoscere come viene effettuato il trasferimento delia posta elettroni ca è fondamentale per un sistemista che si rispetti, ma anche per non
cadere in trappola del famoso "phishing" che sta ormai divagando... Carlo Manuali
<c.manuali@Unuxpratico.com>
La posta elettronica è senza dubbio, insieme al web, l'applicazione più utilizzata dagli utenti di Internet ed il suo funzionamento è regolato
-
da un protocollo chiamato SMTP. acronimo di
messaggio al destinatario; per questo, come
Simpie Mail Transfer Protocol: per comprenderne al
mostrato nella figura 1, l'MTA cercherà di determi
megiio la diffusione, basti pensare che circa la metà
nare quale sia il giusto MTA remoto e quindi spedirà
delle connessioni TCP in un determinato istante
ad esso il messaggio e sarà poi compito di quest'ul
riguardano proprio il servizio di ricezione ed invio
timo occuparsi della consegna all'utente effettivo,
dei messaggi.
Il sistema di posta elettronica
memorizzando la mail all'interno di una specifica car tella di proprietà dell'utente di destinazione.
Da questo momento in poi, si può dire che il mes saggio sia stato effettivamente consegnato e l'uten te di destinazione potrà coilegarsi alla propria
^
Qua di seguito cercheremo di capire come un singo
casella di posta per scaricare la nuova E-Mail rice
lo messaggio di posta elettronica, spedito da un
vuta tramite il proprio User Agent, mediante la shell
utente qualsiasi collegato in rete, arrivi a presentar
o attraverso il web.
si sul monitor di un utente remoto, come mostrato
Ad esempio, un messaggio in uscita inviato dallo
in figura 1.
utente c.manuali@unipg.it destinato all'indirizzo
Tutti gli utenti che vogliono spedire un messaggio di
di posta elettronica p.tassone@oltrelinux.com
posta elettronica avranno a che fare con un proprio
verrà inviato dallo User Agent del mittente
User Agent. tipicamente un software per scrivere,
e.manuali al mail server locale della rete unipg.it.
spedire e ricevere uno o più messaggi di posta
il quale
(Thunderbird, KMaii piuttosto che Eudora, Outlook
ne oltrelinux.com che effettivamente si prenderà
oppure i client Web sui portale preferito).
in carico il messaggio e lo trasferirà sulla mailbox
La funzione principale dello User Agent è quindi
dell'utente di sistema al quale corrisponde l'account
rintraccerà l'MTA de! dominio di destinazio
quella di offrire un'interfaccia amichevole all'utente
p.tassone nel dominio.
per la gestione dei messaggi, che permetta di scari
C'è ancora da focalizzare l'attenzione sulla comuni
care ed inserire attachment nei messaggi, scrivere
cazione tra User Agent e Mail Transfer Agent e tra i
messaggi off-line con la conseguente gestione delle code, scaricare i messaggi ricevuti da altri utenti e
così via. Dal punto di vista dell'architettura, lo User Agent si
preoccuperà di collegare l'utente al cosiddetto MTA, acronimo di Mail Transport Agent, ovvero il
server di posta locale che consentirà di spedire effettivamente il messaggio di posta elettronica
User Agent (UA)
JJjj#\j^i: nautilus.unipg.it
attraverso Internet.
li
Ogni organizzazione in rete, quindi, dispone di un
proprio MTA, più comunemente chiamato Mail Server, al quale lo User Agent si dovrà connettere per spedire ogni messaggio in uscita.
In pratica quindi, ogni volta che viene richiesta la spedizione di un messaggio, esso verrà trasferito dallo User Agent al Mail Trasport Agent locale; è per
(Mail Transport Agent (MTA) mail.unipg.it
User Agent (UA) ■«-
penguin.oltrelinux.com
il Transport Agent (MTA) mail.oltrelinux.com
questo che, per essere precisi, l'esito di invio effet
< Use r>@oltrel in ux.com
tuato con successo riportato dal nostro ciient di
Mailbox
posta elettronica non corrisponde affatto all'effetti va avvenuta consegna del messaggio di posta al
percorso effettuato da un messaggio di
destinatario da noi specificato. A questo punto è
posta elettronica
l'MTA locale che dovrà preoccuparsi di consegnare il
INFORMAZIONI
diversi MTA e, quindi, sul protocollo SMTP vero e
proprio che di fatto regola, in generale, il trasferi
lo standard NTV ASCII
mento di questo tipo di messaggi sulla porta 25 del protocollo TCP.
Con il termine NVT ASCII si intende la variante americana a 7
le basì del
bit del codice ASCII utilizzato dall'insieme dei protocolli di Internet: esso si basa sostanzialmente sul principio in base al
protocollo SMTP
quale ogni 7 caratteri significativi verranno trasmessi in rete
mediante 1 Byte con il primo bit settato a zero, utilizzato per
La comunicazione tra due MTA avviene attraverso
codificare i Carriage Retum (CR), ovvero i ritorni a capo, e le
un meccanismo di codifica chiamato NVT ASCII; allo
indicazioni di End-Of-Line (EOL).
stesso modo del protocollo FTP, una delle due parti
Una delle caratteristiche del protocollo SMTP, così come per il
invia dei comandi all'altra, la quale risponde con dei codici numerici, chiamati codici di stato, più una stringa opzionale. Vengono utilizzati cinque coman di per inviare un messaggio di posta da un MTA
protocollo FTP o per il protocollo di Telnet, è quella di usare tale standard per la trasmissione di tutto ciò che riguarda il protocollo stesso, dalla gestione dei messaggi all'invio dei comandi, dalla trasmissione degli headerai dati contenuti nel messaggio di posta elettronica.
all'altro, come riportato nel riquadro 1.
Un esempio pratico molto interessante circa l'utilizzo di questa
La comunicazione inizia quindi con l'apertura della
variante dello standard ASCII può essere trovato su
connessione sulla porta 25 del server MTA di desti
nazione, che di solito risponde con un messaggio di
http://www.sctt.wlv.ac.uk/-jphb/conms/telnet.html relativamente al protocollo di Telnet.
benvenuto, chiamato greeting message, il quale
può riportare, oltre che il codice di stato, informa zioni
come
FQDN del
il
Fully
server di
Qualified posta,
il
Domain nome o
Name la
INFORMAZIONI
o
versio
I protocolli POP e IMAP
ne del software utilizzato, lo stato e l'ora:
II protocollo chiamato POP3, acronimo di Post Office Protocol 220 mail.unipg.it
ESMTP Sendmail at
Ihu,
8.12.11/8.12.11:
10 Mar 2005
ready
16:62:32 .8106
versione 3, è un protocollo molto semplice, privo di stato, utilizzato dagli User Agcnt per collegarsi ad un server di posta
elettronica attraverso la porta 110/tcp. autenticarsi attraverso A questo punto ii client si presenterà mediante il comando HELO, inviando al server il proprio FQDN:
posta in arrivo dalla mailbox presente sul server SMTP remoto al client di posta elettronica locale. Il protocollo chiamato IMAP4. acronimo di Internet Message
=-»HELQ nnutilus . unipg. il. 25G nail.unipg.it
la classica coppia di logìn e password e quindi trasferire la
Access Protocol, giunto ormai alla versione 4, è un protocollo
Hello nautilus.unipg.il
[141.250.258.271.
utilizzato spesso dai client di posta elettronica via web per
pleased to meet
you
collegarsi ad un server SMTP attraverso fa porta 143/tcp: esso differisce dal protocollo di POP in quanto t messaggi rimangono
II server potrà quindi, attraverso questa informazio ne, effettuare una richiesta al DNS per vertficare l'autenticità del client ed eventualmente determina re la corrispondenza delle proprie politiche di sicu
solitamente sul server e sarà quindi possibile accedere ad essi da un qualsiasi host senza doverli necessariamente scaricare. Inoltre, in quanto IMAP è un protocollo in grado di mantenere le informazioni riguardanti fo stato, sarà possibile
personalizzare l'ambiente creando, modificando e eliminando
rezza con la rete di appartenenza dell'indirizzo IP
cartelle o specificando tutta una serie di preferenze come la
che si sta coilegando al servizio di posta, al fine di
firma, i contatti, le whitelist e le blacklist.
concederne l'accesso o meno. Attraverso i due successivi comandi, MAIL e RCPT,
verrà specificato il mittente ed il destinatario dei
A
messaggio, che potrebbe anche essere più di uno:
■ -Carlo.
»>MAIL
256 KAA259404 Message
250
From:
>»RCPT To: 250
c.manijali@unipg.it
c.manuali@unipg.it...
presto,
accepted
for deUvery
Sender ok
p.tassonetaoltrelinux.con
p.tassone@oltreliriu)i.com...
Recipient
L'obiettivo dei comandi MAIL e RCPT è di fatto lo
ok
stesso di quando sì scrivono gli indirizzi di prove II contenuto del messaggio verrà quindi inviato al
nienza e di destinazione fuori da una lettera desti
server tramite il comando DATA che identificherà la
nata al circuito di posta ordinaria: esse infatti sono
fine del testo del messaggio tramite un singolo
le uniche informazioni che risultano essere essen
punto ".", inserito in un'unica riga; infine il coman
ziali ad un MTA per spedire il messaggio.
do QUIT chiuderà la connessione TCP, come mostra
Attraverso il
to di seguito:
l'effettivo contenuto del messaggio, organizzato in
comando DATA
viene invece
scritto
diverse righe di testo, lunghe non più di 1000 Byte. Il contenuto del messaggio verrà poi organizzato in
>»DATA
354 Enter mail, Ciao
end with
'.'
on
a
Une by
due parti, suddivise da una riga vuota: la prima
itself
conterrà l'intestazione del messaggio originale,
Patrizio,
volevo confermarti
voi in
che il
prossimo week-end
redazione e che arriverà verso le ore
sarò
13.
li
da
ovvero l'insieme degli header, mentre la seconda costituirà il testo del messaggio vero e proprio. Tramite ogni header vengono quindi specificati i
valori dei diversi campi quali ad esempio From, To,
tutti gli header di questo tipo, ovvero aggiunti dalle
Date, Reply-To. Cc e Subject, inseriti inizialmente
cosiddette applicazioni utente esterne, inizieranno
dallo User Agent all'interno del messaggio durante
con la strìnga X-.
la creazione e l'invio dello stesso.
In ogni caso, quando uno User Agent invia un mes
A questi vengono inoltre aggiunte da ogni singolo
saggio di posta elettronica al proprio MTA, oppure
MTA aftre ulteriori informazioni sempre sotto forma
diversi MTA si scambiano un messaggio tra di loro,
di header, attraverso i campi Received e Message-
chi lo riceve tenterà di spedirlo immediatamente, in
Id; l'insieme di questi header che vengono ulterior
tempo reale; se per qualche motivo la spedizione
mente allegati al testo vero e proprio serviranno
dovesse fallire, l'MTA dovrà inserire il messaggio in
infatti ai diversi User Agent per riportare al destina
una propria coda e ritentare la spedizione, di solito
tario tutte le informazioni circa il messaggio ricevu
eseguita ogni 30 minuti.
to nonché il percorso effettuato ed il suo identificattvo, come mostrato in riquadro 2.
Il concetto di Belay
In particolare, in quest'esempio, si può notare come
Con questo termine. Relay, si intende la possibilità,
il messaggio sia stato inviato in origine dall'host
normalmente negata, di utilizzare un Mail Transfer
seti.unipg.it al server di posta mail.unipg.it, il
Agent il cui dominio di appartenenza sia diverso sia
quale ha trasferito la mail in questione al server
quello del dominio di partenza dello User Agent sia
SMTP egeo. unipg. ìt che si è occupato della conse
da quello del dominio di arrivo dell'indirizzo di desti
gna vera e propria; si noti infine come vengano
nazione del messaggio di posta elettronica.
aggiunti ulteriori header come X-PMX-Version e
In altre parole, uno User Agent con indirizzo IP
X-PerlMx-Spam da un sistema anti-spam esterno:
10.0.0.1 nella rete netl.org non dovrebbe poter utilizzare un Mai! Transfer Agent con indirizzo IP 11.0.0.1 della rete net2.org al fine di spedire un
RIQUADRO 1
cinque nomadi usati per la spedizione della posta COMANDO
al server. Comando per specificare il sender del messaggio.
RCPT
Comando per specificare uno o più receiver del messaggio.
DATA
Comando per inviare il corpo del messaggio
QUIT
posta
elettronica
all'indirizzo
nio net3.org è 12.0.0.0. Un MTA deve invece poter essere sempre utilizzabi le, senza alcuna restrizione sull'indirizzo IP di prove destinato agli utenti della stessa rete di apparte
Comando iniziale di presentazione del client
di
carlo@net3.org, in cui l'indirizzo di rete del domi
nienza, al fine di spedire un quaisiasi messaggio
DESCRIZIONE
HELO
messaggio
nenza del server di posta considerato: ad esempio,
per spedire una mai! ad un quaisiasi utente <user>(3unipg . ìt si dovrà poter utilizzare, a partire da un qualunque indirizzo IP. l'MTA della rete unipg. it. In ogni caso, per ovviare a queste limitazioni e ren
formato dagli header più il Cesto del
dere gli MTA più flessibili, sono state introdotte
messaggio.
alcune funzionalità ed estensioni aggiuntive che
Comando per chiudere la connessioni SMTP.
permettono di realizzare una sorta di Open Relay sicuro, ovvero dei meccanismi che consentono l'ac
cesso in sicurezza ad un server di posta elettronica
RIQUADRO 2
La mail con i vari header
da tutti i client in rete. In effetti le limitazioni maggiori durante le operazio ni di invio della posta elettronica sono sicuramente
dovute all'assenza di autenticazione: a tal scopo è from
carlo@uiupg.it
Received: by
«ed
Aor
froaniail.unlpg.it
egeo.unipg.it
Wed,
freni seti.unipg.it
by nail.unipg.it
19:46:29
-itti
27 Apr
(141.256.1.235)) ESMTP
2865
(setl.unipq.it
(8.12.11/8.12.11)
quindi stato previsto il supporto per l'accesso rego
2B85
(rs.unipg.it
18.9.3/8.9.3)
for <carlo3umpg.it>;
Received:
27
m
KAA252B44
1B:46:29 •8268
(141.259.259.25])
with SHTP id
for Carlo3unipg.it; (envelope-fro»
To:
Wcd,
27 Apr
2065
1B:4J:5B
«6298
carloeunipg.it)
Messaggio di
Wed.
27 Apr
Hessage-Id:
un breve intervallo di tempo, ad esempio di 10
prova 10:-14:38
minuti, successivo all'autenticazione già effettuata
«B2Q0
4.7.1.138975.
Antispam-Englne:
2.6.3.1.
2895.4.27.9
X-PerlMx-Sparii:
Gauge=IIlIin,
Report-1
HISSIMG 8,
5UBJ
Hessaggio di --Carlo
dallo stesso indirizzo IP per scaricare la propria
<2005B4:70B44.j3RBlcHH023465SwaU.unipg.lt>
X-PHX-Version: □ata:
2005
test
sciuto con il nome di "POP before SMTP", che per di un dominio al fine di spedire posta elettronica per
carlogunipg.lt
Date:
la cifratura dei messaggi in uscita.
mette ad un quaisiasi indirizzo IP di utilizzare l'MTA
carlo@unipg.it
Subject:
messaggi; tale estensione del protocollo, denomina
ta SMTPs, mediante la porta 465/tcp realizza anche Inoltre è possibile utilizzare un meccanismo, cono
]3R8icKN923465
Fron:
lato da login e password durante la spedizione dei
Probability-TV
UNUSABLE HSGIO
da carlo@unipg.lt
81
Antispam-
posta attraverso il protocollo P0P3.
I Relay Agent e i record MX
a carlo@unipg.it
Abbiamo visto come ogni rete corrispondente ad un nome di dominio dovrà necessariamente disporre di
^^ 1 CIittici
di stato dei server di posta
Durante lo scambio fra User Agent e Mail Transfer Agent, o fra due MTA distinti, ogni server replica ai comandi del client mediante una serie di codici di stato accompagnati da una stringa opzionale che integra il loro particolare significato; i codici
di stato utilizzati sono riportati nella tabella seguente.
Risposta del server
Risposta del server
Descrizione
Descrizione
220
Servizio pronto per il <dominio>
500
Errore di sintassi o comando sconosciuto
221
Chiusura del canale trasmissivo per il
501
Errore di sintassi negli argomenti o nei parametri
<dominio> 250
Richiesta completata
502
Comando non impiementato
251
Redirezione
503
Sequenza errata di comandi
354
Inizio del contenuto del messaggio:
504
Parametro non implementato
terminare con <CRLF>.<CRLF>
550
Azione non intrapresa: mailbox non
421
disponibile
Servizio non disponibile: chiusura del
canale di trasmissione
551
Utente non locale
450
Azione non intrapresa: mailbox occupata
552
451
Azione interrotta: errore durante l'esecuzione
Azione non intrapresa: problemi di allocazione
553
Azione non intrapresa: formato della
452
Azione non intrapresa: spazio di Storage 554
Transazione fallita
insufficiente
Mail Transport Agenl [MTA) smtp.oltrelinui.com <user>@oltrelinux.com mailbox
mailbox non consentito o errato
Pnstfix Documentatimi POSTOSI
(Mail Transport Agent (MTA) mail.unlpg.lt
...
....
Q»n ni 4>k»r> >|n>. ,
■
- "■
-,
•
■
■: ■
in.
i
I Transport Agent [MTAì
mx.oltrelinux.com
M_:l,, ,.,.-.,
anti-virus
anti-spam antiche di sicurezza
L'architettura standard di un sistema di posta elettronica
un proprio Mail Transport Agent, ovvero un mail
Postfix, www.postfix.com, è uno dei server 5MTP più diffusi e sicuri
corrisponda ad un cosiddetto mail-hub, una sorta di
server che si preoccuperà di ricevere, consegnare e
punto di accesso che riceve i messaggi in entrata,
spedire la posta elettronica in uscita o in arrivo da
esegue alcuni controlli (tipicamente ripulisce da
un indirizzo del proprio dominio.
virus e spam le E-Mail) e che poi trasferisce il mes
Tale server prende il nome di server SMTP, e viene
saggio stesso al vero server SMTP interno all'orga
esplicitamente indicato nei server DNS con un tipo
nizzazione: in questo caso tale server, specificato
dì record speciale denominato record MX, acronimo
come server MX, prende il nome di Relay.
di Mail eXchange.
E' quindi ragionevole pensare che i messaggi pas
Attraverso una semplice query DNS quindi, un MTA
sati al server SMTP interno, spesso contenente le
locale può sempre venire a conoscenza di quale sia
mailbox degli utenti, siano messaggi di posta piut
il corretto MTA di destinazione al quale spedire un
tosto "puliti", privi di codice malizioso o comunque
messaggio in uscita.
indesiderato.
Potremmo quindi dire che il record MX costituisce
Questa architettura, mostrata in figura 2, presenta
una specie di interfaccia fra il sistema di posta elet
infine un ulteriore vantaggio derivante dal fatto che
tronica di un'organizzazione e la rete Internet; in
il server sul quale risiede la posta ricevuta, in atte
realtà oggigiorno spesso si opta per una soluzione
sa di essere scaricata dagli utenti, non può essere
dove il server corrispondente al record MX non sia il
raggiunto direttamente dall'esterno.
vero
Concludiamo questo paragrafo sottolineando il fatto
server
del
dominio
ma
piuttosto
che comunque è prassi comune specificare nei
MIME e le evoluzioni
server DN5 più di un record MX, identificati secondo
del protocollo
una determinata priorità espressa solitamente attraverso un numero multiplo di 10, al fine di
A fronte al crescente diffondersi della posta elettro-
garantire una sorta di ridondanza del servizio a
nica sono state introdotte diverse estensioni che
fronte di crash o malfunzionamenti del server di
riguardano i possibili contenuti del messaggio e le
posta primario, come mostrato qua di seguito:
sue modalità di trasferimento.
La più grande innovazione introdotta riguarda sicu oltrelinux.com.
7175
oltrelinux.com.
MX
1S
HX
28
7175
oltrelinux.com.
ramente le cosiddette estensioni MIME, acronimo
IN
di Multipurpose Internet Mail Extensions, le quali
mail.oltrelinux.com
introducono dei nuovi header che permettono di
IN
7175
specificare la struttura del corpo del messaggio,
mail2.oltrelinux.com
che fino ad ora poteva contenere solo codice ASCII
IN
HX
58
non formattato.
mail3.oHrelinux.com
La rapida diffusione di queste estensioni è dovuta al
INFORMAZIONI
Mail Trasport Agent e Mail Delivery Agent Quanto si parla dell'architettura di un sistema di posta elettronica, si
Mail Delìvery Agent fMDAI
intende con MDA, acronimo di Mail Delivery Agent, il particolare com
<user>@oftrelinijx.corri mailbox
ponente dedicato alla consegna vera e propria dei messaggi di posta elettronica sulla mailbox dell'utente.
In realtà, mentre è possibile avere, come mostrato, dei server che assolvono le sole funzioni di MTA senza effettuare alcun tipo di conse gna, sarà necessario che, in ultimo, l'MTA di destinazione esegua anche tale consegna, come mostrato nella figura seguente. In alcuni software che implementano il protocollo 5MTP, come ad esempio in QMail http://WBW.qmail.org/top.html tali funzioni vengo no eseguite da due demoni separati e distinti al fine di garantire ia
massima sicurezza a fronte di eventuali break del demone in ascolto:
I Transport Agent (MTA) mx.oltrelinux.com
infatti, se un intruso riuscisse a forzare l'MTA in attesa sulla porta 25,
anti-virus
preposto alla ricezione dei messaggi in arrivo, esso comunque non
anti-spam
politiche di sicurezza
avrà alcun accesso diretto alle singole mailbox degli utenti presenti nel sistema.
RIQUADRO 4
Altri comandi SMTP A fianco dei cinque comandi illustrati nell'articolo per la spe
caso il file . forward dell'account cario specifica di far passare
dizione dei messaggi, esistono almeno altri cinque comandi
la mail attraverso i filtri di procmaìl.
molto utili e di uso frequente durante le operazioni che
In realtà però molti amministratori di sistema preferiscono
riguardano il protocollo SMTP; attraverso i comandi VRFYe
disabilitare questi comandi per motivi di privacy o comunque
EXPN ad esempio è possìbile verificare che un destinatario sia
perché espongono troppe informazioni che potrebbero essere
effettivamente esistente o a quale indirizzo esso sia effettiva
utilizzate per scopi non certo desiderati.
mente collegato:
Il comando IJOOP di fatto non fa nulla; esso semplicemente verifica che il server sia in stato di pronto e funzionante, for
zando una risposta di OK, come mostrato di seguito.
# telnet raail.unipg.it 25 Trying
141.258.1.235...
Connected
# tel.net
to mail.unipg.it.
Escape character is 229 mail.unipg.it
Trying
"]'.
ESHTP Sendmail S. 12.H/B.12.11; Thu,
»=-VRFY 550
18 Mar 2865
ready at
18:18:45 +8108
User
256 Carlo Manuali
25B
to mail.unipg.it.
Escape cnaracter is
unknown
'"]'.
ESMTP Sendmail Thu,
>»VRFY cario
i«EXPN
Connected
228 mail.unipg.it
patrizio
patrizio...
mail.unipg.it 25
141.250.1.235...
8.12.11/8.12.11; 10 Mar 29Q5
ready
at
19:20:58 +910Q
«>NO0P carlwaegeo.untpg.it
258
<"|procmail
I! comando RSET invece interrompe la sessione corrente e
2.B.0 OK
cario
Carlo Manuali
"@egea,unipg.it>
resetta entrambi i capi della connessione mentre il comando
Come mostrato nell'esempio, il comando VRFYsi limita a
TURN fa in modo tale che il server ed il client si scambino i
restituire, se esistente, l'indirizzo corrispondente all'account
ruoli, ovvero che gli eventuali messaggi di posta elettronica
specificato mentre il comando EXPN restituisce l'effettivo indi
provenienti e diretti nella direzione opposta utilizzino la stes
rizzo od operazione alla quale è collegato l'account: in questo
sa connessione TCP senza doverne creare di nuove.
binari, come un'immagine o un video, i quali non
fatto che nulla viene cambiato in merito al funzio namento di base delI'SMTP. ovvero dei suoi MTA;
necessitano di particolari accorgimenti circa gli
ciò di cui si avrà bisogno saranno semplicemente
spazi da introdurre nel messaggio o l'organizzazio
degli User Agent che comprendano tali estensioni.
ne su più linee, come ad esempio quando si scrivo
I due header più importanti introdotti da MIME sono
no delle frasi in un testo, permettendo quindi un
chiamati Content-Type e Content-Transfer-Encodìng:
trasferimento più veloce.
con il primo si specificherà il tipo di messaggio
L'header Content-Type invece permette di distin
mentre con il secondo la sua codifica utilizzata
guere il messaggio in tipi e sottotipi; in particolare è
durante il trasferimento.
possibile specificare se esso sia testo, semplice o
Quest'ultimo specifica uno fra i cinque formati pos
formattato, ad esempio html, se si presenti organiz
sibili che si affiancano al già citato NVT ASCI che
zato e suddiviso in più parti, se corrisponda ad una
comunque continua a rappresentare il valore di
applicazione, ad un file audio, ad un file video o ad
default; in particolare viene utilizzato il formato
una immagine, secondo il riquadro 5.
denominato binary laddove verranno trasferiti
Esistono inoltre altre estensioni che vanno a defini re il cosiddetto protocollo ESMTP. acronimo di
stream continui di byte che corrispondono a file
Extended SMTP; tale protocollo, che ovviamente
mantiene una completa retro-compatibilità con il suo predecessore, viene inizialìzzato, durante una
RIQUADRO 5
connessione fra due diversi MTA, mediante un
Header Content-Type TIPO
nuovo comando chiamato EHLO in sostituzione del precedente comando di HELO. Una tra le estensioni più importanti di questo proto
DESCRIZIONE
Text
collo è la possibilità che hanno i due MTA di scam
II messaggio è composto da testo semplice;
biarsi informazioni circa la lunghezza del messag
esso può essere non formattato (plain) o
gio; infatti, vista la crescente popolarità e la tipica
formattato (html). Multipari
utilizzazione della posta elettronica come strumen
Il corpo del messaggio è formato da più parti
to per lo scambio di file, documenti o immagini,
da processare in maniera sequenziale (mìxed) o in parallelo Message
sarà possibile effettuare dei controlli ed imporre dei
parallet
limiti mediante un nuovo comando chiamato 5IZE.
II corpo del messaggio è anch'esso un
Come mostrato durante la fase di inizializzazione
messaggio di posta elettronica frfc822), un
Application
suo frammento {partial) o un puntatore al
riportata di sequito, il server ESMTP restituisce,
messaggio corrente stesso (external-body).
oltre che il messaggio di benvenuto, anche la serie
Il corpo del messaggio è un contenuto binario
dei nuovi comandi disponibili, fra l'altro riportando
qualsiasi (octet-stream) o un programma
la dimensione massima consentita per un messag
PostScript (postscript). i in.iu■ ■
gio di posta elettronica, in questo caso di 5.5
Il corpo del messaggio è un immagine jpeg o
Megabyte.
gif. Audio
Il corpo del messaggio è un file di tipo audio.
Video
Il corpo del messaggio è un file video mpeg.
#
telnet
mail.unipg.it 25
Trying... j
Connected
to mail.unipg.it.
Escape character is
WEBOGRAFICA
'")'.
226 mail.unipg.it ESMTP Sendmail ready at
Bibliografia e RFC SMTP: Simple Mail Transfer Protocol http://e r.yp.to/smtp.html
EHLO
Thu,
8.12.11/8.12.11;
16 Mar
2665
17:66:37 +6166
seti.unipg.it
25O-mail.unipg.it Hello
seti.unipg.it
[141.256.25G.251. pleased to meet you
25G-ENHÀNCEDSTATUSC0DES 25G-PIPELINING
RFC 821: Simple Mail Transfer Protocol
250-BBITMIME
http://www.faqs.org/rfcs/rfc82l.htinl
250-SIZE
5586000
250-DSN
RFC 822: Standard for thè format ofARPA Internet text messages
http://www.faqs.org/rfcs/rfc822.html
25G-ETRN 25e-DELIUER8Y 250 HELP
RFC 1425: SMTP Service Extensions http://wnw.faqs.org/rfcs/rfcl425.html RFC 1521: MIME IMultipurpose Internet Mail Extensions) Part
One: Mechanisms for Specifying and Describing thè Format of Internet Message Bodies http://wvw.faqs.org/rfcs/rfcl521.html
Conclusioni Gran parte del traffico Internet viene generato dai
servizi di posta elettronica: un dato, questo, che rende subito evidente l'importanza di un tale servi zio ai giorni nostri.
"TCP/IP Illustrateci, Volume 1: Thè Protocols"
Altre estensioni si stanno aggiungendo, ad esempio
IV. Richard Stevens
la posta certificata, per rispondere al meglio alle nuove necessità degli utenti.
40
: