Internet e World Wide Web

Lezione 05 del corso di Abilità Informatiche (2024/2025)

Sebastian Barzaghi | sebastian.barzaghi2@unibo.it | https://orcid.org/0000-0002-0799-1527 | https://www.unibo.it/sitoweb/sebastian.barzaghi2/

HTTP

Cos’è un protocollo?

Fonte: Di almani ماني su Unsplash.

Per comunicare, gli elementi all’interno di un sistema devono seguire regole comuni.

Un protocollo è un insieme di regole e di messaggi che governano la comunicazione tra due entità.

La definizione di ogni protocollo consiste nel fornire un insieme di regole non ambigue, definendo i messaggi che possono essere scambiati tra entità, il loro significato e le azioni da intraprendere in ogni situazione (es. semaforo).

Cos’è un protocollo?

Un protocollo deve essere espresso in un particolare linguaggio, un insieme di segnali e/o simboli comprensibili alle entità al fine di avviare e gestire la comunicazione.

Un linguaggio di questo tipo deve avere:

  • Una sintassi da seguire per costruire i messaggi;
  • Delle regole interpretative del messaggio, per definire la semantica dei messaggi;
  • Dei meccanismi per sincronizzare la comunicazione;
  • Dei meccanismi per correggere e/o gestire eventuali errori che possono intercorrere nello scambio dei messaggi.

Il protocollo HTTP

Fonte: https://www.ionos.it/digitalguide/hosting/tecniche-hosting/protocollo-http/.

Protocollo di comunicazione utilizzato per il trasferimento di dati tra un client e un server su una rete.

HTTP standardizza come client e server comunicano tramite il metodo richiesta-risposta, in cui il client invia una richiesta al server e il server risponde con una risposta contenente i dati richiesti.

Tra client e server esistono proxy

Fonte: Di H2g2bob - Opera propria basata su: Proxy concept en.svg, CC0, Collegamento.

Tra il client e il server ci sono numerosi intermediari, collettivamente chiamati proxy, che eseguono diverse operazioni per migliorare le prestazioni e la sicurezza (gateway, cache, ecc.).

Ricordiamoci che esistono due tipi di messaggi

Richiesta: messaggio mandato dal client per richiedere una determinata azione da parte del server;

Risposta: messaggio mandato dal server come risposta alla richiesta del client.

La struttura di un messaggio secondo HTTP

  • Una testa composta da:
    • Una riga iniziale (di richiesta o di risposta);
    • Un insieme di intestazioni opzionali (o header) che specificano la richiesta o descrivono il corpo del messaggio;
  • Una riga vuota che separa la testa dal corpo del messaggio;
  • Un corpo opzionale (o body o payload) con il contenuto del messaggio.

La struttura di un messaggio HTTP

Fonte: https://developer.mozilla.org/en-US/docs/Web/HTTP/Messagesg.

La richiesta HTTP

Fonte: https://developer.mozilla.org/en-US/docs/Web/HTTP/Overview.

Testa: una riga di richiesta (contenente il metodo, il percorso e la versione di HTTP utilizzata) e le intestazioni (headers) contenenti varie informazioni (es. nome del dominio del server, lingua del messaggio, ecc.).

Un'eventuale riga vuota (nell'immagine non c'è).

Un eventuale corpo (nell'immagine non c'è).

Il metodo GET

