1) Storia del web e del W3C

Storia del Web e del W3C

Riassunto: Internet e’ un particolare sistema di comunicazione per trasmettere testi, immagini, suoni e filmati che e’ stato inventato nei primi anni 90 da uno scenziato inglese Tim-Barners Lee. Tim-Barners Lee costrui’ il primo “browser” o navigatore di internet (un software che permette di reperire e visualizzare informazioni) e stabili’ le prime regole per trasmettere tra’ due computer anche molto lontani tra’ di loro. Si deve a questo scenziato la fondazione di una importante associazione non Profit : la W3C che e’ formata dalle piu’ grandi aziende mondiali del settore informatico (Microsoft, Google, Oracle, Sony, Nokia ecc) e che ha il compito fondamentale di stabilire le regole di trasmissione di dati e le regole di funzionamento dei linguaggi che stanno alla base di internet. Il World Wide Web (WWW) Traduzione dall’Inglese: rete (ragnatela) in tutto il mondo

L’acronimo www che si deve digitare per la ricerca di qualsiasi pagina Internet deriva dal nome del primo sistema operativo il primo browser (navigatore ) programma per computer adatto alla navigazione nel web mai realizzato. Esso non raggiunse mai il grande pubblico, proprio perché fu creato essenzialmente a scopo dimostrativo e di ricerca. Fu sviluppato da Tim Berners-Lee per il sistema NeXTSTEP e rilasciato il 26 febbraio 1991. Fu sviluppato nei laboratori del CERN Centro Europeo Per la ricerca Nucleare in Svizzera. Oggi la sigla www significa Internet cioe’ un servizio di che permette di navigare ed usufruire di un insieme vastissimo di contenuti (multimediali e non) collegati tra loro attraverso legami (link), e di ulteriori servizi accessibili a tutti o ad una parte selezionata degli utenti di Internet. Tim Berners Lee lascio’ in seguito il CERN in Svizzera e si trasferi’ nel Laboratory for Computer Science (LCS) del prestigioso Massachusetts Institute of Technology (MIT) di Boston, presso cui nel 1994 fondò il World Wide Web Consortium (W3C).

Il World Wide Web Consortium

Il World Wide Web Consortium, anche conosciuto come W3C, è un’organizzazione non governativa internazionale che ha come scopo quello di sviluppare tutte le potenzialità del World Wide Web. Al fine di riuscire nel proprio intento, la principale attività svolta dal W3C consiste nello stabilire standard tecnici per il World Wide Web inerenti sia i linguaggi di markup che i protocolli di comunicazione.

Storia

Il World Wide Web Consortium è stato fondato nell’ottobre del 1994 al MIT (Massachusetts Institute of Technology) dal “padre” del Web come sopra detto, Tim Berners-Lee, in collaborazione con il CERN (il laboratorio dal quale Berners-Lee proveniva). Nell’aprile del 1995 l’INRIA (Istituto Nazionale di Ricerca Informatica ed Automatica) divenne il primo membro europeo del W3C. Nel 1996 il W3C approdò in Asia, grazie alla Keio University di Tokio. Nel 2003 l’ERCIM (Consorzio Europeo di Ricerca in Informatica e Matematica) prese il ruolo di host europeo del W3C dall’INRIA (che è l’istituzione francese dell’ERCIM). Membri

Il W3C comprende circa 380 membri (al 2012), tra i quali: aziende informatiche di primaria importanza, come Adobe, Apple, Cisco Systems, Google, IBM, Intel, Microsoft, Oracle, Siemens, Sony e Sun Microsystems; compagnie telefoniche come Ericsson, Nokia, NTT DoCoMo; società di grandi dimensioni appartenenti ai più svariati settori, ma strategicamente interessate alla crescita del Web: American Express, Agfa-Gevaert N. V., Boeing, Chevron-Texaco; organizzazioni non-profit come la Mozilla Foundation e The Open Group; università e istituzioni per la ricerca: altre istituzioni ospitano gli uffici nazionali del Consorzio: per l’Italia l’ISTI di Pisa del CNR; sono numerose le università e gli istituti di ricerca tra i più prestigiosi: Academia Sinica, la Library of Congress, il Los Alamos National Laboratory, il National Institute of Standards and Technology. L’importanza dei suoi membri fa del W3C un organismo di grande autorevolezza e molti sono portati a chiamarlo “il Consorzio”, per antonomasia.

Obiettivi del W3C

Il web ormai non è più uno strumento per «appassionati», ma è diventato parte integrante della vita comune delle persone. Attualmente esistono diversi tipi di apparecchi (come cellulari e PDA) che accedono ad internet. Ciò è possibile solo grazie ad un «comune linguaggio di comunicazione» (nello specifico, il protocollo di comunicazione e linguaggio in cui è scritto il file) tra server, PC ed altri dispositivi. Il W3C si occupa di aggiornare e creare queste specifiche. Il Web ha un potenziale praticamente illimitato, ed apre nuove strade ai portatori di handicap, anche gravi. Il W3C cerca di studiare i modi per rendere quanto più agevole l’accesso al web da parte di questa categoria di persone. Il web è unico perché è libero. Chiunque può creare un documento html e metterlo liberamente online. Il W3C cerca di evitare che interessi di qualsiasi genere possano porre un freno a questa assoluta libertà ed è anche un sito per aiutare a sviluppare le potenzialità comunicative degli esseri umani. La definizione di uno standard nell’ambito del W3C passa attraverso gli stadi di: 1. Working Draft (bozza) 2. Last Call (ultimo appello) 3. Proposed Recommendation (proposta di raccomandazione) 4. Candidate Recommendation (raccomandazione candidata). Il processo si conclude con la pubblicazione di una Raccomandazione. Una Raccomandazione può venire migliorata da documenti di Errata pubblicati separatamente, fino a che il complesso delle modifiche non richiede di produrre una nuova versione della Raccomandazione. Ad es. l’XML è ora alla sua terza versione. Talvolta una Raccomandazione viene ritirata per essere riorganizzata attraverso un nuovo procedimento: ciò è accaduto alla Raccomandazione per l’RDF. Il W3C inoltre pubblica Note informative che non pretendono di essere trattate come standard. Il Consorzio non è un organismo di standardizzazione, come invece lo sono l’ISO, ITU-T o la Commissione Elettrotecnica Internazionale (IEC): il suo compito è invitare i produttori a seguire le proprie raccomandazioni. A differenza degli organismi di standardizzazione, il W3C non ha un programma di certificazione e molti dei suoi standard di fatto non definiscono formalmente i livelli di conformità. Di conseguenza molte Raccomandazioni sono implementate solo parzialmente.

Gli standard definiti dal W3C

