LinuxPratico - Teoria

Page 1

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.!

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

mail

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

MAIL

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

mail

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

:


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.