Comments
Transcript
UX_Il livello Application e i suoi protocolli
Il livello Application e i suoi protocolli N.11 Il livello di rete e quello di trasporto si occupano di trasferire i bits da un host all'altro, ma chi decide cosa, quando e dove trasferire certe informazioni, nonché il loro significato, è il livello Applicazione. Nonostante il sistema dei protocolli Internet sia in grado di stabilire un servizio di comunicazione, essi non possono iniziare il contatto, o accettarlo, con un computer remoto. Alla comunicazione devono comunque partecipare due software applicativi che interagiscono secondo lo schema client/server. Ciascun programma applicativo, inoltre, è collegato con uno dei protocolli del livello trasporto per inviare o ricevere dati, a cui passa i dati nella forma richiesta. In altre parole nel livello Applicazione viene svolto unicamente il lavoro più "vicino" all'utente, ovvero si gestisce l'interattività tra l'utente e la macchina. Applicazione Presentazione Applicazione TELNET SNMP FTP SMTP HTTP … Sessione Trasporto Trasporto Rete Rete Collegamento Collegamento + Fisico Fisico Nel livello Applicazione sono presenti diverse tipologie di oggetti software: • • protocolli di supporto alle applicazioni, come o DNS (Domain Name System RFC 1034 e 1035), per creare la corrispondenza tra indirizzi IP e nomi facili da ricordare o DHCP (Dynamic Host Configuration Protocol), per assegnare dinamicamente gli indirizzi IP; protocolli standardizzati di supporto a specifiche applicazioni, come o SNMP (Simple Network Management Protocol), per la gestione della rete o FTP (File Transfer Protocol RFC 959), per il trasferimento di files o SMTP (Simple Mail Transfer Protocol) e POP3 (Post Office Protocol, versione 3), per l'invio e la ricezione dei messaggi di posta elettronica o HTTP (Hypertext Transfer Protocol), per trasferire ipertesti multimediali dalla rete, alla base del World Wide Web (WWW) o TELNET (RFC 0854), per il controllo di computer a distanza o IRC (Internet Relay Chat), per il trasferimento in tempo reale di messaggi digitati sulla tastiera (le classiche "chat") Nel seguito approfondiremo il funzionamento di alcuni di questi protocolli, con riferimento alla specifica tipologia di servizio che offrono. 1 Il protocollo DNS In Internet ogni computer viene individuato solamente attraverso il suo indirizzo IP, ma noi utilizziamo indirizzi simbolici. Come si armonizzano queste due cose? La risposta è data da un ingegnoso meccanismo che si chiama DNS. Il DNS (Domain Name System) è il sistema utilizzato dai computer che gestiscono Internet per tradurre gli indirizzi letterali (es. www.itistulliobuzzi.it) nel corrispondente indirizzo IP (es. 131.192.8.30) e viceversa. Tale sistema si basa sull'esistenza di computer di servizio, detti DNS server o name server, che vengono interpellati ogni volta che si rende necessaria una traduzione; per questo motivo nella configurazione dei programmi di comunicazione di base (Accesso Remoto) viene richiesto di indicare un name server, senza il quale non è possibile utilizzare gli indirizzi letterali. Ad esempio in Windows 7 Ecco come fare: - cliccate su START; - cliccate su Pannello di controllo; - Cliccate su Centro Connessioni di Rete e Condivisione; - Nella finestra centrale riga Visualizza reti attive individuate Tipo accesso: Internet; - Sotto Tipo accesso trovate Connessioni: - A fianco trovate un collegamento (p.e. Connessione rete wireless oppure Connessione alla rete locale (LAN); - Cliccando sul collegamento si aprirà una finestra Stato di connessione delle rete Wireless; - Sotto la riga Attività trovate il bottone Proprietà, cliccatelo; - Si aprirà una ulteriore finestra Proprietà connessioni wireless; - nell'elenco a discesa selezionate Protocollo Internet Versione 4 (TCP/IPv4); - Cliccate su Proprietà; - Nella nuova finestra selezionate cliccate sulla linguetta Generale; - Mettete il pallino in fianco a Utilizza i seguenti indirizzi Server DNS; - Inserite gli indirizzi DNS di uno dei servizi consigliati nell'articolo; - Se volete inserire più indirizzi DNS (più di due) potete cliccare su Avanzate e linguetta DNS; - In questa sezione potete aggiungere vari servizi DNS. Con - Windows XP Cliccate su Start > Pannello di controllo (visualizzazione per categorie) > Cliccate su 'Rete e connessioni Internet' e poi su Connessioni di rete. Cliccate il pulsante destro del mouse sulla connessione di rete che si desidera configurare, quindi scegliere Proprietà. Nella scheda Generale (per una connessione LAN) o nella scheda Rete (per tutte le altre connessioni) cliccate su Protocollo Internet (TCP/IP), quindi scegliere Proprietà. Solitamente troverete impostato l'opzione 'Ottieni indirizzo server DNS automaticamente'; Se desiderate invece configurare manualmente gli indirizzi per il server DNS, fare clic su Utilizza i seguenti indirizzi server DNS e in Server DNS preferito e Server DNS alternativo digitare gli indirizzi IP per il server DNS preferito e per il server DNS alternativo. I DNS impostati nelle connessioni di rete di solito sono due Primario e Secondario proprio perchè nel caso non funzionasse il primo si può tentare con il secondo. Il sistema di nominazione DNS è organizzato in domini. I domini gerarchicamente più alti sono chiamati domini di primo livello (TLD o Top Level Domain). Lo schema logico dei nomi si compone dunque di varie parti, o sottodomini, con l'indicazione fino al dominio di primo livello cui appartengono: " www.dominio_n_livello.dominio_n-1_livello... dominio_2_livello.dominio_1_livello " in cui le sottostringhe domini identificano sottodomini dei domini identificati dalle stringhe seguenti, l'ultima sottostringa identifica il TLD (primo livello). I domini di primo livello sono molteplici. Alcuni di essi, di tipo organizzativo, raggruppano gli enti/istituzioni in base al loro tipo di attività (inizialmente nati solo per le istituzioni statunitensi), altri, di tipo geografico, riguardano tutti gli stati esistenti al mondo. 2 Alcuni domini di tipo organizzativo com Enti commerciali Alcuni domini di tipo geografico it Italia gov Istituzioni governative ca Canada edu Istituzioni accademiche de Germania net Organizzazioni di servizio in rete fr Francia org Organizzazioni non-profit uk Regno Unito mil Istituzioni militari es Spagna nom Pagine personali ru Russia Ogni dominio di livello alto è responsabile della creazione dei suoi sottodomini, che devono essere registrati presso una apposita autorità. In Italia l'ente responsabile è la Registration Authority Italiana (http://www.nic.it/RA/) che si occupa della gestione del name server primario del country code italiano "it". Tale servizio è attivo su un server specificatamente dedicato a questo compito (dns.nic.it). La definizione di altri sottodomini a livello gerarchico inferiore è lasciata al gestore del dominio locale. Ciascun dominio è responsabile di fornire il servizio DNS al suo interno, cioè deve essere in grado di rispondere ad interrogazioni riguardanti sottodomini al suo interno. Il DNS sfrutta la struttura gerarchica dei nomi degli indirizzi simbolici che evidenziamo con il seguente esempio: I nodi del grafico rappresentano i DNS. Il nodo più in alto si chiama Root DNS. Nella realtà ogni singolo nodo è costituito da due o più computer localizzati in strutture diverse e in grado di sostituirsi vicendevolmente. Questa ridondanza serve a sopperire ad eventuali guasti di un DNS. Concettualmente possiamo pensare ad ogni nodo come se fosse costituito da un solo computer. Sotto al nodo root troviamo i DNS dei domini primari dei vari paesi o di grandi organizzazioni: fr, uk, it , com, edu, gov, org, net e via dicendo. Sotto al nodo it possiamo trovare alcuni esempi di domini di organizzazioni italiane: cnr è il Consiglio Nazionale delle Ricerche, unifi è l'Università di Firenze, infn è l'Istituto Nazionale di Fisica Nucleare. All'interno dell'Università di Firenze possiamo avere per esempio i domini ing di Ingegneria, dfc del Dipartimento di Fisiopatologia Clinica. All'interno del Dipartimento di Fisiopatologia Clinica abbiamo i vari singoli computer. Ogni DNS in sostanza gestisce un database che contiene un elenco di corrispondenze domain name <-> indirizzo IP per un sottoinsieme dei computer connessi ad Internet. Cerchiamo di capire ora cosa succede quando, per esempio, si digita un indirizzo web in un browser di Internet. 3 Supponiamo che, da un computer localizzato presso l'università di Stanford, uno studente, navigando con il suo browser, digiti l'indirizzo www.unifi.it. 1. Il browser che si trova nel computer in una rete locale dell'Università di Stanford chiede al DNS della rete di Stanford se sa qual'é l'IP che corrisponde al nome: www.unifi.it. Il DNS nel suo data base ha certamente le corrispondenze per tutti i computer della rete di Stanford ma quasi certamente non questa. 2. Il DNS di Stanford quindi passa il nome www.unifi.it al DNS root. 3. Il DNS root non potrà sapere l'IP di tutti i computer del mondo e quindi non saprà nemmeno quello che ci interessa ma è in grado di rendere al DNS di Stanford l'indirizzo IP del DNS che concerne il dominio it. 4. Forte di questa informazione, il DNS di Stanford propone lo stesso quesito al DNS it. 5. Il DNS it si comporta nello stesso modo del precedente: rende l'indirizzo IP del DNS del dominio unifi.it. 6. Il DNS di Stanford rinvia il nome www.unifi.it al DNS di unifi.it che troverà nel proprio database la corrispondenza con l'indirizzo 150.217.1.40 e potrà quindi inviare indietro l'indirizzo IP desiderato. 7. Solo a questo punto il DNS di Stanford può concludere il suo compito inviando l'indirizzo 150.217.1.40 al browser. Solo dopo che ha avuto luogo questa serie di passaggi, il browser può effettivamente contattare il computer desiderato mediante il suo l'indirizzo IP. Il DNS di Stanford tuttavia non si sbarazza immediatamente dell'indirizzo trovato bensì lo mantiene nella sua cache per un certo tempo nell'eventualità che lo stesso indirizzo venga richiesto un'altra volta. Questo serve ad ottimizzare il tempo perché, per veloci che siano i collegamenti, il lavoro di ricerca mediante DNS una certa latenza temporale la comporta e poi è abbastanza probabile che se un indirizzo è stato cercato una volta venga ricercato un certo numero di volte successive. Quindi, prima di effettuare le operazioni di cui al punto 1 precedente, può anche succedere che il DNS di Stanford sia in grado di rendere subito l'indirizzo IP di www.unifi.it. Questo accade se si tratta di richieste abbastanza vicine ad una prima richiesta. E' abbastanza sorprendente che questo complesso meccanismo che coinvolge macchine che possono distare varie migliaia di chilometri, abbia luogo in frazioni di secondo. Altro esempio: (I Root Servers sarebbero 13 e sono sparsi nel mondo. Molti sono negli Stati Uniti e vengono gestiti da grandi organizzazioni. Questi Servers ricoprono un ruolo di fondamentale importanza, per fare un esempio drastico, se questi server venissero spenti, nessuno potrebbe più navigare in Internet con una grave ricaduta sull'economia mondiale). 4 Nota: i root server non sono 13 ma centinaia (vedi immagine). Ci sono 12 organizzazioni responsabili della loro manutenzione. I nomi dei Root Server mondiali sono contrassegnati da lettere dell’alfabeto dalla A alla M ed i loro nomi host sono rispettivamente a.root-servers.net … m.root-server.net da qui l’idea di 13 macchine. Ad ogni host è associato un indirizzi IP fisico ciò ovviamente non vuol dire che dietro ad un IP fisico ci sia necessariamente una sola macchina, per esempio il server I “nasconde” dietro di se macchine dislocate in 25 paesi. Il protocollo DHCP Dopo aver collegato tutti i computer di una rete, è necessario impostare, per ogni interfaccia di rete, un indirizzo IP e la maschera di rete, facendo attenzione ad assegnare indirizzi IP diversi ai nodi della rete. (configurazione statica). Il protocollo DHCP (Dynamic Host Configuration Protocol) permette la configurazione dinamica di un host che si collega ad una rete IP, ovvero permette ai dispositivi di rete di ricevere la configurazione IP necessaria per poter operare su una rete. Costruito sul modello client/server, esso prevede la presenza di un server DHCP. L'allocazione dinamica risulta particolarmente utile in quanto assegna un indirizzo ad un client solo temporaneamente, in relazione alla sua connessione alla rete e permette di dividere un numero limitato di indirizzi fra un gruppo di client che non hanno bisogno di un indirizzo IP permanente. In tal modo l'indirizzo assegnato può essere diverso ogni volta che l'host si connette alla rete. Richiesta e attribuzione dell'indirizzo 1) Il calcolatore vuole ottenere un indirizzo tramite DHCP, attiva il processo DHCP client e utilizza il protocollo UDP. In questo momento, il calcolatore non ha un indirizzo IP valido. 2) Invia quindi un pacchetto in broadcast, con indirizzo IP sorgente messo convenzionalmente a 0.0.0.0, e destinazione 255.255.255.255. Il pacchetto viene ricevuto da tutti i server DHCP presenti, che possono rispondere (o meno) con un pacchetto in cui propongono un indirizzo IP ed altri parametri al client. 3) Il client aspetta un certo tempo di ricevere una o più offerte, dopodiché ne seleziona una, ed invia un pacchetto in broadcast, indicando all'interno del pacchetto, quale server ha selezionato. Anche questo pacchetto raggiunge tutti i server dhcp presenti sulla rete. 4) Il server che è stato selezionato conferma l'assegnazione dell'indirizzo con un pacchetto 5) gli altri server vengono informati che la loro offerta non è stata scelta dal client. 5 La posta elettronica Costituisce uno dei servizi più consolidati (è in uso da circa 20 anni) ed utilizzati di Internet. Con questo servizio il servizio postale per via elettronica è completamente organizzato e dispone le seguenti possibilità: • • • scrivere e spedire un messaggio, anche a più destinatari contemporaneamente ricevere e leggere i messaggi ricevuti da altri utenti memorizzare, stampare e cancellare l'archivio dei messaggi spediti e ricevuti. Un messaggio di posta elettronica ha un formato ben definito, costituito da una intestazione (header) e da un corpo (body), esattamente come avviene nella "cartacea" posta ordinaria: Le informazioni contenute nell'header sono, in linea di massima, le seguenti: - indirizzo di ritorno del messaggio (Return Path o Reply-To) - principali tappe nel percorso di consegna (Received) - codice identificativo del messaggio (Message-ID) - data e ora di invio del messaggio (Date) - indirizzo del mittente (From) - indirizzo del destinatario, anche molti (To) - eventuale indirizzo del destinatario cui si invia il messaggio per conoscenza, anche molti (Cc Carbon Copy) - eventuale indirizzo del destinatario "nascosto", anche molti (Bcc - Blind Carbon Copy) - soggetto del messaggio (Subject) - eventuale codifica dei file non ASCII (Mime-Version, Content-Type) - priorità del messaggio (X-Priority, X-MSMail-Priority) - mail client (X-Mailer). Il Body, invece, contiene il testo del messaggio. In ogni caso entrambe le parti, dunque sia header che body, devono essere espressi in linguaggio ASCII ridotto (a 7 bit), con eventuali codifiche aggiuntive per trasmettere caratteri o files non ASCII. Gli indirizzi di posta elettronica hanno la forma: nomeutente@nomehost dove nomeutente (o username) è formato da una stringa di caratteri che identificano il destinatario, mentre nomehost generalmente corrisponde ad un dominio e non ad un singolo host. 6 I protocolli SMTP e POP3. Il servizio di posta elettronica si basa su un'architettura client-server. Il client si occupa della composizione e della lettura, il server si occupa della trasmissione dei messaggi. Il client di Email è il programma che si usa abitualmente, ad esempio Eudora, Outlook o altri. Con il client vengono composti i messaggi, ordinati in cartelle e sottocartelle e spediti. Quando vengono spediti, di fatto il client si limita ad inviarli al mail server il quale si occupa della spedizione vera e propria. Quando invece si vogliono leggere i messaggi che sono stati spediti, il client va ad interrogare il mail server che gestisce la propria casella postale. Non sempre tutte queste funzionalità a cui abbiamo accennato sono riunite in un unico programma. Alcuni client sono in realtà composti da due programmi, uno che fornisce l'interfaccia per la manipolazione dei messaggi ed uno che gestisce la spedizione e la ricezione dei medesimi. Per esempio, una soluzione adottata spesso volentieri dagli utenti del sistema operativo Linux impiega il programma pine per la scrittura e la manipolazione dei messaggi ed il programma fetchmail per la loro ricezione dal mail server. Per inciso, quella di dividere ed affidare le funzionalità a programmi diversi è la tipica filosofia del sistema operativo Unix. E' una tecnica con la quale si ottiene un software molto più stabile ed efficiente, contrariamente alla tendenza sviluppatasi intorno a Windows dove si tende piuttosto a produrre grossi programmi con numerose funzionalità che spesso risultano tuttavia instabili. Il mail server è un programma che in generale può risiedere su di un computer qualsiasi, anche il proprio. Tuttavia, affinché le funzionalità di Email siano regolarmente disponibili è necessario che sia ospitato in un computer che sia connesso alla rete e che sia operativo 24 ore su 24. Nell'ambito dello schema usuale nel quale si usa il client di email nel computer a casa e ci si collega ad un service provider per i servizi di rete, il mail server è quello del service provider che provvede anche a fornire e mantenere uno spazio per la casella postale che ospita i messaggi. Via via che i messaggi arrivano questi si accumulano nella casella postale gestita dal mail server. Quando ci si collega alla rete e con il proprio client si chiede di leggere i messaggi questi vengono trasferiti nel proprio computer e contemporaneamente vengono cancellati dalla casella postale del mail server. E' anche possibile far sì che i messaggi rimangano sul mail server quando vengono letti, mediante un'opzione che si può determinare fra le preferenze impostabili nel proprio client di posta. Questa opzione può essere utile quando capita di leggere la posta elettronica da un computer che non è quello usuale su cui si lavorate. Se, in tale situazione, si lascia che i messaggi letti vengano cancellati dal mail server, quando si ritorna a consultare la posta dal proprio computer abituale non si troveranno più i messaggi letti da un'altra macchina. Può essere quindi conveniente, quando si legge la posta da un computer inusuale (per esempio da un Internet Point) è meglio controllare le opzioni in modo da lasciare i messaggi letti sul mail server. La posta elettronica è quindi implementata attraverso la cooperazione di due tipi di programmi: • • Mail User Agent (MUA), è un client di posta , il programma che consente di gestire la composizione, la trasmissione, la ricezione e l'eliminazione di messaggi da e verso un server di posta, ad esempio Microsoft Outlook; Mail Transport Agent (MTA), è un server di posta, il programma che si occupa dello smistamento da un computer a un altro della posta elettronica, quindi permette di trasportare i messaggi sulla rete fino al MTA server di destinazione e consegnare la posta ai client MUA. In corrispondenza delle funzionalità illustrate si utilizzano due protocolli distinti: • SMTP (Simple Mail Transfer Protocol), per il trasporto dei messaggi dal MUA d'origine fino ad un MTA e fra i vari MTA, da sorgente a destinazione; (dal client al server) 7 • POP3 (Post Office Protocol versione 3), per la consegna del messaggio da un MTA al MUA di destinazione. (dal server al client) Vediamo come avviene la trasmissione di un messaggio. Supponiamo che l'utente [email protected] spedisca un messaggio all'utente [email protected] e che: - Mario.rossi usi un MUA (programma) configurato per consegnare la posta ad un SMTP server (in figura: Server 1) in esecuzione sull'host mailer.libero.it - Mario.bianchi usi un MUA (programma) configurato per prelevare la posta da un POP3 server (in figura: Server 2) in esecuzione sull'host mailer.hotmail.it. La sequenza di operazioni è la seguente: • Mario.rossi compone il messaggio con il suo MUA, tipicamente un programma sul suo PC • quando Mario.rossi preme il pulsante "Invia" il suo messaggio: o interroga il DNS per sapere l'indirizzo dell'host mailer.libero.it Fase iniziale: operazioni o apre una connessione TCP ed effettua una conversazione compiute da Mario.rossi e dal SMTP con il server SMTP (MTA) in esecuzione sull'host suo MUA mailer.libero.it al fine di consegnare il messaggio o chiude la connessione TCP (a questo punto Mario.rossi ha concluso quanto di sua competenza) • o Fase intermedia: operazioni compiute dai soli MTA il server SMTP (MTA) di mailer.libero.it : interroga il DNS per sapere l'indirizzo IP dell'host hotmail.it che coincide con l'host mailer.hotmail.it o apre una connessione TCP ed effettua una conversazione SMTP con il server SMTP (MTA) in esecuzione sull'host mailer.hotmail.it e gli consegna il messaggio In pratica, in queste prime due fasi, il messaggio viene depositato nella Mail Box (casella postale elettronica) di Mario.bianchi, deve quindi essere estratto e visualizzato sul pc del ricevente. • Fase finale: operazioni compiute da Mario.bianchi e dal suo MUA Mario.bianchi lancia il suo MUA (esegue il programma di posta elettronica) • Appena Mario.bianchi preme il pulsante "Ricevi", il suo MUA: o interroga il DNS per sapere l'indirizzo IP dell'host mailer.hotmail.it o apre una connessione TCP ed effettua una conversazione POP3 con il server POP in esecuzione sull'host mailer.hotmail.it, preleva il messaggio dalla casella di posta, lo cancella dal server remoto e lo salva sul 8 o computer locale. mostra il messaggio a Mario.bianchi. In pratica, in quest'ultima fase, Mario.bianchi legge il messaggio ricevuto dalla sua Mail Box: Se il protocollo SMTP gestisce l'apertura della connessione, il trasferimento delle informazioni e la chiusura della connessione, il protocollo POP3 gestisce l'accesso remoto alle caselle di posta elettronica previa autenticazione degli utenti. La comunicazione con Telnet Il protocollo Telnet fornisce una modalità di comunicazione generale, interattiva, bi-direzionale con la quale è possibile controllare un computer remoto, proprio come se ci si trovasse su un suo terminale. Esiste un altro servizio che svolge sostanzialmente le stesse funzioni: SSH. SSH è un sistema più recente e molto più sicuro di telnet per quanto riguarda la sicurezza. Ai fini della esposizione seguente possiamo tranquillamente sostituire la parola SSH a telnet: Telnet consente di eseguire comandi su di un computer remoto attraverso la rete. Con questo servizio si ha la possibilità di utilizzare un altro computer come se fosse il proprio che invece svolge solo la funzione di terminale sul quale impartire i comandi. Si tratta di un sistema con il quale si controlla il computer mediante comandi scritti a mano, come si faceva con il sistema operativo DOS ed in generale con tutti i computer precedentemente all'avvento delle interfacce grafiche. I comandi quindi possono consistere in comandi di visualizzazione del contenuto delle directory, di manipolazione dei files e così via. Possono consistere anche nel lancio di particolari programmi esattamente come si può fare su di un proprio sistema locale. Il servizio telnet è realizzato di fatto con due diversi componenti: un client ed un server. Il client telnet è il programma che viene fatto partire da chi cerca di stabilire un collegamento con un computer remoto per usare le risorse di quel computer. D'altro canto il computer remoto deve evidentemente essere predisposto per offrire un simile servizio. Ebbene, tale predisposizione si ottiene mediante il programma che implementa il lato server di telnet. Questo è un programma che gira in continuazione sul sistema remoto stando in "ascolto" per soddisfare eventuali richieste da parte di utenti che mediante i loro client telnet chiedano di collegarsi. Si vede bene così la diversa natura del lato client e del lato server di una certa applicazione: il lato client è un software che viene lanciato da un utente giusto nel momento in cui questo ne ha bisogno, il lato server invece è un programma che si suppone essere sempre in funzione per raccogliere eventuali richieste. Quindi il lato server di un servizio deve essere lanciato al momento del bootstrap del sistema. Per inciso, nell'ambito dei sistemi operativi UNIX (e quindi Linux), questo tipo di programma si chiama demone. Non è affatto detto che su di uno stesso computer debbano essere disponibili sia il lato client che il lato server di un servizio. Si può dare oramai abbastanza per scontato che il client telnet sia sempre disponibile ma non il lato server. Infatti installare un server vuol dire avere l'intenzione di offrire qualcosa della propria macchina al mondo esterno. È bene sapere che installare un server telnet significa avere una precisa cognizione delle risorse della propria macchina che si intende mettere a disposizione e delle risorse che vogliamo invece proteggere. 9 L'impiego di telnet è basato sul concetto di sessione. Questo significa che per poter usufruire dei servizi forniti da telnet deve essere stabilita una nuova sessione di lavoro mediante una procedura di riconoscimento del richiedente. Quando un utente remoto chiede mediante il proprio client telnet di accedere ai servizi del server telnet è necessario che si qualifichi con un nome di utente, lo user name, ed una chiave di accesso, la password. Solo se il server riconosce il nome dell'utente e la password consente l'accesso aprendo la sessione di lavoro. Durante la sessione il client ha disposizione tutta una serie di comandi per accedere ai servizi offerti dal server. Alla fine del lavoro, il client chiede di chiudere la sessione mediante un apposito comando dopodiché per accedere nuovamente è necessario aprire una nuova sessione. Nel caso in cui il server non riconosca il nome di un utente o la password fra quelli legali la sessione non viene fatta partire. A molti utenti moderni di computer abituati ad utilizzare la rete "navigando" mediante un browser dotato di interfaccia grafica telnet può sembrare molto scomodo e poco utile. Effettivamente oggi il suo impiego è limitato ad un'utenza particolarmente tecnica ed in casi particolari. Un esempio potrebbe essere quello della necessità di compiere calcoli molto laboriosi che su di una propria piccola macchina richiederebbero troppo tempo. In tal caso mediante una sessione telnet si può andare ad eseuire i calcoli su di un computer remoto molto più potente. Naturalmente sarà in generale necessario trasferire i dati su cui eseguire i calcoli dal piccolo sistema locale al computer remoto ed, eventualmente, recuperare i risultati. A questo si può provvedere con un altro dei servizi di base su cui è stata costruita Internet: il File Transfer Protocol. Il protocollo FTP Il protocollo FTP (File Transfer Protocol), che fino ai primi anni ’90 era la maggiore sorgente dei pacchetti che circolavano su Internet, è utilizzato per il trasferimento di file, binari o di testo, tra due computer collegati alla rete. Il suo funzionamento è basato sulla tecnologia client/server: un client FTP richiede un trasferimento di dati, un server FTP risponde alla richiesta. A differenza del protocollo HTTP, centrato sul trasferimento e sulla visualizzazione delle pagine e delle immagini contenute, il protocollo FTP permette di entrare nelle directory del computer remoto, esattamente come se fosse in locale, con possibilità operative dipendenti dal tipo di accesso. I tipi di accesso FTP sostanzialmente due: • • autenticato, in cui l’utente ottiene l’accesso attraverso un processo di autenticazione, che si esplica fornendo al server i propri dati (username, password). In questo all’utente viene concessa la possibilità di compiere tutte quelle operazioni che normalmente si compiono sul disco locale, quali, ad esempio, la copia, la cancellazione o lo spostamento dei files. E’ inoltre possibile trasferire i files in entrambe le direzioni, per cui si possono avere due tipi di procedure: o download, per il trasferimento di files dalla macchina server alla macchina client; o upload, per il trasferimento di files dalla macchina client alla macchina server; anonimo, in cui ciascun utente può accedere liberamente all’archivio “pubblico”. Con questa modalità l’insieme delle operazioni eseguibili è ristretto rispetto a quelle concesse agli utenti autorizzati dal sistema, in particolare è possibile compiere solo operazioni di download. Come per il telnet il FTP è anche strutturato in una parte client ed una server. Normalmente viene installato solo il lato client. Il server FTP viene installato solo in computer destinati all'offerta di particolari servizi alla comunità. L'operazione di trasferimento di un file è oggi disponibile anche dall'interno di un browser. In altre parole anche il protocollo HTTP dispone della funzionalità di trasferimento di file. A molti sarà infatti capitato di fare un download di un file a partire da una pagina Web. Non per questo 10 il FTP è da ritenersi obsoleto. Vi sono innumerevoli siti FTP dai quali è possibile scaricare informazioni di vario tipo, molto tipicamente software. Esiste un'enorme quantità di software disponibile nei siti ftp di tutto il mondo. Quando ci si riferisce ad un software reperibile nel pubblico dominio si intende usualmente che è disponibile in qualche sito ftp. L'esecuzione del download di uno o pochi file dalle pagine di un browser è comoda ma nelle seguenti circostanze può essere conveniente impiegare il FTP. o o Trasferimento di gruppi di files Nei siti FTP i documenti sono ordinati in directory proprio come nel disco rigido del proprio computer. I file da trasferire possono essere numerosi oppure potrebbe anche essere necessario selezionare agevolmente una parte dei files disponibili. Queste sono operazioni che si fanno molto comodamente con un client FTP. Molti dei moderni client FTP sono dotati di interfaccia grafica cosicché trasferire files mediante il FTP diventa facile come spostare files fra cartelle diverse sul proprio disco rigido. Aggiornamento di un sito Web L'impiego comune del Web è ovviamente quello di andare a cercare delle informazioni o di usufruire di vari servizi quali per esempio la prenotazione di mezzi pubblici o la gestione del proprio conto in banca. Si sta tuttavia diffondendo molto rapidamente la consuetudine di creare ed offrire delle proprie pagine Web. I gestori degli accessi ad Internet, gli Internet Service Provider (ISP), offrono abitualmente al pubblico le risorse per ospitare e mantenere un sito Web a costi variabili dipendenti dal tipo di servizi che il cliente richiede siano attivati. Ebbene, quando si sviluppa e si mantiene un sito Web succede molto spesso di doverlo aggiornare. È usuale sviluppare e modificare le pagine del proprio sito localmente e poi trasferire tutti i file interessati sul computer del service provider che ospita le pagine Web, il cosiddetto Web server. Questa operazione è inversa rispetto a quella usuale di scaricare dei files sul proprio computer poiché in questo caso si devono trasferire dei files dal proprio computer ad uno remoto, si deve cioè fare un upload anziché un download. Queste operazioni si fanno molto bene mediante il FTP. Come avviene il trasferimento Il servizio di trasferimento dei dati avviene secondo il paradigma seguente, che implica la creazione di due connessioni TCP: • • il client FTP inizia una connessione di controllo, che avviene attraverso il protocollo Telnet, eventualmente autentica il proprio accesso (login), ed invia i comandi FTP per visualizzare le directory, trasferire i files, nonché fornire i parametri da utilizzare per il trasferimento, ecc.; il server FTP crea una connessione dati sulla quale invia e/o riceve i dati richiesti, a seconda della richiesta ricevuta. Per ogni trasferimento, comunicato attraverso la connessione di controllo, il server crea una nuova connessione dati in accordo con i parametri specificati. Il protocollo richiede che la connessione di controllo rimanga aperta durante un'intera sessione. Una volta che la connessione di controllo scompare, la sessione “FTP” viene terminata ed il software ad entrambe le estremità termina tutti i processi di trasferimento dei dati. Mentre le connessioni del server avvengono su porte diverse (di default sono adiacenti: 20 per il controllo, 21 per i dati), le connessioni del client avvengono alla stessa porta. NOTA: Chi vuole può vedere alcuni esempi di sessioni ftp gestite con i semplici client FTP disponibili nei sistemi operativi (Windows, Linux). 11 Il World Wide Web Il World Wide Web (WWW), anche detta ragnatela mondiale, è un’architettura software che fornisce l’accesso e la navigazione ad un insieme di iperoggetti multimediali residenti fisicamente nelle memorie delle macchine collegate ad Internet. Questi oggetti (tipicamente documenti e programmi), detti anche pagine web, sono pertanto collegati tra di loro in modo da formare un grande ipermedia, e contengono testo formattato con linguaggio specifico, collegamenti (link) ad altre pagine web o ad altre risorse; possono contenere però anche immagini, suoni, video, scenari tridimensionali e codice (script) eseguibile localmente. Oggi il WWW rappresenta il servizio più famoso offerto da Internet, ma nell’ultimo decennio è stata anche la ragione che ha decretato il suo successo ed il suo enorme sviluppo. Ragioni più precise per comprendere il rapido successo avuto dall’architettura WWW sono da ricercare in alcune caratteristiche peculiari, quali: - l’ampia scalabilità, - la sua adattabilità alle reti, - la sua natura distribuita e l’accessibilità da tutte le piattaforme, - ma anche per lo standard di pubblico dominio su cui è basato. L’architettura software è di tipo client/server. Il Web User Agent, ovvero l'interfaccia tra utente e protocollo di rete, è il cosiddetto Browser. Gli standard principali utilizzati nell’architettura software del Web sono sostanzialmente tre: • • • URL (Uniform Resource Locator), per l’indirizzamento delle risorse HTML (HyperText Markup Language), il linguaggio per la definizione delle pagine web HTTP (HyperText Transfer Protocol), il protocollo utilizzato tra client e server per comunicare. L'indirizzamento URL. Ogni risorsa accessibile via Web ha un indirizzo URL di riferimento. Tale indirizzo è costituito da tre parti: • • • metodo di accesso, per indicare il protocollo da utilizzare, ovvero in che modo si vuole accedere alla risorsa. I metodi più comuni sono HTTP (protocollo nativo del web), FTP (File Transfer Protocol, per il trasferimento di files), NEWS (protocollo per accedere ai gruppi di discussione), MAILTO (per spedire posta elettronica), TELNET (protocollo di terminale virtuale per login remoti), FILE (accesso a documenti locali); nome dell’host, letterale o indirizzo IP, per identificare la residenza fisica della risorsa. A ciò va collegato anche il numero della porta che permette l’accesso alla risorsa; nome dell’oggetto, che include il cammino ed il nome del file, per identificare univocamente la risorsa. Un URL assume dunque la forma seguente metodoaccesso://nomehost:porta/nomeoggetto anche se il numero della porta viene solitamente omesso in quanto il protocollo scelto sottintende quale porta utilizzare. Ad esempio http://www.itistulliobuzzi.it/docenti/indice.html rappresenta l’URL della pagina indice delle dispense “indice.html”, che dunque viene recuperata con il metodo http, dall’host www.itistulliobuzzi.it, ed è contenuta nella directory docenti, mentre il numero di porta omesso è di default 80. 12 Esistono alcune regole per completare un URL non specificato interamente dall'utente: se manca il nome della directory, si assume che la directory sia la stessa della pagina precedente; se manca il nome del file si restituisce un file prefissato all’interno della directory (“index.html”, “default.html” oppure “welcome.html”), e così via. In generale una pagina web è composta da una pagina testuale formattata con il linguaggio HTML e da oggetti referenziati nella pagina testuale stessa. Il protocollo HTTP Il protocollo HTTP è il protocollo di livello Applicazione che permette di gestire il sistema distribuito del web, occupandosi del dialogo tra client e server web. E’ un protocollo senza memoria (stateless) in quanto ogni interazione tra client e server si svolge indipendentemente da eventuali “dialoghi” precedenti, e d’altro canto non è previsto un livello di sessione che li ricordi. Questa struttura, per certi versi necessaria, permette di ricercare e recuperare un’informazione in maniera veloce, saltando rapidamente da un server all’altro attraverso i collegamenti ipertestuali. Ogni singola interazione tra client e server si svolge con la seguente procedura: • apertura di una connessione di livello trasporto TCP (l’HTTP richiede una comunicazione affidabile) • il client invia la richiesta con l’URL desiderato. La richiesta deve contenere il comando da eseguire sull’oggetto indicato dall’URL (ad esempio il comando PUT indica la richiesta di mandare un oggetto al server, mentre il comando GET, che tra l’altro è quello più utilizzato, indica la richiesta dell’oggetto dal server), la versione del protocollo HTTP in uso, il tipo di client nonché i dati che il client può accettare; • il server responsabile dell’URL richiesto invia una risposta al client. • chiusura della connessione di livello trasporto. Esempio Se un browser vuole ricevere il file specificato dall’URL http://www.somehost.com/abc/saluti.html dapprima apre una connessione con l’host www.somehost.com alla porta 80 (porta di default, poiché nell’URL non è specificata alcuna porta). Quindi spedisce attraverso la connessione la richiesta: GET /abc/saluti.html HTTP/1.0 Il server risponde con qualcosa di questo tipo, trasmesso attraverso la stessa connessione HTTP/1.0 200 OK Date: Fri, 31 Dec 1999 23:59:59 GMT Content-Type: text/html Content-Length: 1354 <html> <body> <h1>Ciao a tutti.</h1> (more file contents) ... </body> </html> Dopo aver mandato la risposta il server chiude la connessione. 13 Nella richiesta, GET è il metodo di richiesta, significa “dammi questa risorsa”. Nella risposta, 200 è il codice di stato (indica che la richiesta ha avuto buon fine), OK è la spiegazione in lettere del codice di stato. Seguono altre informazioni e quindi l’intera pagina HTML richiesta. Tutti i codici che iniziano con 1 sono informativi, con 2 significano successo, con 3 ridirezione, con 4 errore del client, con 5 errore del server. Eccone alcuni: • • • • • 200: OK, la richiesta è stata processata e i dati vengono spediti 204: No Content, la richiesta è stata processata ma non ha avuto risposta 301: Moved Permanently: il file specificato è stato permanentemente spostato in un’altra locazione 403: Forbidden: il client non è autorizzato a ricevere i dati richiesti 404: Not Found: i dati specificati nell’URL non sono stati trovati Le Chat L’ambiente delle chat oggi fornisce un mezzo di comunicazione col quale si incontrano tante culture, in un sistema che di fatto crea una comunità mondiale virtuale. La comunicazione, essenzialmente asincrona per natura, avviene in tempo reale tra più utenti collegati in rete tramite client apposito o su siti web dedicati e con l’utilizzo quasi esclusivo del testo (ma anche voce e immagini). Ciascun utente è dotato di un nome virtuale, il nickname. Come in ogni comunità, inoltre, ci sono norme che costituiscono linee guida di base per il comportamento e l’interazione fra gli utenti, anche se di fatto non esiste una modalità per creare e sostenere regole e leggi nel mondo virtuale. I sistemi di comunicazione in tempo reale, nati dall’esigenza di scambiarsi messaggi o comunicare a distanza in tempo reale simulando l’uso del telefono, hanno oggi raggiunto una diffusione planetaria. Tra i client più diffusi figura ad esempio Messenger. Uno dei protocolli più diffusi, su cui sono basati un gran numero di clients, e certamente il più antico è il protocollo IRC (Internet Relay Chat). Il protocollo IRC. IRC è un sistema di teleconferenza, basato sul modello TCP/IP (in generale la porta TCP è la 6667), che ben si adatta ad un uso su macchine e modelli diversi. I processi server costituiscono la spina dorsale di IRC, dei veri e propri punti di connessione per i client e per gli altri server IRC, che effettuano la distribuzione/multiplexing dei messaggi (e altro) all’interno della loro rete (la configurazione topologica è ad albero). Il protocollo SNMP Il protocollo SNMP (Simple Network Management Protocol), basato su UDP/IP è utilizzato per monitorare e gestire gli apparati di rete. E’ stato progettato per inviare dati sullo stato della rete, ma è anche possibile modificare alcuni parametri degli apparati di rete. 14