GET /contact HTTP/1.1
Host: example.com
User-Agent: curl/8.6.0
Accept: */*

Permette di richiedere informazioni sulla risorsa definita dall’URL specificato.

Il metodo POST

POST /contact HTTP/1.1
Host: example.com
User-Agent: curl/8.6.0
Accept: application/json
Content-Type: application/json
Content-Length: 74

{
"name": "John Doe",
"email": "john.doe@example.com",
"message": "I'd like to get in touch regarding your services."
}

POST permette di creare sul server Web la risorsa specificata dall’URL utilizzato e di associare informazioni incluse nella richiesta.

Il metodo DELETE

DELETE /contact/12345 HTTP/1.1
Host: example.com
User-Agent: curl/8.6.0
Accept: application/json
Authorization: Bearer your-access-token

DELETE permette di rimuovere dal server web contattato tutte le informazioni relative alla risorsa specificata nella richiesta tramite l’URL.

Il metodo PUT

PUT /contact/12345 HTTP/1.1
Host: example.com
User-Agent: curl/8.6.0
Accept: application/json
Content-Type: application/json
Content-Length: 89

{
"name": "John Doe",
"email": "john.doe@example.com",
"message": "I'd like to update my contact information with new details."
}

PUT permette di specificare informazioni aggiuntive, incluse nella richiesta, ad una risorsa esistente che già risiede sul server.

La risposta HTTP

Fonte: https://developer.mozilla.org/en-US/docs/Web/HTTP/Overview.

Tutte le risposte, oltre che a contenere metadati nell’header (e talvolta dati) nel corpo, specificano anche un codice di stato (un numero di tre cifre che specifica la classe di risposta.

I codici di stato: 1XX

HTTP/1.1 100 Continue
Date: Sat, 17 Feb 2025 10:52:00 GMT
Server: Apache/2.4.41 (Unix)
Content-Length: 0

Risposta informativa preliminare o di diagnostica (molto raro, di solito non usato).

I codici di stato: 2XX

HTTP/1.1 200 OK
Date: Sat, 17 Feb 2025 10:53:00 GMT
Server: Apache/2.4.41 (Unix)
Content-Type: application/json
Content-Length: 123

{
"status": "success",
"message": "Request processed successfully."
}

La richiesta è stata ricevuta, compresa, accettata e elaborata con successo dal server.

I codici di stato: 3XX

HTTP/1.1 301 Moved Permanently
Location: https://www.example.com/new-contact
Date: Sat, 17 Feb 2025 10:55:00 GMT
Server: Apache/2.4.41 (Unix)
Content-Length: 0

Il client deve effettuare ulteriori azioni per completare la richiesta.

I codici di stato: 4XX

HTTP/1.1 404 Not Found
Date: Sat, 17 Feb 2025 10:57:00 GMT
Server: Apache/2.4.41 (Unix)
Content-Type: application/json
Content-Length: 85

{
"status": "error",
"message": "Not found. The requested resource could not be found on this server."
}

C'è stato un errore che dipende dalla richiesta del client (spesso derivante da errori nell'URL della richiesta).

I codici di stato: 5XX

HTTP/1.1 500 Internal Server Error
Date: Sat, 17 Feb 2025 11:00:00 GMT
Server: Apache/2.4.41 (Unix)
Content-Type: application/json
Content-Length: 95

{
"status": "error",
"message": "An unexpected error occurred. Please try again later."
}

C'è stato un errore che dipende dal server durante il tentativo di elaborazione della richiesta del client.

Le tecnologie Web

Pagine e siti Web

Fonte: Di Lulzmango - en:Web_page, CC BY-SA 4.0, Link.

Una pagina Web è un documento ipertestuale pubblicato sul World Wide Web e visualizzato dall’utente tramite un client (browser, app, ecc.).

Quindi, un sito Web consiste in un insieme di pagine Web (più altri file correlati) che il client richiede ad uno o più server per elaborarli e generarne la visualizzazione sullo schermo del dispositivo.

La marcatura del testo

Fonte: https://basic-inf.github.io/2024-2025/chapters/08.pdf.

Annotazione del testo per definire esplicitamente i ruoli strutturali e semantici delle parti di cui è costituito.

La marcatura del testo

Fonte: https://basic-inf.github.io/2024-2025/chapters/08.pdf.

La marcatura trasforma il testo in una struttura ad albero.

La marcatura del testo

Fonte: propria.

Diversi linguaggi di marcatura (es. SGML, XML).

Metalinguaggi che definiscono regole sintattiche per specificare la marcatura, ma non impongono alcun vocabolario.

La marcatura: l’elemento

Fonte: https://basic-inf.github.io/2024-2025/chapters/08.pdf.

Termine informativo che esprime la semantica della porzione di testo a cui si riferisce.

La marcatura: l’attributo

Fonte: https://basic-inf.github.io/2024-2025/chapters/08.pdf.

Informazione aggiuntiva che si riferisce all’elemento a cui viene assegnata, sotto forma di coppia chiave-valore inserita nel marcatore di apertura.

Marcatura di un pezzo di testo: esempio

<book language="english">  
  <chapter>  
    <paragraph>  
      Alice was beginning to get very tired of sitting by her  
      sister on the bank, and of having nothing to do: once or  
      twice she had peeped into the book her sister was  
      reading, but it had no pictures or conversations in it,  
      <quotation>“and what is the use of a book,”</quotation>  
      thought Alice, <quotation>“without pictures or  
      conversations?”</quotation>  
    </paragraph>  
  </chapter>  
</book>  

Introduzione a HTML

Linguaggio che segue una sintassi simile a XML e che inoltre utilizza uno specifico vocabolario costituito da elementi ed attributi per identificare i vari ruoli strutturali e semantici di una pagina Web.

HTML può essere semplicissimo

Fonte: https://www.w3schools.com/html/html_editors.asp.

HTML può essere semplicissimo

Fonte: https://www.w3schools.com/html/html_editors.asp.

Struttura base di un documento HTML

Fonte: https://www.codewithharry.com/tutorial/html-page-structure/.

!DOCTYPE: informazione per il client riguardante il tipo di documento che si deve aspettare

Struttura base di un documento HTML

Fonte: https://www.codewithharry.com/tutorial/html-page-structure/.

html: inizio e fine del documento HTML.

Struttura base di un documento HTML

Fonte: https://www.codewithharry.com/tutorial/html-page-structure/.

head: sezione di intestazione del documento, contenente metadati e altre informazioni tecniche (invisibile all'utente).

Struttura base di un documento HTML

Fonte: https://www.codewithharry.com/tutorial/html-page-structure/.

body: sezione di contenuto del documento, contenente titoli, paragrafi, immagini, video, ecc. (tutto ciò che è visibile all'utente).

Cascading Style Sheets

Fonte: Di Rudloff - CSS3 and HTML5 logos and wordmarks.svg, CC BY 3.0, Link.

Linguaggio per definire lo stile delle pagine Web.

Separazione tra contenuto e la sua rappresentazione: https://csszengarden.com/.

JavaScript

Fonte: Di JavaScript Corp. - The JavaScript foundation, CC BY-SA 4.0, Link.

Linguaggio di programmazione usato per aggiungere interattività alle pagine Web.

Esecuzione di determinate azioni in seguito allo scatenarsi di specifici eventi.

Le tecnologie di rete

Come fa il client a trovare il server?

URL e HTTP forniscono le istruzioni necessarie ad ottenere una rappresentazione della risorsa cercata (ovvero, una copia della pagina HTML che visualizziamo).

Prendiamo un URL come questo: http://<dominio>/<percorso>?<parametri>#<ancora>:

  • Il client richiede al server /<percorso>?<parametri>#<ancora>;
  • Il server restituisce un messaggio con la copia della risorsa richiesta.

Ma manca il punto 1:

  • Il client cerca uno degli indirizzi IP del dominio usando il DNS.

L’indirizzo IP

Fonte: https://www.giovannicirillo.it/definizione-indirizzo-ip/.

Pur usando l’URL per accedere ad una risorsa, in realtà il server web che la ospita non è direttamente raggiungibile usando il suo nome ma attraverso un indirizzo specifico.

Un indirizzo IP è un identificativo numerico assegnato a ogni dispositivo connesso a Internet.

L’indirizzo IP

Fonte: https://www.giovannicirillo.it/definizione-indirizzo-ip/.

Una serie di numeri separati da punti, utilizzata per instradare il traffico di rete tra i dispositivi.

Essenziali per la comunicazione su Internet, poiché consentono ai dispositivi di identificarsi e di scambiarsi informazioni tra di loro.

Il Domain Name System

Fonte: https://www.geeksforgeeks.org/working-of-domain-name-system-dns-server/.

Quando un utente inserisce un URL o clicca su un link, il browser deve scoprire l'indirizzo IP associato a quel dominio per stabilire una connessione.

Il DNS è un sistema di nomenclatura utilizzato per tradurre i nomi di dominio degli indirizzi Web in indirizzi IP numerici.

Il Domain Name System

Fonte: https://www.geeksforgeeks.org/working-of-domain-name-system-dns-server/.

In pratica, è come un elenco telefonico per Internet, dove i nomi di dominio come "google.com" vengono tradotti in indirizzi IP numerici come "172.217.168.78" che i computer possono usare per connettersi ai server Web corrispondenti.

Permette agli utenti di trovare i siti web desiderati utilizzando nomi di dominio, invece di usare gli indirizzi IP numerici.

Il Transmission Control Protocol

Fonte: https://basic-inf.github.io/2024-2025/chapters/06.pdf.

Un protocollo che garantisce una trasmissione affidabile dei dati attraverso una rete.

Basato sulla commutazione di pacchetto: suddivisione dei dati in pacchetti, aggiunta di un'intestazione che contiene informazioni sui dati, e garanzia che i pacchetti siano consegnati senza errori e nell'ordine corretto.

Il Transmission Control Protocol

Fonte: https://basic-inf.github.io/2024-2025/chapters/06.pdf.

Gli indirizzi IP vengono utilizzati per instradare i pacchetti di dati attraverso la rete da un dispositivo all’altro.

Insieme, TCP e IP costituiscono il protocollo TCP/IP, che è diventato lo standard de facto per la comunicazione di rete su Internet.

Ricapitolando

Il Web è una strada, e noi dobbiamo andare ad un negozio

Fonte: propria.

Ad un’estremità c’è il client (casa), all’altra il server (un negozio).

Durante la navigazione tramite browser, digitare un URL o cliccare su un link equivale a camminare dalla casa verso il negozio.

Chiediamo l’indirizzo

Fonte: propria.

Il browser si collega al server DNS e trova l'indirizzo reale del server su cui risiede il sito Web.

In pratica, cerchiamo e troviamo l'indirizzo del negozio.

Troviamo l’indirizzo

Fonte: propria.

Il browser si collega al server DNS e trova l'indirizzo reale del server su cui risiede il sito Web.

In pratica, cerchiamo e troviamo l'indirizzo del negozio.

Trovato il negozio, facciamo il nostro ordine

Fonte: propria.

l browser invia un messaggio di richiesta HTTP al server, chiedendogli di inviare una copia del sito Web al client.

In pratica, una volta arrivati al negozio, ordiniamo quello che ci serve.

Il nostro ordine va a buon fine e ci vengono consegnati i prodotti

Fonte: propria.

Se il server approva la richiesta del client, invia al client un messaggio "200 OK", che significa "Certo, puoi guardare quel sito web! Eccolo qui", e inizia quindi a inviare i file del sito Web al browser sotto forma di pacchetti di dati.

In pratica, il negozio ci consegna i prodotti che abbiamo ordinato, e noi li riportiamo a casa.

Durante tutto questo

Fonte: propria.

Il messaggio e tutti i dati in esso contenuti, inviati tra il client e il server, vengono trasmessi attraverso la connessione Internet utilizzando il protocollo TCP/IP.

Infine, ritorniamo a casa

Fonte: propria.

Il browser assembla i pacchetti in una pagina Web completa e la visualizza a schermo.

In pratica, ritorni a casa con i prodotti in mano, pronti per essere usati.

Fine

Lezione 05 del corso di Abilità Informatiche (2024/2025)

Sebastian Barzaghi | sebastian.barzaghi2@unibo.it | https://orcid.org/0000-0002-0799-1527 | https://www.unibo.it/sitoweb/sebastian.barzaghi2/