World Wide Web
Cos'è il World Wide Web?
Definizione: Il World Wide Web (WWW) è un sistema ipertestuale di documenti multimediali, distribuito e scalato su Internet. È un insieme di contenuti testuali progettati per essere "consumati" sia da esseri umani che da applicazioni, ed è anche una knowledge-base su cui costruire servizi sofisticati per gli utenti finali.
Internet
Definizione: Internet è una rete di elaboratori a estensione mondiale, che permette di mettere a disposizione le informazioni contenute in ciascun calcolatore di altri utenti che possono accedere alla rete in qualsiasi località del mondo.
Sistema Distribuito
Definizione: Un sistema distribuito è una tipologia di sistema informatico costituito da un insieme di processi interconnessi tra loro in cui le comunicazioni avvengono tramite lo scambio di opportuni messaggi.
Scalabilità
Definizione: In ingegneria del software, nelle telecomunicazioni e in informatica, scalabilità indica la capacità di un sistema di aumentare o diminuire di scala in funzione delle necessità e disponibilità. Un sistema che gode di questa proprietà è detto scalabile.
Ipertesto
Definizione: L'iper testo è un insieme di documenti messi in relazione tra loro tramite parole chiave. Si può vedere come una rete con singoli documenti che costituiscono i nodi. La lettura può essere non lineare poiché qualsiasi documento può essere "il successivo" a seconda della scelta del lettore.
Architettura Client-Server
Definizione: Il World Wide Web si basa su un'architettura client-server. Le comunicazioni avvengono nel seguente modo:
Il client chiede le risorse al server.
Il server è in attesa di richieste e, ricevuta una richiesta di risorsa, la restituisce al client.
Entità intermedie (es. proxy) possono intervenire nel flusso di comunicazione.
Browser
Definizione: Un browser è un client Web, ovvero un'applicazione in grado di visualizzare documenti e interagire con l’utente durante la navigazione.
Interfacce: Il client non ha necessariamente un’interfaccia grafica; può avere interfacce vocali o può essere un’applicazione senza interfaccia che processa e combina dati ricevuti.
Protocolli e Standard Fondamentali del WWW
Protocolli/linguaggi fondamentali:
URI (Uniform Resource Identifier): standard per identificare risorse di rete all'interno di un documento ipertestuale.
HTTP (HyperText Transfer Protocol): protocollo di comunicazione stateless e client-server per l’accesso a risorse ipertestuali.
HTML (HyperText Markup Language): linguaggio per la marcatura di documenti ipertestuali, basato su SGML e XML, che descrive struttura e componenti di un documento, inclusi oggetti multimediali e link.
Stateless
Definizione: Un server stateless tratta ogni richiesta come una transazione indipendente, scorrelata da richieste precedenti.
Ulteriori Standard
CSS: Linguaggio di presentazione per decidere aspetti tipografici e formattazione dei contenuti multimediali.
JavaScript: Linguaggio di programmazione utilizzato per rendere i documenti HTML interattivi.
JSON (JavaScript Object Notation): formato di scambio dati leggero e facilmente leggibile.
URI
Definizione: Gli URI sono usati nel WWW per definire nomi e indirizzi delle risorse, permettendo al WWW di identificare risorse accessibili tramite HTTP.
Formati degli URI: Comprendono:
Uniform Resource Locator (URL): sintassi che contiene informazioni per accedere a una risorsa (es. indirizzo di rete).
Uniform Resource Names (URN): etichetta permanente e non ripudiabile per una risorsa.
Risorse
Definizione: Una risorsa non è necessariamente un file, ma può essere:
In un database.
Il risultato dell’elaborazione di un’applicazione.
Una risorsa non elettronica (es. nome di un account Twitter).
Struttura degli URI
Formula: URI = schema : [// authority] path [? query] [# fragment]
Esempi di URI:
http://www.ietf.org/rfc/rfc2396.txtftp://ftp.is.co.za/rfc/rfc1808.txthttps://purl.oclc.org/OCLC/PURL/FAQfile:///Documenti/corsi/tw/slides/l1.htmlmailto:aserra@scuolemalpighi.itdata:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJR U5ErkJggg==
Componenti degli URI
Schema e Authority: Lo schema identifica il protocollo necessario per recuperare la risorsa. L'authority include:
userinfo @
host (nome di dominio o IP)
port (opzionale, standard per HTTP è la porta 80).
Porta: Strumento per permettere un numero maggiore di connessioni simultanee a livello di trasporto.
Path
Definizione: Sezione dell’URI che identifica la risorsa all’interno dello spazio di nomi, divisa in blocchi separati da slash “/”.
Query e Fragment
Query: Indica specificazioni addizionali della risorsa, comunemente utilizzata in richieste dinamiche (es. motori di ricerca).
Fragment: Identifica risorse secondarie, utilizzata nei documenti HTML per sezioni specifiche della pagina.
HTTP
Definizione: HTTP è un protocollo client-server generico e stateless utilizzato per lo scambio di documenti Web e applicazioni distribuite.
Client-Server
Definizione: Il client avvia la connessione e richiede servizi. Il server accetta la connessione, identifica il richiedente e risponde.
Generico
Definizione: HTTP è indipendente dal formato dei dati, può funzionare per documenti HTML e altri tipi di dati.
Metodologie di Connessione
Non-Pipeline HTTP: Invia un messaggio e attende la risposta prima di inviare il successivo.
Pipelined HTTP: Invia più messaggi senza attendere la risposta, ricevendo le risposte nello stesso ordine d’invio.
Multiplexed HTTP: Consente di inviare più messaggi senza attendere le risposte, restituendo risposte in ordine sparso.
Richieste HTTP
Composizione:
Method: Azione richiesta dal client.
URI: Identificativo della risorsa.
Version: Versione di HTTP.
Header: Informazioni aggiuntive.
Body: Corpo del messaggio.
Esempio di Richiesta
Esempio:
GET /beta.html HTTP/1.1
Referer: http://www.alpha.com/
Connection: Keep-Alive
User-Agent: Mozilla/4.61 (Macintosh; I; PPC)
Host: www.alpha.com:80
Accept: image/gif, image/jpeg, image/png, */*
Accept-Encoding: gzip
Accept-Language: en
Accept-Charset: iso-8859-1,*,utf-8
Metodi Utilizzati: I più comuni sono GET e POST:
GET: Sicuro e idempotente, non influisce sull'applicazione.
POST: Usato per trasmettere informazioni al server, non è sicuro né idempotente.
Risposte HTTP
Composizione:
Status Code: Indica il risultato della richiesta.
Version: Versione di HTTP usato.
Header: Come nelle richieste.
Body: Corpo del messaggio.
Esempio di Risposta
GET /index.html HTTP/1.1
Host: www.scuolemalpighi.it:80
HTTP/1.1 200 OK
Date: Fri, 26 Nov 2007 11:46:53 GMT
Server: Apache/1.3.3 (Unix)
Last-Modified: Mon, 12 Jul 2007 12:55:37 GMT
Accept-Ranges: bytes
Content-Length: 3357
Content-Type: text/html
<HTML> ... </HTML>
Status Code: È un numero a tre cifre. La prima cifra indica la classe della risposta:
1xx: Informational; risposta temporanea.
2xx: Successful; la richiesta è andata a buon fine.
3xx: Redirection; azioni aggiuntive necessarie da parte del client.
4xx: Client error; errori da parte del client.
5xx: Server error; problemi interni del server.
Esempi di Status Code:
100 Continue: Cliente non ha ancora mandato il body.
200 Ok: Successo nel GET.
201 Created: Successo nel PUT.
301 Moved Permanently: URL non valido, server conosce la nuova posizione.
400 Bad Request: Errore sintattico nella richiesta.
401 Unauthorized: Mancanza di autorizzazione.
403 Forbidden: Richiesta non autorizzabile.
404 Not Found: URL errato.
500 Internal Server Error: Tipicamente errore nel codice server-side.