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.txt

    • ftp://ftp.is.co.za/rfc/rfc1808.txt

    • https://purl.oclc.org/OCLC/PURL/FAQ

    • file:///Documenti/corsi/tw/slides/l1.html

    • mailto:aserra@scuolemalpighi.it

    • data: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.