Nell’ambito del W3C sono stati proposti, discussi, definiti e ufficializzati oltre 50 standard industriali di vasta portata: (Sono segnati in verde gli standard trattati in seguito in questo corso)

  • HTTP (HyperText Transfer Protocol)
  • URI URL (in collaborazione con IETF)
  • HTML (HyperText Markup Language)
  • XML e i linguaggi da questo derivati:
  • EXI (Efficient XML Interchange)
  • XProc (XML Pipeline Language)
  • XPointer (XML Pointer)
  • XML Processing Model
  • XML Schema
  • XML Signature
  • XHTML (eXtensible HyperText Markup Language)
  • MathML (Mathematics Markup Language)
  • SVG (Scalable Vector Graphics)
  • XForms
  • XPath
  • XQuery
  • CSS (Fogli di stile a cascata)
  • XSLT (Extensible Stylesheet Language Transformations)
  • CGI (Common Gateway Interface)
  • DOM (Document Object Model)
  • GRDDL (Gleaning Resource Descriptions from Dialects of Languages)
  • OWL (Controllo dei contenuti) RDF (Controllo dei contenuti)
  • SMIL (Synchronized Multimedia Integration Language)
  • SML (Service Modeling Language)
  • SOAP(Simple Object Access Protocol)
  • PICS (Platform for Internet Content Selection)
  • WAI (Web Accessibility Initiative)
  • POWDER (Protocol for Web Description Resources)
  • PNG (formato grafico) I
  • nkML (formato per inchiostro digitale)

Nell’ambito del W3C vengono sviluppati prodotti software open source (utilizzabili da tuttti gratuitamente) e pubblicazioni liberamente scaricabili finalizzati alla promozione e al sostegno del WWW. Il Consorzio organizza e promuove nell’ambito internazionale convegni e seminari volti a stimolare e discutere criticamente le prospettive del Web ed a stimolare l’adozione delle sue Raccomandazioni e Linee guida. Considerando nel loro complesso le specifiche, gli strumenti e le attività promozionali sviluppati nell’ambito del W3C si deve sottolineare che essi compongono un disegno complessivo di grande portata e lungimiranza, basato su una lucida consapevolezza dell’importanza che il Web riveste per il mondo attuale. Molte delle iniziative del Consorzio hanno avuto pieno successo. Di fatto ha determinato vari standard ampiamente adottati, la cui autorevolezza ha dato ordine e organicità alla crescita del Web dagli ultimi anni ’90 ad oggi. Occorre dire che alcune Raccomandazioni sono state definite dopo dibattiti molto accesi che hanno visto lo scontro di grandi interessi industriali contrapposti. In questo senso il Consorzio si può considerare un ambiente che favorisce il raggiungimento di compromessi molto utili per la crescita aperta del Web.

Il cervello del computer: la CPU

Riassunto: I computer esistenti nel mondo possono scambiarsi informazioni in quanto sostanzialmente funzionano tutti allo stesso modo. Per far funzionare un computer e ‘ necessario dargli una serie ben precisa e limitata di ordini dette “ istruzioni “che il computer per come e’ stato costruito puo’ eseguire.Gli ordini sono sempre operazioni semplici, tipo il trasferimento di numeri da un registro all’altro del computer ma eseguiti con velocita’ elevatissima. Gli ordini “istruzioni” devono essere immessi nel computer uno alla volta in sequenza ordinata esclusivamente sotto forma di numeri: sequenze di zero e uno a cui attraverso la codifica si fanno corrispondere numeri decimali o lettere dell’alfabeto per una migliore comprensione. Cos’è la CPU L’unità centrale di elaborazione (CPU) è costituita dal microprocessore, l’elemento che caratterizza le prestazioni dell’intero PC. Il suo scopo è quello di eseguire i programmi e gestire gli altri componenti del computer. Il microprocessore è un componente integrato di transistor e di altri elementi atti a costituire i circuiti logici che presiedono al funzionamento dell’intero elaboratore.
Funzioni esterne
Per quanto riguarda i suoi rapporti con l’esterno i compiti della CPU possono riassumersi come segue: tradurre i dati introdotti in una serie di istruzioni che formano un programma; interrogare lo stato degli ingressi i cui dati sono posti nelle memorie di ingresso; depositare il risultato dell’elaborazione sulle memorie di uscita; attivare le apparecchiature esterne.
Funzioni interne
Esaminando attentamente il funzionamento interno è possibile individuare una seconda serie più dettagliata di compiti: elaborare e interpretare il programma; controllare la successione delle istruzioni sulle operazioni da effettuare; effettuare operazioni logiche e algebriche; generare i segnali che attivano i componenti interni; verificare la corretta trasmissione delle informazioni; organizzare la sequenza dei dati evitando sovrapposizioni; sincronizzare le funzioni del sistema con l’orologio interno. Classificazione
Un modo di classificare il microprocessore è basato sul numero di bit che può trattare. L’impiego di un determinato microprocessore influenza il tipo di software che può essere utilizzato, la velocità e potenzialità del sistema ed il numero e tipo di periferiche (memorie esterne e altri componenti ) che possono essere gestite. Attualmente i microprocessori più usati sono quelli a 32 bit, come le diverse versioni del Pentium della Intel.
Velocità di lavoro
La velocità di elaborazione del sistema dipende dal clock (orologio) del microprocessore, che dai valori di qualche Mhz (Milioni di oschillazioni al secondo) degli esordi si spinge verso il traguardo del Ghz. (Miliardi di oscillazioni al secondo) Occorre però ricordare che la velocità complessiva di lettura delle testine magnetiche dei dischi, il tipo di hardware interno ecc. Un parametro in grado di indicare in modo più significativo la funzionalità del processore è il numero di flops (floating point operations per second), ossia di operazioni in virgola mobile al secondo. Per dare un’idea dello sviluppo raggiunto in questo campo, i primi processori erano in grado di funzionare a 60.000 flops, quelli odierni hanno raggiunto e superato il teraflops, ossia il migliaio di miliardi di operazioni al secondo. Ogni CPU funziona solo se vengono immessi in essa i dati in forma binaria cioe’ se vengono immessi stringhe di 0 E 1 (zero e uno) . Gli 0 e 1 sono detti anche bit. Le stringhe di bit sono dette Byte.

Il bit e il Byte

Alla base della comunicazione digitale e della elaborazione dei dati ci sono i bit e le stringhe di bit

