La rete è costituita da un insieme di più dispositivi connessi tra di loro con lo scopo di condividere informazioni. Affinché più dispositivi riescano a comunicare nel modo corretto devono rispettare determinate regole stabilite da un protocollo (insieme di regole). Un protocollo descrive:

  • Il formato dei messaggi scambiati;
  • Il modo in cui i dispositivi si scambiano i messaggi;

Solitamente la comunicazione in rete avviene tramite un’architettura client-server, in cui il client emette la richiesta al server e questo eroga il servizio richiesto.

I vari servizi offerti dal server sono distinti da un codice detto numero di porta. Inoltre, per ogni tipo di servizio vi è un protocollo specifico che ne gestisce il funzionamento (ad esempio porta 80 per server HTTP).

Cos’è HTTP

Nel caso di interesse, il protocollo HTTP (HyperText Transfer Protocol) è usato per la trasmissione di informazioni sul web, nella maggior parte dei casi per il trasferimento di pagine HTML.

Un messaggio di richiesta HTTP comprende:

  • Riga di richiesta: Metodo, URL, versione del protocollo;
  • Sezione header;
  • Body.

Invece, un messaggio di risposta è costituito da:

  • Riga di stato: Versione del protocollo, il codice di stato e l’informazione di stato in forma testuale;
  • Sezione header;
  • Body (in questo caso rappresenta il contenuto della risposta).

Metodi HTTP

Esistono vari metodi a disposizione del client per emettere una richiesta ad un server HTTP, tra i più utilizzati ci sono GET, HEAD, POST, PUT, DELETE.

Una richiesta di tipo GET è composta solo dall’header senza alcun body, infatti per comunicare eventuali parametri al server vengono inseriti al termine dell’URL della risorsa preceduti da un punto interrogativo.

Esempio: http://www.miosito.it/index.php?id=1

Le richieste di HEAD sono uguali a quelle di tipo GET in quanto l’unica differenza tra i due metodi è solo il messaggio di risposta. Infatti, HEAD non restituisce il corpo del messaggio, ma solo informazioni utili per debugging o controlli.

Il metodo post viene spesso utilizzato in presenza di moduli come i form per comunicare i dati al server senza rendere visibile il processo all’utente come avviene con GET.

I metodi PUT e DELETE sono utilizzati rispettivamente per allocare o rimuovere una risorsa sul server.

Codici di stato HTTP

Ad ogni richiesta il server restituisce un messaggio di risposta che in base al successo dell’operazione può avere diversi codici di stato riportati in tabella.

  • 1xxInformational (messaggi informativi);
  • 2xxSuccessful (richiesta soddisfatta);
  • 3xx – Redirection (la risorsa non si trova all’indirizzo indicato ma viene detto dove trovarla);
  • 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).

Comunicazione HTTP stateless

La caratteristica principale del protocollo HTTP è di essere stateless, cioè privo di stato e quindi ogni volta che una richiesta viene esaudita la connessione tra client e server viene chiusa.

Tutto ciò è un problema per chi sviluppa applicazioni web, ma dall’altro lato è lecito in quanto le pagine web sono spesso piene di link e l’utente si potrebbe spostare in tempi brevi da una pagina all’altra richiedendo l’apertura di un numero elevato di connessioni.

Categorie: Informatica