Il protocollo tcp/ip e` il protocollo di rete per eccellenza. Il tcp/ip detta le regole per instradamento dei pacchetti che contengono i dati lungo tutta la rete; permette cioe` che le informazioni partano da un mittente e giungano al destinatario attraversando a volte anche decine di computer e migliaia di chilometri senza che l'utente se ne debba fare problema. I dati vengono suddivisi in gruppi elementari chiamati pacchetti che viaggiano autonomamente nella rete. In realta' bisognerebbe riferirsi ai ``protocolli internet'' in senso piu' generale essendo il TCP e l'IP due protocolli di questo insieme piu' ampio.
TCP Transport Control Protocol assicura che tutti i pacchetti inviati a un computer remoto siano realmente arrivati a destinazione.
IP Internet Protocol detta le regole base per organizzare i pacchetti di dati che viaggiano in una rete. Il TCP lavora al di sopra di IP.
Il primo concetto importante e' l'indirizzo IP. Dato che questi protocolli sono utilizzati da molti computer differenti tra loro, e' necessario utilizzare un sistema di indirizzamento in grado di lavorare con tutti, che fornisca adeguate informazioni per instradamento e che non impegni troppo spazio. La risposta e' la definizione di indirizzi costituiti da sequenze di quattro numeri interi di un byte ognuno (numeri da 0 a 255) con ogni numero che fornisce informazioni sulla rete e sottoreti alle quali in computer appartiene.
L'indirizzo IP e' gerarchico perche' i quatto numeri hanno significato
decrescente da sinistra a destra. Osservando il numero piu' a sinistra
possiamo imparare come instradare una trasmissione al computer
rappresentato dal numero a destra. Normalmente questo indirizzo viene
rappresentato separando i numeri da un punto come ad esempio:
44.134.60.2. Questa e' chiamata notazione puntata. Senza andare nei
dettagli della semantica dell'indirizzamento gerarchico l'esempio
sopra riportato si suddivide in:
44. la rete assegnata ai radio amatori
134. designa la rete italiana
60. designa la rete a cui appartiene la Lombardia
2 designa il computer connesso al ricetrasmettitore radio di uno specifico radiamatore
Gli indirizzi IP vengono assegnati da un coordinatore che deriva la propria autorita' da un ente certificatore centrale.
Il secondo concetto importante e' l'HOSTNAME. Ovviamente l'indirizzo IP non e' molto intuitivo. Nomi di computer piu' vicini alla lingua di uso corrente permettono di ricordarsi i nomi dei computer in modo piu' facile e quasi tutti i programmi di comunicazione hanno la possibilita' di mappare tra HOSTNAME e indirizzo IP. E' cosi' che il numero 2 dell'esempio puo' essere descritto da I2KFX che e' il nominativo della stazione radioamatoriale corrispondente.
In forte relazione con l'HOSTNAME e' il DOMAIN NAME. Un dominio e' un gruppo di macchine che sono ``logicamente'' connesse tra loro. Il nome del dominio e' come l'indirizzo IP; dei punti separano parti del nome e ciascuna parte rappresenta un diverso livello della gerarchia del dominio. Ma il nome del dominio e'ordinato in modo inverso (la parte piu' significativa e' alla destra del nome).
Il dominio dei radioamatori a cui stiamo facevamo riferimento e' ``ampr.org''; org (abbreviazione di organizzazione) e' il dominio di primo livello, ``ampr'' (per AMateur Packet Radio) e' il dominio di secondo livello contenente tutti i computer dei radioamatori.
Quando combini un HOSTNAME con un DOMAIN NAME ottieni qualcosa simile a ``i2kfx.ampr.org''; questo e' chiamato un ``nome di dominio pienamente qualificato''. Se il computer ha piu' di un utente, possiamo aggiungere il nome dell'utente all'inizio dell'indirizzo separandolo con il carattere ``@''. Questa combinazione e' comunemente chiamata ``indirizzo internet'' ed e' la forma che viene utilizzata per la maggior parte della posta elettronica nel mondo.
<http://info.cern.ch/hypertext/WWW/Addressing/URL/Overview.html> indirizzo HTTP con le specifiche URL <mailto::com2666@iperbole.bologna.it> il mio indirizzo di posta
Normalmente si assume un computer sia in grado di inviare pacchetti a tutti i computer sulla stessa rete. I problemi cominciano quando a un sistema viene chiesto di inviare pacchetti a un sistema appartenente ad una rete differente. Questa funzione viene gestita dai GATEWAYS. Un gateway e' un sistema che connette un network con altri network. Gateway sono normalmente dei normali computer che dispongono piu' di una interfaccia di rete. Spesso esiste una tabella per l'instradamento dei pacchetti, che assegna ad ogni indirizzo IP un eventuale gateway. Frequentemente esiste un solo gateways; questo gateway puo' connettere la rete locale ad una molto piu' ampia rete internet. In questo caso non e' necessario costruire una tabella contenente tutti i network del mondo. Possiamo semplicemente definire il gateway come ``default'' ed in questo caso tutti i pacchetti che non conoscono la strada gli verranno inviati.
Ad utizzare i protocolli internet sono varie applicazioni definite in modo preciso da standardizzazioni della rete internet che agiscono tramite quelle che sono chiamate "well know sokets". Senza entrare nei dettagli estremamente complessi del protocollo internet vediamo sinteticamente l'utilizzo di alcuni protocolli di internet.
Ricordarsi gli indirizzi IP non e' sempre facile ed inoltre a volte la configurazione delle reti si modifica costringendo a modicare gli indirizzi. Molti programmi permetto di costruire tabelle dove vengono abbinati gli indirizzi IP all' HOSTNAME, ma questo significherebbe dover conoscere tutti gli indirizzi delle macchine che vogliamo contattare. Alternativamente un computer puo' rendersi disponibile per un servizio di risoluzione dei nomi (domain name service). Il nostro computer potra' quindi interrogarlo quando dovra' conoscere l'indirizzo di un computer che vogliamo contattare.
La rete internet e` nata per soddisfare collegamenti in tempo reale tra grossi computer. L'esigenza di collegamento estemporaneo di piccoli computer e` nata successivamente ed ha visto la definizione di alcuni protocolli per la connessione ad internet tramite tcp/ip su linee seriali o linee telefoniche commutate (non permanenti). Sono principalmente due : SLIP e PPP. Il PPP e` piu` recente ed efficiente ed e` attualmente il piu` diffuso.
Il ``Point-to-Point Protocol'' (PPP) fornisce un metodo per trasmettere singoli pacchetti di dati attraverso una connessione seriale punto a punto. PPP e' composto di tre parti: un metodo per incapsulare datagrammi su una connessione seriale, un ``Link Control Protocol'' (LCP), e una famiglia di ``Network Control Protocols'' (NCP) per stabilire e configurare differenti protocolli di rete anche a differenti livelli.
I parametri di configurazione sono numerosissimi e a volte anche complessi; vediamo qui solo alcune caratteristiche essenziali. Quando si effettua una connessione con PPP le macchine ai due estremi devono avere un indirizzo IP. Gli indirizzi IP possono essere statici o dinamici, ossia sempre gli stessi ad ogni connessione e quindi prestabiliti oppure attribuiti al momento della connessione. Un indirizzamento dinamico permette a chi fornisce questo servizio di connessioni di utilizzare pochi indirizzi IP attribuiti a molti utenti in tempi diversi. E` ovvio che tutte le macchine di internet quando vorranno comunicare con quell'indirizzo non troveranno sempre la stessa macchina. Per effettuare questa connessione bisogna conoscere quindi l'indirizzo IP da utilizzare oltre ad altre informazioni come ad esempio quale e` il risolutore di nomi da utilizzare: queste informazioni possono essere acquisite ad ogni connessione tramite il protocollo chiamato bootp. Un altro argomento che bisogna affrontare spesso e` l'autenticazione; solitamente cioe` bisogna essere certi che chi tenta di fare la connessione e` sicuramente chi noi crediamo che sia. E` possibile effettuare questa operazione sostanzialmente in due modi. Il primo richiede come prima cosa una "username" e una "password" (un nome utente e una parola segreta) ancora prima di attivare il protocollo PPP. Questa operazione puo` essere fatta manualmente digitando sulla tastiera queste informazioni o automaticamente con dei piccoli programmi chiamati solitamente script. Il secondo modo, piu` recente (PAP e CHAP) ed evoluto vede il processo di autenticazione inserito in modo standard a fianco del protocollo PPP.
Telnet e` il protocollo che permette ad un utente di utilizzare il proprio video e la propria tastiera come se fossero direttamente collegati a un qualsiasi computer della rete. A telnet bisogna quindi fornire un indirizzo internet a cui connettersi: quello che apparira` sul nostro video sara` dipendente da quale programma e` stato impostato sulla macchina remota. Potrebbe essere un programma di una BBS o una shell Unix. L'accesso anche qui viene solitamente effettuato premettendo una fase di autenticazione tramite username e password.
FTP e` il protocollo che permette il traferimento di file da e per una macchina remota. L'accesso viene solitamente effettuato premettendo una fase di autenticazione tramite username e password: spesso pero` viene messo a disposizione quello che viene chiamato anonymous ftp e cioe` un'area pubblica a cui si accede fornendo come username la parola "anonymous". Esistono una serie di comandi per poter poi effettuare i trasferimenti.
Questi sono i protocolli che a noi interessano di piu` in quanto relativi alla posta elettronica. SMTP e` il protocollo che permette di inviare posta tra due computer; specifica cioe` come un messaggio presente su una macchina puo` essere inviato a un qualsiasi utente di un'altra macchina in rete. Il protocollo e` di per se' abbastanza semplice, ma una serie di accorgimenti ne rende in realta` la gestione molto complessa. Una prima complicazione viene dall'esegenza di inviare posta non solo con SMTP, ma anche con altri protocolli, UUCP ad esempio. Un altro fattore e` la necessita' di SMTP di avere le macchine immediatamente raggiungibili: a volte per guasti o manutenzioni questo non si verifica. La frequente richiesta di chi invia la posta e` che il messaggio raggiunga il destinatario in un lasso di tempo tollerabile per il contenuto del messaggio. E` cosi` che normalmente un programma che invia la posta effettua una serie di tentativi ad intervalli regolari fino a quando il messaggio risulta inviato o si e` raggiunto un tempo massimo accettabile per l'invio. La frequenza dei tentativi ed il tempo massimo per l'invio sono a volte parametrizzati con alcune segnalazioni presenti nel messaggio da inviare (la specifica urgente ad esempio). I ritardi nell'invio o gli eventuali fallimenti vengono solitamente comunicati al mittente. La macchina che effettua questo lavoro viene comunemente denominata server di posta o smtp server. Un personal computer che rimane connesso alla rete solo per brevi periodi solitamente e` meglio che incarichi un server per svolgere questo lavoro (relay).
Al tempo stesso lo stesso PC non e` in grado di ricevere la posta sia perche solitamente si connette con un indirizzo IP dinamico, sia perche` la sua connesssione alla rete e` solitamente cosi` saltuaria che le macchine che tentano l'invio di posta non lo troverebbero quasi mai raggiungibile. E` cosi` che si rende necessario un POP (post office protocol) ossia un ufficio postale che riceva per noi la posta depositandola in una cassetta postale. Il protocollo piu` diffuso con cui e` possibile leggere la posta dalla propria cassetta postale e` il POP3 che richiede solitamente una fase di autenticazione con una username e password; i messaggi possone essere cosi` listati, letti (cioe` scaricati sulla propria macchina) ed eventualmente cancellati dalla cassetta postale. Frequente e` l'uso di ``alias'', di pseudomini con cui e` possibile ricevere la posta e che in realta` reindirizzano al nostro vero e unico nome utente. La nostra casella postale potra` avere una dimensione massima per contenere i messaggi ricevuti; inoltre bisogna evidenziare che a un mittente puo` risultare inviato un messaggio quando questo e` stato depositato nella casella postale e non quando il destinatario lo ha scaricato ed effettivamente letto.
E' un protocollo di diagnostica che invia un pacchetto a un computer; se il computer e' disponibile e raggiungibile ripondera' con un altro pacchetto di dati. PING ti comunichera' quindi quanto e' durato il viaggio di andata e ritorno.
Il protocollo http nasce al CERN di Ginevra all'inizio degli anni '90, quando l'espansione delle reti telematiche a livello inter- e intra-universitario è arrivata al punto da renderle non solo uno strumento tecnico-informatico ma anche uno strumento adatto allo scambio di informazioni di qualsiasi tipo; presto l'insieme di queste informazioni accessibili da tutto il mondo sulla rete internet prende il nome di World Wide Web.
Tecnicamente l'http non differisce molto dal protocollo ftp in quanto permette il trasferimento di file da un nodo TCP/IP centrale ``server'' contenente un archivio, ad un altro nodo TCP/IP ``client'', e più raramente viceversa; in aggiunta al trasferimento dei file il protocollo prevede lo scambio di informazioni di controllo tra client e server; il collegamento avviene spesso senza bisogno di password, come per l'ftp anonymous. La differenza rispetto all'ftp sta nel fatto che il programma che lavora sulla macchina ``client'', denominato spesso ``browser'', è decisamente più complesso e, in base al tipo di file che riceve, desunto dalla parte terminale del suo nome o dalle informazioni di controllo, può prendere decisioni su come ``mostrare'' il file all'utente. Il tipo di file più comune in cui ci si imbatte sui server http (detti anche ``siti web'') è il tipo ``html'' (hyper-text markup language): si tratta di file ``ipertestuali'', contenenti cioè, oltre a semplice testo, collegamenti (``link'') che, se attivati dall'utente del programma client, conducono ad altre parti del file stesso oppure ad altri file situati sullo stesso server o anche su un server diverso da quello di partenza; i file html contengono anche delle informazioni per permettere al programma client di visualizzare il testo in maniera esteticamente curata, similmente ad un programma di ``word processing'', e possono anche contenere immagini (che a loro volta costituiscono anche un tipo indipendente di file riconosciuti da un client http). Altri tipi di file riconosciuti dai client http comprendono file sonori, immagini animate, programmi eseguibili immediatamente (Java) e molti altri, la cui lista è in continuo aggiornamento; bisogna comunque tenere presente che per i tipi di file più avanzati è necessario un disporre di un programma client e di un hardware adatti per poterli visualizzare, ascoltare o eseguire.
Come si può intuire, il protocollo http è tipicamente legato ad un ambiente grafico, esso si è infatti sviluppato soprattuto grazie a Mosaic (vedi) sotto X-windows, l'ambiente grafico di UNIX, e si è successivamente diffuso anche a Windows, ma risulta tuttavia indipendente dalla presenza di un ambiente grafico sul proprio computer; esistono infatti applicazioni client http come ``Lynx'' (vedi) che permettono di sfogliare documenti ipertestuali visualizzandone la parte non grafica anche su un computer o un terminale senza capacità grafiche (ad esempio sotto DOS) e permettendo di salvare su disco i file che non e' in grado di visualizzare.
Il protocollo http ha reso obsoleto e quasi totalmente soppiantato il protocollo ``gopher'', nato poco tempo prima ma limitato al trasferimento e alla visualizzazione di file contenenti solo testo e collegamenti ad altri file sulla rete.
Nel 1994 ha fatto la sua compersa un altro browser, Netscape, che tecnicamente presentava il vantaggio, rispetto a Mosaic, di poter visualizzare parzialmente i file ipertestuali già nella fase di trasferimento (``download'') senza dover aspettare la conclusione di quest'ultimo, fase che può durare a lungo per via di momentanei rallentamenti del collegamento di rete; Netscape ha comunque soprattutto segnato la comparsa massiccia delle aziende private sul World Wide Web, fino allora popolato quasi esclusivamente dalle università e dai centri di ricerca scientifica di tutto il mondo. Questo da un lato ha portato ad una più capillare diffusione della rete al di fuori dell'ambito accademico, ma dall'altro ha causato la nascita di siti in cui la parola ``free'', da ottima combinazione di ``libero'' e ``gratuito'' con un'enfasi sul primo dei due significati, è diventata uno specchietto per le allodole per attirare gli utenti della rete verso proposte commerciali e non verso siti proponenti un libero scambio di idee e conoscenze come è avvenuto all'inizio e in parte avviene ancora sul World Wide Web. A differenza di Mosaic, Netscape è nato come software commerciale, seppur gratuito per uso personale e non di lucro; il suo codice sorgente è diventato di pubblico dominio nel 1998 per -indubbiamente lodevoli- motivi commerciali, ma non di principio.
A Netscape va riconosciuta una qualità e una completezza decisamente superiori rispetto a Mosaic, il cui sviluppo si è concluso alcuni anni fa, e che quindi non è più aggiornato rispetto agli ultimi standard del WWW; d'altra parte la contropartita di questa maggiore qualità è una notevole voracità di memoria e di risorse di calcolo e la comparsa saltuaria di interruzioni improvvise del programma, per cui su macchine di fascia meno potente Mosaic può essere ancora valido come strumento per visualizzare e sfogliare semplici documenti html.
Data la possibilità di visualizzare e stampare testi di apprezzabile qualità estetica anche da file presenti sul proprio computer, non necessariamente trasferiti dalla rete, ed eventualmente contenenti riferimenti ad altri testi e immagini locali, Mosaic e Netscape possono anche essere usati come semplici ``word processor'' o strumenti per creare un sistema di documentazione facilmente sfogliabile, con indici e riferimenti tra i vari documenti, da tenere sul proprio computer.
Per fare questo è necessario comprendere i rudimenti del linguaggio html; dalla versione 3 Netscape include un ``editor'' che permette di creare file html senza conoscere a fondo il linguaggio, tuttavia la maniera più istruttiva e divertente per imparare è salvare sul proprio computer semplici pagine trovate sulla rete e usare un normale ``text editor'' per modificarle a piacimento, visualizzandole di volta in volta con il browser fino ad ottenere il risultato voluto.
Altri client http grafici hanno fatto la loro comparsa sulla rete negli anni '90 con esito meno fortunato rispetto ai due descritti; uno di questi è stato Arena, originariamente pensato con l'interessante intento di poter permettere l'inserimento di formule matematiche nei documenti html, ma rimasto poi ad uno stadio sperimentale anche a causa della mancata approvazione di uno standard per le formule matematiche nell'html.
Come abbiamo gia` detto il tipo di collegamento che ci interessa e` quello che non dispone di una linea telefonica dedicata. Bisogna prima di tutto disporre di un ISP (fornitore di servizi internet). La connessione estemporanea a internet seguira` quindi le seguenti fasi:
E` necessario comporre il numero telefonico ed ottenere una connessione tra i due modem, quello dell'ISP e il nostro. A questo punto solitamente bisogna rispondere ad alcune domande fatte dal computer dell'ISP che salvo eccezzioni ci chiedera` username e password. A questo punto solitamente viene attivato il protocollo slip o ppp; sullo schermo del terminale compariranno quindi simboli a noi incomprensibili. Se il protocollo ppp include il processo di autenticazione (CHAP e PAP) sara` possibile evitare di inserire username e password.
Dovremo quindi attivare il programma in grado di gestire il protocollo ppp informandolo di tutte le caratteristiche della comunicazione, fisiche e logiche. Sara` necessario quindi informarlo di quale porta seriale si utilizza, a quale velocita`, e altri parametri del protocollo tcp/ip (mtu,mru ....). L'abilitazione del protocollo bootp permette l'invio atomatico di alcuni parametri da parte dell'ISP e quindi la semplificazione della configurazione.