Riassunto Le sequenze di zero e uno che devono essere immesse nel computer affinche’ lo stesso possa eseguire le “istruzioni” o comandi che gli impartiamo sono organizzate in gruppi ordinati . Una sequnza di otto 0 e 1 e’ detta Byte , un solo elemento del Byte (o 1 o zero) e’ detto bit ed e’ la minima unita’ di informazione esistente in informatica. La velocita’ di trasmissione si misura in bit al secondo. Il Bit Il simbolo del bit e’ la b minuscola La parola bit, in informatica e in teoria dell’informazione, ha due significati molto diversi, a seconda del contesto in cui rispettivamente la si usi. Significato -un bit è l’unità di misura dell’informazione (dall’inglese “binary information unit”), definita come la quantità minima di informazione che serve a discernere tra due possibili eventi equiprobabili. -un bit è una cifra binaria, (in inglese “binary digit”) ovvero uno dei due simboli del sistema numerico binario, classicamente chiamati zero (0) e uno (1). Abbiamo visto che il bit rappresenta l’informazione base per un computer, poiché esso è l’informazione più piccola che si può rappresentare. Ovviamente il bit da solo non ha un particolare significato ma, se preso a gruppi, permette di rappresentare informazioni più complesse, come i numeri, le lettere maiuscole e minuscole, i simboli grafici. Il Byte Il simbolo del Byte e’ la B maiuscola Il termine byte è stato coniato da Werner Buchholz nel luglio 1956, all’inizio del progetto del computer IBM Stretch Un byte è una quantità di informazione elementare utilizzata per molti scopi: servono ad esempio circa 200 livelli di grigio per passare dal bianco al nero perché l’occhio umano pensi di vedere una sfumatura continua, servono circa 200 caratteri diversi (lettere accentate comprese) per scrivere un qualsiasi testo di una lingua occidentale, servono circa 200 livelli di intensità per riprodurre un suono abbastanza fedele. Per poter esprimere ad un computer un’informazione complessa, dobbiamo ricorrere al BYTE. Un byte è costituito, per convenzione standard internazionale, da 8 bit L’utilizzo di questa unità di misura ci porta a parlare e identificare la capacità della memoria, del disco fisso, dei supporti di massa come i DVD e le pendrive, che viene espressa tramite multipli del byte. Quante volte abbiamo sentito parlare di Disco Fisso da 200, 300, 500 Gbyte o la RAM da 2,3,4 Gbyte? Molto spesso i computer, soprattutto quelli di ultime generazioni, sono in grado di manipolare non solo byte ma addirittura gruppi di byte. Come sappiamo un byte è formato da 8 bit. Spesso si sente parlare di sistemi operativi e programmi a 32 bit. Bene questo vuol dire che quel computer è in grado di elaborare gruppi di 4 byte alla volta contemporaneamente. Quindi se il byte è costituito da 8 bit ognuno dei quali può assumere due possibili valori (0 e 1), significa che un byte può esprimere 256 valori (da 0 a 255). Vien da se che se la parola è costituita da 8 bit e i moderni computer lavorano a 32 o 64 bit (quelli di ultima generazione), significa che quelli a 32 bit sono in grado di elaborare gruppi di 4 bytes (parole) alla volta, mentre i calcolatori a 64 bit possono elaborare ceppi di 8 bytes alla volta, il che rende la capacità di calcolo ed elaborazione del computer estremamente potente e veloce. La velocità di trasmissione (bits-Byts) In informatica e telecomunicazioni, la velocità di trasmissione (o di trasferimento detta anche frequenza di cifra o bit-rate) indica la quantità di dati digitali che possono essere trasferiti, attraverso una connessione/trasmissione, su un canale di comunicazione in un dato intervallo di tempo ovvero: R = {quantità delle informazioni}/{tempo di trasferimento} Nel campo informatico delle reti informatiche la velocità di trasmissione è anche detta banda. L’informazione base considerata è rispettivamente il bit nelle telecomunicazioni e il byte in informatica, dunque la quantità di informazione trasferita nell’unità di tempo si misurerà rispettivamente in bit al secondo, abbreviato in bit/s o bps, detta bit rate, e byte al secondo, abbreviato in byte/s o Bps (si noti l’uso differente dell’iniziale b, minuscola per il bit e maiuscola per il byte). Attenzione quindi a quando si parla di velocita’ di trasmissione controllare se si tratta di bit (b) o Bytes (B) per secondo.

I codici in informatica

Uno strumento fondamentale per farsi capire dai computer

Riassunto Per scambiare informazioni tra’ di loro gli uomini usano dei segni :per esempio un alfabeto nel caso della scrittura. Gli uomini avrebbero grandi difficolta’ a scambiarsi informazioni sotto forma di sequenze di zero e uno. Cosi’ come avrebbero grandi difficolta’ a interagire con i computer immettendo dati sotto forma di 0 e uno. Gli uomini sono facilitati nel dare ordini o “istruzioni” ai computer se riescono a farlo scrivendoli in forma testuale cosi’ come si scrive una lettera con una tastiera. Per immettere gli ordini in un computer e’ quindi indispensabile stabilire una corrispondenza tra’ i numeri (byte) comprensibili dalle macchine e i simboli (alfabeto) comprensibili dagli uomini Per questo sono necessari i codici che assegnano a ogni lettera dell’alfabeto un numero o una sequenza di zero e uno I computer, non sanno far altro che trattare numeri. Il linguaggio (nativo ) dei computer e’ fatto solo di stringhe di bit o di byte (insiemi di 0 e 1 come sopra visto ) che sono incomprensibili all’uomo. Per immagazzinare in memoria lettere o altri segni è necessario quindi che a ogni numero venga assegnato un carattere . E’ cioe’ necessario creare una corrispondenza tra’ un numero e l’insieme delle lettere dell’alfabeto e di altri simboli che gli uomini si scambiano per capirsi tra’ di loro. Questo e’ il compito dei codici

Cosa e’ un codice

