Il telemaconeTRE -...

64
Paolo Macchi Il telemaconeTRE Prima parte Web e Sicurezza ISIS Cipriano Facchinetti - Castellanza (VA) – 2015-16

Transcript of Il telemaconeTRE -...

Paolo Macchi

Il telemaconeTRE Prima parte

Web e Sicurezza

ISIS Cipriano Facchinetti - Castellanza (VA) – 2015-16

Il telemacone3 - prima parte - rel 15.10.06

1

L’era di Internet ................................................................................................................................................................................ 4 Nasce Internet ................................................................................................................................................................................. 4 Word Wide Web: la grande ragnatela mondiale ............................................................................................................................ 6 I servizi di Web 2.0 ......................................................................................................................................................................... 8 Social Network ........................................................................................................................................................................... 9 e-learning ................................................................................................................................................................................. 10 Cloud Computing ..................................................................................................................................................................... 10 Internet of everything: Il mondo interconnesso ........................................................................................................................ 11 Web Mobile e iPad ................................................................................................................................................................... 13 Usare le reti in modo consapevole ............................................................................................................................................... 14

WWW: come funziona ................................................................................................................................................................... 17 Il dominio ..................................................................................................................................................................................... 17 Il DNS ........................................................................................................................................................................................... 18 Lo spazio dei nomi ................................................................................................................................................................... 18 Server di nomi .......................................................................................................................................................................... 20 URL - Uniform Resource Locator ................................................................................................................................................ 21 I Documenti .................................................................................................................................................................................. 22 ISP ................................................................................................................................................................................................ 25

Il software Client-Server ................................................................................................................................................................ 27 HTTP e l’accesso alle risorse remote ........................................................................................................................................... 28 HTTP: la richiesta da Client a Server ....................................................................................................................................... 29 I parametri di GET ................................................................................................................................................................... 30 Il dati di POST ......................................................................................................................................................................... 31 HTTP: la risposta del Server al Client ...................................................................................................................................... 31 Un esempio di richiesta-risposta tramite terminale (TTY) ....................................................................................................... 32 Telnet ....................................................................................................................................................................................... 33 Come si svolge una connessione di rete completa ................................................................................................................... 33 HTTP: considerazioni finali ......................................................................................................................................................... 34

Funzionamento di un Sever Web ................................................................................................................................................... 35

Le pagine dinamiche ...................................................................................................................................................................... 37 CGI (Common Gateway Interface) (rfc 3875) ......................................................................................................................... 37 Estensione capacità del server WEB ............................................................................................................................................ 40 Servlet Java .............................................................................................................................................................................. 40 Scripting lato server ................................................................................................................................................................. 41 ASP .......................................................................................................................................................................................... 44 Il Pattern MVC ......................................................................................................................................................................... 45 Content Management System ................................................................................................................................................... 46

e-mail e FTP .................................................................................................................................................................................... 48 Generalità ..................................................................................................................................................................................... 48 MIME ....................................................................................................................................................................................... 50 SMTP ....................................................................................................................................................................................... 52 POP3 ........................................................................................................................................................................................ 56 Emoticons, Smiles .................................................................................................................................................................... 58 FTP ........................................................................................................................................................................................... 60

Il TelemaconeTRE

Il telemacone3 - prima parte - rel 15.10.06

2

RSS .......................................................................................................................................................................................... 63

Il telemacone3 - prima parte - rel 15.10.06

3

Il telemaconeTRE web e sicurezza La riforma scolastica ha sparigliato le carte e dal Telemacone (che ha accompagnato il percorso di Sistemi di tanti studenti in questi ultimi anni), per partenogenesi, sono nate tre dispense (1,2,3) che, opportunamente integrate nelle parti mancanti, ricalcano quello che è lo spirito della riforma: inquadrare, cioè, la figura del perito informatico in un contesto più moderno e rispondente alla nuove esigenze del mercato che si basano, soprattutto, sull’acquisizione di competenze per lo studio e la progettazione di reti locali e geografiche. Nel volume 1 si parte dalla definizione di sistema di elaborazione per arrivare a degli esempi concreti di programmazione dei microprocessori e della struttura di un calcolatore. La prima parte si conclude con una introduzione agli aspetti principali che caratterizzano le reti e Internet,. In particolare vengono illustrati gli strati 1 e 2 del modello ISO/OSI con particolare riferimemento ai protocolli di livello2 (data link). Nel volume 2 si studiano le LAN, e si approfondiscono gli strati 3 e 4 del modello ISO/OSI, con particolare riferimento ai protocolli IP e TCP. Si pongono, inoltre, le basi per la progettazione di reti locali, utilizzando anche strumenti di simulazione e testing. Il volume 3 approfondisce gli starti applicativi del modello ISO/OSI e, in particolare, si interessa delle applicazioni Web ponendo l’accento sui problemi legati alla sicurezza nella trasmissione e trattamento dei dati. Per queste dispense, sono fortemente debitore a due colleghi con i quali condividiamo un progetto di realizzazione di nuove dispense mirate a facilitare l’acquisizione di competenze relative alle nuove tecnologie. Si tratta di Susanna Anelli e Giulio Angiani. Alcuni capitoli e molti esercizi sono esclusivo frutto delle loro intuizioni e abilità. Grazie di cuore!

Questo testo è pubblicato sotto licenza Creative Commons - Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported -

Per le condizioni consulta: http://creativecommons.org/licenses/by-nc-sa/3.0/deed.it . Le utilizzazioni consentite dalla legge sul diritto d'autore e gli altri diritti non sono in alcun modo limitati da quanto sopra.

Il documento è scaricabile da www.isisfacchinetti.it , sezione downlod zone, per fini esclusivamente didattici e non commerciali E’ possibile richiedere il telemacone, in formato cartaceo, all'Ufficio Stampa dell'ISIS Facchinetti, dove viene stampato con la collaborazione dei sigg. Nino Amadore e Giovanni Bonomo.

Segnalazioni di errori, critiche e consigli sono molto graditi e possono essere inoltrati a [email protected] , oppure lasciando un commento al momento del download, per gli studenti registrati.

Il telemaconeTRE web e sicurezza - ISIS Facchinetti - Castellanza - 2015

In copertina – La targa negli uffici del CERN di Ginevra che ricorda il luogo dove nacque l’WEB (foto di Davide Bertoni, 2014)

ISIS “Cipriano Facchinetti” via Azimonti, 5 - 21053 Castellanza (VA) - http://www.isisfacchinetti.it/ Tel. 0331635718 fax 0331679586 [email protected]

Convenzioni usate nel testo:

rappresenta una curiosità o un approfondimento

NOTA rappresenta una nota

Didascalia

rappresenta una esercitazione o un esempio

La pila dei livelli OSI forniscono la mappa per sapere “dove” siamo

http://www.qrstuff.com/ link di riferimento

Rappresenta un codice, un programma, dei risultati o una nota storica

Il telemacone3 - prima parte - rel 15.10.06

4

L’era di Internet “Internet è la più grande biblioteca del mondo. Ma il problema è che i libri sono tutti sparsi sul pavimento.”

[John Allen Paulos]

Nasce Internet Nel 1964 Rand Baran (http://www.rand.org/about/history/baran.html ) viene investito dal ministero della difesa statunitense del compito di sviluppare un sistema di comunicazione in grado di sopravvivere a un attacco nucleare. Baran decide di scartare subito la topologia a stella, la topologia di rete più comune allora, perchè troppo vulnerabile e si concentra, invece, su una architettura distribuita a maglie, simile a un sistema stradale e divide i messaggi inviati in piccoli pacchetti.

Le idee di Baran vengono, inizialmente, respinte ma già, un anno dopo, nel 1965 il ministero della difesa degli USA si rivolge ad ARPA (Advance Research Project Agency, la risposta di Eisenhover al lancio del primo satellite sovietico Sputnik) per la costituzione di reti a commutazione di pacchetto con Host distribuiti, per la sopravvivenza della nazione in caso di attacco nucleare. Nasce cosi' la prima idea della rete ARPANET che nel 1969 possiede 4 nodi e nel 1972 circa 40. Questi nodi possono scambiarsi informazioni sottoforma di pacchetti e comunicano con Telnet, FTP e e-mail.

ARPANET Map from June 1970. photo credit Larry Press

Il sistema ha molto successo cosi' che si collegano altre reti e nel 1974 si stabilisce l'uso del protocollo TCP/IP (integrazione in UNIX Berkeley) come "collante" della rete di reti. Nel 1983 ARPANET è una rete stabile con molte sottoreti collegate tra loro (un centinaio di HOST e circa 2000 nodi). C'è l'esigenza di associare agli indirizzi IP numerici dei nomi tramite il servizio DNS (Domain Naiming System): le macchine sono organizzati in "domini" e i nomi degli Host sono mappati in indirizzi IP. Il primo gennaio 1983 si stabilisce ufficialmente l'uso del TCP/IP. Nel 1984 NSF (National Sience Foundation) tramite la rete NSFNET si collega ad ARPANET con collegamenti che passano dai 56Kbps a 448Kbps (in fibra ottica) fino a 1.5Mbps (1990) e a 45Mbps con la rete IBM ANSNET. Nel 1991 parte il progetto per la velocità di 3Gbps. Dal 1985 , con la connessione NSFNET con ARPANET , comincia l'era di INTRNET anche se non esiste una data ufficiale. Nel 1990, anno in cui chiude formalmente ARPANET, Internet dispone di 3000 reti collegate tra loro con 200.000 calcolatori, tenuti insieme da TCP/IP. All'inizio degli anni '90 al CERN di Ginevra Tim Berners-Lee sviluppa e rende disponibile la tecnologia web. Il primo Browser è Mosaic. Nel 1992 (un milione di Host!) la Internet Society promuove e gestisce Internet con i servizi di Posta elettronica,News,Telnet (collegamento remoto), FTP (trasferimento di files). Da allora Internet, che storicamente era passata dall'uso militare a quello di università e industria, diventa di dominio pubblico inaugurando l'era dell' uso per scopi "personali" (comunicazione, ricerche, giochi, musica, film...) da parte della gente

Il telemacone3 - prima parte - rel 15.10.06

5

comune. Oggi, grazie all’avvento di canali di comunicazione sempre piu' veloci, Il web 2.0 – blog, YouTube, Wikipedia, MySpace, Flickr, Facebook – ha trasformato ogni utente di Internet in un potenziale giornalista, fotografo, regista, star musicale. (http://www.youtube.com/watch?v=9hIQjrMHTv4 http://www.onlinemba.com/blog/history-of-the-internet/ http://www.isoc.org/internet/history/ ) Inevitabilmente, però, Internet porta con sé una serie di problematiche tra cui quelle relative all’ accesso libero alle risorse di rete, all democrazia dell’informazione, alla reputazione, alla privacy, alla "sicurezza" dei dati in rete… Dal punto di vista della rete , Internet è una "rete di reti" costituita da sottoreti o sistemi autonomi collegati. La rete si basa su backbone

principali ad alta velocità (parecchi Gbps) (in futuro le velocità aumenteranno sempre di piu') che collegano tra loro gli USA con il continente europeo, quello asiatico e africano. A tali backbone sono collegate molte altre reti e calcolatori (secondo il modello di "autostrade”, strade statali, provinciali etc) a velocità e capacità piu' o meno elevata fino ad arrivare alla rete locale dell'utente.

La rete attuale del CERN a Ginevra con i collegamenti in tempo reale

Nota: Per visualizzare il percorso nei nodi Internet si può usare tracert.exe (disponibile sotto windows e non grafico). Per una visione grafica

si può riferirsia a VISUALROUTE http://www.visualroute.it/strumenti/traceroute.asp http://www.visualroute.it/vr.asp

http://www.visualroute.com/download.html , un prodotto commerciale molto accattivante basato sui tre programmi software chiave di

Internet: "ping," "whois" http://whois.domaintools.com/ e "traceroute" (tracert (Microsoft Windows systems) or traceroute (Unix and

similar systems ))

I router sono identificati in modo univoco utilizzando gli indirizzi IP . Lo strumento tracert mostra quale percorso fa attraverso la rete un

pacchetto di informazioni per raggiungere la sua destinazione finale . Tracert dà anche un'idea di quanto velocemente va il traffico. Tre

pacchetti vengono inviati a ciascun router nel percorso , e il tempo di ritorno è misurato in millisecondi " .

Internet vs. Uomo” e consumi energetici «Il nostro cervello ha 100 miliardi di neuroni e il computer planetario – cioè l’intera capacità dei computer di tutto il mondo - 13 milioni di miliardi di transistor. Noi contiamo su 100mila miliardi di sinapsi e lui su 57mila miliardi di hyperlinks. Noi abbiamo una memoria di 100 milioni di megabyte e lui da 85mila miliardi. Noi consumiamo 20W contro i suoi 377 miliardi di Watt. Nel 2040 l’ Unica Macchina finirà per avere la capacità di calcolo di 7 miliardi di cervelli umani e non riuscirà mai a battere la creatività di un solo cervello umano» “Wired” di San Francisco, citato da Marco Magrini su Nova24 CONSUMI - Nel 2010 Google ha consumato 2,3 miliardi di kilowattora, l'equivalente dell'energia necessaria a 207 mila abitazioni e all'elettricità usata da 41 Empire State Building nell'arco di un anno. Google ha emesso 1,46 milioni di tonnellate di anidride carbonica, equivalenti a quelle di 70 mila individui. Anche se si tratta di cifre astronomiche, Google le tira fuori per dimostrare che è una delle aziende più ecologicamente responsabili del pianeta. Google ha investito oltre un miliardo di dollari in energia rinnovabile. Per gli addetti ai lavori è un tentativo per rispondere ai numerosi critici.. Ma secondo John Hughes, vice presidente

della Electricity Consumers Resource Council, si tratta pur sempre di livelli di consumo paragonabili a quelli impiegati da inquinatori