In tutte le attività nelle quali si trattano informazioni, come nelle telecomunicazioni (e di conseguenza anche nell’elettronica e nell’informatica), nell’organizzazione delle biblioteche e in molte attività gestionali, per codice si intende una modalità di rappresentazione, mediante un opportuno insieme di stringhe (o di simboli), di un insieme di oggetti materiali o un insieme di informazioni tendenzialmente più complesse delle stringhe (o dei simboli) che le codificano. Il termine codice viene usato con due significati: 1. Procedimento di codifica, riguarda la modalità seguita per assegnare univocamente ad ogni elemento dell’insieme da rappresentare una stringa che lo rappresenta; 2. Insieme delle codifiche, denota l’insieme delle stringhe rappresentative (questo è il significato utilizzato nel capitolo della matematica chiamato teoria dei codici. Un codice si dice efficiente quando utilizza un numero di simboli strettamente necessario per codificare l’informazione, mentre all’opposto si dice ridondante quando usa un numero di simboli abbondanti, e quindi più di quelli necessari, ma utili per semplificare la generazione e la interpretazione delle informazioni.

Esempi di codice

Codice Morse Un esempio tradizionale di codice è il Morse, appartenente alla codifica dei caratteri ed utilizzato nei primi tempi della telegrafia (1840): in cui ad ogni lettera dell’alfabeto inglese (l’insieme di informazioni da rappresentare) viene assegnata una sequenza di punti e linee (gli elementi dell’alfabeto usato per la codifica). Altre esempi di codifica sono la codifica digitale di un segnale analogico ovvero la conversione analogico-digitale, la codifica di sorgente e la codifica di canale.

Codice Ascii

ASCII è l’acronimo di American Standard Code for Information Interchange (ovvero Codice Standard Americano per lo Scambio di Informazioni) Lo standard ASCII è stato pubblicato dall’American National Standards Institute (USASI) nel 1968. Un codice ASCII e’ la rappresentazione numerica di un carattere in quanto come sopra visto il computer puo’ solo capire numeri e codici. Per esempio il carattere “@” e’ rappresentato dal codice ASCII “64″, “Y” dall’”89″, “+” dal “43″, ecc. Pero’ un codice ASCII puo’ anche rappresentare una specifica azione, come “vai a capo”, codice ASCII “10″, oppure “cancella”, codice “127″, ecc. Il codice ASCII fu inventato molti anni fa per le comunicazioni fra telescriventi (infatti ci sono dei codici di comandi specifici che sono quasi incomprensibili, ma al tempo avevano la loro funzione), poi man mano e’ diventato uno standard mondiale. Parlando di un caso piu’ pratico, quando qualcuno richiede un testo in formato ASCII, per esempio il vostro curriculum, oppure un articolo, ecc, significa che richiede un testo nel formato standard in modo che possa facilmente riutilizzarlo nei propri programmi. Infatti il formato ASCII e’ universalmente riconosciuto da tutti i computer, cosa che non e’ vera nel caso di testi “formattati”, cioe’ con sottolineature, stili, grassetti, ecc. Un file in formato ASCII puo’ essere creato utilizzando il Blocco Note di Windows, oppure salvando in formato “solo testo” da un qualsiasi programma di videoscrittura, come Word o simili.

Codice UTF-8

UTF-8 (Unicode Transformation Format, 8 bit) è una codifica dei caratteri Unicode in sequenze di lunghezza variabile di byte, creata da Rob Pike e Ken Thompson. UTF-8 usa gruppi di byte per rappresentare i caratteri Unicode, ed è particolarmente utile per il trasferimento tramite sistemi di posta elettronica a 8-bit.

Codice Unicode

Unicode assegna un numero univoco a ogni carattere, indipendentemente dalla piattaforma, indipendentemente dall’applicazione,indipendentemente dalla lingua. Esistono centinaia di sistemi di codifica, preesistenti a Unicode, e ognuno di questi abbina i numeri ai caratteri in modo differente. Nessuna di queste codifiche comprende un numero di caratteri sufficiente per tutte le circostanze. Per le sole lingue dell’Unione Europea, ad esempio, è necessario utilizzare parecchi sistemi di codifica distinti. Anche considerando una solo lingua, come l’italiano, non esiste una codifica unica che comprenda tutte le lettere e tutti i segni di punteggiatura e simboli tecnici di uso comune. Questi sistemi di codifica, inoltre, sono in contraddizione l’uno con l’altro. Succede che due codifiche utilizzino lo stesso numero per due caratteri diversi o che, viceversa, adottino numeri diversi per lo stesso carattere. Qualsiasi elaboratore, e a maggior ragione un server di rete, ha bisogno di utilizzare codifiche diverse. Il problema è che, quando i dati passano da una codifica a un’altra, o da una piattaforma a un’altra, si corre il serio rischio di perdere informazioni. I complessi metodi di programmazione necessari per lavorare con codifiche con un diverso numero di byte, il processo intrinseco di creazione di una nuova tabella codici ogni volta che un’altra lingua richiede il supporto del computer e l’importanza di miscelare e condividere informazioni in una varietà di lingue e attraverso sistemi diversi non sono che alcuni dei fattori che hanno motivato i creatori dello standard di codifica Unicode. Unicode è nato dalla collaborazione tra Xerox e Apple. Si è quindi formato un comitato ad hoc, costituito da varie società, al quale se ne sono prontamente unite altre, fra cui IBM e Microsoft. Nel 1991 questo gruppo ha fondato il Consorzio Unicode, al quale oggi appartengono società informatiche di primo piano. Per ulteriori informazioni su Unicode, visitare il sito del Consorzio Unicode, all’indirizzo http://www.Unicode.org (in inglese). Unicode è un grande passo avanti nell’era di Internet, in quanto la natura globale della rete richiede soluzioni in grado di funzionare in qualunque lingua. Anche il World Wide Web Consortium (W3C) l’ha riconosciuto e ora prevede che in tutte le nuove specifiche RFC venga utilizzato Unicode per il testo. Molti altri prodotti e standard oggi utilizzano o consentono l’utilizzo di Unicode, ad esempio XML, HTML, Microsoft JScript, Java, Perl, Microsoft C# e Microsoft Visual Basic 7 (VB.NET). Attualmente Unicode è di fatto lo standard di codifica dei caratteri accettato dalle principali società informatiche, mentre ISO 10646 è il corrispondente standard mondiale di diritto, approvato da tutti i paesi aderenti a ISO. I due includono repertori di caratteri identici e rappresentazioni binarie. Unicode comprende praticamente tutti i caratteri oggi utilizzati nei computer. È in grado di risolvere oltre 1,1 milioni di punti di codice. Lo standard include disposizioni per le forme di codifica a 8, 16 e 32 bit. La codifica a 16 bit è utilizzata come codifica predefinita e consente la distribuzione del milione e più di punti di codice inclusi su 17 “piani”, dove ogni piano è preposto a oltre 65.000 caratteri. I caratteri del piano 0, noto come BMP (Basic Multilingual Plane), vengono utilizzati per rappresentare la maggior parte degli alfabeti scritti del mondo, caratteri utilizzati nella stampa, simboli matematici e tecnici, forme geometriche, oltre che i dingbat di base, inclusi tutti gli Zapf Dingbat del livello 100, nonché i segni di punteggiatura. Oltre al supporto per i caratteri nelle lingue moderne, nonché per le forme e i simboli sopra citati, Unicode offre anche la copertura per altri caratteri meno utilizzati, come gli ideogrammi cinesi, giapponesi e coreani (CJK), forme di presentazione dell’arabo e simboli musicali. Il mapping di molti di questi caratteri aggiuntivi va oltre il piano originale e si affida a un meccanismo di estensione definito “coppie di surrogati”. Con Unicode 3.2 ai caratteri sono già stati assegnati oltre 95.000 punti di codice e il resto è stato riservato a un uso futuro. Unicode fornisce inoltre aree a uso privato per oltre 131.000 posizioni, disponibili alle applicazioni per i caratteri definiti dall’utente, di norma consistenti in ideogrammi rari che rappresentano nomi di persone o luoghi. Nella figura seguente è illustrato il layout della codifica Unicode per il BMP (piano 0) in forma astratta.

Unicode sta cambiando le cose!

Unicode attribuisce un numero univoco a ogni carattere, indipendentemente dalla piattaforma, dall’applicativo, dalla lingua. Lo standard Unicode è stato adottato da leader di mercato del calibro di Apple, HP, IBM, JustSystem, Microsoft, Oracle, SAP, Sun, Sybase, Unisys e molti altri. Unicode è alla base di molti moderni standard, come XML, Java, ECMAScript (JavaScript), LDAP, CORBA 3.0, WML eccetera, e costituisce l’implementazione ufficiale dello standard internazionale ISO/IEC 10646. Unicode è supportato da molti sistemi operativi, da tutti i più moderni web browser e da molti altri prodotti. L’emergere dello standard Unicode, unito alla recente disponibilità di strumenti che lo supportano, è fra i più significativi sviluppi della tecnologia della globalizzazione del software. L’adozione di Unicode sui siti web e nelle applicazioni client/server o multi-tiered, rispetto all’utilizzo dei set di caratteri tradizionali, permette un significativo abbattimento dei costi di gestione. Unicode consente che un’unica versione di un software o di un sito web siano fruibili con piattaforme, lingue e paesi diversi, evitando la necessità di reingenierizzare il prodotto per ogni situazione specifica. Permette, inoltre, il trasporto del testo fra sistemi diversi senza che abbia luogo alcuna corruzione dei dati.

Lo Unicode Consortium

Lo Unicode Consortium è un consorzio senza fini di lucro, istituito per sviluppare, estendere e promuovere l’uso dello standard Unicode. I membri del consorzio rappresentano un’ampia gamma di aziende e di organizzazioni attive nell’information technology. Il consorzio è finanziato unicamente per mezzo delle quote versate dai membri. L’adesione allo Unicode Consortium è aperta a tutte le aziende, agli enti e alle singole persone, provenienti da qualsiasi parte del mondo, che intendano sostenere lo standard Unicode e partecipare al suo sviluppo ed alla sua estensione.

Il sistema Client Server

Un sistema che realizziamo tutte le volte che ci colleghiamo a internet

Riassunto Il client e il server sono due computer in genere distanti tra’ di loro quasi uguali per quanto riguarda la struttura ma che svolgono funzioni diverse. In genere il server e’ riposto in un luogo sicuro in quanto conseva dati di vari utenti e fornisce dati a vari utenti. Gli utenti si chiamano client (nostro computer di casa o nostro smartphone) In informatica il termine sistema client-server (letteralmente cliente-servente) indica un’architettura di rete nella quale genericamente un computer client si connette ad un server per la fruizione di un certo servizio, quale ad esempio la condivisione di una certa risorsa hardware/software con altri client, appoggiandosi alla sottostante architettura protocollare. (protocolli di trasmissione che vedremo in seguito) Più semplicemente, i sistemi client/server sono un’evoluzione dei sistemi basati sulla condivisione semplice delle risorse: la presenza di un server permette ad un certo numero di client di condividerne le risorse, lasciando che sia il server a gestire gli accessi alle risorse per evitare conflitti di utilizzazione tipici dei primi sistemi informatici. In pratica quando dal proprio computer di casa o dal proprio cellulare ci si collega a internet ci si collega a un’altro computer che si chiama “server” o “host” mentre il nostro computer di casa o il nostro cellulare si chiama “client”.

Il sistema operativo e le applicazioni di un computer

Il sofware del computer da’ istruzioni al computer utili a produrre i risultati che desideriamo

Riassunto Il sistema operativo garantisce l’operatività di base di un calcolatore, coordinando e gestendo le risorse hardware di processamento (processore) e memorizzazione (memoria primaria), le periferiche, le risorse/attività software (processi o applicazioni) e facendo da interfaccia con l’utente, senza il quale quindi non sarebbe possibile l’utilizzo del computer stesso e dei programmi/software/ specifici, come applicazioni o librerie software. Le applicazioni o App. sono programmi che svolgono specifiche funzioni : esempio “World” serve per scrivere un testo . Il sistema operativo Un sistema operativo ( abbreviato in SO, in lingua inglese OS, “operating system” ), in informatica, è un insieme di componenti software, che consente l’utilizzo di varie apparecchiature informatiche (ad esempio di un computer) da parte di un utente. Esempi di sistemi operativi sono il DOS, Windows, Unix, Mac OS, Android, iOS. Windows= sistema operativo di Microsoft Unix = sistema operativo di IBM iOS= sistema operativo di Apple Android= sistema operativo per cellulari di Google Simbian = sistema operativo per cellulari Nokia e Samsung Windows 8 phone = sistema operativo per cellulari di Microsoft Il sistema operativo garantisce l’operatività di base di un calcolatore, coordinando e gestendo le risorse hardware di processamento (processore) e memorizzazione (memoria primaria), le periferiche, le risorse/attività software (processi o applicazioni) e facendo da interfaccia con l’utente, senza il quale quindi non sarebbe possibile l’utilizzo del computer stesso e dei programmi/software/ specifici, come applicazioni o librerie software. È dunque un componente essenziale del sistema di elaborazione che funge da “intermediario” tra l’utente e la macchina ed inoltre è una base al quale si appoggiano gli altri software, che dunque dovranno essere progettati e realizzati in modo da essere riconosciuti e supportati da quel particolare sistema operativo. Assieme al processore, con cui è strettamente legato, costituisce la cosiddetta piattaforma del sistema di elaborazione. Applicazione

La applicazione e’ un programma o una serie di programmi in fase di esecuzione su un computer con lo scopo e il risultato di rendere possibile un servizio, una serie di servizi o strumenti utili e selezionabili su richiesta dell’utente, spesso attraverso un’elaborazione a partire da un input fornito dall’utente interagendo con esso. È dunque il risultato a livello utente dalla combinazione di risorse software e rispettive risorse hardware di processamento per la loro esecuzione. Esempi di applicazioni: World= eleboratore di testi di Microsoft Corel Draw= elaboratore di immagini e fotoritocco Photoschop= elaboratore di immagini e fotoritocco Excell= foglio di calcolo Google Chrome= browser o navigatore di Google

I protocolli del web per trasmettere i dati

I piu’ importanti standard del W3C permettono lo scambio sicuro di informazioni tra’ computer distanti tra’ di loro anche migliaia di chilometri Riassunto Un protocollo e’ comunemente inteso come una serie di procedure indispensabili per portare a termine una determinata operazione in genere ripetitiva. Per trasmettere dati tra’ due computer il consorzio W3C ha codificato una serie di protocolli o procedure al fine di rendere la trasmissione dei dati sicura, cioe’ senza perdita di dati e senza errori. Il protocollo TCP e’ un protocollo che stabilisce le modalita’ con cui si apre e si chiude un collegamento (canale) tra’ due computer diversi. Il protocollo HTTP stabilisce invece le modalita’ per trasmissione e ricezione dei dati quando cioe’ il canale di comunicazione e’ gia’ aperto. Il protocollo HTTPS e’ quasi identico al HTTP ma prevede l’invio dei dati in forma crittografata in modo da effettuare una trasmissione sicura. Premessa Per comprendere il funzionamento dei protocolli TCP-HTTP-HTTPS e’ necessario definire la URI Uniform Resource Identifier La locuzione Uniform Resource Identifier (in acronimo URI) in informatica, si riferisce a una stringa che identifica univocamente una risorsa generica che può essere un indirizzo Web, un documento, un’immagine, un file, un servizio, un indirizzo di posta elettronica, ecc. L’URL è un URI, o più comunemente chiamato indirizzo web. Gli URI rendono disponibili le risorse secondo una varietà di protocolli quali HTTP, FTP, ecc. Un URL (Uniform Resource Locator) è un URI che, oltre a identificare una risorsa, fornisce mezzi per agire su o per ottenere una rappresentazione della risorsa descrivendo il suo meccanismo di accesso primario o la sua “ubicazione” (“location”) in una rete.Per esempio, l’URL http://www.ethicalworld.org/ è un URI che identifica una risorsa (l’home page di ethicalworld ) e lascia intendere che una rappresentazione di tale risorsa (il codice HTML della versione corrente di tale home page) è ottenibile via HTTP da un host (computer server ) di rete chiamato http://www.ethicalworld.org/
TCP Transmission Control Protocol
Il Transmission Control Protocol (TCP), anche chiamato Transfer Control Protocol, è un protocollo di rete a pacchetto di livello di trasporto, appartenente alla suite di protocolli Internet, che si occupa di controllo di trasmissione ovvero rendere affidabile la comunicazione dati in rete tra mittente e destinatario. È definito nella RFC 793 e su di esso si appoggiano gran parte delle applicazioni della rete Internet. È presente solo sui terminali di rete (host) e non sui nodi interni di commutazione della rete di trasporto, implementato come strato software di rete all’interno del rispettivo sistema operativo ed il sistema terminale in trasmissione vi accede automaticamente dal browser attraverso l’uso di opportune chiamate di sistema definite nelle API * di sistema. *Con Application Programming Interface (in acronimo API, in italiano Interfaccia di Programmazione di un’Applicazione), in informatica, si indica ogni insieme di procedure disponibili al programmatore, di solito raggruppate a formare un set di strumenti specifici per l’espletamento di un determinato compito all’interno di un certo programma. Spesso con tale termine si intendono le librerie software disponibili in un certo linguaggio di programmazione.
Caratteristiche principali
TCP è un protocollo orientato alla connessione, ovvero prima di poter trasmettere dati deve stabilire la comunicazione, negoziando una connessione tra mittente e destinatario, che rimane attiva anche in assenza di scambio di dati e viene esplicitamente chiusa quando non più necessaria. Esso quindi possiede le funzionalità per creare, mantenere e chiudere/abbattere una connessione. Il servizio offerto da TCP è il trasporto di un flusso di byte bidirezionale tra due applicazioni in esecuzione su host differenti. Il protocollo permette alle due applicazioni di trasmettere contemporaneamente nelle due direzioni, quindi il servizio può essere considerato “Full-duplex” anche se non tutti i protocolli applicativi basati su TCP utilizzano questa possibilità. Il flusso di byte viene frazionato in blocchi per la trasmissione dall’applicazione a TCP (che normalmente è implementato all’interno del sistema operativo), per la trasmissione all’interno di segmenti TCP, per la consegna all’applicazione che lo riceve, ma questa divisione in blocchi non è necessariamente la stessa nei diversi passaggi. TCP garantisce che i dati trasmessi, se giungono a destinazione, lo facciano in ordine e una volta sola (“at most once”). Più formalmente, il protocollo fornisce ai livelli superiori un servizio equivalente ad una connessione fisica diretta che trasporta un flusso di byte. Questo è realizzato attraverso vari meccanismi di acknowledgment (riconoscimento) e di ritrasmissione su timeout.(Tempo scaduto) TCP offre funzionalità di controllo di errore sui pacchetti pervenuti grazie al campo checksum (controllo della somma ) contenuto nella sua PDU. (Una Protocol Data Unit è l’unità d’informazione o pacchetto scambiata tra due peer entities in un protocollo di comunicazione di un’architettura di rete a strati.) TCP possiede funzionalità di controllo di flusso tra terminali in comunicazione e controllo della congestione sulla connessione, attraverso il meccanismo della finestra scorrevole. Questo permette di ottimizzare l’utilizzo della rete anche in caso di congestione, e di condividere equamente la capacità disponibile tra diverse sessioni TCP attive su un collegamento. TCP fornisce un servizio di multiplazione delle connessioni su un host, attraverso il meccanismo delle porte.
Multiplazione e porte
Ciascuna connessione TCP attiva è associata a un socket aperto da un processo (il socket è lo strumento offerto dal sistema operativo alle applicazioni per usare le funzionalità della rete). TCP si occupa di smistare i dati tra le connessioni attive ed i relativi processi. Per questo, a ciascuna connessione tra due host viene associato un numero di porta su ciascuno dei due host, che è un intero senza segno a 16 bit (0-65535), contenuto nell’apposito campo dell’header. (testa del pacchetto) Una connessione TCP sarà quindi identificata dagli indirizzi IP dei due host e dalle porte utilizzate sui due host. Un indirizzo IP (dall’inglese Internet Protocol address) è un’etichetta numerica che identifica univocamente un dispositivo (host) collegato a una rete informatica che utilizza l’Internet Protocol come protocollo di comunicazione. Un indirizzo IP assolve essenzialmente a due funzioni principali: identificare un dispositivo sulla rete e di conseguenza fornirne il percorso per la sua raggiungibilità da un altro terminale o dispositivo di rete in una comunicazione dati a pacchetto. In questo modo, un server può accettare connessioni da più client contemporaneamente attraverso una o più porte, un client può stabilire più connessioni verso più destinazioni, ed è anche possibile che un client stabilisca contemporaneamente più connessioni indipendenti verso la stessa porta dello stesso server.
Server e Client
I due processi che comunicano attraverso una connessione TCP hanno ruoli diversi: Il processo che avvia una nuova connessione TCP è detto client, ed invia una richiesta di connessione verso una determinata porta. Affinché la connessione venga stabilita, su quella porta deve esserci un processo server “in ascolto”, che accetta di stabilire una connessione TCP. Le porte conosciute e registrate sono quindi utilizzate dai processi server, e sono convenzionalmente associate a particolari servizi, in modo che un client sappia a quale porta connettersi per raggiungere un determinato server. Il processo server, che è in ascolto su una certa porta, rimane bloccato in attesa che un client si colleghi. Il processo client richiede di stabilire una connessione verso un determinato server su una determinata porta. Normalmente la porta sorgente usata dal client viene allocata dinamicamente dal sistema operativo del client. Quando il TCP stabilisce la connessione, a entrambi i processi viene assegnato un socket tramite cui essi possono comunicare tra loro. Tipicamente il processo server effettua una fork, affida al figlio il compito di comunicare con il nuovo client e si rimette in ascolto. Da questo punto in poi, client e server hanno ruoli simmetrici, e utilizzano gli stessi strumenti per comunicare attraverso il socket.
Affidabilità della comunicazione
Consegna ordinata ed eliminazione di duplicati Il Sequence number, o numero di sequenza, serve a identificare e posizionare in maniera ordinata il carico utile del segmento TCP all’interno del flusso di dati. Con la trasmissione tipica a commutazione di pacchetto della rete dati infatti ciascun pacchetto può seguire percorsi diversi in rete e giungere fuori sequenza in ricezione. In ricezione TCP si aspetta di ricevere il segmento successivo all’ultimo segmento ricevuto in ordine ovvero quello il cui numero di sequenza è pari al numero di sequenza dell’ultimo pervenuto in ordine più la dimensione del carico utile del segmento in attesa (cioè del suo campo Data). In relazione al numero di sequenza TCP ricevente attua le seguenti procedure: se il numero di sequenza ricevuto è quello atteso invia direttamente il carico utile del segmento al processo di livello applicativo e libera i propri buffer. se il numero di sequenza ricevuto è maggiore di quello atteso deduce che uno o più segmenti ad esso precedenti sono andati persi, ritardati dal livello di rete sottostante o ancora in transito sulla rete. Pertanto, memorizza temporaneamente in un buffer il carico utile del segmento ricevuto fuori sequenza per poterlo consegnare al processo applicativo solo dopo aver ricevuto e consegnato anche tutti i segmenti precedenti non ancora pervenuti passanti anch’essi per il buffer, aspettandone l’arrivo fino ad un tempo limite prefissato (time-out). All’istante di consegna del blocco ordinato di segmenti tutto il contenuto del buffer viene liberato. Dal punto di vista del processo applicativo, quindi, i dati arriveranno in ordine anche se la rete ha per qualsiasi motivo alterato questo ordine realizzando così il requisito della consegna ordinata dei dati. se il numero di sequenza ricevuto è inferiore a quello atteso, il segmento viene considerato un duplicato di uno già ricevuto e già inviato allo strato applicativo e dunque scartato. Questo permette di realizzare l’eliminazione dei duplicati di rete.
HTTP L’HyperText Transfer Protocol
L’HyperText Transfer Protocol (HTTP) (protocollo di trasferimento di un ipertesto) è usato come principale sistema per la trasmissione d’informazioni sul web ovvero in un’architettura tipica client-server. Le specifiche del protocollo sono gestite dal World Wide Web Consortium (W3C). Un server (computer) HTTP generalmente resta in ascolto delle richieste dei client sulla porta 80 usando il protocollo TCP a livello di trasporto. L’HTTP funziona su un meccanismo richiesta/risposta (client/server): il client esegue una richiesta e il server restituisce la risposta. Nell’uso comune il client corrisponde al browser ed il server al sito web. Vi sono quindi due tipi di messaggi HTTP: messaggi richiesta e messaggi risposta. HTTP differisce da altri protocolli di livello 7 come FTP, per il fatto che le connessioni vengono generalmente chiuse una volta che una particolare richiesta (o una serie di richieste correlate) è stata soddisfatta. Questo comportamento rende il protocollo HTTP ideale per il World Wide Web, in cui le pagine molto spesso contengono dei collegamenti (link) a pagine ospitate da altri server diminuendo così il numero di connessioni attive limitandole a quelle effettivamente necessarie con aumento quindi di efficienza (minor carico e occupazione) sia sul client che sul server. Talvolta però pone problemi agli sviluppatori di contenuti web, perché la natura senza stato (stateless) della sessione di navigazione costringe ad utilizzare dei metodi alternativi per conservare lo stato dell’utente, tipicamente basati sui cookie.
Messaggio di richiesta
Il messaggio di richiesta è composto di tre parti: riga di richiesta (request line); sezione header (informazioni aggiuntive); body (corpo del messaggio).
Riga di richiesta
La riga di richiesta è composta da metodo, URI e versione del protocollo. Il metodo di richiesta, per la versione 1.1, può essere uno dei seguenti: GET POST HEAD PUT DELETE TRACE OPTIONS CONNECT l’URI, uniform resource identifier (identificatore univoco di risorsa), indica l’oggetto della richiesta (ad esempio la pagina web che si intende ottenere). I metodi HTTP più comuni sono GET, HEAD e POST. Il metodo GET è usato per ottenere il contenuto della risorsa indicata come URI (come può essere il contenuto di una pagina HTML). HEAD è analogo a GET, ma restituisce solo i campi dell’header, (Testata della pagina non visibile all’utilizzatore) ad esempio per verificare la data di modifica del file. Una richiesta con metodo HEAD non prevede l’uso del body. (Corpo della pagina visibile all’utilizzatore) Il metodo POST è usato di norma per inviare informazioni al server (ad esempio i dati di un form o formulario per la richiesta di dati ). In questo caso l’URI indica che cosa si sta inviando e il body ne indica il contenuto.
Gli header della richiesta
Gli header di richiesta più comuni sono: Host: nome del server a cui si riferisce l’URL. È obbligatorio nelle richieste conformi HTTP/1.1 perché permette l’uso dei virtual host basati sui nomi. User-Agent: identificazione del tipo di client: tipo browser, produttore, versione… Messaggio di risposta
Il messaggio di risposta è di tipo testuale ed è composto da tre parti: riga di stato (status-line); sezione header; body (contenuto della risposta).
Riga di stato   La riga di stato riporta un codice a tre cifre catalogato nel seguente modo:

  • 1xx: Informational (messaggi informativi)
  • 2xx: Successful (la richiesta è stata soddisfatta)
  • 3xx: Redirection (non c’è risposta immediata, ma la richiesta è sensata e viene detto come ottenere la risposta)
  • 4xx: Client error (la richiesta non può essere soddisfatta perché sbagliata)
  • 5xx: Server error (la richiesta non può essere soddisfatta per un problema interno del server)

I codici di risposta più comuni sono:

  • 200 OK. Il server ha fornito correttamente il contenuto nella sezione body.
  • 301 Moved Permanently. La risorsa che abbiamo richiesto non è raggiungibile perché è stata spostata in modo permanente.
  • 302 Found. La risorsa è raggiungibile con un altro URI indicato nel header Location. Di norma i browser eseguono la richiesta all’URI indicato in modo automatico senza interazione dell’utente.
  • 400 Bad Request. La risorsa richiesta non è comprensibile al server.
  • 404 Not Found. La risorsa richiesta non è stata trovata e non se ne conosce l’ubicazione. Di solito avviene quando l’URI è stato indicato in modo incorretto, oppure è stato rimosso il contenuto dal server.
  • 500 Internal Server Error. Il server non è in grado di rispondere alla richiesta per un suo problema interno.
  • 505 HTTP Version Not Supported. La versione di http non è supportata.

Gli header della risposta

Gli header della risposta più comuni sono:

  • 1)Server Indica il tipo e la versione del server. Può essere visto come l’equivalente dell’header di richiesta User-Agent
  • 2)Content-Type. Indica il tipo di contenuto restituito. La codifica di tali tipi (detti Media type) è registrata presso lo IANA (Internet Assigned Number Authority ); essi sono detti tipi MIME (Multimedia Internet Mail Extensions), la cui codifica è descritta nel documento RFC 1521. Alcuni tipi usuali di tipi MIME incontrati in una risposta HTML sono: text/html Documento HTML text/plain Documento di testo non formattato text/xml Documento XML image/jpeg Immagine di formato JPEG
  • 3)Tipo di connessione Il client nel messaggio di richiesta può chiedere al server di effettuare una connessione persistente o non persistente. Se la connessione è persistente, il file e le occorrenze verranno trasferiti in un’unica connessione TCP. Se la connessione è non persistente, verrà stabilita una connessione TCP per il trasferimento del file richiesto e per ogni occorrenza trovata. Molti browser gestiscono le connessioni non persistenti aprendo diverse connessioni TCP in parallelo, guadagnando così una banda maggiore nel collegamento.

HTTPS :HyperText Transfer Protocol over Secure Socket Layer

HyperText Transfer Protocol over Secure Socket Layer (HTTPS) è il risultato dell’applicazione di un protocollo di crittografia asimmetrica al protocollo di trasferimento di ipertesti HTTP. Viene utilizzato per garantire trasferimenti riservati di dati nel web, in modo da impedire intercettazioni dei contenuti che potrebbero essere effettuati tramite la tecnica di attacco del man in the middle. Nei browser web, la URI (Uniform Resource Identifier) che si riferisce a tale tecnologia ha nome di schema https ed è in tutto e per tutto analoga alle URI http. Tuttavia, la porta di default impiegata non è la 80 come in HTTP, ma la 443, mentre (trasparentemente all’utente) tra il protocollo TCP e HTTP si interpone un livello di crittografia/autenticazione come il Secure Sockets Layer (SSL) o il Transport Layer Security (TLS). In pratica viene creato un canale di comunicazione criptato tra il client e il server attraverso uno scambio di certificati; una volta stabilito questo canale al suo interno viene utilizzato il protocollo HTTP per la comunicazione. Questo tipo di comunicazione garantisce che solamente il client e il server siano in grado di conoscere il contenuto della comunicazione. Questo sistema fu progettato dalla Netscape Communications Corporation che si occupa delle autenticazioni e delle comunicazioni crittografate ed è largamente usato nel World Wide Web per situazioni che richiedono particolari esigenze in ambito di sicurezza come per esempio il pagamento di transazioni online. In questo caso SSL garantisce la cifratura dei dati trasmessi e ricevuti su internet.