storici, quali le compagnie chimiche. Da noi in Italia i kilowattora usati da Google in dodici mesi basterebbero a far funzionare città come Trieste e Padova. [http://www.corriere.it/ambiente/11_settembre_10/farkas-google-energia-elettricita_46daa5e6-db80-11e0-b2c4-3586dc7a9584.shtml

Il telemacone3 - prima parte - rel 15.10.06

6

Word Wide Web: la grande ragnatela mondiale Il mondo di Internet, nel corso della sua storia, ha sviluppato una serie di servizi e protocolli alcuni dei quali come la posta elettronica o il file transefer (FTP) o Telnet godono tutt’ora di grande popolarità e verranno trattati nei prossimi capitoli. Per ora fermiamoci a valutare la portate del servizio che più di ogni altro incide nella nostra vita e nel mondo intero: il WWW.

Sir Timothy John Berners-Lee (1955) è un fisico e informatico britannico. Nel 1989, al CERN di Ginevra, propose un progetto globale sull'ipertesto, poi noto come World Wide Web. Berners-Lee ha coniato il nome di World Wide Web, ha scritto il primo server per il World Wide Web, httpd, e il primo programma client (un browser e un editor) nell'ottobre del 1990. Ha scritto inoltre la prima versione del linguaggio HTML per la formattazione di documenti con capacità di collegamenti ipertestuali. Lasciò il CERN per il Massachusetts Institute of Technology (MIT) di Boston, presso cui nel 1994 fondò il World Wide Web Consortium (W3C). «A short summary of the World Wide Web project». Una pagina che in poche parole e molti link (ovviamente) — http://www.w3.org/History/19921103-hypertext/hypertext/WWW/TheProject.html — spiegava il progetto elaborato da Tim al Cern: “A wide-area hypermedia information retrieval initiative aiming to give universal access to a large universe of documents“

Quando, nel 1992, presso il CERN di Ginevra, Tim Berners-Lee mise a punto il linguaggio HTML (HyperText Markup Language) e definì il protocollo HTTP (HyperText Transfer Protocol) usato per trasportare in rete i documenti, sicuramente non aveva idea di quello che sarebbe successo in pochi anni e della rivoluzione che aveva innescato. Da quel giorno sarebbe cambiato il modo stesso di vivere e pensare di miliardi di persone nel mondo. Lo scopo immediato che aveva in mente era importante ma molto meno ambizioso. Si trattava di tenere traccia dei progetti di fisica del CERN tramite sistemi informativi integrati basati su “sistemi non lineari di testo noti come ipertesto”.

Questo disegno fa parte del documento con cui Bernes-Lee nel 1989 propose al CERN il suo progetto per immagazzinare informazioni. Il documento recita

così: ”This proposal concerns the management of general information about accelerators and experiments at CERN. It discusses the problems of loss of

information about complex evolving systems and derives a solution based on a distributed hypertext system”. Tim Berners-Lee scrive su un computer NeXT, il codice del primo programma che consente di navigare tra i collegamenti dei documenti ipermediali, appoggiandosi alla rete Internet. Il programma si chiama “WorldWideWeb”. Solo successivamente il nome “World Wide Web” (WWW o, semplicemente, Web) indicherà lo “spazio delle informazioni astratte” come noi lo conosciamo ora: la più grande area di documenti ipermediali (“wide-area hypermedia”) il cui fine è consentire l'accesso universale e indiscriminato a tutti i documenti condivisi. Uno spazio aperto a tutte le persone del pianeta. l sistema proposto da Berners-Lee si basa sull’architettura Client-Server in cui due moduli distinti, residenti, di norma, su macchine diverse, interagiscono tra loro. Il programma residente su client permette all’utente di formattare e spedire una richiesta al server. Il server la riceve, la interpreta e fornisce la risposta al Client, che la mostra all’utente.

Il telemacone3 - prima parte - rel 15.10.06

7

la logica della comunicazione Client-Server HTTP://www.dii.unisi.it/~benelli/scienze_della_comunicazione/dispense/2005_06/ClientServer.pdf L’idea è quella di "separare il software di memorizzazione delle informazioni dal software di visualizzazione dati, con un'interfaccia ben definita tra loro”, con la conseguente separazione fisica tra l'interfaccia utente e la macchina su cui risiede il database remoto.

Tim Berners-Lee e lo statuto del W3C «Il Web è un'invenzione prima sociale che tecnica.- scrive Tim Berners-Lee- L'ho progettato per uno scopo sociale - quello di permettere alle

persone di collaborare - e non come giocattolo tecnico. Il fine ultimo del Web è di supportare e migliorare la nostra esistenza reticolare nel

mondo»

Il modello client / server per un sistema distribuito ipertestuale (dal document originale di Tim Berners-Lee). Lo statuto del W3C (World Wide Web Consortium, cioè la comunità internazionale che sviluppa standard aperti per garantire la crescita a lungo termine del Web) recita testualmente: «Il Web è unico perché è libero. Chiunque può creare un documento e metterlo gratuitamente

online. Il W3C cerca di evitare che interessi di qualsiasi genere possano porre un freno a questa assoluta libertà»

la “mission” del W3C : HTTP://www.w3.org/

Il telemacone3 - prima parte - rel 15.10.06

8

I servizi di Web 2.0 Con l’avvento del Web2.0 la comunicazione non avviene più dal Produttore al Consumatore, ma diventa bidirezionale. Web 2.0 ha integrato e dato valore aggiunto ai servizi tradizionali creando nuove attività rivolte, sopratutto, alla comunicazione tra persone. La caratteristica risiede nell'approccio con il quale gli utenti si rivolgono al Web: dalla semplice consultazione alla possibilità di contribuire popolando e alimentando il Web con propri contenuti. Con il web 2.0 noi tutti siamo diventati i terminali e i produttori di informazioni che viaggiano in tutte le direzioni nel mondo globalizzato: audio, video, informazione e divertimento. Acquistano valore servizi come l’e-commerce (commercio e acquisti on line), l’ e-government (l'uso della tecnologia per migliorare l'accesso e l'erogazione di servizi pubblici a beneficio dei cittadini), l’e-book (libri on line), la scrittura collettiva (scittura di racconti realizzata in gruppo http://www.scritturacollettiva.org/ ), i social games (giochi che incorporano la possibilità di interagire con le persone collegate al nostro profilo che partecipano al gioco http://www.farmville.com/, http://www.facebook.com/cafeworld ) e l’arte in alta definizione per ammirare particolari artistici sconosciuti come in http://www.haltadefinizione.com.

Lunga vita a Web By Tim Berners-Lee November 22, 2010 29 ( http://www.scientificamerican.com/article.cfm?id=lo ng-live-the-web )

(http://www.scientificamerican.com/article.cfm?id=long-live-the-web): Il Web si è evoluto in uno strumento potente e onnipresente perché costruito su principi egualitari e perché migliaia di individui, università ed imprese hanno lavorato, sia autonomamente che insieme come parte del World Wide Web Consortium, per espandere le proprie capacità sulla base di tali principi. Il Web come lo conosciamo oggi, è, però, minacciata in diversi modi. Alcuni dei suoi attori di maggior successo hanno cominciato a far vacillare i suoi principi. Grandi siti di social networking hanno messo in compartimenti stagni le informazioni dei loro utenti staccandole dal resto del Web. Internet provider wireless sono tentati di rallentare il traffico verso i siti con cui non hanno fatto accord commerciali. I governi –siano esso totalitari o democratici - monitorizzano le abitudini delle persone online, mettendo in pericolo importanti diritti umani. Se noi, gli utenti del Web, permettessimo a queste e altre tendenze di procedere incontrollate, il Web potrebbe suddividersi in tante isole frammentate. Potremmo perdere la libertà di connetterci con qualsiasi sito Web. Gli effetti negativi potrebbero estendersi a smartphone e i-pad, che rappresentano anche i portali per le numerose informazioni che il Web offre. Perché è cosi’ importante quanto abbiamo detto? Poiché il Web è vostro. Si tratta di una risorsa pubblica da cui voi, i vostri affari, la vostra comunità e il suo governo dipendono. Il Web è anche vitale per la democrazia, un canale di comunicazione che rende possibile una conversazione continua in tutto il mondo. Il Web è oggi è un elemento ancor più critico per la libertà di parola rispetto a qualsiasi altro mezzo. Esso porta con sè i principi stabiliti nella Costituzione degli Stati Uniti, la Magna Carta britannica e altri documenti importanti nell'era della rete: la libertà di non venir intercettati, filtrati, censurati e isolati. Eppure la gente sembra pensare che il Web è una sorta di elemento naturale che se inizia ad appassire, pazienza: è una di quelle cose sfortunatche capitano e a cui non c’è rimedio. Non è così. Siamo noi a creare il Web, progettando protocolli e software per computer: questo processo è completamente sotto il nostro controllo. Abbiamo la facoltà di scegliere ciò che vogliamo avere. Il Web non è affatto finito (e certamente non è morto). Se vogliamo monitorare ciò che il governo sta facendo, quello che le aziende fanno, capire il vero stato del pianeta, trovare una cura per l’ Alzheimer, condividere facilmente le nostre foto con i nostri amici, dobbiamo assicurarci che il pubblico, la comunità scientifica e la stampa facciano in modo che i principi del Web restino intatti, non solo per preservare ciò che abbiamo guadagnato ma a beneficio dei grandi progressi che ci aspettano. Ci sono diversi principi fondamentali per assicurare che il web diventi sempre più prezioso. Il principio primario che sta alla della crescita del Web è l'universalità. Quando si effettua un link, è possibile non ottenere nessun collegamento. Ciò significa che le persone devono essere in grado di mettere qualsiasi cosa sul Web: non importa quale computer hanno, o quale software usano quale lingua parlano o se posseggono una connessione cablata o wireless a Internet. Il Web deve essere utilizzabile da persone con disabilità. Si deve lavorare con qualsiasi forma di informazione, sia essa un documento o dei dati o informazioni di qualsiasi qualità - da un tweet sciocco a un testo scolastico. E dovrebbe essere accessibile da qualsiasi tipo di hardware che può connettersi a Internet: sistemi fissi o mobili, schermo piccolo o grande.

Il telemacone3 - prima parte - rel 15.10.06

9

Social Network

Collegato a Web2.0 è il fenomeno dirompente dei Social Network, reti sociali costituite da “persone connesse tra loro da diversi legami sociali, che vanno dalla conoscenza casuale, ai rapporti di lavoro, ai vincoli familiari”. In realtà l’intero sistema si basa su un tessuto di “amicizie” (cioè legami accettati come non negativi) a cui l’utente rende pubblico il proprio profilo e le proprie istanze, in un rapporto di fiducia che non si potrebbe realizzare in situazioni di anonimato. In questo modo si crea una rete di amci e di amici di amici e le frequentazioni on line , spesso seguono o precedono anche frequentazioni off line. La maggior parte degli iscritti alle reti sociali online carica fotografie di viaggi, amici, serate, vacanze, ma resta soprattutto uno spazio per la condivisione privata come ad esempio le chat.

Mark Elliott Zuckerberg (14 maggio 1984) imprenditore e informatico statunitense, fondatore di Facebook. Mentre era studente ad Harvard ha co-fondato il sito di social networking Facebook con Eduardo Saverin e con l'aiuto del collega e specializzato in informatica Andrew McCollum, insieme ai compagni di stanza Dustin Moskovitz e Chris Hughes. Oggi è amministratore delegato di Facebook. Ha un profilo su Facebook, sebbene le impostazioni della privacy non consentano di aggiungerlo come amico.

Non si può tralasciare il grande problema che la rete, divenuta una forma di comunicazione di massa, ha visto diversi tentativi di filtrare una parte di informazioni o addirittura di controllarla. Con l'aumentare del terrorismo, Internet sta diventando sempre più controllata, anche perché la vita delle persone è migrata sempre più verso la grande rete, rendendole così più vulnerabili alle violazioni della loro privacy. In particolare il problema della Neutralità di Internet si configura come un argomento che farà discutere. “Negli ultimi due anni il traffico dati su rete mobile si è fatto sempre più pesante. Servono forti investimenti e le telecom non vogliono essere le uniche a pagare il conto. Ecco perché probabilmente Internet su rete fissa resterà «neutrale» mentre nella telefonia mobile e nelle reti a banda ultralarga si arriverà a concordare variazioni di «pedaggio» tra fornitori di contenuti e gestori delle reti. Parliamo di un’evoluzione inevitabile, ma, come molte cose inevitabili, impopolare. E non è detto che l’autorità americana delle comunicazioni Fcc, sensibile agli umori dell’opinione pubblica, la faccia passare subito. Tuttavia, piaccia o no, la strada è questa. L’accordo Google-Verizon perciò è destinato a segnare l’inizio di «Internet parte seconda»; al quale altri accordi simili seguiranno.” [Corriere della Sera, Edoardon Segantini] Un altro problema è collegato alla “diffusione di notizie «taroccate» che non è iniziata certo col web ma l'era digitale ha amplificato di molto la minaccia dando più potere ai fabbricatori di storie inventate e rendendo più difficile il lavoro di verifica…L'informazione digitale ha reso tutto molto più complesso per almeno tre motivi: 1) la moltiplicazione delle fonti e dei canali informativi 2) l'accelerazione del ciclo informativo, l'esigenza di pubblicare in tempo reale la notizia sui siti, riduce ulteriormente i margini per un controllo approfondito; 3) il progressivo assottigliamento delle redazioni dei giornali principali. http://www.corriere.it/esteri/11_giugno_14/gaggi-amina-falso_20d58302-964d-11e0-82d5-

f9e2fd481445.shtml

Web semantico e il futuro dell’Web Una caratteristica importante di tutte queste reti sociali è la possibilità di cooperazione e, ad esempio, di operare il Tagging che “consiste nell'attribuzione di una o più parole chiave, dette tag, che individuano l'argomento di cui si sta trattando per catalogare meglio e proporre altre informazioni correlate agli utenti.” Un altro aspetto è quello della Folksonomy che “ si riferisce alla metodologia utilizzata da gruppi di persone che collaborano spontaneamente per organizzare in categorie le informazioni disponibili attraverso Internet “. Un esempio ne è delicious – (https://secure.delicious.com/) un gestore di bookmarks per ricordare e condividere. Il principio della cooperazione fa nascere, inevitabilmente, nuove dinamiche e aspetti critici legati alla “reputazione” di coloro che popolano l’Web e come la reputazione possa influire sulle scelte e sulla fiducia accordata a una certa notizia o a un certo sito o prodotto. Nota: Uno studio sulla “reputazione” nei social network professionali, pubblicato nel 2010 dal prof. Marco Lazzari dell’Università di

Bergamo, ha coinvolto, insieme a Paolo Macchi, anche alcuni studenti di informatica dell’ISIS Facchinetti (per chi è interessato può vedere:

“An experiment on the weakness of reputation algorithms used in professional social networks: the case of Naymz”

(http://dinamico2.unibg.it/lazzari/doc/marco_lazzari_reputation_algorithms_professional_social_networks_naymz.htm )

Tatuaggio elettronico che si connette ai dispositivi mobili. INNESTI CIBERNETICI - Roba da cyborg insomma che dimostra come la tecnologia fa un passo avanti e da indossabile diventa integrata nel nostro corpo, passando da oggetti come smartwatch o occhiali intelligenti a veri e propri innesti cibernetici, come li definisce la letteratura di genere. A leggere la descrizione di Motorola il sistema non ha un vero e proprio microfono ma un sensore che riceve il flusso audio direttamente dalla gola, lo decodifica e poi lo invia sotto forma di suono al telefono o al tablet tramite Bluetooth o NFC. Si parla quindi senza muovere la bocca, semplicemente pronunciando le parole ma senza emettere alcun suono. IL CEROTTO DIGITALE – Questa seconda soluzione sembra più probabile soprattutto alla luce delle recenti ricerche di Google, che da due anni controlla la divisione mobile di Motorola. I due colossi infatti stanno investendo nelle cosiddette Biostamp, dei cerotti trasparenti con dei circuiti elettronici che si collegano senza fili allo smartphone. Nel maggio scorso la vice presidente della Ricerca e Sviluppo di Motorola Regina Dugan aveva dato una breve dimostrazione di questi cerotti: bastava avvicinare il cellulare al corpo per sbloccarlo senza toccare

Il telemacone3 - prima parte - rel 15.10.06

10

nulla. Certo, siamo ben lontani dalle prospettive futuristiche del microfono senza suoni ma a quanto pare le aziende stanno lavorando per passare dalla realtà aumentata all’umanità aumentata. Non proprio come i cyborg ma quasi.

http://www.corriere.it/tecnologia/mobile/13_novembre_08/motorola-tatuaggio-microfono-9163f636-4879-11e3-891b-7fc0b9dff093.shtml

e-learning

Una particolare attività sociale orientata alla formazione in rete è l’ e-learning. Si tratta di attività didattiche normalmente svolte in modalità “blended” che prevedono un certo numero di incontri in presenza (durante i quali i docenti si incontrano in un’aula come nelle tradizionali forme di formazione) e un certo numero di ore da svolgere on line (secondo il modello dell’e-learning) cioè in uno spazio virtuale dove lavorare individualmente (consultazione materiali di studio e banche dati) e in gruppo (confronto con altri corsisti per lo sviluppo delle attività laboratoriali nel forum e nella chat di classe). L’e-learning è svolto utilizzando ambienti appositi (Learning Management System, Content Management System di cui un esempio è Moodle (http://moodle.org/ http://moodle.isisfacchinetti.it/moodle/), che permettono di integrare vari strumenti preposti alla condivisione e alla collaborazione, moduli per la “costruzione” di percorsi didattici, strumenti per la valutazione, chat, forum, videoconferenza, raccolta link, wiki, condivisione documenti, agenda, etc. secondo standard predefiniti che favoriscono l’indipendenza dall’ambiente stesso e non richiedono ai docenti particolari conoscenze informatiche. Nella formazione in rete dell’ultima generazione è proprio la collaborazione e l’interazione tra studenti e formatore che favorisce e stimola l’apprendimento tramite l’uso delle nuove tecnologie e delle loro diverse opportunità offerte. La rete diventa non solo il “canale” per “inondare” e “fertilizzare” il “campo” arido dello studente ma, piuttosto, uno SPAZIO VIRTUALE e non un semplice strumento, finalizzato alla discussione e condivisione http://www.metid.polimi.it/images/M_pdf/02_Colorni_pg12.pdf http://www.my-prof.it/MyProf/ http://www.livemocha.com/ http://p2pu.org/en/schools/school-of-webcraft/

Uno dei servizi di condivisione tipici del e-learning è l’WIKI L’idea dell’ wiki , cioè di una costruzione collaborativa e libera dei contenuti e dei saperi, nasce già nel 1932 quando lo scienziato statunitense Vannevar Bush ipotizzò il “Memex” (http://it.wikipedia.org/wiki/Memex) l’antenato, mai realizzato, del’ipertesto che connette i testi attraverso parole chiave. La parola ipertesto risale, invece, al 1963 , quando T.H. Nelson, un socilogo statunitense, lavorò al progetto “Xanadu” in cui il lettore usufruisce dei testi non legati a percorsi rigidi. Il progetto non ebbe successo, perché, nel frattempo nacque il WWW. Nel 1995 Ward Cunningham (http://it.wikipedia.org/wiki/Ward_Cunningham), un programmatore statunitense, ispirandosi alla parola Hawaiiana, wiki, “veloce”, ipotizzò una realtà fatta di contenuti crebili e modificabili da chiunque. Questa realtà si propagò davvero velocemente basandosi sul presupposto che più ampia è la collaborazione, piu’ sicura è l’autorevolezza dei testi, un concetto, in parte, certamente vero ma non condiviso da tutti quelli che pensano che non sempre la maggioranza dei giudizi è garanzia di autorevolezza e verità. Sta di fatto che Wiki è una realtà consolidata a cui nessuno è più disposto a rinunciare…

Cloud Computing

(Cammino di Santiago , La roja, Najera http://www.flickr.com/photos/22996675@N07/4882837484/ )

Con il termine Cloud Computing si intende un “insieme di tecnologie informatiche che permettono l'utilizzo di risorse (storage, CPU, etc.) distribuite.” (Wikipedia).

“Cloud computing significa esattamente questo: distribuire attraverso Internet risorse informatiche: applicazioni software, storage, potenza di calcolo come se fossero energia elettrica. In altre parole, trasformare l'informatica in un servizio di pubblica utilità accessibile (a

Il telemacone3 - prima parte - rel 15.10.06

11

pagamento o meno) come la rete telefonica. Il cloud è un sogno antico che ha percorso la storia del computing dall'epoca dei mainframe fino al paradigma client-server dove computer piccoli come i pc, si connettono a server condividendo applicazioni e risorse. Un modello complesso ma sopratutto inefficiente. Graie a questo tipo di sistema di distribuzione dell'informatica, le aziende insieme ai fornitori di tecnologia si sono dovute dotare di pc, di server, di software, di consulenti, di specialisti che regolano l’ accesso la distribuzione dei programmi e ne che decidono le politiche. A cambiare le carte in tavola è intervenuta la banda larga e la diffusione della fibra ottica che hanno reso Internet una piattaforma sufficientemente veloce e potente per distribuire applicazioni.” (Luca Tremolada, Nova24)

La caratteristica principale del Cloud computing è, percio’, di rendere disponibili all'utente le risorse informatiche nello stesso modo in cui viene distribuita l’ elettricità nelle case: data center lontani centinaia di chilometri pompano potenza di calcolo e servizi on line. In pratica la trasformazione della rete in un computer a cui accedere per il proprio fabbisogno di informazione.

iCloud di Apple Come affermava Steve Jobbs, “la soluzione è spostare il digital hub nella nuvola. Tutti i device possono comunicare col cloud quando vogliono. Faccio una foto e automanticamente va sui miei device sincronizzati. Non devo fare più la sincronizzazione. E' come un hard disk in cielo. Abbiamo fatto di più e lo abbiamo chiamato iCloud. Automaticamente archivia i vostri contenuti e li manda su tutti i vostri device iOs. Fa lo stesso con le app"http://malditech.corriere.it/ http://www.apple.com/it/icloud/what-is.html

Pro&Contro

PRO CONTRO

Il costo delle applicazioni è zero o comunque bassissimo I dati non sono più disponibili fisicamente sul computer dell’ utente

Nessun problema di installazione o compatibilità dei sistemi operativi.

Per quanto riguarda la privacy e la riservatezza ci si deve fidare di chi ospita i servizi

Nessun problema di aggiornamento di software. In caso di assenza di collegamento ad internet servizi non accessibili

I dati che risiedono sui server remoti sono raggiungibili e lavorabili con qualunque computer da ogni luogo.

I dati sono in rete, quindi nascono problemi di sicurezza negli accessi.

Internet of everything: Il mondo interconnesso

Nel mondo di Internet delle cose o di tutte le cose (Internet of Everything, IoE) sono le persone stesse che, insieme alle cose con cui interagiscono tramite sensori, diventano nodi della rete (fig uuu).

Il telemacone3 - prima parte - rel 15.10.06

12

Fig uuu- la tecnologia dei dispositivi intelligenti in funzione del tempo

Le informazioni non transitano più modo grezzo e generico, ma sono studiate per essere mirate a quel particolare utente, in quel preciso momento e nella forma più adatta. Le persone, insieme alle cose, si combinano in una sorta di organismo globale in cui auto, alberi, edifici, prodotti confezionati, abiti, chiavi della macchina, animali domestici e persino pesci rossi si parlano “parlare”, generando una maggiore intelligenza globale che permetterà di combinare i dati a cui persone e macchine potranno attingere insieme.

da rifare bene

Fig. xxx (b)– I sensori stradali rilevano la presenza di ghiaccio sulle strade. Subito si attiva la centrale che provvede alla distribuzione del sale

sull’asfalto rendondolo meno pericoloso. Gli utenti in transito in quella zona, vengono allertati sul loro cellulare del pericolo.

Meno dell’1% degli oggetti di cui facciamo uso ogni giorno sono connessi tra loro. Questo ci dice dell’enorme potenzialità e sviluppi che ci aspettano. Qualche esempio ci può aiutare a familiarizzare.

• Settore industriale, produttivo ed energetico

o Sistemi automatici per la rilevazione presenze e geolocalizzazione per garantirne la sicurezza (ad esempio, lavoratori soggetti a gravi pericoli come i minatori vanno controllati e individuati in qualsiasi momento).

o Telepresenza

o Gestione delle risorse umane, telelavoro e sistemi BYOD (Bring Your Own Device)

• Settore commerciale e di vendita

o Vendita al dettaglio: visualizzazione di dati e analisi predittive

Il telemacone3 - prima parte - rel 15.10.06

13

o Riconoscimento e fidelizzazione del cliente.

o Collegamento tra la dispensa di casa e un dispositivo mobile per una sincronizzazione degli acquisti.

• Settore della formazione

o attività didattiche mirate e personalizzate verso lo studente e risorse didattiche legate al suo grado di apprendimento e livello di conoscenza.

o Socializzazione e dibattiti su idee e ricerche

o uso di sensori per il monitoraggio in tempo reale delle condizioni di sicurezza degli ambienti

• Settore dei servizi

o videosorveglianza, parcheggi intelligenti, prevenzione dei rischi e gestione delle emergenze in caso di calamità

o monitoraggio dei pazienti ricoverati o bisognosi di assistenza continua e delle persone non autosufficienti

La sicurezza delle informazioni e la privacy sono considerate il principale problema collegato allo sviluppo e al crescente livello di connettività generato da IoE.

Web Mobile e iPad

Il Web mobile si riferisce all'uso di applicazioni e all'accesso basato su browser per Internet da un dispositivo mobile - come uno smartphone o tablet PC tramite funzionalità integrate o tramite un dispositivo indipendente - collegato a una rete wireless.

Oggi l’accesso mobile all’Web soffre ancora di problemi di interoperabilità e usabilità. Problemi di interoperabilità derivano dalla frammentazione delle piattaforme dei dispositivi mobili, sistemi operativi mobili, e browser. I problemi di usabilità sono concentrati intorno al ridotte dimensioni fisiche del telefono mobile (schermi a risoluzione limitata e limitazioni operative). Con il passare del tempo, l’ Web Mobile si sta dotando di applicazioni native mobili con accesso diretto all'hardware dei dispositivi mobili (compresi accelerometri e chip GPS) e diventerà sempre più indistinguibile la differenza tra applicazioni web native e mobili. Un cenno particolare merita l'iPad, un tablet computer prodotto da Apple in grado di riprodurre contenuti multimediali e di navigare su Internet servendosi di Wi-Fi o 3G.

Steve Jobs (1955-2011) è il cofondatore di Apple Inc.. Il suo primo computer, l’Apple I, fu realizzato nel 1976 nel garage dei genitori. Nel 1984 la Apple realizzò un personal computer dotato di un nuovo sistema operativo con interfaccia grafica, finestre e icone: l'Apple Macintosh. Nel 2007 steve, dopo varie vicissitudini, presentò l’ iPhone multi-touch e, successivamente,l’iPad e, iCloud. Per definire Steve Jobs (e ringraziarlo per come ci ha migliorato la vita) basterebbe rileggere il testo del discorso pronunciato a Stanford nel 2005 in occasione della festa del graduation day: «Il vostro tempo è limitato, quindi non sprecatelo vivendo la vita di qualcun altro. Non lasciatevi intrappolare dai dogmi, che vuol dire vivere seguendo i risultati del pensiero di altri. Non lasciate che il rumore delle opinioni altrui lasci affogare la vostra voce interiore». http://www.youtube.com/watch?v=D1R-jKKp3NA http://www.lettera43.it/attualita/6537/stay-hungry-stay-foolish.htm

geolocalizzazioni La "geolocalizzazione" è una delle frontiere più interessanti del mondo della rete che ha fatto recentemente un ulteriore scatto con il debutto di Banjo. Si tratta di un'applicazione innovativa proveniente da Palo Alto che regala una nuova forza a quell'ormai significativa comunità di utenti che ogni giorno vogliono far sapere dove sono e che rincorrono l'identificazione della posizione geografica: «La cosa più importante da sapere è che non si tratta dell'ennesimo social network – spiega il padre (e Ceo) di Banjo, Damien Patton - Banjo è un social discovery service», ovvero un aggregatore di dati geografici che raccoglie le informazioni pubblicamente disponibili da piattaforme come Foursquare e che offre una vista panoramica di ciò che le persone stanno facendo all'interno delle tue immediate vicinanze. http://www.corriere.it/scienze_e_tecnologie/11_giugno_24/dipasqua-app-banjo_c2092946-9e62-11e0-b150-aadf3d02a302.shtml

Il telemacone3 - prima parte - rel 15.10.06

14

Smart Watch Nelle figure (tratta da “Nova24”) vengono rappresen tati lo scenario che forma la struttura dell’Web. N ella figura è mostrato il percorso dei dati dal momneto in cui un utente (Bob) decide di caricare una propr ia fotografia in un album fotografico online (ad esemp io flickr.com). Bob, attraverso il browser e i serv izi di Internet, ricava l’indirzzo IP del sito ove è pr esente l’album e tramite opportuni protocolli quali il TCP, che forniscono le regole che permettono la com unicazione tra gli host della rete, invia i dati opportunamente formattati. La figura ci abitua, sin da ora, a familiarizzare c on contenuti e attori (Router, pacchetti, protocoll i come IP e TCP, indirizzi, infrastrutture etc.) che operano nel grande mare di Internet e di cui, un po ’ alla volta, analizzeremo in dettaglio.

Usare le reti in modo consapevole «Facciamocene una ragione: l'uno per cento della popolazione è pazzo. Ha vissuto nel seminterrato per anni, e la

mamma gli portava ogni giorno da mangiare. Due anni fa la mamma gli ha regalato la connessione a banda larga. Mi

chiedo, tuttavia, se sia una consolazione. E se non sia il caso, a questo punto, di parlare con le mamme».

[ Eric Schmidt, presidente di Google, all'Aspen Ideas Festival - giugno 2012 ]

http://seigradi.corriere.it/2013/08/24/teenager-e-social-network-la-discrezione-questa-sconosciuta/

Per un uso consapevole delle reti sociali il garante ha pubblicato un opuscolo http://www.garanteprivacy.it/garante/doc.jsp?ID=1585131 Ecco gli elementi fondamentali:

• Pensarci bene prima di pubblicare i propri dati personali (soprattutto indirizzo, numero di telefono) in un profilo-utente.

• Tenere a mente che certe immagini o certe informazioni possono riemergere, complici i motori di ricerca, in occasione di colloqui di lavoro.

• Usare in certi casi pseudonimi, meglio se diversi in ciascuna rete cui si partecipa.

• Astenersi dal pubblicare informazioni personali relative ad altri senza il loro consenso.

E poi ancora: informarsi su chi gestisce il servizio e quali garanzie dà il fornitore del servizio rispetto al trattamento dei vostri dati personali. Utilizzare impostazioni orientate alla privacy, limitando al massimo la disponibilità di informazioni, soprattutto rispetto alla reperibilità dei nostri dati da parte dei motori di ricerca. Usare login e password diversi da quelli utilizzati su altri siti web. Esercitare un controllo sull'utilizzo

Il telemacone3 - prima parte - rel 15.10.06

15

dei propri dati personali da parte del fornitore del servizio; ad esempio, rifiutando il consenso all'utilizzo dei dati per attività mirate di marketing.

Il decalogo per la sicurezza nell’Web 1 – Proteggete sempre i dispositivi elettronici con una password: non farlo, equivale a lasciare l’auto aperta o la porta di casa spalancata. Magari vi va bene e nessuno ne approfitterà, ma in caso contrario tutti i vostri segreti potrebbero diventare di dominio pubblico 2 – Impostate un Google Alert con il vostro nome (basta cliccare qui, digitare il proprio nome fra virgolette e il gioco è fatto): in questo modo, ogni volta che qualcuno parlerà di voi in rete, sarete avvisati (e potrete quindi controllare). 3 – Uscite sempre dagli account quando avete finito di navigare: accorgimento utile se si vuole evitare di lasciare troppe tracce digitali dietro di sé ma che diventa assolutamente fondamentale nel caso in cui si stia usando un computer pubblico, per evitare che chi lo usa dopo di voi si faccia gli affari vostri (sembra impossibile, ma la maggior parte degli utenti se ne dimentica spesso, con esiti facilmente immaginabili). 4 – Non date mai indirizzo email o numero di telefono (neanche l'indirizzo di casa) quando ve li chiedono nei negozi, per evitare di essere schedati nella memoria dello store e con voi anche gli acquisti che fate. 5 – Criptate sempre l’hardware del vostro computer con una password, così da rendere più difficile agli eventuali ladri spiare il contenuto del disco rigido: se avete un Mac, seguite il percorso “Preferenze di Sistema/Sicurezza/FileVault” e attivate l’opzione; se avete un pc, vi serveBitlocker. 6 – Scegliete un’autenticazione doppia per alcuni siti, tutti quelli che la propongono (da GMail a Twitter), così da accedere al servizio non solo con la password, ma anche con un codice che vi viene spedito sul telefonino. 7 – Pagate sempre in contanti, quando possibile e a maggior ragione se acquistate qualcosa che potrebbe essere fonte d’imbarazzo: con la carta di credito siete sempre rintracciabili. 8 – Controllate le impostazioni della privacy su Facebook e selezionate l'opzione “Amici” così da restringere ai soli amici l’accesso alle vostre informazioni. 9 – Cancellate regolarmente cronologia e cookies nel vostro browser: in altre parole, attivate l’opzione presente sulla maggior parte dei software di navigazione che vi permette di “ripulire tutto” alla fine di ogni sessione, così da ridurre ulteriormente il vostro tracciamento online. 10 – Usate un IP masker, ovvero durante la navigazione nascondete il vostro indirizzo IP in modo da non poter essere localizzati né identificati. Esistono vari programmi adatti allo scopo e i più consigliati sono Tor e il colorito HideMyAss.com. (http://www.corriere.it/tecnologia/foto/09-2013/privacy/regole/decalogo-privacy_1e0f9800-1ba8-11e3-bb5a-be580d016df6.shtml#1 )

sexting Si chiama sexting quando un testo, una foto o un video viene inviato attraverso un cellulare o il computer. Un fenomeno sempre più diffuso negli ultimi dieci anni da quando l’innovazione tecnologica ha reso più semplice l’invio di materiale in ogni momento e da qualsiasi luogo. Tra 16 e 18 anni almeno un ragazzo su 10 si è trovato in pericolo dopo avare messo online foto si se stesso nudo. Spesso le immagini vengono spedite a gente di cui ci si fida. Ma non si è al corrente della fine che poi faranno e soprattutto i messaggi vengono inviati senza il consenso dell’altro. Poi girano in rete e l’utilizzo da parte di altri può essere pericoloso. Si può entrare nella sfera della pedofilia, ma anche del cyberbullismo che fa leva su meccanismi psicologici davvero delicati. Il suicidio è l’ultima tappa, ma bisogna tenere conto che le persone che finiscono in questi vortici sono sempre le più deboli e fragili. http://seigradi.corriere.it/2013/09/07/sexting-diffuso-tra-giovanissimi/

Nativi digitali

Nativi digitaliSono i nati dalla seconda metà degli anni Novanta in poi, i figli di Internet piuttosto che di Gutenberg, circondati ogni giorno da pc e videogiochi, smartphone e iPad: Non usano il cellulare per le tradizionali telefonate ma per giocare, parlare in chat, navigare su Internet. Non considerano le conversazioni su Facebook virtuali ma reali quanto quelle che intrattengono in carne e ossa. Ai manuali e alle enciclopedie preferiscono la Rete e la condivisione delle informazioni. Alle attività da svolgere una dopo l'altra, la contemporaneità del multitasking. http://www.corriere.it/cultura/11_giugno_26/rastellmigri_nella_mente_figli_internet_85a5e0c6-9fc9-11e0-9ac0-9a48d7d7ce31.shtml

Il nativo.. … e il migrante

Il telemacone3 - prima parte - rel 15.10.06

16

Codice digitale Apprendimento multitasking Condivisione e creazione conoscenza (Wikipedia,mp3,..) Esternalizzazione dell’apprendimento Comunicazione vs riflessione Non autorità del testo Connettersi, navigare ed esplorare

Codice alfabetico Apprendimento lineare Stile comunicativo uno-a-molti Apprendimento per assorbimento Internalizzazione della riflessione Autorità del testo Primo: leggere

Marc Prensky fornisce una definizione degli utenti di Internet in relazione alle loro competenze: SAGGIO DIGITALE (digital wisdom): utente, capace di un uso critico e responsabile delle tecnologie digitali; SMANETTONE (digital skilness): colui che possiede le competenze tecniche già attribuite al nativo; STUPIDO DIGITALE (digital stupidity): colui che delle tecnologie fa usi impropri, dannosi, trasgressivi o che rifiuta a priori di avvicinarsi ad esse

Il telemacone3 - prima parte - rel 15.10.06

17

WWW: come funziona «Il Web è unico perché è libero. Chiunque può creare un documento e metterlo gratuitamente online. Il W3C cerca di

evitare che interessi di qualsiasi genere possano porre un freno a questa assoluta libertà»

- dallo statuto della W3C -

«Il Web è un'invenzione prima sociale che tecnica. L'ho progettato per uno scopo sociale - quello di permettere alle

persone di collaborare - e non come giocattolo tecnico. Il fine ultimo del Web è di supportare e migliorare la nostra

esistenza reticolare nel mondo»

-Tim Berners-Lee -

«Se io ho questo nuovo media, la possibilità cioè di veicolare un numero enorme di informazioni in un microsecondo ad

un aborigeno dall’altra parte del pianeta… il problema è .. ‘Abboriggeno ma io e te, che cavolo ci dobbiamo dire’»

- Corrado Guzzanti, comico –

Il World Wide Web ha come scopo la collaborazione tra le persone. Il WWW è un sistema di interconnessione di documenti ipertestuali disponibili su centinaia di migliaia di macchine in Internet distribuite sull’intero pianeta. Con un browser Web, non solo è possibile visualizzare le pagine ma navigare tra di esse con continui rimandi offerti dai collegamenti ipertestuali chiamati hyperlink o, semplicemente, link in modo da ottenere una lettura non sequenziale del testo. Le pagine possono contenere testo, immagini, video e altri prodotti multimediali, Sul Web ogni informazione è scritta in formato HTML (HyperText Markup Language), un linguaggio di markup che, tramite delle etichette (tag) descrive le caratteristiche del testo, tra cui il formato dei caratteri, il loro colore, i link alle altre pagine. L’accesso alle risorse che il WWW mette a disposizione si basa, in primo luogo, sull’architettura Client-Server e sul protocollo HTTP, che ne permette il funzionamento. I paragrafi che seguono illustrano in dettaglio il funzionamento del protocollo e mettono in luce le caratteristiche principali dell’interazione tra un client e un server.

Encyclopedie

Per la verità l’ipertesto non è una caratteristica esclusiva dell’Web: fin dai tempi dell’Encyclopedie, pubblicata nel XVIII secolo, c’era stata una prima rottura dell’ordine lineare, anche con una catalogazione alfabetica delle voci e una organizzazione non lineare del sapere utilizzando quattro tipi di “rinvii” che prefigurano i collegamenti ipertestuali. Questo permetteva contatti tra discipline diverse che non solo sono ammessi, ma auspicati e favoriti. Si scopre così che un elemento può far parte di classi diverse a seconda del punto di vista da cui lo si osserva. La risorsa più preziosa diventa la capacità di creare legami (link) significativi tra i nodi, in modo da selezionare consapevolmente il materiale cercato, trascurando il resto.

I servizi Web sono resi disponibili, oltre che dal linguaggio HTML con cui sono costruite le pagine contenenti i link, dal protocollo HTTP, che permette il collegamento tra client e server, e dalla gestione dei nomi e dei domini. I prossimi paragrafi ci introdurranno alla conoscenza di questi concetti e ci mostreranno gli aspetti più nascosti, ma non per questo meno importante, del Web.

Il dominio Un server in Internet è identificata dal il suo indirizzo IP. Di norma, però, noi non ci serviamo dell’indirizzo IP in formato numerico, troppo lungo e difficile da ricordare, ma del “nome” del dominio, molto più facile da ricordare. Ad esempio www.google.it , è molto più facile da ricordare dell’indirizzo IP 173.194.35.191.

Il telemacone3 - prima parte - rel 15.10.06

18

l’indirizzo IP di google si può ricavarlo con un ping

Il dominio è il nome alfabetico che identifica un server Internet al quale è abbinato un indirizzo IP numerico. Il nome, costituito da una serie di stringhe separate da punti, è liberamente scelto da chi desidera registrare un proprio dominio in Internet, ma deve essere preventivamente accettato e associato a un indirizzo IP. Tale servizio è demandato a ICANN (Internet Corporation for Assigned Names and Numbers), un ente che, di fatto, rimane ancora sotto il controllo degli Stati Uniti e che consente di gestire i domini di primo livello (ad esempio .it o .com) e gli indirizzi ip distribuiti nel pianeta. Per esercitare questo ruolo ICAAN coordina i Root Server dove sono registrati i domini, e la cui lista è conservata e aggiornata a cura di un altro ente: lo IANA (Internet Assigned Numbers Authority). I nomi dei domini non identificano la locazione geografica di una risorsa ma rivestono un aspetto logico e sono strutturati secondo regole gerarchiche. Il servizio che definisce le regole collegate ai nomi in Internet è il Domain Name System (DNS).

Il DNS Il DNS (Domain Name System, definito in RFC 1034 e 1035) è il servizio di Internet che trasforma il nome mnemonico del dominio in indirizzo IP in modo da facilitare il compito all’utente nella ricerca delle risorse in Internet. Il sistema DNS è nato nel 1982 (descritto in RFC 882) quando nessuno sospettava lo sviluppo di Internet pari a quello degli ultimi anni. Nonostante questo si è dimostrato affidabile e in grado di supportare il notevole aumento di macchine collegate. Questo è potuto accadere grazie al fatto che il servizio DNS non è concentrato su un’unica enorme macchina che contiene tutti i nomi e rispettivi indirizzi, ma è un grande database distribuito, in cui le informazioni sono ripartite su migliaia di server DNS. Ognuno di questi server è responsabile del dominio ad esso assegnato. I server sono organizzati secondo una struttura gerarchica ad albero. Il sistema DNS denota:

• uno spazio di nomi strutturato in modo gerarchico che permette di garantire che il nome sia unico nell’intera rete.

• un servizio distribuito in cui molte entità in Internet collaborano per rendere disponibile lo spazio dei nomi. Alcune informazioni sono replicate sulla rete per aumentare le prestazioni

• un sistema che permette di «risolvere» i nomi dei domini, cioè traduce i nomi degli host in indirizzi IP o gli indirizzi IP in nomi host. Questo processo di traduzione è affidato a un “resolver DNS” (una applicazione client, ad esempio un browser Web o un client di posta elettronica) che invia una richiesta a un server DNS.

• un servizio in cui ogni server DNS è responsabile solo di un sottoinsieme

• un protocollo a livello applicazione che si serve di UDP per il trasporto dei dati

Lo spazio dei nomi

Lo struttura dei nomi in DNS è quella di un albero i cui nodi rappresentano i nomi dei domini che si collegano ad un nodo radice, il livello più alto nella gerarchia, rappresentato da un punto “.” (fig. yy). Ogni nome di dominio è costituito da una o più etichette (label). Le etichette sono separate da un punto, ".". Ogni etichetta può essere, al massimo di 63 caratteri. Un nome di dominio completo può contenere un massimo di 255 caratteri, compreso il "." Le etichette sono scritte da destra verso sinistra:

l'etichetta a destra è il dominio di primo livello (TLD, Top Level Domain), a cui segue il dominio di secondo livello. L'estremità di un ramo

rappresenta l’host, e identifica un terminale o un'entità di rete.

Ad esempio se consideriamo www.iana.org possiamo distinguere una gerarchia di elementi. Partendo da destra, incontriamo .org, il nome del dominio di primo livello. Il dominio di secondo livello è .iana, mentre il nome dell’host è www.

Il telemacone3 - prima parte - rel 15.10.06

19

Albero dei domini, dalla radice discendono i vari domini. L'estremità di un ramo rappresenta l’host, e identifica un terminale o un'entità di rete.

HTTP://www.cisco.com/Web/about/security/intelligence/dns-bcp.html

Esistono due categorie per i domini di più alto livello (TLD):

• gTLD (generic TLD). I domini “generici” forniscono una classificazione in funzione delle attività svolte. Sono formati da 3 o più caratteri, e possono essere suddivisi in due: "sponsored" (sTLD) e "unsponsored" (uTLD). La tabella sottostante ne mostra qualche esempio:

• sTLD • uTLD

• aereo, per l'industra dei trasporti aerei

• asia, per la comunità dell'Asia

• coop, per le cooperative

• jobs, per siti sull'impiego

• edu, per siti di educazione scolastica superiore

• gov, per siti governativi e le loro agenzie in USA

• mil, per le forze armate USA • int, per le organizzazioni internazionali

• com, per le organizzazioni commerciali

• net, per le infrastrutture di rete

• org, per le organizzazioni

• info, per i siti informativi

• biz, per business

• name, per le famiglie e i singoli

• pro, per alcune professioni

• ccTLD(country code TLD). I domini “nazionali “, si riferiscono ai diversi paesi e i loro nomi corrispondono alle abbreviazioni definite dalla norma ISO 3166. Eccone alcuni:

Codice Paese

AU Australia

CN Cina

EU Europa

FR Francia

IR Iran

IS Islanda

IT Italia

NL Paesi Bassi

SM San Marino

SN Senegal

TV Tuvalu

UK Regno Unito

Il telemacone3 - prima parte - rel 15.10.06

20

US Stati Uniti

VA Città del Vaticano

ZA Sud Africa

ZW Zimbabwe

Nota L’ICANN ha recentemente (fine 2012) ufficializzato la liberalizzazione di domini di primo livello che potranno essere scelti senza alcun limite, ma si dovrà pagare 185.000 dollari più 25.000 dollari annui.Ad esempio “.app” (applicazioni software), “.bank” , “.Web” ,“.secure”. Ci sono, anche marchi come .ferrari, .fiat, .lamborghini, .abarth, .alfaromeo, .maserati e .gucci. ----- First New Generic Top-Level Domains Delegated

23 October 2013

Los Angeles, California… The Internet Corporation for Assigned Names and Numbers (ICANN) today announced that the first new generic

Top-Level Domains (gTLDs) from its New gTLD Program were delegated.

As a result, the domain name Registries, the organizations approved to operate these and other soon-to-be-delegated gTLDs, can execute

the final processes required to make their domain names available to Internet users.

ICANN's New gTLD Program is responsible for the introductions of new gTLDs that will result in the expansion of the Domain Name System

from 22 gTLDs (e.g., .COM, .NET, .ORG) to possibly 1,400 new names or "strings."

"It's happening – the biggest change to the Internet since its inception," said Akram Atallah, president of ICANN's Generic Domains Division.

"In the weeks and months ahead, we will see new domain names coming online from all corners of the world, bringing people, communities

and businesses together in ways we never imagined. It's this type of innovation that will continue to drive our global society."

http://www.icann.org/en/news/press/releases/release-23oct13-en

Server di nomi

La funzione più importante di un server di nome di dominio (name server) è quella di tradurre (risolvere) il nome del dominio nell’indirizzo IP delle risorse presenti in Internet. Un server di nomi definisce una zona, cioè un insieme di domini, sui quali ha autorità e di cui conosce il nome e l’indirizzo IP. Nessun name server possiede nel proprio database tutti i nomi e i relativi indirizzi. Ciò consente una struttura più robusta e veloce da raggiungere e da gestire. D’altro canto quando un server locale (local name server o default name server), associato tipicamente a un ISP, non riesce a soddisfare le richieste, la inoltra a un server di livello superiore (root name server) relativi ai domini TLD (fig. rrr). Se anche questo server non possiede la traduzione invia l’indirizzo di un Authoritative Host Name che possiede finalmente l’indirizzo richiesto e lo rimanda indietro ripercorrendo la strada fino al local name server e all’host che ne ha fatto richiesta (fig. ppp).

root name servers nel mondo fine HTTP://www.di.uniba.it/~reti/dispense/DNS.pdf

Ogni computer, per ottenere i servizi DNS, deve essere configurato con l'indirizzo di un server di nomi primario e secondario. Un indirizzo relativo a un DNS primario è, ad esempio, 208.67.222.222 quello di un DNS secondario è 208.67.220.220.

Il telemacone3 - prima parte - rel 15.10.06

21

l DNS è nella pratica un database distribuito e ciò significa che non esiste un unico computer in tutto il mondo che è in grado di risalire all’indirizzo di IP di un

altro collegato ad Internet a partire dall’indirizzo mnemonico.

Le informazioni sono distribuite su migliaia di computer, i server DNS. Ognuno di questi server è responsabile di una certa porzione del nome, detta dominio.

I server sono organizzati secondo una struttura gerarchica ad albero che presenta molta somiglianza con la struttura del file system UNIX. Il suo nome è

albero dei domini. Un esempio è quello mostrato in figura, che rappresenta i livelli dei DNS.

Al momento della richiesta per un determinato indirizzo, come ad esempio www.hostingtalk.it, il

1. server DNS del proprio provider in prima istanza controlla nella propria cache se è presente la risoluzione, altrimenti contatta direttamente uno dei

Root Server.

2. I Root Servers sono i server che gestiscono le estensioni .com, .org, .net, .edu, ecc.

3. Poiché la richiesta è per un sito con estensione .it, il DNS contatta uno di questi server, e come risposta avrà un’altra serie di DNS Server che

gestiscono la particolare estensione .it.

4. Verrà fatta richiesta quindi ad uno di questi server, che daranno come risposta una lista di server che gestiscono il dominio particolare hostingtalk.it.

All’ultimo passaggio al server che gestisce il dominio hostingtalk.it verrà richiesto di tradurre il “www” in indirizzo IP. A questo punto si ottiene la risposta

definitiva. Il server DNS conserverà nella propria cache questa risoluzione, in modo che ad una successiva ed identica richiesta, la risposta sarà più veloce,

senza dover necessariamente ripercorrere tutti i passaggi già esposti.

Il computer (A) richiede l’indirizzo IP di www.plutone.com

Se il server DNS locale dispone dell’indirizzo, perché lo ha già risolto in passato e lo mantiene nella propria cache memory, lo invia immediatamente, se

invece non lo conosce lo chiede al root server

Il root server ritorna l’indirizzo IP di uno dei 13 root nameserver mondiali che ha utorità sul dominio.com (TLD)).

Il server “autoritativo” (authoritative server) viene contattato e risponde con…

L’indirizzo IP del server che ha utorità per .plutone

Il server “autoritativo” (authoritative server) per plutone viene contattato e risponde con…

L’indirizzo IP ddel nome dell’host www. A questo punto il DNS locale aggiunge il nuovo nome/indirizzo nella propria cache memory

Finalmente l’indirizzo IP di www.plutone.com arriva al computer locale

DNS: risoluzione dell’indirizzo www.plutone.com HTTP://www.cis131.com/mediawiki/index.php?title=Image:Cis131-fig13-1.jpg

In Italia il registro deputato all’ assegnazione dei nomi di primo livello con dominio .it è il NIC (www.nic.it ), organo del Consiglio Nazionale delle Ricerche con sede a Pisa. Il Registro è responsabile della gestione del name server primario del country code Top Level Domain "it". Tale servizio, che è svolto nel rispetto delle regole stabilite da IANA e ICANN ed è attivo su un server dedicato esclusivamente a tale compito (dns.nic.it).

URL - Uniform Resource Locator L’URL (Uniforme Resource Locator), cioè il nome di una risorsa Web che digitiamo su un browser, corrisponde a un indirizzo IP che il DNS è capace di tradurre. Un URL identifica in modo univoco la posizione di una risorsa nell’ Web usando una sintassi semplice, che è composta da tre parti:

• il protocollo usato per la richiesta

• il nome dell’host che ospita il file richiesto

• il nome del file richiesto Più precisamente struttura è la seguente: protocollo://<host>[:<porta>][<percorso][?<query string>] [#<fragment identifier>]

in cui le [] indicano i campi opzionali.

Il telemacone3 - prima parte - rel 15.10.06

22

Dopo il tipo di protocollo, separato da //, è presente il nome del computer (host) su cui risiede la risorsa, eventualmente seguito dal numero di porta che, sul server, individua il servizio usato. In successione viene indicato il percorso (path), comprensivo del nome del file cercato. Infine, separati dal ‘?’, trovano posto eventuali parametri opzionali (query string), separati dal carattere ‘&’. Gli eventuali spazi (blank) tra le parole vengono, di norma, sostituiti con il carattere ‘+’ e i caratteri speciali vengono fatti predere da escape (%). Alla fine della stringa può essere aggiunto un identificatore speciale (fragment identifier) che, come un segnalibro, indica una posizione specifica all’interno della risorsa. Ad esempio l’URL HTTP://www.razzacanina.it/search?hl=it&q=cane individua sul server di nome “www”, facente parte del dominio di secondo livello “razzacanina”, l’applicazione “search” a cui vengono passati i parametri “Hl=it” e “q=cane”.

Nota In realtà l’URL completa dovrebbe contenere anche un ulteriore campo <username:password@> che pero’, per

motivi di sicurezza, non è praticamente mai usato. La stringa completa dovrebbe percio’ essere:

HTTP:// [<username:password>@] <host>[:<porta>][<percorso][?<query string>] [#<fragment identifier>]

Una ricerca su Google della parola “cane” mostra, nella barra degli indirizzi del browser , qualcosa di simile a quello mostrato nella figura nnn dove, tra altri parametri utili all’applicazione, possiamo individuare proprio la variabile contenete il nome cercato (“q=cane”):

URL completa per la ricerca della parola “cane” in Google

URL Assoluti e Relativi Un URL Assoluto, come ad esempio HTTP://www.rai.it/radiosera.htm, comprende tutte le informazioni necessarie per trovare in rete la risorsa cercata: il protocollo (HTTP), l'host da contattare (www.rai.it) e il percorso per trovare la pagina (radiosera.htm) nell’host. Un URL relativo fornisce la posizione dell’ oggetto relativamente alla pagina che contiene l'URL, senza necessità di specificare l’intero percorso e, soprattutto, senza la necessità di cambiarne l’indirizzo se si sposta l’oggetto su un altro server. L’ esempio seguente serve a capire meglio le differenze tra URL Assoluto e URL Relativo. Immaginiamo di avere un sito Web che contenga, nella cartella immagini, il file mela.jpg. L’URL assoluto risulta essere: HTTP://www.sitoWeb.it/immagini/mela.jpg , che corrisponde al tag HTML: <IMG SRC="HTTP://www.sitoWeb.it/immagini/mela.jpg">. Il corrispettivo URL Relativo è semplicemente il nome della cartella privata del nome del server che si intende sottinteso: <IMG

SRC="immagini/mela.jpg">

I Documenti In ambiente Web, un "Documento" è, formalmente, un’ informazione codificata e inviata da un Server. Alcune convenzioni standard definiscono il tipo di documenti ammessi. Il MIME (Multipurpose Internet Mail Extention), originariamente inventato per risolvere i problemi delle e-mail, identifica il modo con cui sono codificati i dati affinché Client e Server concordino sullo scambio di informazioni. Fondamentali sono, in questo contesto, gli standard sui modi con cui le informazioni vengono codificate: La tabella sottostante mostra alcune estensione di file ammesse. Il sito di IANA (HTTP://www.iana.org/assignments/media-types/index.html) offre una lista competa dei tipi MIME registrati .

Tipo di file Tipica estensione del file Scopo

application/postscript ps eps PostScript.

application/rtf rtf Rich Text Format.

audio/x-wav wav File audio.

image/gif gif Immagine GIF

image/jpeg jpeg jpg Immagine JPEG

Il telemacone3 - prima parte - rel 15.10.06

23

image/tiff tiff tif Immagine TIFF

text/html html htm Testo formattato in HTML.

text/plain txt Testo puro.

video/mpeg mpeg mpg mpe Animazione MPEG.

video/quicktime qt mov Animazione Quicktime.

I Browser conoscono le regole per la rappresentazione di file con queste estensioni, ma nessuno può essere sicuro che siano rappresentati tutti i tipi esistenti o che si possegga di essi la versione aggiornata. In questi casi i browser si appoggiano a programmi esterni (viewer) in grado di visualizzare o riprodurre particolari documenti (Realaudio, Postscript, Vrml). I documenti si possono presentare sotto forme diverse:

• Statici, quando il contenuto dei file presenti su server non cambia nel tempo e tutte le richieste portano allo stesso tipo di informazione

• Dinamici, quando i testi vengo generati dal server nel momento in cui un client ne fa richiesta . Il server manda in esecuzione un programma che, a fronte degli input che arrivano dal client, genera un nuovo documento che viene inviato al browser.

• Attivi, quando il server invia al client delle applicazioni che vengono eseguite dal browser e possono cambiare in funzione dell’interazione con l’utente

Esercizi guidati per il DNS

1. Da URL a indirizzo IP con ping Capire la conversione URL in indirizzo IP tramite l’uso di ping. Dell’’URL completa, il DNS usa il dominio www.google.com per tradurlo in indirizzo IP (74.125.136.99) e consentire all’host di raggiungere la destinazione.

2. DNS con nslookup Al prompt dei comandi digitare nslookup e fare attenzione a quello che viene mostrato. Qual è il server DNS predefinito? Al > (prompt) digitare ? per analizzare le opzioni disponibili. Quali sono ? Spiegarne due.

Il telemacone3 - prima parte - rel 15.10.06

24

Approfondimento Connettersi a Internet I terminali, dai PC, ai tablet, agli smartphone, ac cedono, di norma, ai server Web, attraverso i servi zi offerti da un Internet Service Provider (ISP) o, se mplice mente, Provider. Un ISP è una struttura commerciale o un'organizzazione che offre a suoi cl ienti l’accesso a Internet. Un utente registrato, s i connette al proprio ISP fornendo le proprie credenz iali (login e password) e ottenendo un indirizzo IP e divenedo, così, parte della comunità di Internet. O ggi la maggior parte degli operatori di telecomunicazioni (come Telecom Italia, Tiscali, Fa stWeb o Wind) forniscono, oltre all'accesso alla re te, servizi come la registrazione e la manutenzione dei domini, caselle di posta elettronica etc. La scelt a di un ISP tiene conto di numerosi parametri tra cui l a copertura geografica, la banda offerta (cioè la velocità di Upload e Download, per caricare o scari care documenti da un server), il prezzo e il tempo di accesso, l’assistenza tecnica, i servizi di posta e lettronica e il numero di caselle, lo spazio e i servizi messi a disposizione per la registrazione d i domini DNS. Gli ISP che forniscono questo tipo di servizio si chiamano M aintainers o MNT . Il MNT definisce il name server .

Il telemacone3 - prima parte - rel 15.10.06

25

ISP Non tutti gli ISP sono uguali per importanza e gerarchia. Ci sono ISP internazionali di primo livello, chiamati anche “Tier1” (ad esempio Telecom Italia) che sono connessi direttamente tra loro (peering) da una rete con grande capacità di banda e formano la dorsale di Internet. A tali ISP si connettono altri utenti ISP di secondo livello (“Tier2”). Ad essi si collegano gli ISP locali, o di terzo livello (“Tier3”), che sono clienti degli ISP di più alto livello, a cui si collega l’utenza (fig jj).

ISP di primo , secondo e terzo livello

HTTP://www.bradselectronics.com/blog/how-the-internet-works/ La connessione di un utente di un ISP) può essere eseguita in vari modi diversi, via cavo o etere. Vediamone alcuni:

• Accesso tramite rete telefonica (fig. uuu). Avviene con Modem fonico su linea telefonica (questa tecnologia è ormai obsoleta) o in banda larga, tramite ADSL che sfrutta gli stessi doppini telefonici ma permette velocità decisamente maggiori (fino a circa 20Mbps teorici).

• Accesso wireless: Avviene sfruttando i collegamenti in onde radio. Esistono diverse modalità di accesso wireless a internet: o in un wireless LAN (Wi-Fi) gli utenti si collegano a un punto di accesso (access point) che è collegato alla rete LAN cablata e,

da qui, attraverso il router , a Internet.

• Wireless LAN (Wi-Fi): gli utenti si collegano a un punto di accesso (access point) - immagine CISCO System

o nelle reti di accesso wireless in area geografica (Wi-Max) l’utente si collega, senza fili, a un gestore di servizi che serve gli utenti entro un raggio di qualche decina di Km. (fig. kk)

Il telemacone3 - prima parte - rel 15.10.06

26

Il sistema di connessione Wi-Max di Eolo System.

Anche i collegamenti a distanza, hanno beneficiato delle trasmissioni via radio: Wi-MAX ne è un esempio. Questa tecnologia, con una antenna posta solitamente sul tetto dell’edifico, consente di collegarsi in banda larga ad Internet, a velocità dell’ordine di qualche decina di Mbps, in un raggio di 50Km dalla stazione base.

o WAP (Wireless Access Protocol) l’accesso a Internet avviene tramite dispositivi mobili: � L’UMTS - Universal Mobile Telecommunication System che è il successore del GSM. � HSUPA High-Speed Uplink Packet Access e HSDPA (High Speed Downlink Packet Access).

In particolare HSDPA (chiamato anche ADSM, cioè ADSL + Mobile), può raggiungere la velocità massima teorica di 14,4 Mbit/s. Sono usati ad esempio per chiavette USB che permettono di collegarsi a Internet

o LTE (Long Term Evolution) è una tecnologia mobile di quarta generazione (4G), con velocità teoriche che possono arrivare fino a 100 Mbit/s per scaricare dati (download) e 50 Mbit/s per l’upload.

il collegamento da casa, via rete telefonica, a un ISP per l’accesso a Internet

Il telemacone3 - prima parte - rel 15.10.06

27

Il software Client-Server Quando parliamo di Internet, e del WWW, pensiamo immediatamente che abbiamo a che fare con un potente strumento di comunicazione e che sia sufficiente scrivere un URL nella barra degli indirizzi del nostro browser, per ottenere tutte le informazioni che stiamo cercando. Questo è solo ciò che ci è consentito vedere. Nei fatti la procedura che ci porta ad ottenere una pagina html completa è più complessa. Prima di tutto, quando scriviamo un URL nella barra degli indirizzi, non stiamo facendo altro che una richiesta usando il protocollo HTTP con il suo metodo “get”, come possiamo vedere bene in fig iii premendo il tasto F12 sulla tastiera.

L’uso del tasto “F12” sui browser fa partitire il programma per l’analisi della pagina (in questo caso si tratta di Firebug su Firefox-Mozilla). La pagina è costruita da continue richieste al server tramite il metodo “get” , del protocollo HTTP, seguito dall’URL ricercato. La stessa cosa potremmo ottenerla collegandoci manualmente, tramite Telnet, al sito di google e digitando il percorso per raggiungere la sua homepage:

$ telnet www.google.it 80 get / HTTP/1.1 host: www.google.it accept *

Se la sintassi della nostra richiesta è corretta google risponderà inviandoci alcune meta-informazioni (informazioni che difiniscono le informazioni inviate) e il codice html che compone la homepage (fig iii)

Il browser (Client) richiede l’homepage al server di google, che risponde con una metainformazione (il codice di richiesta accettata, 200), seguito dalla

pagina html

Quello che abbiamo mostrato rappresenta una delle più semplici e quotidiane azioni che facciamo quando navighiamo su Internet. Quelle righe di codice sono ciò che il nostro browser produce quando visitiamo www.google.it servendoci dell'architettura client/server.

Il telemacone3 - prima parte - rel 15.10.06

28

Ciò significa che quando navighiamo in Internet facciamo sempre riferimento a questo tipo di architettura e al protocollo HTTP. Il server è sempre in in ascolto (listen) di una richiesta da un client. Quando un browser richiede un servizio, viene stabilita una connessione con il server e su questo "canale" passano le informazioni richieste. Sta al browser utilizzare correttamente le informazioni che gli sono arrivate e mostrarle all’utente. Ma di cosa parliamo esattamente, quando ci riferiamo al protocollo HTTP e ai suoi metodi? Come funziona un server Web? E’ quello che vedremo nei prossimi paragrafi.

HTTP e l’accesso alle risorse remote La tecnologia di base all’origine delle applicazioni Web è il protocollo HTTP (Hyper Text Transfer Protocol, definito in RFC 2616, che fornisce la versione 1.1). HTTP è un protocollo a livello applicativo e fornisce l’insieme di regole per la collaborazione Client-Server di sistemi ipermediali distribuiti in rete. In altre parole, esso definisce le regole affinché un server possa soddisfare le richieste del client. Il protocollo HTTP si interfaccia con i programmi applicativi da una parte e il livello di trasporto dall’altra (fig bbb)

Fig. bbb il ptotocollo HTTP riferito alla catasta dei livelli ISO/OSI I dati sono trasmessi in formato testuale (ASCII). HTTP si serve per la loro trasmissione dei protocolli TCP e IP il cui compito è instaurare e mantenere la comunicazione. Sul server Web gira un programma (il “demone” HTTPd) che è in attesa delle richieste del client. Quando arriva la richiesta, il demone cerca di soddisfarla inviando al browser i documenti richiesti o la pagina di risposta che ha costruito (fig. ttt).

HTTP://blog.mikecouturier.com/2010/02/beginning-with-jquery-solid-foundation_22.html

HTTP://www.link.it/isi/jsp/index.jsp?sel=doc-file&guida=Dispensa&rel=1.0&id=ar01s02.html

nell’esempio 1 il server risponde al client con l’indicazione dello stato (200 che equivale a OK), con il tipo di pagina (HTML in carattere UTF-8).

Nel secondo esempio il client richiede l’immagine logo.png. Il server risponde con lo status, le meta informazioni relative al tipo diimmagine e con il contenuto binario dell’immagine .

Il telemacone3 - prima parte - rel 15.10.06

29

HTTP: la richiesta da Client a Server

L’intestazione di una richiesta HTTP è composta dai seguenti campi (fig www1):

HTTP://software-carpentry.org/3_0/client.html . I campi di cui è composta una richiesta HTTP :

- la prima riga contiene il metodo, l’URI e la versione del protocollo ( ad esempio “ GET /nonna/applepie.htm HTTP/1.1” )

- la successiva riga (o le righe successive) contiene il nome del campo (header field name) e il suo valore (flied value)

- le meta in formazioni sono seguite, eventualmente, dal “body” , il campo che contiene i dati che si vogliono inviare (in figura CR, LF rappresentano i codici ASCII dei caratteri Carriage Return, Line Feed corrispondenti al tasto “Invio”; SP corrisponde al carattere “ “ (spazio))

• HTTP Method - i metodi HTTP, cioè le modalità di interazione usate dal client sono, tipicamente, due: GET e POST che servono, in modi diversi, a inviare al server delle richieste per ottenere una risorsa passando, eventualmente, delle informazioni o parametri. Seppure Get e Post sono i metodi comunemente usati, esistono altri metodi, alcuni dei quali sono presentati nella tabella sottostante.

method Azione svolta

• GET • Richiama le info

• POST • Invia al server le informazioni ricevute tramite gli input

• HEAD • Dà le informazioni sull'oggetto richiesto (NON l'oggetto)

• PUT • Invia al server copia di un oggetto esistente ( poco usato)

• DELETE • Cancella l'oggetto (poco usato)

• Altro • scopi futuri

• URI - Uniform Resource Identifier, identifica, in questo caso, il percorso all’interno del server in cui è presente la risorsa cercata.

• Version - versione del protocollo HTTP, tipicamente 1.1

• header fields name - campi opzionali i cui valori possono comprendere il tipo di file accettato, il nome del server, le credenziali per l’autorizzazione, la lunghezza dei dati inviati. La tabella tttt ne mostra alcuni.

• Tab. Header fields name

Nome campo Descrizione Esempio Accept Content-Types accettati Accept: text/plain

Accept-Charset Set di caratteri accettati Accept-Charset: utf-8

Accept-Encoding Codifica accettata Accept-Encoding: gzip, deflate

Connection Tipo di connessione preferita dal client Connection: keep-alive

Content-Length Lunghezza del campo “body” (in Byte) Content-Length: 1234

Content-Type Il tipo MIME usato nel campo body (tipicamente in una POST) Content-Type : text/html ; charset=ISO8859-1

Date Data di invio del messaggio Date: Tue, 18 Dec 2012 08:12:31 GMT

Host Il nome del server Host: www.google.it

User-Agent Il nome del browser che invia la richiesta User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:12.0) Gecko/20100101 Firefox/12.0

(si veda il sito di IANA HTTP://www.iana.org/assignments/message-headers/perm-headers.html per i riferimenti precisi)

• body – dati veri e propri che vengono passati al server Ad esempio la richiesta HTTP://www.paper.org/nonna/applepie.htm , apre una sessione sulla porta 80 di www.paper.org e procede con la

Il telemacone3 - prima parte - rel 15.10.06

30

seguente richiesta:

GET /nonna/applepie.htm HTTP/1.1 User-agent: Mozilla Accept: text/html, image/jpeg, image/png

In cui il metodo GET determina quale documento trovare (/nonna/applepie.htm), dove trovarlo (www.paper.org) e come trovarlo (HTTP). Nella fig. yyy è mostrata una richiesta (GET) effettuata da browser e la relativa risposta del server. La richiesta HHTP comprende un certo numero di meta informazioni, tra cui Accept, il nome dell’host e il nome del browser usato (User-Agent).

Richiesta/Rispost http.

La richiesta è effettuata da browser all’indirizzo : http://www.corriere.it/scienze/13_novembre_05/nella-nostra-galassia-ci-sono-88-miliardi-pianeti-

abitabili-come-terra-2bd0d8a0-45fb-11e3-9b53-d1d90833aa3d.shtml . La richiesta HTTP comprende il metodo (GET), la versione del protocollo (http/1.1) e

vari campi di meta informazioni, tra cui Accept e il nome del browser usato (User-Agent).

Si noti, nella risposta, la versione del protocollo (HTTP/1.1) e il codice (200 OK)

I parametri di GET

Nel caso di una richiesta effettuata con il metodo GET, i parametri sono direttamente accodati alla URL, dopo il ‘?’. Ciascun parametro è composto dalla coppia “variabile=valore”. Ogni parametro è separato dal successivo dal carattere ‘&’. La codifica dei parametri è URL-encoded, che permette di rappresentare caratteri speciali come, ad esempio, il carattere spazio, codificato come %20 o come carattere ‘+’

Ad esempio: HTTP://www.paper.org/nonna/applepie.php?id=10&type=crema&over=ciliegia%20rossa

Il telemacone3 - prima parte - rel 15.10.06

31

La ricerca su Google di: “ciliegia rossa”

Il dati di POST

Il metodo post rappresenta un'alternativa al GET. L'uso di POST è relativo ad una richiesta di eleborazione che il client rivolge al server. I dati inviati tramite il metodo post vengono utilizzati come parametri di ingresso ad un algoritmo, che può comportare la memorizzazione dei dati inseriti precedentemente alla richiesta ( modulo del form), insieme al risultato dell'elaborazione. Il metodo post può risultare più sicuro del GET... questo però, sarà oggetto di altri articoli.

HTTP: la risposta del Server al Client

Una risposta HTTP comprende i seguenti campi

HTTP://software-carpentry.org/3_0/client.html

la prima riga contiene la versione di HTTP (tipicamente 1.1), il codice di stato e una frase esplicativa del codice. Seguono le metainformazioni e infine il body

con il messaggio inviato dal server.

Il telemacone3 - prima parte - rel 15.10.06

32

(in figura CR, LF rappresentano i codici ASCII dei caratteri Carriage Return, Line Feed corrispondenti al tasto “Invio”; SP corrisponde al carattere “ “ (spazio))

• La prima riga contiene:

• versione HTTP

• codice di stato - codice numerico di motivazione della risposta. Il codice di stato è un numero a tre cifre classificabile come segue:

• da 200 a 299 Successo

• da 300 a 399 Ridirezione

• da 400 a 499 Errore del Client

• da 500 a 599 Errore del Server Ad esempio:

Codice di Stato MOTIVO

(frase esplicativa) NOTE

• 200 • Document follows • Tutto OK, seguono le informazioni

• 301 • Moved Permanently • Il doc è stato spostato

• 401 • Unauthorized • Non è possibile accedere senza autenticazione

• 402 • Payement rquired • Tariffa da pagare

• 403 • Forbidden • Accesso vietato

• 404 • Not Found • Informazioni non trovate o permesso negato: URL inesistente!

• Status Phrase - frase esplicativa del codice di stato Le righe successive si riferiscono alle metainformazioni (informazioni che spigano i dati inviati nel body). Ogni riga possiede un header field

name (nome del campo) con il rispettivo valore (field value). I valori si riferiscono, ad esempio, al tipo di server, alla dat,a al tipo di contenuto (si possono avere semplici messaggi di testo con text/plain, o text/html o immagini, audio, video e applicazioni e così via), alla codifica usata, alla data dell’ultima modifica. (Per maggiori informazion i si consulti la Tab. tttt)

• Body : sono le informazioni vere e proprie, i dati ricevuti! In figura sotto un esempio di risposta dal server. Si badi bene che il Server non conosce affatto il contenuto di cio' che invia, sta al browser saper interpretare correttamente i dati in arrivo e mostrarli all'utente!

Un esempio di richiesta-risposta tramite terminale (TTY)

Vediamo ora un esempio completo di Richiesta-Risposta effettuata manualmente da un terminale (TTY). Per effettuare la connessione al server si può usare il terminale Telnet (nota nnnnnn9) sulla porta 80 , oppure il programma PuTTY (in fig ppp1 una connessione sulla porta 80 di youtube.it)

“PuTTY is an SSH and telnet client, developed originally by Simon Tatham for the Windows platform. PuTTY is open source software that is available with source code and is developed and supported by a group of volunteers.

You can download PuTTY here.”

Il telemacone3 - prima parte - rel 15.10.06

33

Ppp1 una sessione PuTTY aperta sulla porta 80 di www.youtube.it

Cliccando sul tasto “Open” viene aperta una connessione, tramite TCP, sulla porta 80 del server www di youtube.it. Una volta connessi, occorre digitare le richieste HTTP (fig. ppp2). Il comando GET viene seguito dal path del file. In questo caso è stato sufficiente digitare ‘\’, che corrisponde alla root del server e, implicitamente, al file che il server fa partire di automaticamente in funzione di come è stato predisposto, tipicamente index.html o default.html o index.php o default.php o qualcosa del genere.

il comando GET per aprire una sessione HTTP e ricevere l’ homepage di www.youtube.it

Telnet

Telnet (definito in RFC 854) è un protocollo interattivo per il login remoto che si appoggia a TCP. Esso si comporta come un terminale remoto. Chi inizia la sessione è il Client. Ciascun carattere digitato dall’utente sarà inviato all’host remoto, il quale farà l’eco di ciascun carattere che sarà visualizzato sullo schermo del client: ciascun carattere attraversa la rete 2 volte con tre pacchetti TCP: il primo invia il carattere da Client a Server, il secondo serve a fare l’eco del carattere da Server a Client e a confermare il pacchetto pervenuto. Il terzo è la conferma da parte del Client del pacchetto con il carattere di eco ricevuto Telnet (RFC 854) è un protocollo interattivo applicativo per il login remoto e si appoggia al protocollo TCP. Esso si comporta come un terminale remoto. Client del pacchetto con il carattere di eco ricevuto

Come si svolge una connessione di rete completa

Un esempio di connessione non persistente per il trasferimento di una pagina Web da server a client consiste in una serie di passi ripetitivi:

0. L'utente clicca in modo da ottenere il seguente URL HTTP://www.paper.org/nonna/applepie.htm che comprende una pagina html con 5 immagini jpg 1. Il browser chiede al DNS , sul Server, l'indirizzo di www.paper.org 2. Il DNS risponde, ad ex., con l'indirizzo IP : 244.244.244.1

Il telemacone3 - prima parte - rel 15.10.06

34

3. Il Browser HTTP invia un messaggio di richiesta richiedendo una connessione TCP sulla porta 80 del server con quell'indirizzo IP 4. Il Browser invia il comando GET attraverso il socket associato alla connessione TCP. Il messaggio include il nome del path (percorso) /nonna/applepie.htm HTTP/1.1 5. Il server risponde inviando (se lo trova nella sua memoria) l'oggetto richiesto sottoforma di "pacchetti"incapsulati all'interno di un messaggio HTTP attraverso il socket ( "busta" di intestazione HTTP+TCP+IP+..). I pacchetti vengono convertiti in segnali elettrici e fatti passare sul canale (ad ex. cavo o doppino telefonico) fisico e giungono al client. 6. Il client riceve il messaggio. Viene rilasciata la connessione TCP. 7. Il client estrae l'oggetto (la prima volta è il file html e si accorge della presenza dei riferimenti ai 5 oggetti jpg). 8. Il browser fornisce all'utente il file pervenuto dal server e ripete i passi da 4. a 8. per ogni oggetto jpg a cui si fa riferimento nel file html.

HTTP: considerazioni finali HTTP non ha memoria (stateless, privo di stato): ogni richiesta HTTP viene trattata dal server come unica. Ogni immagine o altro oggetto contenuto nel documento html è richiamato aprendo e chiudendo una connessione di rete come se fosse la prima volta. HTTP non ha la nozione di “sessione” e la storia di un utente non può basarsi su HTTP. Questo problema viene superato con alcuni artifici quali i “coockies” e le “sessioni” (si vedano gli esempi in PHP), che memorizzano sul computer del visitatore, o nella memoria del server, le informazioni necessarie alle applicazioni Web per tenere traccia delle richieste.

Nota: La versione 1.1 di HTTP prevede che le connessioni “non persistenti” siano il modo “normale” di funzionamento e l'utente spesso non si rende conto di questo modo di procedere perché il browser mantiene una cache di immagini per ridurre la necessità di richiamarle continuamente da server, oppure richiama le immagini prima che il testo sia interamente scaricato. HTTP prevede, però, anche connessioni “persistenti”.

HTTP è asimmetrico (pull-based) : è il solo client che chiama il server. Non esiste la possibilità che il server chiami il client usando solo HTTP.

HTTP è nato per la trasmissione di pagine Web ed è, tuttora, la pietra miliare della diffusione delle informazioni su Web. Tuttavia, con il tempo, la richiesta di semplici pagine statiche si è trasformata dapprima in pagine dinamiche e, via via, in vere e proprie applicazioni online, usate per il commercio elettronico, i motori di ricerca, i giochi e cosi’ via. Anche i server, di conseguenza, hanno dovuto evolversi e sfruttare nuovi linguaggi e procedure di sviluppo del software.

HTTP è un protocollo leggero e versatile ma, nonostante questo, non è sicuro. Le richieste che un browser invia a un server, compreso nome utente e password, passano in chiaro e possono essere facilmente intercettate e lette. Le informazioni riservate devono essere crittografate. Il protocollo HTTPS (Secure HTTP) viene utilizzato allo scopo di proteggere i dati tra client e server. HTTPS, come vedremo nelle sezioni successive di questo volume, usa gli stessi identici metodi del protocollo HTTP, ma fa in modo che richieste e risposte siano crittografate, tramite il protocollo Secure Socket Layer (SSL), prima di essere inviate in rete. Ciò comporta un carico di tempo aggiuntivo per l’elaborazione dei messaggi ma ha il merito di rendere sicura la comunicazione sulla rete.

Notifiche push

E’ possibile avere un’informazione da server senza che il client lo richieda esplicitamente Applicazioni, come ad esempio WhatsApp, usano tecniche che permettono all’utente di ricevere delle notifiche in modalità “push” (“push notification” o “remote notification”). Queste notifiche consentono a un'applicazione che non è in foreground, ma che è in esecuzione in background, di attivarsi e segnalare all’utente l’arrivo di un messaggio di avviso. Ciò è comodo per ricevere news o messaggi di chat istantanei o email(fig hh). Esistono varie tecniche sia basate sui socket sia su http.

• Il caso più semplice consiste nel fare continue richieste di polling (long polling) al server, emulando la tecniche di push.

• Una seconda modalità è HTTP server push. In questo caso il server Web, che si serve di HTML5, non termina la connessione dopo che i dati di risposta sono stati inviati al client ma lascia la connessione aperta in modo che se si verifica un evento può essere inviata immediatamente al client.

• Nell tecnica Pushlet il server inganna il client non terminando mai completamente la risposta e lasciando la sessione HTTP perennemente aperta, inviando periodicamente frammenti di codice di aggiornamento della pagina.

• Applicazioni mobili di Android si basano su “Google Cloud Messaging (GCM)”, un servizio che permette di inviare dati dal server ai dispositivi degli utenti e di ricevere da questi, sulla stessa connessione, dei messaggi.

Il telemacone3 - prima parte - rel 15.10.06

35

• Apple usa la tecnologia “Apple Push Notification service (APNs)” per le notifiche da remoto in cui una notifica consiste in un breve messaggio composto da due parti: il “token” che contiene le informazioni per individuare il dispositivo in cui è installata l'applicazione client e il “payload” con i dati di avviso in formato JSON.

(https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Introduction.html#//apple_ref/doc/uid/TP40

008194-CH1-SW1 )

Funzionamento di un Sever Web

Il datacenter di Google visto dall’esterno (a sinistra) e dall’interno, con gli armadi (rack) delle schede contenenti i server e le memoria (in centro). A destra

un tecnico al lavoro all’interno della struttura

Il termine “server Web” si riferisce sia al computer a cui si accede tramite la rete Internet, sia all’applicazione software che gira su di esso e che fornisce i contenuti Web richiesti. Il software presente sul server prende il nome di “demone HTTP” (Hyper Text Transfer Protocol Daemon, o anche “HTTPd”).

il demone La parola "demone" deriva dalla lingua greca, e nelle religioni primitive rappresentava uno spirito, benevolo o malevolo, posto tra l'uomo e la divinità. Il demone di un computer è un programma che si attiva per eseguire delle azioni quando riceve un input. Un server Web utilizza un demone "HTTPd" che invia i dati agli utenti quando questi si collegano. Un Server solitamente prevede la possibilità di fornire piu' servizi su “porte” diverse, come la porta 80 o 8080, che sono riservate al servizio Web. Metaforicamente il demone è un soggetto molto pigro: la maggior parte del tempo la passa dormendo aggrappato alla porta che deve custodire . Ha dei piccoli artigli molto acuminati con i quali si aggrappa allo spioncino della porta e dorme. Quando qualcuno bussa a quella porta, il demone si sveglia in modo repentino e il piu’ velocemente possibile (in modo da tornare a dormire al piu’ presto) risponde alla chiamata. Riceve dalla feritoia presente sulla porta un foglio con segnato cosa deve fare (ad ex. recuperare dall’archivio un certo documento o una foto o un disegno), assegna al figlio o collaboratore la richiesta da evadere e si rimette a dormire aspettando che un altro bussi. I démoni vivono spesso in case comuni che hanno lo stesso indirizzo, ma ogni demone si è accaparrato una stanza diversa , in cui ogni porta ha il proprio numero, con funzionalità diverse: c’è il demone della cucina (spesso porta un grembiule macchiato di sugo!), del bagno, della camera da letto etc, Insomma ogni demone evade un particolare servizio che lo caratterizza. Una casa di demoni puo’ possedere ben 65536 porte di cui pero’ le prime 1024 sono sempre riservate a servizi definiti e “ben noti”: ad ex la porta 80 è sempre la cucina, la 23 il bagno, la 21 il soggiorno e cosi’ via. Sopra la 1024 si puo’ configurare una stanza per un nuovo servizio (solarium, granaio, palestra..) e associare un nuovo demone che la gestisca.

Il demone è costantemente in attesa (“listen”) di una richiesta da client. Nel momento in cui questa gli arriva, il server cerca di soddisfarla andando a individuare sul disco il file cercato e, trovatolo, lo invia al client insieme alle meta informazioni che ne specificano le caratteristiche. Se il server riceve piu' richieste simultaneamente esso cercherà di rispondere in "parallelo” alle richieste che gli arrivano , anche se qualche richiesta accumulerà necessariamente dei ritardi. Nei sistemi UNIX / LINUX un demone (HTTPd padre) potrebbe clonare se stesso producendo un figlio che è la sua copia identica e tornando subito in ascolto di nuove richieste. Il processo figlio esegue le fasi di ricerca del documento, invio dell'informazione al client e chiusura della connessione di rete. Un altro metodo per gestire piu' richieste in contemporanea, consiste nel disporre di un programma HTTPd che abbia diversi thread di esecuzione. Quando un thread elabora una richiesta e, ad esempio, accede al disco, esso si sospende e un altro thread si occupa di rispondere a una nuova richiesta. Se questo thread, a sua volta, attua una operazione di I/O che lo rallenta, il primo thread rientra in esecuzione e completa le proprie operazioni. Atri metodi prevedono la creazione di più processi collaboranti (helper) a fronte di un processo (dispatcher) che distribuisce agli helper le richieste provenienti dalla rete.

Il telemacone3 - prima parte - rel 15.10.06

36

Hosting e Housing Per pubblicare un sito o una applicazione Web è nec essario che i file che lo compongono e che hanno formati diversi (html, php, asp, aspx ecc), siano caricati sul server web. Per questo o si dispone, i n casa propria, di un server da gestire in proprio, o ppure occorre affidarsi a un servizio di hosting o housing. Nel primo caso ( hosting) il servizio prevede che sia un server Web di una società esterna a ospitare più siti Web su una singola macchina, assegnando a cias cuno di essi un IP differente. In questo contesto, un sito condivide la macchina noleggiata, compreso il disco e la banda di accesso, con altri “ospiti” (host). Ciò permette di affidare la gestione della macchina e della banda di connettività al gesture,l abbassando drasticamente i costi ma, d’altro canto, le prestazioni potrebbero risultare ridotte e non accettabili per tutti. Housing. Significa acquistare un web server da una società esterna e farselo gestire dalla società che offre questa tipologia di servizio. Questo tipo di offerta permette al cliente di installare i server di sua scelta e di averne un controllo totale. Il prov ider fornisce quindi l'infrastruttura di accoglienz a dei server, la banda passante nonché un certo numer o di servizi e di garanzie. Caratteristiche:

- Collega un computer di proprietà alla Rete Internet direttamente nei locali del provider. - Possibilità di installare qualsiasi sistema operati vo e Webserver, oltre a programmi scritti e

quant'altro sia necessario alla gestione di un sito Web. - Alimentazione con gruppi di continuità centrallizza ti. - Manutenzione da remoto e possibilità di accedere ai locali in orari di ufficio. - A differenza dell'hosting il sito ospitato non cond ivide le risorse con altri Website.

housing hosting

è ideale a siti che prevedono nell'immediato un grande traffico (oltre i 5.000 utenti unici al giorno); è consigliabile a i siti che fanno grande utilizzo di tecnologie che interagiscono con il server, come ASP, PHP, CGI e soprattutto database. Perchè utilizzando queste tecnologie è possibile che si verifichino problemi con il server che, essendone gli amministratori, potrebbero essere risolti in breve tempo senza l'intervento di terzi.

è consigliabile a siti sotto i 5.000 visitatori giornalieri; è consigliabile a coloro che vogliono limitare il costo della connettività (si trovano buoni servizi a 500.000 l'anno) è consigliabile a coloro che non saprebbero gestire un Webserver ed i problemi che potrebbe causare.

è sconsigliabile a chi ha un budget ridotto di spesa (costa diversi milioni l'anno, l'hardware e il software vanno acquistati da voi); è sconsigliabile a chi ha un budget ridotto di spesa (costa diversi milioni l'anno, l'hardware e il software vanno acquistati da voi); è sconsigliabile a coloro che non sanno amministrare un webserver Apache (linux) o IIS (Windows NT); è sconsigliabile a coloro che si trovano distanti centinaia di Km dalla server farm (il locali dove il server viene ospitato), perché la rottura di un hard disk potrebbe provocare un blocco di diversi giorni Il limite maggiore degli housing è nel costo annuale, nell'acquisto dell'hardware e del software necessario.

In generale un sito appena nato può rivolgersi all' hosting e poi successivamente, valutato il traffico , può pensare ad una soluzione housing. Esistono in commercio : server virtuali

Alcuni software per server http:

il data center del CERN di Ginevra nel 2010 HTTP://en.wikipedia.org/wiki/File:Cern_datacenter.jpg

• httpd del CERN Ginevra (gratuito compreso i sorgenti , UNIX) http://www.w3.org/hypertext/WWW/Daemon/status.html

Il telemacone3 - prima parte - rel 15.10.06

37

• NCSA (gratuito,compreso i sorgenti, UNIX) http://hoohoo.ncsa.uiuc.edu.docs/overview.html

• Website (prodotto commerciale) http://clubweb.ora.com/

• Apache HTTP Server è la piattaforma server Web modulare open source in grado di operare da sistemi operativi UNIX-Linux e MicrosofApache.

• Apache Tomcat implementa le specifiche JSP e Servlet di Sun Microsystems, fornendo quindi una piattaforma per l'esecuzione di applicazioni Web sviluppate nel linguaggio Java

• Internet Information Services (IIS) di Microsoft

Esercitazione Internet Il Cliente ha un problema : Dare la possibile soluzione al problema e completare la Scheda di Intervento:

Generazione di un Nuovo Ticket (scheda intervento) Ordine di Lavoro numero: Cliente (Società o persona): Persona da contattare: Indirizzo: Telefono: e-mail: Categoria Problema: Codice : Data Chiusura: Stato del sistema:

Impatto grave su Attività Aziendale? Ο Si Ο No

Tipo di Connessione : Piattaforma Utente : Descrizione del Problema: Non riesco ad effettuare l’accesso al mio sito per la sua manutenzione. Sia ieri che i giorni precedenti sono riuscito a effettuare il login. Ho cercato di effettuare il login con un computer diverso ma senza successo. La scorsa settimana ho ricevuto una e-mail sul cambiamento della mia password, ma non ho cambiato la mia password. Soluzione del Problema: ……..

Le pagine dinamiche Le applicazione web permettono agli utenti di accedere oltre che a pagine statiche, anche a pagine Web dinamiche che pubblicano contenuti provenienti anche da sorgenti diverse di dati. L’ esigenza di disporre di risorse di questo genere supera le possibilità del protocollo http, progettato per inviare richieste da Browser a Server e non per avere il controllo del processo delle risorse. Il modo piu’ immediato e semplice è quello di far in modo che il server http deleghi la costruzione della pagina a un programma a lato server, che usa una interfaccia standard: CGI (Common Gatway Interface).

In generale, definiamo Script (o Gatway) quei programmi che vengono eseguiti sul server in risposta a una richiesta da Client. Gli script permettono di raccogliere informazioni dall'utente, mediante maschere interattive (form) e inviarle al server perché le elabori. Oggi vengono usati sul Server, linguaggi di scripting (server-side) come ASP e PHP per costruire siti complessi e applicfazioni. Negli anni passati questi script erano realizzati sovente utilizzando programmi in C e Perl tramite la Common Gateway Interface.

CGI (Common Gateway Interface) (rfc 3875)

Ogni volta che un client invia al web-server una URL corrispondente ad un programma CGI, il server lo esegue in tempo reale, generando dinamicamente le risposte e restituendo il risultato (l'output del programma, non il programma!) sottoforma di pagina HTML.

Il telemacone3 - prima parte - rel 15.10.06

38

L'interazione tra utente e server, ad esempio tramite un form che usa GET o POST, permette al server di accedere a database, cercare informazioni, creare documenti personalizzati in modo dinamico. Il codice oggetto di un programma CGI (solitamente con estensione .cgi, .exe o .pl) non è legato ad alcun linguaggio particolare, anche se C e PERL sono i piu’ usati. Per evitare problemi di interfacciamento tra dati e programmi, CGI mette a disposizione uno standard relativo a come devono essere passati i dati. La costruzione dinamica delle pagine si svolge quindi in questo modo:

• il browser invia una richiesta http al server httpd

• il server httpd chiama un programma esterno che costruisce la pagina HTML

• il programma invia la pagina al server httpd che la utilizza per assemblare la risposta http

• la risposta è inviata al browser

Chiamata CGI tramite GET e POST La chiamata a un CGI puo’ avvenire direttamente digitando su browser il nome dello script con i parametri, e attivando implicitamente una GET, oppure servendosi di un Form HTML che può inviare i dati raccolti, via GET (che è il metodo di default, oppure via POST che è la forma più consueta. Un form deve contenere, oltre al metodo prescelto e i campi di Input, il Pulsante di Submit che richiama la Action con il nome dello script (URL) da far eseguire sul server. Nella GET Il parametro è accodato alla fine della URL, il numero di informazioni passate è limitato e i dati inviati sono pubblici e tutti possono vederli. Nella POST, invece, i parametri sono passati direttamente nel corpo (body) del protocollo http in modo invisibile all’utente e, praticamente, senza limiti di spazio. Il Server, tratta diversamente i paramtri che gli arrivano a seconda se sitratta di una GET o di una POST. Precisamente, i parametri passati da GET dopo il "?" vengono copiati nella variabile di ambiente QUERY_STRING, ed è proprio in questa variabile che lo scrip preleva i parametri. Le informazioni arrivate con la POST sono inserite nello “ input standard” invece che nella “variabile di ambiente” e quindi vengono prelevata dallo script nello stesso modo che se venissero inserita da tastiera.

Un esempio in C++ (con GET e POST) /* * Coded by Broglia "xeon" Claudio * DISCLAIMER: THIS CODE IS FOR PERSONAL AND INFORMATIONAL USE * * This is a personal test about programming a basic and low-level cgi * using c++ (it has been tested with visual c++ 6.0 and windows 9x * with PWS). * In the get example it reads query from evironment variable * "QUERY_STRING", putting it back to the browser after the * "CONTENT-TYPE" variable (required by how the cgi's works), that * specify the content that is sent back. * In the post example it first read the length of the query from the * environment variable "CONTENT-LENGTH" and then it reads "char by char" by stdin

* the query, putting it back to the browser. * For more information about http and its variable see RFC2616 * (HTTP/1.1). * Remember to activate "Execute" property of the cgi-bin dir where * you will put the executables. * */ // gettest.cpp #include <stdlib.h> #include <stdio.h> #include <conio.h> #include <string.h>

Il telemacone3 - prima parte - rel 15.10.06

39

int main(int argc, char **argv) { //Getting query from environment (method GET) char *strquery=NULL; strquery = getenv("QUERY_STRING"); // it reads query from evironment variable //Putting stuff back to the browser printf ("Content-type: text/html\r\n\r\n"); printf ("<html>\n<head>\n</head>\n<body>\n"); if (strquery) printf ("%s",strquery); else { printf ("QUERY_STRING è vuota..."); getch(); } printf ("\n</body>\n</html>"); return 0; } // posttest.cpp #include <stdlib.h> #include <stdio.h> #include <conio.h> int main(int argc, char **argv) { //method POST: Getting query from Standard Input (STDIN) char strquery[100], *strconl; int cont=0, ch; strconl = getenv ("CONTENT_LENGTH"); //Reading length from env variable (variabili di ambiente) do { ch = getchar(); // it reads "char by char" by stdin" strquery[cont]=(char) ch; cont++; } while (cont < atoi (strconl)); strquery[cont]='\0'; printf("Content-type: text/html \r\n\r\n"); printf ("<html>\n<head>\n</head>\n<body>\n"); if (strquery) printf ("%s",strquery); else { printf ("QUERY_STRING è vuota..."); getch(); } printf ("\n</body>\n</html>"); return 0; }

Un esempio di chiamata allo script testcgi.exe (GET) presente nella cartella (alias locale PWS) paoloasp

<html> <head> <title>cgi test</title> </head> <body> <form action="http://127.0.0.1/paoloasp/testcgi.exe" method="GET"> <p><input type="text" name="T1" size="20"></p> <p><input type="text" name="T2" size="20"></p> <p><input type="submit" value="Invia"><input type="reset" value="Reimposta"></p> </form> </body> </html>

Form (con GET) da browser:

Il telemacone3 - prima parte - rel 15.10.06

40

e l'HTML relativo prodotto dal programma cgi:

<html> <head> </head> <body> T1=1234&T2=abcd </body> </html>

Esempio di chiamata di testcgi.exe tramite ancora (A) con passaggio di parametri (metodo GET):

<A href="http://127.0.0.1/paoloasp/testcgi.exe?V1=ciao&V2=amico" method="GET"> clicca per testcgi.exe </A>

I CGI hanno, almeno, due problemi che ne limitano l’efficienza: ad ogni richiesta http il server genera un nuovo processo che viene poi terminato. In questo modo si perde traccia dello stato del sistema tra due richieste successive dello stesso utente, a meno di non salvare i valori in un DB. Inoltre, per l'utente medio, non è facile creare CGI e provarle al di fuori dell'ambiente offerto dal provider e della directory “cgi-bin” e, ancora, il provider non sempre permette l'esecuzione di script Perl o C (che hanno possibilità di eseguire operazioni su disco e possono essere non sicure!). Una prima risposta a queste problematiche è quella di “estendere” il server Web con un motore di esecuzione delle applicazioni in modo da eseguire i programmi di risposta in modo piu’ efficiente. Tale estensione permette, ad esempio, di offrire un ambiente efficiente e persistente dove le applicazioni possono essere eseguite senza essere terminate ad ogni richiesta, offrendo un ambiente di memoria centrale per conservare lo stato della sessione, tramite degli identificatori di sessione in modo che il server possa trattare piu’ richieste http come appartenenti a una unica sessione utente.

Estensione capacità del server WEB

Servlet Java

E’ costituito dalle API Servlet Javasoft che associano una Java Virtual Machine al Server Web. JVM supporta l’esecuzione di un programma speciale: “servlet container” che , a sua volta, permette l’esecuzione di servlet Java mantenendo i dati di sessione. Esso fa da tramite tra il Web server e le varie servlet. Ogni servlet è una classe java che eredita la classe base contenuta nelle API servlet

http://download-uk.oracle.com/docs/cd/B12314_01/web.904/b10321/fc01.gif Ecco un semplice esempio che scrive CIAO A TUTTI sul browser (http://www.guidainlinea.com/servlet.htm)

Il telemacone3 - prima parte - rel 15.10.06

41

public class MioServlet extends HttpServlet { public void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out; String title = "CIAO A TUTTI"; response.setContentType("text/html"); response.setHeader("Pragma", "no-cache"); out = response.getWriter(); out.println("<HTML><HEAD><TITLE>"); out.println(title); out.println("</TITLE></HEAD><BODY>"); out.println("<H1>" + title + "</H1>"); out.println("<P>CIAO A TUTTI"); out.println("</BODY></HTML>"); out.close(); } }

Scripting lato server Le servlet sostituiscono, di fatto, le CGI fornendo un altissimo grado di astrazione di programmazione e sicurezza ma, in entrambi i casi, nella realizzazione della pagina è mescolato il codice per la generazione della parte dinamica con gli stessi tag HTML. E’ possibile avere un approccio differente mediante l’uso di scripting-lato server. Tali scripting (da non confondere con quelli lato client, come ad esempio JavaScript, presentato nei paragrafi precedenti) permettono di inserire all’interno di una pagina HTML le istruzioni di

programmazione che, eseguite sul server, generano la parte dinamica per accedere ai dati, generare calcoli, comporre testi e così via. Per inserire del codice di script nella pagina HTML occorre racchiuderlo tra opportuni tag, ad esempio ‘<?php’ e ‘>’ oppure ‘<%’ e ‘>’ a seconda del linguaggio usato. Esistono, infatti, diversi linguaggi di script lato server, tra cui ASP di Microsoft, JSP (Java Server Pages) e PHP. Per le nostre esigenze ci soffermeremo maggiormente su PHP. La figura sss1 schematizza il funzionamento di uno scripting (nello specifico caso, un file PHP) e le fasi che si susseguono per la generazione di una pagine HTML da inviare al client

Fig sss1 sequenza di operazioni per la elaborazone di uno script PHP:

• Il client fa una richiesta al server di esecuzione di test.php (1)

• Il demone HTTPD accetta la richiesta e reperisce il file in codice php (2)

• Il file php viene inviato al riconoscitore del codice PHP (3)

• Dal file.php viene scorporata la parte di codice PHP (racchiuso tra ‘<?php’ e ‘?>’ ) e inviata all’interprete PHP (4) per l’elaborazione del

codice che può prevedere l’accesso a un file di dati o al database (5). L’elaborazione di PHP genera un codice HTML che viene unito (6)

Il telemacone3 - prima parte - rel 15.10.06

42

alla parte di codice HTML della pagina, compreso eventuale codice script lato client, e inviata al client (7)

E’ importante notare che il file test.php (in fig. sss1) che viene richiamato dal client su server NON è lo stesso della pagina inviata al client. Quest’ultima è, infatti, il risultato dell'elaborazione, fatta dal server, del file test.php che è stato richiamato dal browser. La fig. nnnn1 mostra a sinistra il file test.php che è presente su server e che è richiamato dal browser. A destra è mostrata la pagina che il server ha prodotto e ha inviato al browser per essere mostrato a video (sotto).

File test.php sul server Sorgente della pagina sul browser

<html> <title> Test PHP </title> <body> <?php for ($i=1; $i<=6; $i++) {?> <FONT SIZE = <?php print $i; ?>> Test PHP </FONT> </BR> <?php } ?> </body> </html>

<html> <title> Test PHP </title> <body> <FONT SIZE = 1> Test PHP </FONT> </BR> <FONT SIZE = 2> Test PHP </FONT> </BR> <FONT SIZE = 3> Test PHP </FONT> </BR> <FONT SIZE = 4> Test PHP </FONT> </BR> <FONT SIZE = 5> Test PHP </FONT> </BR> <FONT SIZE = 6> Test PHP </FONT> </BR> </body> </html>

Tab nnn1 Elaborazione del file test.php. Si deve notare la differenza tra il codice del file su server (a sinistra) e quello elaborato dal server e inviato al browser (a destra). Sotto l’uscita mostrata a video sul browser.

Nota Possiamo concludere che, sebbene i servlet e g li script lato-server, perseguono lo stesso obietti vo, c’è una differenza di sostanza: i servlet contengon o le istruzioni per stampare la pagina, mentre gli script contengono i tag HTLM e le istruzione per ca lcolare le variabili della pagina. Nei prossimi paragrafi passeremo brevemente in rass egna, dapprima i due linguaggi più usati per gli sc ript lato server: PHP e ASP e infine alcune tecnologie u sate per la generazione di applicazioni Web.

Esistono diversi linguaggi di script lato server, tra cui ASP di Microsoft, JSP (Java Server Pages) e PHP. Per le nostre esigenze ci soffermeremo maggiormente su PHP. (vedi Tecnologia)

PHP PHP è un linguaggio di scripting, che gira su un We b server, di solito Apache. Il linguaggio, open sou rce, è utilizzato principalmente per sviluppare applicaz ioni Web: uno script PHP è costituito da una pagina HTML nella quale viene inserito il codice di script ing attraverso una sintassi speciale: <?php ... codice PHP... ?> Il fatto di poter generare codice lato server perme tte anche di scrivere applicazioni multicanale che generano codice diverso in funzione del tipo di cli ent che ha effettuato la richiesta. Così non solo è possibile distinguere tra browser diversi, ma , ad esempio, adattarsi ad applicazioni per dispositivi mobili che possono avere caratteristiche diverse da quelle tradizionali. Il suo nome è un acronimo ricorsivo che sta per PHP : Hypertext Preprocessor ( PHP: Hypertext Preprocessor). La sintassi è simile a quella del linguaggio C. PHP fu creato nel 1994 ad opera del programmatore d anese Rasmus Lerdorf. La configurazione LAMP (Linux, Apache, MySQL, PHP) ne fa un grande punto di forza, spesso in alternativa a Microsoft ASPX e a Java stesso presente nelle Java Server Pages. Nota: Per l’pprofondimento del linguaggio si consig lia di fare riferimento ai tutorial presenti nei s iti http://www.php.net/manual/en/index.php e http://www.w3schools.com/php/ da cui prendono spunto alcuni degli esempi successivi. E’ consigliabile anche il piccolo volume PHP5 di Massimo Canducci).

Il telemacone3 - prima parte - rel 15.10.06

43

Integrazione con il DataBase: PHP+MySQL Anche se PHP, almeno dalla versione 5, supporta una lunga serie di database (tra cui Oracle, SQL Sever, ODBC), il rapporto con MySQL è un rapporto privilegiato in quanto, storicamente, la maggior parte delle applicazioni WEB, basata su PHP, è costituita dall’accoppiata PHP-MySQL. L’accesso a MySQL può essere fatto tramite semplici e potenti funzioni. Gli esempi che seguono mostrano come accedere a una tabella del DB e operare semplici Query di estrazione dei dati.

Lo script opera su un database di nome “com_test” che contiene la tabella “libro” che possiede i campi “isbn”, “nome”, “cognome”, “edizione”, “titolo”. L’utente è “test”, cosi’ come la password. Il nome del server è “hostmysql1”. L’esempio si connette al DB, estrae il valore dei campi e li mostra in una tabella:

<?php print "Accesso al DB: "; $Host="hostmysql1"; //parametri di connessione a MySql $User=" test"; $Passwd="test"; $conn = mysql_connect ($Host, $User, $Passwd) or die ("Connessione a MySQL fallita."); $dbname = "com_test"; //nome del Database print " $dbname "; mysql_select_db($dbname, $conn) or die ("Connessione database ".$dbname." fallita."); $query= "SELECT * FROM edithsrl_com_test.libro l;"; //SQL query $result = mysql_query ($query, $conn) or die ("Errore nella Query<br>\n\tDB: ".$dbname."<br> \tQuery: ".$query."<br>\n\tLink: ".$this->conn."<br>\n\tErrore MySQL: ".mysql_error()); $aa=mysql_num_rows($result); $r=0; print "<table>"; echo "<tr class='odd'>"; echo "<td>".ISBN."</td> <td>".Nome."</td> <td>".Cognome."</td> <td>".Edizione."</td> <td>".Titolo."</td> <td>"; while ($rs=mysql_fetch_array($result)) { if ($r%2==0) echo "<tr>"; else echo "<tr class='odd'>"; echo "<td>".$rs[0]."</td> <td>".$rs[1]."</td> <td>".$rs[2]."</td> <td>".$rs[3]."</td> <td>".$rs[4]."</td> <td>"; echo "</td><td>"; $r++; echo "</tr>"; } print "</table>"; if ($conn!=null) mysql_close($conn); ?>

Sul browser verrà mostrato :

Accesso al DB: com_test

ISBN Nome Cognome Edizione Titolo

1234567 Paolo Macchi edisis il Telemacone

1234568 Paulo Coelho Bompiani Il cammino di Santiago

1234569 Lev Tolstoj Newton Compton Guerra e pace

1234570 Alighieri Dante SEI Divina Commedia

Osservando il codice si nota che: - il collegamento con l’host su cui gira MySQL si ottiene con la funzione

$conn = mysql_connect ($Host, $User, $Passwd)

-ha come parametri il nome dell’Host, l’Utente e la Passwordtramite l’oggetto che si ottiene come risposta di questa funzione, si seleziona

Il telemacone3 - prima parte - rel 15.10.06

44

l’istanza del database (il server , infatti, può contenetere più di un database):

mysql_select_db($dbname, $conn)

- una volta selezionato il database possiamo operare con la query desiderata. Nel nostro caso:

$result =mysql_query ($query, $conn)

- con l’oggetto $result, che contiene il risultato della query, possiamo, ad esempio, ottenere il numero di record interessati ed estrarre i valori dei campi. Nell’esempio viene usata mysql_fetch_array($result) che restituisce il record ennesimo del result-set e incrementa il cursore indice. Si ottiene, quindi, un array costituito da tutti gli elementi del record estratti dalla query, anche, se si vuole, con chiavi diverse come permette la funzione stessa (cfr http://php.net/manual/en/function.mysql-fetch-array.php )

• - la funzione mysql_close(), rilascia la connessione al database.

Cookie ( RFC 2109) I primi cookie risalgono al 1994 utilizzati nel sito di Netscape. Un cookie è un piccolo file (o una stringa) che non supera i 4Kbyte (ma i superkookie del Flash possono arrivare a 100Kbyte contro i 5Mbyte dell’HTML5!), inviati dal server di un sito e archiviati nel browser in una directory del disco del client. Non è un programma eseguibile e non può trasportare virus e funziona in questo modo: Il server a cui ci colleghiamo memorizza sul nostro hard disk il cookie Nel cookie è contenuto il nostro numero identificativo, quali aree del sito abbiamo visitato e, magari, anche la nostra email che abbiamo lasciato Al successivo collegamento, il server controllerà il cookie sul disco e disporrà dei nostri dati ricordandosi di chi sono e cosa ho fatto In questo modo potrebbero comparire banner mirati o personalizzazioni di pagine web o mostrare cosa è stato inserito nel carrello della spesa nel precedente accesso al sito Ogni cookie può contenere fino a cinque campi: Dominio. Indica da dove proviene. Il browser dovrebbe verificare che i server non mentano! Path . Percorso nella struttura delle directory del server per identificare quale parte della struttura del server può utilizzare il cookie. Se è /, si intende l’intera struttura. Content. (contenuto). Nella forma nome=valore. Sia nome sia valore sono qualsiasi scelti dal server Expires (scadenza) data/ora, specifica quando scade il cookie. Se è assente è scartato alla chiusura (cookie non persistente). Secure Impostato per indicare che il browser può restituire il cookie solo a un server sicuro. (e-commerce, remote banking,…) Il browser, prima di inviare una richiesta di pagina a un sito, controlla nella directory dei cookie, se ci sono cookie inseriti dal dominio a cui si sta rivolgendo. Se ci sono, allora tali cookie vengono inclusi nel messaggio di richiesta. Il server li riceve e li interpreta. E’ possibile configurare il client per rifiutarli, ma poi non funzionano le applicazioni che necessitano del loro utilizzo!

ASP

Nel '97 la Microsoft ha creato ASP (Active Server Pages) soprattutto con l'intento di interagire in modo semplice ma potente ai database tramite ODBC (Open DataBase Connettivity) un formato standard per lo scambio di informazione tra database (cfr. ADO (ActiveX Data Obkects) e SQL (linguaggio per l'interrogazion e aggiornamento di database). Le pagine ASP sono documenti che contengono scripts eseguiti sul server ( limitato pero' ai soli server Microsoft (Internet Information Server o Personal Web Server)) che elaborano le informazioni pervenute da browser e restituiscono l'output in formato HTML. ASP usa come principale (ma non unico!Puo' usare infatti Jscript Perlscript o altri script) linguaggio di programmazione al suo interno VBScript che possiede la sintassi di VB ma non i suoi controlli. Inoltre i programmi ASP si possono provare direttamente sul prprio computer, prima di trasferirli a Server Internet, utilizzando il PWS (personal Web Server) istallabile facilmente sui PC con sistema operativo Microsoft win95,98,.. (o IIS per NT). Nell'esempio è mostrato l'uso di ASP per una interazione Client - Server in cui il browser (tramite il programma formperasp.htm in html con metodo POST ) fornisce al Server , tramite una form con due input (Nome e Sito e il pulsante di Invio), un input relativo al tipo di sito preferito e al nome. Il programma ASP (invio.asp) riceve i dati (variabili "nome" e "sito" tramite l'oggetto Request che costituisce l'elemento di connessione tra il Client e il Server. (Al contrario l'oggetto Response si occupa dell'operazione contraria scrivendo (metodo write) dei dati al browser.)) e li rimanda al browser per la loro visualizzazione , personalizzando cosi' l'accesso dell'utente. In sintesi possiamo dire che :

• l browser richiede una pagina ASP;

• Il Web Server preleva la pagina ASP ed attiva l’interprete ASP per la pre-elaborazione della pagina, coinvolgendo eventualmente altri componenti presenti sul server;

• Il risultato dell’elaborazione viene inviato al browser tramite il protocollo HTTP

Esempio ricezione dati da form html (formperasp.htm)

Il telemacone3 - prima parte - rel 15.10.06

45

<html> <head> <title>nome</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <meta name="GENERATOR" content="Microsoft FrontPage 3.0"> </head> <body> <font face="Verdana" size="2"> <form action="http://127.0.0.1/paoloasp/invio.asp" method="post"> <--- N.B. invio.asp <p>Nome: <input name="nome" size="48"> </p> <p>Sito Preferitor: <select name="sito" size="1"> <option>HTML.it </option> <option>gif-animate.it </option> <option>font.it </option> <option>emerchant.it </option> </select> </p> <p><input type="submit"> </p> </form> </font> </body> </html>

invio.asp

<%@LANGUAGE="VBSCRIPT"%> <html> <head> <title>Questa è una paginadi test con asp</title> </head> benvenuto, <%=Request.Form("nome") %> il tuo sito pref è, <%=Request.form("sito") %> </b></font></p> <-- N. B. </body> </html>

Il Pattern MVC

Talvolta l’uso del semplice linguaggio allo stato puro, specie per siti di una certa rilevanza, risulta un po’ limitante. In questi casi è utile separare il codice dai dati e dalla presentazione. Il Model-View-Controller (MVC) è un pattern (un modello di progettazione) basato sulla separazione dei contenuti dalla rappresentazione e definisce tre meta-componenti che definiscono l’applicazione:

• il model fornisce i componenti per accedere ai dati utili all'applicazione, ad esempio un database;

• il view , cioè i componenti per visualizzare i dati contenuti nel model e si occupa dell'interazione con utenti;

• il controller che riceve i comandi dell'utente (in genere attraverso il view) e gestisce la logica dell’applicazione Nel contesto web i tre componenti si applicano al client (view), al serever web (controller) e alla persistenza di dati ,"logica di business”, (database).

http://framework.zend.com/images/manual/d481d625821a97b9a5eb2cec99dca50e-learning.quickstart.intro.mvc.png

Il telemacone3 - prima parte - rel 15.10.06

46

ZEND Zend Framework (http://framework.zend.com/) è un framework open source per lo sviluppo di applicazioni web, scritto in linguaggio PHP 5. Zend Framework è spesso associato a una 'libreria di componenti', perché ha molti oggetti e funzioni che è possibile utilizzare più o meno indipendente. Ma Zend Framework fornisce inoltre un avanzato Model-View-Controller (MVC): Model - Questa è la parte dell'applicazione che definisce l’accesso ai dati e ai database View - definisce ciò che viene presentato all'utente. La view ha il compito di formattare i dati da inviare al browser: qui è molto probabile trovare codice HTML. Controller - lega l'intero pattern insieme. Manipola i modelli, al fine di decidere quale visualizzare in base alle richieste dell'utente e ad altri fattori.

J2EE Un tipico esempio web di MVC definito con Java 2 Enterprise Editin (J2EE) usando servlet (Le servlet operano all'interno di un server web (per esempio, Tomcat) per la creazione di pagine dinamiche) e pagine JSP (un testo, scritto con una sintassi specifica, che rappresenta una pagina Web. Elaborando la pagina JSP, il motore JSP produce dinamicamente la pagina HTML finale che verrà presentata all'utente. Nel contesto della piattaforma Java, la tecnologia JSP è correlata con quella dei servlet):

• servlet per i controller

• pagine JSP per le viste

• oggetti JavaBeans per la persistenza dei dati Uno dei maggiori framework è Struts (http://struts.apache.org/), della Apache Software Foundation. Struts mette a disposizione una certa tipologia di classi Action che sono dei JavaBeans (classi scritte in Java, usate per incapsulare molti oggetti in un singolo oggetto: il bean) con una particolare interfaccia che supporta il passaggio dei parametri tramite Request, Response. Il concetto è che Struts centralizza il controllo con un’unica servlet che distribuisce le richieste a piu’ Action specializzate per particolari operazioni.

http://www.oracle.com/technology/products/ids/uix/htdocs/qtour/dev8.htm

Mash-up e Web Services La definizione che dà wikipedia fornisce già un’ide a di cosa si intende per mash-up: ” un mash-up è un sito o un'applicazione web di tipo ibrido, cioè tal e da includere dinamicamente informazioni o contenu ti provenienti da più fonti. Un esempio potrebbe esser e un programma che acquisendo da un sito web la lis ta di appartamenti li mostra utilizzando Google Maps p er evidenziare dove gli stessi appartamenti sono localizzati.“ In pratica, l’idea di base è di reali zzare applicazioni che si servono di sorgenti di da ti slegati dall’applicazione stessa ma forniti da terz e parti. Nel tempo sono state definite diverse forme di inte rscambio: feed-rss (o Atom) che si basa su un docum ento XML con l’aggiornamento delle informazioni, API da server in cui si ricorre a tecnologie che vanno sot to il nome di Web Service, un sistema software la cui caratteristica fondamentale è quella di offrire un'interfaccia software utilizzando la quale altri sistemi possono interagire con il Web Service trami te appositi messaggi di interfaccia inclusi in una bus ta (la più famosa è SOAP): tali messaggi sono , di norma, in formato XML. Google, ad esempio, offre una serie di servizi impo rtanti ( http://code.google.com/apis/maps/documentation/inde x.html ): Blogger, Calendar e molto altro. Di particolare interesse sono le API di Google Maps. E ’ uno strumento gratuito per la gestione e manipolazione delle mappe e facilmente accessibile e integrabile nella pagina web dell’utente usando JavaScript.

Content Management System

Un content management system (spesso abbreviato in CMS), letteralmente sistema di gestione dei contenuti, è uno strumento software installato su un server web studiato per facilitare la gestione dei contenuti di siti web, svincolando l'amministratore da conoscenze tecniche di programmazione. Esistono CMS specializzati, cioè appositamente progettati per un tipo preciso di contenuti (un'enciclopedia on-line, un blog, un forum, ecc.) e CMS generici, che tendono ad essere più flessibili per consentire la pubblicazione di diversi tipi di contenuti.

Il telemacone3 - prima parte - rel 15.10.06

47

Tecnicamente un CMS è un'applicazione lato server, divisa in due parti: la sezione di amministrazione (back end), che serve ad organizzare e supervisionare la produzione dei contenuti, e la sezione applicativa (front end), che l'utente web usa per fruire dei contenuti e delle applicazioni del sito (wikipedia). I CMS posseggo, praticamente, tutte le funzioni per la generazione e manutenzione di siti dinamici che vanno dal e-commerce ai social network. Il vantaggio è che, tramite l’aggiunta di moduli, sono praticamente completi, lo svantaggio è che sono un po’ rigidi nella forma e non facilmente integrabili con altre applicazioni personali. Indubbiamente, pero’, sono formidabili strumenti di grandissima importanza. Tra i più usati al mondo ci sono Joomla, Drupal e WordPress che attualmente è uno dei CMS più semplici e versatili con una comunità mondiale attivissima.

WordPress Anche se in origine WordPress è nato per creare blo g, si è presto evoluto in un completo ed eccellente Content Management System, una applicazione Web, in grado di gestire dinamicamente i contenuti grazie a un pannello di controllo accessibile dall’ amministrat ore del sito. ( http://wordpress.org/ ) E’ possibile, anche per chi ha poca esperienza con la programmazione, creare un sito basandosi su un “tema” e arricchirlo con articoli, pagine, document i, recensioni, foto, filmati, messaggi, temi, comme nti, etc.

Come si nota dall’ immagine, una tipica home page d i WP è divisa in quattro macroaree ciascuna delle q uali con un significato preciso: l’ header che contiene l’ intestazione del sito ed è tipicam ente statico il loop che è l’area principale della pagina, in cui vengo no mostrati i contenuti , cioè gli articoli, che vengono estratti, in modo ciclico (loop) dal databa se in cui vengono inseriti, la/e sidebar i cui contenuti vengono generati dai widget inseriti nelle sidebar dal pannello di amministrazione di WordPress il footer che contiene le informazioni di fondo pagina. Queste aree corrispondono a file php che sono racch iusi nelle cartelle presenti sul server. Tali file sono modificabili sia dal pannello di con trollo, che via codice php. In particolare, il loop, che è un po’ il cuore di u n tema WordPress, è associato a quattro file : index.php contiene un loop che legge da database i post più recenti e li mostra a video sotto forma di una lista in ordine cronologico dal più recente al più vecchio single.php è il file per il controllo della pagina relativa a l singolo post archives.php sono gli elenchi di post divisi per categoria, tag , mese di pubblicazione o autore. page.php è usato per visualizzare le pagine statiche

Il telemacone3 - prima parte - rel 15.10.06

48

e-mail e FTP

Generalità " La @ nacque durante la grandezza di Roma più di duemila anni fa come unione stilizzata delle lettere "a" e "d"

minuscole formanti la parola ad (verso nei moti a luogo); essa era inizialmente adoperata nei testi di contabilità e in

documenti simili con significato locativo. Presso i mercanti veneziani la @ era un'icona che rappresentava l'anfora,

utilizzata allora come misura di peso e capacità. Nel corso dei secoli i popoli anglofoni modificarono il suo significato da

ad a at, e quindi da verso a presso (grammaticalmente, da moto a luogo a stato in luogo): ciò fece guadagnare alla

chiocciolina alcuni nuovissimi campi in cui essere adoperata, tra cui le poste. In seguito, con lo sviluppo delle moderne

tecnologie e l'invenzione del computer, la @ divenne un simbolo quasi esclusivamente informatico che conservava il

significato datole dagli Inglesi.” [http://it.wikipedia.org/wiki/%40]

La posta elettronica (electronic mail, e-mail) è un servizio Internet grazie al quale ogni utente può inviare o ricevere dei messaggi. È l'applicazione Internet più conosciuta e una delle più utilizzate. La sua nascita risale al 1972, quando Ray Tomlinson installò su ARPANET un sistema in grado di scambiare messaggi fra le varie università, ma chi ne ha realmente definito il funzionamento si chiamava, forse non a caso, Jon Postel. (http://it.wikipedia.org/wiki/E-mail)

Raymond "Ray" Tomlinson (Amsterdam, 1941) è un programmatore statunitense, inventore della e-mail nel 1971. Nel 1967 entra alla BBN Technologies che collabora al processo ARPANET, sviluppando il progetto di trasferimento dei files denominato CPYNET. Implementandolo riuscì a progettare la email [http://it.wikipedia.org/wiki/Ray_Tomlinson]

Oggi, le e-mail che si ricevono ogni giorno è in continuo aumento. Per colpa dello spam: "conoscenti" russe totalmente sconosciute, catene di Sant'Antonio, messaggi di colleghi, amici, insegnanti, allievi, sottoscrizioni, newsletter .... Malgrado i social network, sms e mms, l’e-mail resta la spina dorsale - come la definisce il sito Business Insider – della nostra comunicazione digitale, ancora di più se poi si parla di lavoro. In tutti i casi, la posta elettronica deve essere facile da gestire, organizzare, inviare e ricevere. Deve inoltre poter contenere , oltre al testo, immagini, suoni, filmati, programmi...

Il telemacone3 - prima parte - rel 15.10.06

49

Le e-mail si basano su un trasferimento di messaggi (commutazione di messaggio) che ricalca l'antico metodo Store & Forward, in cui la posta del mittente viene nviata al Server di destinazione (passando da uno o piu' server) e depositata nella mail-box del destinatario. Il trasferimento non è in tempo reale e dipende dal traffico e dalla abilità del/i server di processare il messaggio in corso: il messaggio è memorizzato (store) e successivamente "inoltrato" (forward) al destinatario. L'utente finale puo' leggere la posta in arrivo nel momento in cui si collega al proprio server (provider). Il messaggio resta sul server fino allo scaricamento da parte dell'utente destinatario (salvo problemi o esaurimento dello spazio disponibile in memoria). Un programma di posta elettronica è sostanzialmente costituito da due parti collaboranti: Agente Utente : legge e genera la posta, programma per comporre,ricevere,rispondere ai messaggi Agente di trasferimento messaggi: trasferisce i messaggi di posta dal mittente al destinatario

principali funzioni e servizi di posta elettronica servizi aggiuntivi

Composizione del messaggio e trasferimento

notifica al mittente

visualizzazione messaggi ed eliminazione messaggi

caselle di posta elettronica (mail box)

mailing list

copia carbone (CC) e copia carbone non visibile (CCN)

alta priorità

crittografia e sicurezza

visualizzazione della sola intestazione messaggi e visualizza intero messaggio

risposta al messaggio posta un arrivo

posta inviata

posta in uscita

posta eliminata

bozze

salvataggio posta

rispondi a..

eliminazione,sposta,...

Per inviare messaggi occorre l' Indirizzo destinatario. Ogni indirizzo di e-mail ha un nome univoco che è costituito da due parti: una parte locale e una parte globale. La prima è il nome dell'utente ed è unica solo all'interno del sistema di posta locale, mentre la seconda è un nome di calcolatore che è unico su tutta Internet. mailbox@locazione (= nome mailbox @ nome server su cui risiede la mail box) Un messaggio di posta elettronica è comprensivo di due parti (RFC822): MESSAGGIO = BUSTA + CONTENUTO

• BUSTA , usata dall' AGENTE di TRASPORTO per l'istradamento del messaggio, contiene l’indirizzo del mittente e del destinatario, la priorità e puo’ essere crittografato per la sicurezza

• CONTENUTO. Il formato della posta è costituito da un'intestazione e da un campo informativo che a loro volta sono costituiti da più righe di testo ASCII con una riga vuota che separa l'intestazione dai dati. Ogni riga nell'intestazione comprende una parola chiave seguita da una stringa di testo con due punti che separano i due elementi. Alcune parole chiave sono obbligatorie mentre altre sono facoltative.

Nella intestazione dei messaggi sono normalmente presenti:

• nome mittente

• nome destinatario

• argomento (oggetto)

• data

Il telemacone3 - prima parte - rel 15.10.06

50

L'intestazione minima è la seguente:

• TO: nome del ricevente

• FROM: nome del mittente Ecco i campi facoltativi

• REPLY TO: nome a cui inviare la risposta

• CC: ricevente di una copia carbone

• SUBJECT: argomento

• DATE: data

• ENCRYPTED: puntatore alla tecnica crittografica

• (DA : implicito: indirizzo di chi scrive il messaggio)

• A: ind. DNS destinatario

• CC: (copia carbone) destinatari secondari

• CCN: (copia carbone nascosta) destinatari secondari non visibili al destinatario

• Oggetto:

MIME

(Multipurpose Internet Mail Extention) - Formato messaggio (RFC 1341,1521,RFC822) MIME definisce una serie di regole per la codifica dei messaggi di posta, la struttura dei campi e il formato. L'idea di MIME è di continuare ad utilizzare la base ASCII (RFC822) aggiungendo, pero', una struttura al corpo del messaggio e definendo delle regole di codifica per messaggi non-ascii. L'RFC 1521 definisce 5 regole di codifica per messaggi non-ascii:

• MIME versione : indica semplicemente una possible diversa versione di MIME

• Content description: stringa ASCII che identifica il tipo di messaggio (ex. "questo messaggio contiene la foto di mia zia")

• Content ID: codice identificativo del contenuto

• Content Transfer Encoding: messaggio che identifica la codifica dei dati . Cio’ è molto importante per l’Agente Utente del destinatario per la conversione da ASCII a 7 bit standard (RFC 2045,2046) al formato previsto in Content type relativo ai tipi di messaggi ammessi:

o text, text/plain,text/richtext(SGML <bold> </bold> etc) o image (gif,jpeg,..) o audio o video (mpeg) o applicazioni (graffetta per allegati) o messagi (incapsula messaggi di altri) o multipart (divide il messggio in parti)

“ Quando scrivete una mail, trattenete il fiato al pu nto che, una volta inviata, vi sentite leggermente storditi? Niente paura, siet e ampiamente nella media di quell’80% di persone ch e entra in modalità “apnea” (ovvero, trattiene il res piro) ogni volta che scorre la lista delle mail, decidendo a quale rispondere o quale eliminare. E q uesto cattivo “modus vivendi” dell’uomo tecnologico avrebbe le sue inevitabili e negative ripercussioni sulla salute, perché non respirare o farlo comunqu e in modo sbagliato sarebbe la causa di una serie di pat ologie legate allo stress. «Le possibili spiegazioni sul motivo per cui una pe rsona va in apnea da mail sono due, entrambe dettat e dal senso comune più che dalla scienza: una di cara ttere fisico, ovvero legata alla cattiva postura ch e impedisce di respirare in maniera ottimale e corret ta; e l’altra di tipo emotivo, perché le mail e in genere tutte le attività al computer vengono percep ite come stressanti e si sa che quando siamo stress ati non respiriamo bene». Ma come risolvere il problema ? «Basta sedersi in maniera composta – conclude Est es - e prestare attenzione al proprio respiro, magari ri correndo allo yoga o tenendo monitorata la propria frequenza cardiaca». Semplice e naturale, insomma, come respirare, anche se a volte ci dimentichiamo d i farlo.” http://www.corriere.it/tecnologia/cyber-cultura/13_ novembre_20/uomo-tecnologico-apnea-email-4d242444-5 1e0-11e3-a289-85e6614cf366.shtml

Esempio L’esempio mostra un messaggio spedito con Outlook di Microsoft in firmato HTML:

Il telemacone3 - prima parte - rel 15.10.06

51

Sotto il codice dello stesso messaggio inviato (proprietà ->dettagli -> Messaggio originale)

Reply-To: "paolo-macchi-itis" <[email protected]> From: "paolo-macchi-itis" <[email protected]> To: "itis-paolo" <[email protected]> Subject: prova Date: Mon, 1 Dec 2008 21:38:46 +0100 Organization: paolo-macchi-itis MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_NextPart_000_0310_01C953FD.30E97F90" X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2800.1914 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1914 This is a multi-part message in MIME format. ------=_NextPart_000_0310_01C953FD.30E97F90 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable testo di prova ------=_NextPart_000_0310_01C953FD.30E97F90 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML><HEAD> <META http-equiv=3DContent-Type content=3D"text/html; = charset=3Diso-8859-1"> <META content=3D"MSHTML 6.00.2800.1611" name=3DGENERATOR> <STYLE></STYLE> </HEAD> <BODY bgColor=3D#ffffff> <DIV><FONT face=3DArial size=3D2>testo di = prova</FONT></DIV></BODY></HTML> ------=_NextPart_000_0310_01C953FD.30E97F90--

L’esempio seguente mostra, invece, uno stralcio di un messaggio con testo ASCII + immagine jpg in allegato (attachment) . Si notino i content type usati.

Si noti anche come opera il destinatario: esso usa la Content Transfer Encoding per convertire da ASCII 7 bit a JPG. Il Content Type indica l’azione da compiere per la decompressione del formato JPG.

From: pippo@pluto-it To: [email protected] Subject: prova multipart MIME version: 1.0 Content Transfer Encoding: base 64 Content type:multipart/mixed; Boundary= _NextPart_000_0018_01C5A56C.863505C0 This is a multi-part message in MIME format. ------=_NextPart_000_0018_01C5A56C.863505C0 Content-Type: multipart/alternative; boundary="----=_NextPart_001_0019_01C5A56C.863505C0" ------=_NextPart_001_0019_01C5A56C.863505C0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable ciao , eccoti l’immagine. ............. ------=_NextPart_000_0018_01C5A56C.863505C0

Il telemacone3 - prima parte - rel 15.10.06

52

Content-Type: image/jpeg; name="NATUR0521.jpg" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="NATUR0521.jpg" /9j/4AAQSkZJRgABAQAAAQABAAD/5QApQUxQSEFfSU5GTwDCAgAAaAAAAAMAAAAAAAAAHAEAADgC Ozs7Ozs7Ozs7Ozs7Ozs7...............................................

SMTP

La posta elettronica è probabilmente il servizio più usato su Internet e in generale sulle reti di calcolatori. Esso, almeno nella versione originale, non richiede autorizzazione e perciò è possibile inviare e-mail con qualsiasi indirizzo. Esso viene descritto dalle normative RFC: 821, 876, 1425, 1869, 1846, 1869. (http://rfc.net/std0010.html - Il documento RFC che descrive il protocollo SMTP). SMTP (Simple mail transfer protocol, Protocollo semplice per il trasporto di posta) gestisce il trasferimento della posta dal sistema di posta di un calcolatore a quello di un altro. In realtà SMTP si occupa solo della posta diretta a utenti di computer remoti. Per inviare la posta, il protocollo SMTP del client prima accerta l'indirizzo IP del calcolatore di destinazione dal servizio DNS poi lo utilizza, insieme al numero di port "well-known" di SMTP (25), per iniziare l'impostazione di una connessione di trasporto con il server SMTP nel calcolatore di destinazione. Una volta che è stata stabilita una connessione, il client inizia il trasferimento della posta in attesa al server. L'inoltro della posta implica lo scambio di stringhe di testo chiamate comandi. Tutti i comandi sono codificati come stringhe di caratteri ASCII (composti normalmente da 4 caratteri)e comprendono un numero di 3 cifre oppure un comando in formato testo o entrambi. I comandi servono a gestire l’ handshake tra client e server di posta stabilendo l’apertura della sessione, l’inizio dei dati e la chiusura della connessione. I comandi SMTP preposti sono: HELO, FROM, RCPT TO, DATA, QUIT. Ciascun messaggio si conclude con <CRLF>.<CRLF>.

Vediamo ora un esempio di come si svolge una connessione SMTP :

Client Server

Apertura con TCP su porta 25 <-----------------> il server di posta è in attesa su porta 25, "pronto a ricevere!"

<----------------- 220 xyz.com SMTP ready

" Ciao"

HELO abc.com ------------------->

<------------------ "OK,ciao dal server..."

250 xyz.com says hello to abc.com...

"posta da..."

MAIL FROM: [email protected] ------------------->

<------------------ "OK"

250 SENDER ok

"inviata a ..."

RCPT TO [email protected] ------------------>

<------------------- "OK"

250 recipient OK

"eccoti i dati"

DATA -------------------->

<------------------- "parti pure ad inviare"

354 Start mail input; end with <CRLF>.<CRLF>

"intestazione....."

Subject: soggetto dell'email From: nome mittente

To: nome destinatario

MIME-Version: 1.0

content type :………

-------------------->

"qui comincia il testo vero e proprio"

<spazio> ------------------->

"testo............" ------------------->

".............bla,bla,bla............" ------------------->

"Fine!"

<CRLF>.<CRLF> -------------------->

<------------------- "OK posta accettata!"

250 <3B8505B5006902F8> Mail accepted

Il telemacone3 - prima parte - rel 15.10.06

53

"Sconnetti!"

QUIT ----------------->

<------------------ "disconnetto"

221 xyz.com closing connection

Appena stabilita la connessione TCP, il server SMTP invia il comando 220 al client per indicare che è pronto a ricevere la posta. Il client risponde ritornando un comando HELO insieme all'indirizzo IP della macchina su cui si trova. Alla ricezione di questo, il server risponde con l'identità della propria macchina. Il client inizia poi a inviare l'intestazione della posta fornendo un comando MAIL seguito dalla riga FROM: presa dall'intestazione del messaggio da trasmettere. Il server replica con il comando generale 250, la conferma di ricezione. Il client continua inviando un comando RCPT seguito dalla riga TO: presa dall'intestazione della posta. Questo viene confermato ancora da un comando 250; qualunque ulteriore riga d'intestazione è inviata nello stesso modo. L'inizio dei contenuti del messaggio di posta elettronica è segnalato quando il client invia un comando DATA. Il server risponde con un comando 354 e il client poi spedisce i contenuti della posta come una sequenza di righe terminate da un punto. Il server conferma la ricezione restituendo un comando 250. La fase di trasferimento della posta è terminata quando il client invia un comando QUIT e il server ritorna un comando 221, a cui segue l'interruzione della connessione TCP di trasporto.

Tutorial SMTP

Apriamo il Telnet (Start>Esegui>Telnet>Ok) (oppure servirsi di Hyperterminal in Windows) Clic su "Connetti">"Sistema Remoto" In Nome Host: [inserite l'IP o il NameHost di un server che fornisce il servizio(non è l'indirizzo internet ma l'indirizzo smtp!), per essere abbastanza sicuri inserite mail.vostroprovider.xx. Naturalmente in vostroprovider.xx inserite il nome del provider con il quale siete connessi in quel momento, perchè se siete connessi con un altro provider non vi permettono la connessione, cioè non supportano il relay. In "Porta": scrivete 25 In "Tipo terminale": lasciate il tipo di default, cioè "vt100" Cliccate su Connetti.(oppure scrivete direttamente : telenet mail.vostroprovider.xx 25) Server 220-galactica.it Microsoft SMTP MAIL ready at Thu, 22 Feb 2001 16:33:11 +0100 Ve rsion: 5.5.1877.537.53 220 ESMTP spoken here Client helo galactica.it Server 250 galactica.it Hello [62.122.3.15] Client mail from:martidj <[email protected] > Server 250 [email protected] ....Sender OK Client rcpt to: < [email protected]> Server 250 <[email protected] > Client data Server 354 Start mail input; end with <CRLF>.<CRLF> Client date: 22 Feb 01 16:45:37 Client from : martidj < [email protected] > Client subject: Telnet-Posta Client to: [email protected] Client Client proviamo a mandare una e-mail Client tramite telnet ed il servizio smtp :-) Client ciuaz... Client . Server 250 0778c0836151621MAIL2 Queued mail for delivery Client quit Server 221 galactica.it Service closing transmission channel

NOTA: Analogie e differenze tra SMTP e HTTP.

Entrambi questi protocolli trasferiscono files e usano TCP come livello di trasporto ma ci sono alcune differenze sostanziali:

http è di tipo PULL , cioè atto a estrarre informazioni dal server (la connessione è inziata dal client che vuol ricevere dati),

smtp è di tipo PUSH : è il server di posta che inoltra i files al destinatario, cioè inizia che spedisce

smtp invia i dati nel formato ASCII a 7 bit . Se il messaggio contiene caratteri non-ascii , come accenti o altro, il messaggio viene codificato in ASCII 7 bit.

http non si preoccupa di questo, http invia un pacchetto per ogni testo o immagine presente nel messaggio.

smtp incapsula in un solo messaggio testo e immagini.

SMTP con autenticazione Il protocollo SMTP originario non prevede alcuna autenticazione da parte del mittente e ciò dà la possibilità di inviare false email con tutto quello che ne consegue: spam, phishing , possibilità di inviare un’email con un mittente falso, oppure corrispondente a un altro account, ecc.

Il telemacone3 - prima parte - rel 15.10.06

54

Per cercare di limitare queste operazioni fraudolente è stata sviluppata una estensione di SMTP con autenticazione, SMTP Service Extension

for Authentication (RFC 4954) in cui la fase di connessione al server di posta è preceduta da un’autenticazione dell’utente. La maggior parte dei server più conosciuti adotta il principio dell’autenticazione del mittente e, seppure questi argomenti saranno affrontati quando ci occuperemo dei problemi di sicurezza, è doveroso concentrarsi sui nuovi comandi SMTP. Quando un client si collega al server di posta richiede la lista dei comandi che ampliano quelli nativi di SMTP, e lo fa con il comando di saluto “EHLO”. La tabella ss1 mostra i comandi principali SMTP. In particolare se il server supporta l'autenticazione è necessario inserire il comando “AUTH LOGIN” e digitare username e password della casella postale. Queste informazioni sdevono essere codificate in codificate in Base64 per essere accettate (ad esempio la parola “PASSWORD” è codificata come stringa “UEFTU1dPUkQ=”).

Tab ss1 - comandi principali SMTP inviati da client

Codice Comando Parametri Descrizione

HELO Hello mittente. inviato dal mittente al server SMTP per aprire una sessione di posta

EHLO Extended Hello mittente. Inviato dal mittente d un server SMTP che supporta le "Estensioni SMTP". Il server SMTP risponde inviando le estensioni supp ortate (esempio HELP, AUTH, LOGIN...)

MAIL Inizia l’email

parametro obbligatorio:

“FROM:” che specifica l’email dl dstinatario

Comunica l’indirizzo mittente

RCPT Destinatario parametro obbligatorio: “TO:”

che specifica l’email del destinatario.

Specifica un destinatario del messaggio di posta

DATA Contenuto del messaggio Nessuno

Il mittente è pronto ad inviare il testo del messag gio al server. Il server SMTP risponde con un messaggio 354 .Il mittente tr asmette una linea alla volta terminando con un “.” Su una sola linea

RSET Reset Nessuno Annulla i comandi dati

VRFY Verify E-mail da verificare. Si richiede al se rver di confermare o l'esistenza dell'utente speci ficato

HELP Help comando SMTP (opzionale) Manuale dei coma ndi

NOOP No Operation None Non svolge alcuna azione ma verifica se esiste la c onnessione con il server

QUIT Quit None Termina la sessione SMTP

Il telemacone3 - prima parte - rel 15.10.06

55

TUTORIAL SMTP CON AUTENTICAZIONE

Per comodità aprimo PuTTY come mostrato in figura pp1 e configuriamolo nel modo seguente:

Fig. pp1 – PuTTY: apertura della connessione Telnet su porta 25 per accedere al serber SMTP di “libero”

• In “Host Name” inseriamo il nome oppure l’indirizzo IP del server che fornisce il servizio SMTP (tipicamente: smtp.nostroprovider.xx)

• In "Port": digitiamo 25, che corrisponde al servizio SMTP

• In "Connection type": Telnet

• Clicchiamo su OPEN

Qui inizia la conversazione tra client e server, in cui vengono digitate i comandi da client e si attendono le risposte del server SMTP. In questo

caso sfruttiamo il server di “libero” che salutiamo e a cui chiediamo i servizi (EHLO) e poi forniamo le nostre credenziali di autenticazione

codificate in Base64 (AUTH LOGIN. Quindi spediamo a due destinatari diversi (RCPT TO) il messaggio di posta: “Mail inviata con Telent.

Buona serata. Paolo”. (fig.aut1)

(NOTA i nomi usati per le caselle di posta sono di fantasia)

Il telemacone3 - prima parte - rel 15.10.06

56

Fig. aut1- la conversazione client-server SMTP-AUTH Nella casella di posta di [email protected] si legge(fig. pop1):

Fig. pop1 – apertura della posta nella casella di [email protected]

POP3

POP (Post Office Protocol , RFC: 1734, 1939, 1957, 2449. Questo servizio rimane, generalmente, in ascolto sulla porta 110, permette di collegarsi alla propria casella e-mail e di leggere la posta. È descritto dalle normative RFC: 1734, 1939, 1957, 2449. Lo scopo è quello di prelevare dal server la posta elettronica POP3 è l'ultima evoluzione del protocollo POP con qualche modifica. POP si svolge in tre fasi:

• Autenticazione: l'utente deve comunicare nome e password per poter accedere alla propria mail box

• Transazione: il client ottiene i messaggi di posta , li elimina etc.

• Aggiornamento : dopo il QUIT elimina i messaggi precedentemente segnati.

Il telemacone3 - prima parte - rel 15.10.06

57

Tutorial POP3 Apriamo Telnet (Start>Esegui>Telnet>Ok) Clic su "Connetti">"Sistema Remoto" In Nome Host: inserite l'IP o il NameHost di un server che fornisce il servizio(indirizzo pop è non internet!), per essere abbastanza sicuri inserite popmail.vostroprovider.xx. Non è detto che sia popmail.vostroprovider.xx, ma potrebbe anche essere mail.vostroprovider.xx oppure pop3.mail.vostroprovider.xx, consultate l'indirizzo impostato nel vostro client di posta elettronica. Naturalmente in vostroprovider.xx inserite il nome del provider sul quale avete un account e-mail. In "Porta": scrivete 110 In "Tipo terminale": lasciate il tipo di default, cioè "vt100" Cliccate su Connetti. Server +OK POP3 server ready (5.5.022) Client user martidj Server +OK Password required Client pass "non ve la dico :-)" Server +OK Client stat Server +OK 17 33462 Client retr "numero messaggio" Server [viene mandato il mex] Server . Client dele "numero mex" Server +OK Client quit Server +OKServer 221 galactica.it Service closing transmission channel

Con POP3 si parla di download-and-delete , nel senso che il messaggio di posta è scaricato da server a client e successivamente cancellato. Cosi' ad ex. Outlook esegue il comando list per verificare la lista dei messaggi presenti , ottenendo ad ex: (num messaggio e grandezza in byte)

1 890 21900 3 400 e, poi, in successione i comandi: retr e dele: retr1 dele1; retr2 dele2 quit

NOTA su IMAP (Internet Mail Access Protocol) (RFC 2060).

Il protocollo IMAP consente di controllare i messaggi presenti nella cartella (INBOX) cosi' da leggerli, cancellarli, spostarli in altre cartelle, creare nuove cartelle, leggere solo l'intestazione del messaggio etc. senza fare il download (come POP3). Spesso sui server si trovano servizi di questo genere che vengono chiamati da applicazioni (script) lanciati da pagine html.

problemi di posta…

"... a volte, inviando un e.mail, ricevi una risposta che ti informa di un possibile problema verificatosi durante la fase di inoltro della e-mail stessa. Sono i cosiddetti "Delivery Status Notification" (DSN) ) messaggi in lingua inglese generati automaticamente dai Sistemi di posta che ti informano circa lo stato della e-mail da Te inviata. Di seguito ne riportiamo qualcuno tra i piu' frequenti - "MAILBOX FULL" La casella alla quale stai scrivendo ha raggiunto il limite massimo di capienza consentito e non e' pertanto in grado di ricevere ulteriori messaggi. Attendi qualche tempo e riprova l'invio. - "BAD DESTINATION MAILBOX ADDRESS" "USER UNKNOWN" L'indirizzo di posta al quale stai scrivendo non esiste. - "ROUTING SERVER FAILURE" Generalmente questo errore si verifica quando il dominio (la parte a destra del simbolo "@" in un indirizzo) non esiste o e' stato inavvertitamente digitato in maniera non corretta come ad esempio "[email protected]" invece di "[email protected]". - "DELIVERY TIME EXPIRED" L'indirizzo di destinazione non e' riuscito a ricevere il messaggio nonostante i ripetuti tentativi: Ti consigliamo di controllare l'esattezza del recapito e di riprovare. - "MESSAGE TOO BIG" Il messaggio inviato non e' stato accettato dalla casella di destinazione a causa delle elevate dimensioni. - "INVALID DOMAIN NAME SYNTAX" L'indirizzo del destinatario non e' stato scritto nella dovuta forma; Ti consigliamo di apportare le correzioni necessarie e di ripetere l'invio."

- a cura di: [email protected] -

Il telemacone3 - prima parte - rel 15.10.06

58

Nota sulla sicurezza della posta elettronica

Chiunque abbia avuto a che fare con la configurazione di un programma per scrivere posta elettronica da Internet si sará reso conto che è assolutamente necessario al programma conoscere il nome di un certo SMTP server ovvero il server dedicato alle outgoing mail oltre ad alcune informazioni sull'utente.

->telnet smtp.libero.it 25 <-Connected to mail.libero.it <-220 SMTP smtp.libero.it ->HELO default <-250 smtp.libero.it Hello swrm250-126.iol.it [194.21.250.126], pleased to meet you ->MAIL FROM: [email protected] <-250 [email protected]... Sender ok ->RCPT TO: [email protected] <-250 [email protected]... Recipient ok ->DATA Esempio di invio di un e-mail <-250 TAA18303 Message accepted for delivery ->QUIT

Nel modo così descritto si capisce subito che si può mettere un qualsiasi indirizzo e-mail da cui inviare le informazioni , ma bisogna tenere conto che il ricevente in questo caso ([email protected]) quando risponderà , invierà un e-mail a [email protected] che però noi sappiamo che non esiste e quindi non potremo mai avere una risposta dalla “vittima “. Per questo motivo è spesso creata una falsa e-mail del tipo [email protected] cosi che si possa ricevere anche la risposta . Questa tecnica viene molto utilizzate per richiedere nome utente e password ad una persona completamente ignara di quello che succede .Ad esempio una classica e-mail utilizzata è :

From: [email protected] To : [email protected] Oggetto: Attenzione Data: Sig Paolo Rossi la informiamo che a causa di una caduta di tensione in centrale tutti I dati sul nostro server sono stati cancellati , per questo motivo le chiediamo di inviarci I suoi dati comprensivi di User e Password per accedere ad internet . Ci scusi per l’inconveniente cordiali saluti Staff Tecnico Libero

Emoticons, Smiles

La nascita delle prime emoticon (emotive icons) è molto controversa. La prima in assoluto pare essere stata usata il 12 aprile 1979 da un certo Kevin MacKenzie in un'e-mail inviata agli iscritti a MsgGroup (una delle prime BBS via Internet) in cui suggeriva di introdurre

qualche sentimento nei freddi testi dei messaggi; per esempio consigliava di utilizzare un trattino seguito da una parentesi chiusa (cioè "-)") per indicare una linguaccia. Un’altra versione afferma che la prima emoticon comparve “in un messaggio telematico di una rete universitaria (si trattava di un bbs, bullettin board system, gli antesignani della messaggeria istantanea e dei forum) inviato da Scott Fahlman, giovane informatico. Addirittura c'è anche chi sostiene che il primo a usarle fu nientemeno che il presidente Usa Abramo Lincoln. Sembra infatti che l'emoticon dell'occhiolino ;) sia comparsa nella trascrizione di un discorso del presidente del 1862.”http://www.corriere.it/scienze_e_tecnologie/11_settembre_21/emoticon-29-anni-

perasso%20_679d489e-e434-11e0-bb93-5ac6432a1883.shtml Alcuni esempi:

:-) sono felice :D mi fai ridere 8-# morto :-D sono molto felice :'( mi fai piangere :*) ubriaco 8;-) ho la testa che mi gira

:-X bacioni :-Q fumatore (:-$ sono a letto con la febbre =:-) mi fai drizzare i capelli 8-) occhialuto %-) ho guardato

troppa tele =:-O sono spaventato :-{ baffuto O:-) sono un angelo, ...nei sentimenti :-C Afflitto 8:-) bambina :-@

strillante :-E vampiro <:-I asino };-> ho un pensiero diabolico :-| Disgusto 3:-) riccioluto [:-) ascolto il walkman :-%

bancario %-6 fuso :-( sono scocciato 8-O Molto sorpreso @:-) conturbante :-/ scetticismo :-X bocca cucita :-# porto

l'apparecchio *:o clown :-s commento bizzarro C=:-) chef B-) uomo mascherato 3:[ animale cattivo +O:-) il Papa +-:-)

prete []&:* Abbracci e baci --;-@ una rosa §:-] attore &It;|-) cinese (:-|-:) gemelli siamesi :-O sono molto scocciato $-

) Speranza di guadagno [:] robot :-) giudizio positivo ,:-( negativo, :-I così e così. ............. aggiungi qui le tue :

Email: 10 regole d'oro per farle leggere (Corriere della Sera - Federico Cella)

Il telemacone3 - prima parte - rel 15.10.06

59

Il rischio, fortissimo, è che molte email vadano perse per distrazione, cattiva gestione, semplice raggiungimento del livello massimo di umana concentrazione. BussinessInsider, ha così pensato di stilare un decalogo di accorgimenti da adottare perché la propria email, specie se lavorativa, non corra il rischio di essere cestinata frettolosamente. Ecco alcuni consigli:

• Essere brevi. limitatevi ai temi chiave. Stop.

• “Oggetto”, dev’essere un vero sommario della email.

• Tenere alta l’attenzione del destinatario e dunque di rivolgersi sempre a lui e a cose che lo riguardano.

• Un solo argomento per email.

• Fare attenzione ai toni. Anche se le faccine aiutano (ma non sono certo professionali), ironia e sarcasmo possono essere facilmente male interpretati. Specialmente se poi la mail viene inoltrata e dunque si perde ulteriormente il contesto.

• Evitare di mettere troppe persone in copia. Mettere solo gli indirizzi di chi davvero è interessato all’argomento.

• Scrivere correttamente le parole e fare attenzione alla grammatica.

• Non scrivere mai nulla di inappropriato, volgare, stupido o che comunque possa mettere in difficoltà voi o il destinatario.

• Non litigare via email: per quanto siate abili con la tastiera, le cose sono solo destinate a peggiorare.

• rileggere sempre il tutto oppure semplicemente cancellare. E rivedetevi il consiglio n. 2 e l’aggiunta al numero 6.

Inoltre Lunga vita all’email! Ma lunga vita anche a tutti noi. Se non vogliamo trascorrerla rispondendo a messaggi inutili, dobbiamo imparare a fare pulizia. Nelle nostre inbox, ma prima ancora nella nostra testa. Igiene postale in vista del Natale! Una rima come promemoria. Sulla posta in arrivo, possiamo fare poco. Filtri, firewall, norme di legge, buon senso e buona educazione: nulla ferma i grafomani elettronici e gli uffici stampa invadenti. Alcuni di noi cancellano metà dei messaggi senza neppure aprirli: basta leggere il mittente, il soggetto e le prime righe («Gentile Signore/a...»). Da principio il rito è liberatorio, come la pulizia del bagno la domenica pomeriggio. A lungo andare, però, stanca. Possiamo farci poco, ripeto. I fanatici del tasto «Invia» non conoscono riposo né pentimenti. Mercoledì 12.12.12, per celebrare il #mailday, sono capaci di spedire dodici volte lo stesso messaggio a dodici malcapitati. E vantarsene, magari. A tutti gli altri—gli utenti ragionevoli— suggeriamo di riflettere sulla fisiologia dello strumento. Un check-up della nostra condizione elettronica può partire da questa semplice operazione: contate quante mail avete inviato nell’ultima settimana. Risultato personale (3-7 dicembre, giorni di viaggio): lunedì 33, martedì 44, mercoledì 18, giovedì 16, venerdì 45. Media 31,2. Se fosse un esame del sangue, l’analisi presenterebbe qualche asterisco. Nulla di grave, mi sento di poter dire. Non sono un virtuoso; in materia di posta elettronica, sono invece un previdente che ha imparato a sue spese. Ho iniziato nella primavera del 1994 — vivevo negli Usa, a Washington DC — a utilizzare questo strumento, che benedico ogni giorno e maledico ogni tanto. Applico, ormai automaticamente, dieci norme di comportamento. Ve le propongo in questo #mailday 12.12.12. 1) Non è necessario rispondere a tutte le mail. A meno che il messaggio ricevuto richieda una risposta (per necessità, utilità, diplomazia, buon cuore o buona educazione). 2) Non è scortese rispondere in modo breve. Perché la sintesi (sia benedetta) dev’essere confinata a Twitter, sms o WhatsApp? I Neoampollosi — categoria insidiosa e numerosa—utilizzano uno strumento nuovo e veloce per conservare vecchie, faticose abitudini. Pessima combinazione. Alla larga. 3) Non è vietato rileggere le mail prima di premere «Invio». Un errore ortografico è perdonabile; tre sono irritanti; dieci, vergognosi. La rilettura ha due vantaggi: riduce i rischi dell’impulsività e raddoppia il tempo dedicato a ogni messaggio (ne spediremo meno, avvicinandoci a quota 36). 4) Non è opportuno mettere in copia (cc) tutti i famigliari, metà degli amici, un terzo dei colleghi, un decimo della popolazione italiana. Le email che presentano liste infinite di destinatari sono sospette. Che valore può avere una cosa che dici a tutti, caro R.? 5) Non è elegante usare troppo spesso la copia nascosta (bcc). Ci sono occasioni in cui è utile; ma l’operazione resta delicata, e può diventare truffaldina. È come quando, a scuola, si mostrava all’amico del cuore i bigliettini della ragazza; senza informarla, naturalmente. 6) Non è onesto caricare le mail di inutili allegati. Sempre più spesso, infatti, riceviamo i messaggi su dispositivi mobili. Leggere «Vuoi scaricare gli allegati?», rispondere «Sì» e ritrovarsi a guardare cinque foto di gatti in alta risoluzione è irritante. Anche per i felini in questione, se il mittente li avesse interpellati. 7) Non è salutare ricevere/ spedire posta come prima attività al mattino e ultimo gesto della sera. Avanti, aprite la casella «posta inviata» e controllate l’orario. Se il primo messaggio segna 07.22 e l’ultimo 00.16, preoccupatevi. Lettura, meditazione, sesso, tisane, dvd e buona televisione: quante cose da fare la sera, prima di addormentarsi. Caffè nero, pensieri chiari, sguardi dalla finestra, giornali quotidiani (oh yes), affettuosità familiari: sono molte le attività degne del primo mattino. 8) Non è dignitoso tempestare di mail una persona, anche se l’avete sposata e/o ne siete innamorati, se la stimate o avete bisogno di lei. Un messaggio di posta non è invadente come un sms, l’ha stabilito anche la Cassazione. Ma i dispositivi mobili segnano il numero di messaggi in arrivo. Se il circolino rosso sopra il simbolo della posta dice «88», e tutti i messaggi sono di Ottavio, lei ha un problema, signorina. 9) Non è obbligatorio spedire una mail. Ci sono anche i buoni, vecchi sms. Il telefono (mobile e fisso). I biglietti. I post-it. Le visite personali. Le sane, vecchie urla da una stanza all’altra. 10) Ignorate ognuna di queste regole se vi induce a fare cose sciocche, dannose e imbarazzanti. Non è vietato inviare mail alle quattro del mattino, a patto d’esser sobri. Ma dev’essere un’eccezione. Se fosse la norma, avete un bioritmo strano e un partner santo. Probabilmente, tutt’e due. Beppe Severgnini

Esercizi email

Il telemacone3 - prima parte - rel 15.10.06

60

Compilare la seguente tabella riferendosi anche ai sistemi di invio di posta ordinaria

Vantaggi email Svantaggi email

Confrontare l’email ai sistemi di instant-messaging

email instant-messaging

vantaggi

svantaggi

Quali sono i consigli (almeno quattro) che dareste per la scrittura di una email per rispondere all’inserzione di un posto di lavoro, o per paralre con i colleghi di lavoro, considerando il galateo (etiquette)?

____________________________________________________________________________

FTP

“FTP (File Transfer Protocol) (RFC 959) A protocol that makes it possible for a user to transfer files from one location to another over the Internet. “

Http e Ftp possono entrambi scambiarsi dati e files e si appoggiano entrambi a TCP , ma hanno alcune caratteristiche che li differenziano. La piu' appariscente è che FTP usa due connessioni TCP in parallelo per il traferimento di un file: connessione di controllo sulla port 21, per la spedizione di info di controllo tra i due host: utente (comando USER username) , password (PASS password) , lista (ls), directory , put e get... Queste informazioni sono dette out-of-band (fuori della banda) . Esiste tipicamente una corrispondenza 1:1 tra il comando dell'utente e il comando FTP. Ciascun comando è seguito da una risposta da server a client: tre cifre con un messaggio facoltativo (come HTTP), ad esempio: 331 Username OK, password required / 452 Error writing file ...... Quando un utente avvia una sessione FTP il client istaura una sessione TCP sulla port 21 del server, quindi invia user e password e i comandi di cambio directory sul server remoto che, quando riceve un comando di trasferimento file (in entrambi i versi) , trasferisce i dati servendosi della connessione dati sulla port 20 del TCP. Alla fine la connessione dati viene chiusa, ma rimane aperta la connessine di controllo per eventuali altri trasferimenti di files, che apriranno nuove connessioni dati.

Molti siti Internet rendono pubblici e accessibili i propri file da scaricare via ftp. L’account "anonymous." Cosi’ questi siti sono chiamati "anonymous ftp servers." (ftp://ftp.microsoft.com/)

Nota

Il telemacone3 - prima parte - rel 15.10.06

61

Con Explorer è possibile accedere a siti ftp (anche con login e password) semplicemente digitando: ftp://utente:password@serverftp/percorso-url dove utente è il nome utente, serverftp è l'indirizzo del server FTP, password è la password e percorso-url è la directory a cui accedere.

Nota

E’ possibile usare anche funzioni predefinite per realizzare un applicazione ftp. E’ il caso, ad esempio, di Microsoft® Win32® Internet (WinInet) functions:

FtpCreateDirectory FtpDeleteFile FtpFindFirstFile ex. hFind = ::FtpFindFirstFile(m_hFTPConnection, m_DirRemota, &wfd, INTERNET_FLAG_RELOAD | INTERNET_FLAG_DONT_CACHE, (DWORD) this); FtpGetCurrentDirectory FtpGetFile

FtpOpenFile FtpPutFile FtpRemoveDirectory FtpRenameFile FtpSetCurrentDirectory ex. FtpSetCurrentDirectory(m_hFTPConnection, NomeDirectory

Esistono anche programmi ftp molto comodi, come ad esempio Filezilla:

Esplorazione FTP come si fa File Transfer Protocol (FTP) è utilizzato per trasf erire file da un dispositivo di rete a un altro dispositivo di rete. Oltre a usare programmi dedica ti a interfaccia grafica (GUI), come ad esempio Filezilla, è possibile usare direttamente l’editor a riga di comadi (cmd di Windows) per gestire e trasferire file da un server FTP. In questi casi il client deve, di norma, fornire username e password per poter accedere al server. In alcuni casi però i ser ver consentono un accesso anonimo. In questi casi è sufficiente digitare “anonymous” come userid senza alcuna password. L’esercizio mostra come leggere un file dal sito ftp.microsoft.com usando l’editor cmd di Microsoft. Una volta aperto cmd (Start->cmd), digitare il coma ndo “ftp”. Per collegarsi al server ftp di Microsoft: digitare il comado “open ftp.microsoft.com ” (1). Digiare “ anonymous” come nome utente (2) , senza password . Il sistema si è loggato al server (3). A questo pun to è possibile navigare nelle cartelle, visionare (4) e manipolare i file (5).

Il telemacone3 - prima parte - rel 15.10.06

62

NOTA I comandi FTP originali per inviare un file a un server FTP e scaricarlo erano, rispettivamente P UT e GET. Attualmente i comandi SEND e RECV hanno preso il lo ro posto. Inoltre molte applicazioni FTP consentono di utiliz zare sia l'indirizzo IP sia il nome del computer. Analogamente è possibile usare il browser per collg arsi a un server FTP:

Esercizio: studiare I comandi di FTP

1. In editor di comnadi di windows, digitare ftp 2. Analizzare i comandi ftp: quali sono? 3. In particolare valutare i comandi “ls”, “get” e “put”, “send”, “recv”. Cosa fanno rispettivamente? 4. Accedere a un sito ftp (anonimo o conosciuto) 5. Esaminarne il contenuto 6. Scaricare un file 7. Caricare un file 8. Quando può essere utile trasferire file con FTP?

Il telemacone3 - prima parte - rel 15.10.06

63

RSS

L'Rss è uno dei più popolari formati per la distribuzione di contenuti web, che permette di monitorare i contenuti di un sito e di usufruirne anche al di fuori del sito stesso. La sigla Rss originariamente significava Rich Site Summary (ricco riassunto di un sito);ormai è stata universalmente reinterpretata in Really simple syndication (distribuzione veramente semplice). La parola Syndication deriva dal verbo “to syndicate” che sta ad indicare l'azione di un sito di mettere a disposizione sezioni o interi contenuti attraverso la distribuzione di feed (termine che viene comunemente usato per indicare i file RSS). I Feed sono basati tutti su XML, il metalinguaggio che ci permette di rendere comprensibili le informazioni. Tale file XML definisce una struttura adatta a contenere un insieme di notizie, ciascuna delle quali sarà composta da vari campi (nome autore, titolo, testo, riassunto, ...). Quando si pubblicano delle notizie in formato RSS, la struttura viene aggiornata con i nuovi dati; visto che il formato è predefinito, un qualunque lettore RSS potrà presentare in una maniera omogenea notizie provenienti dalle fonti più diverse. E’ sufficiente sottoscrivere il Feed che il sito che mette a disposizione e inserire l'url del feed nel feed reader (ad es http://www.corriere.it/rss/ http://rss.html.it/ ). Per la creazione dei feed è disponibile, ad esempio in php http://www.rss-world.info/codice/php/risorse/feedcreator.php http://rss.html.it/