Cookies

 Piccole e importanti quantita’ di dati che ci permettono una facile navigazione del web

Riassunto: I cookies sono piccole stringhe di testo (informazioni) che il server e il browser si scambiano al fine di migliorare l’esperienza di navigazione da parte dell’utente Un cookie è un pacchetto di dati che il server chiede al browser di trattenere (salvandolo in memoria o su disco) e rendere disponibile durante le comunicazioni che seguiranno. Tecnicamente le informazioni contenute nei cookie vengono scambiate tramite header (“intestazioni”) durante le connessioni HTTP tra client e server, questo è il metodo più utilizzato per ovviare al problema dell’assenza di stato nel WEB. L’unico modo affidabile affinchè il server possa distinguere l’appartenenza delle molteplici richieste che gli giungono è che sia il navigatore a dire in qualche modo “Hei! Sono sempre io”: la funzione di un cookie è essenzialmente questa: se accettato diviene una sorta di “etichetta” che identificherà il client (il nostro computer di casa o smartphone) ad ogni successivo contatto. In informatica i cookie HTTP (più comunemente denominati Web cookie, tracking cookie o semplicemente cookie) sono righe di testo usate per eseguire autenticazioni automatiche, tracciatura di sessioni e memorizzazione di informazioni specifiche riguardanti gli utenti che accedono al server, come ad esempio siti web preferiti o, in caso di acquisti via internet, il contenuto dei loro “carrelli della spesa”. Nel dettaglio, sono stringhe di testo di piccola dimensione inviate da un server ad un Web client (di solito un browser) e poi rimandati indietro dal client al server (senza subire modifiche) ogni volta che il client accede alla stessa porzione dello stesso dominio web. Il termine “cookie” – letteralmente “biscotto” – deriva da magic cookie (biscotto magico), concetto noto in ambiente UNIX che ha ispirato sia l’idea che il nome dei cookie HTTP. Ogni dominio o sua porzione che viene visitata col browser può impostare dei cookie. Poiché una tipica pagina Internet, ad esempio quella di un giornale in rete, contiene oggetti che provengono da molti domini diversi e ognuno di essi può impostare cookie, è normale ospitare nel proprio browser molte centinaia di cookie.

Caratteristiche

Un cookie è un header aggiuntivo presente in una richiesta (Cookie:) o risposta (Set-cookie:) HTTP: nel caso il server voglia assegnare un cookie all’utente, lo aggiungerà tra gli header di risposta. Il client deve notare la presenza del cookie e memorizzarlo in un’area apposita (in genere, si utilizzava una directory dove ogni cookie veniva memorizzato in un file, Attualmente i cookies sono gestiti in maniera molto più evoluta, in un unico file, per esempio Mozilla e Chrome usano SQL – SQLite). Il cookie è composto da una stringa di testo arbitraria, una data di scadenza (oltre la quale non deve essere considerato valido) e un pattern per riconoscere i domini a cui rimandarlo. È possibile impostare più cookie in una sola risposta HTTP. Il browser client rimanderà il cookie, senza alcuna modifica, allegandolo a tutte le richieste HTTP che soddisfano il pattern, entro la data di scadenza. Il server può quindi scegliere di assegnare il cookie di nuovo, sovrascrivendo quello vecchio. Il reinvio tramite pattern permette a tutti i sottodomini di un dato dominio di ricevere il cookie, se così si vuole. Esistono diversi tipi di cookie, ma sostanzialmente lo scopo principale di un cookie è quello di far funzionare più efficacemente il Sito  web e di abilitarne determinate funzionalità. I cookie sono utilizzati per migliorare la navigazione globale dell’Utente. In particolare: Consentono di navigare in modo efficiente da una pagina all’altra del sito Web. Memorizzano il nome utente e le preferenze inserite. Consentono di evitare di inserire le stesse informazioni (come nome utente e password) più volte durante la visita. Misurano l’utilizzo dei servizi da parte degli Utenti, per ottimizzare l’esperienza di navigazione e i servizi stessi. Presentano informazioni pubblicitarie mirate in funzione degli interessi e del comportamento manifestato dall’Utente durante la navigazione. Esistono vari tipi di cookie. Qui di seguito sono riportati i tipi cookie che possono essere utilizzati in un Sito con una descrizione della finalità legata all’uso.

Cookies tecnici

I cookie di questo tipo sono necessari per il corretto funzionamento di alcune aree del sito. I cookie di questa categoria comprendono sia cookie persistenti che cookie di sessione. In assenza di tali cookie, il sito o alcune porzioni di esso potrebbero non funzionare correttamente. Pertanto, vengono sempre utilizzati, indipendentemente dalle preferenze dall’utente. I cookie di questa categoria vengono sempre inviati dal dominio.

Cookies analitici

I cookie di questo tipo vengono utilizzati per raccogliere informazioni sull’utilizzo del sito. Il Titolare usa tali informazioni per analisi statistiche, per migliorare il sito e semplificarne l’utilizzo, oltre che per monitorarne il corretto funzionamento. Questo tipo di cookie raccoglie informazioni in forma anonima sull’attività degli utenti nel sito e sul modo in cui sono arrivati al Sito e alle pagine visitate. I cookie di questa categoria vengono inviati dal Sito stesso o da domini di terze parti.

Cookies di rilevamento di terze parti

I cookie di questo tipo vengono utilizzati per raccogliere informazioni sull’utilizzo del sito Web da parte dei visitatori, le parole chiave usate per raggiungere il sito, i siti Web visitati e le origini del traffico da cui provengono i visitatori per le campagne di marketing. Il titolare può utilizzare tali informazioni per compilare rapporti e migliorare il Sito. I cookie raccolgono informazioni in forma anonima. I cookie di questo tipo vengono inviati dal Sito stesso o da domini di terze parti.

Cookies per l’integrazione di funzionalità di terze parti

I cookie di questo tipo vengono utilizzati per integrare funzionalità di terze parti nel Sito (ad esempio, moduli per i commenti o icone di social network che consentono ai visitatori di condividere il contenuto del sito). I cookie di questa categoria possono essere inviati dai domini dei siti partner o che comunque offrono le funzionalità presenti nel sito. Il Titolare del sito web o del dominio non è tenuto a richiedere il consenso dell’utente per i cookie tecnici, poiché questi sono strettamente necessari per la fornitura del servizio. Per le altre tipologie di cookie il consenso può essere espresso dall’Utente, conformemente alla normativa vigente, mediante specifiche configurazioni del browser e di programmi informatici o di dispositivi che siano di facile e chiara utilizzabilità per l’Utente. Il Titolare ricorda all’Utente che è possibile modificare le preferenze relative ai cookie in qualsiasi momento. È anche possibile disabilitare in qualsiasi momento i cookie dal browser , ma questa operazione potrebbe impedire all’Utente di utilizzare alcune parti del Sito.

Lascia un Commento