Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Introduzione all'HTTP: protocollo di comunicazione client-server, Guide, Progetti e Ricerche di Sistemi di reti

Una introduzione all'HTTP (Hypertext Transfer Protocol), un protocollo di livello 7 che consente la comunicazione tra client e server attraverso messaggi di richiesta e risposta. L'HTTP, inventato nel 1991 da Tim Berners-Lee, offre maggiore efficienza rispetto al precedentemente usato FTP poichè ogni connessione inizia alla richiesta e termina alla risposta. Inoltre, l'HTTP è stateless, significa che ogni comunicazione è indipendente dalle precedenti e dalle successive. Il protocollo comunica attraverso la porta 80 o 8080 e utilizza il protocollo TCP per garantire una comunicazione affidabile.

Tipologia: Guide, Progetti e Ricerche

2020/2021

Caricato il 03/03/2022

davide-petillo
davide-petillo 🇮🇹

5 documenti

1 / 12

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Protocolli di
rete:
HTTP
Davide Petillo, Tiziano Bonfanti
05/2021
pf3
pf4
pf5
pf8
pf9
pfa

Anteprima parziale del testo

Scarica Introduzione all'HTTP: protocollo di comunicazione client-server e più Guide, Progetti e Ricerche in PDF di Sistemi di reti solo su Docsity!

Protocolli di

rete:

HTTP

Davide Petillo, Tiziano Bonfanti

Sommario

  • 1 Introduzione
  • 2 Messaggi di richiesta
    • 2.1 Request line
    • 2.2 Header
    • 2.3 Body
  • 3 Messaggi di risposta
    • 3.1 Status line
    • 3.2 Header
    • 3.3 Body
  • 4 Format di un indirizzo URL
    • 4.1 Scheme
    • 4.2 Userinfo
    • 4.3 Host
    • 4.4 Port
    • 4.5 Path
    • 4.6 Query
    • 4.7 Fragment
  • 5 HTTPS
    • 5.1 Protocolli di criptazione
    • 5.2 Vantaggi e svantaggi

2 Messaggi di richiesta

I messaggi di richiesta sono quelli solitamente inviati dal client al server, per l’esecuzione di certe operazioni. Questi messaggi hanno una formattazione speciale suddivisa in 3 campi:

  • request line
  • header
  • body

2.1 Request line

La request line è la prima riga del messaggio di richiesta ed è composta da 3 campi. Il primo campo indica il tipo di richiesta che stiamo effettuando. I più famosi sono: GET, POST, HEAD. Il secondo campo indica l’URI, cioè l’oggetto della richiesta, per esempio la pagina web che vogliamo ottenere. Il terzo campo indica infine la versione del protocollo.

Esempio:

GET /index.html HTTP/1.

Le varie richieste che possiamo hanno un loro significato: La richiesta GET è una richiesta che chiede richiede al server dati, la richiesta HEAD è simile ma richiede i soli header della risposta, infine la richiesta POST serve per l’invio di dati al server.

2.2 Header

Negli header sono presenti varie informazioni. Per esempio è riportato il nome del server a cui si riferisce l’URL, un identificatore del tipo di client, lo User-Agent (tipo del browser, versione, ...). Il campo connection che ci dice se chiudere o mantenere la connessione. Il campo Accept definisce i tipi di dato accettati come risposta dal server. Poi possiamo trovare i cookie relativi al sito a cui si sta facendo la richiesta. Nel caso ci fosse un body saranno presente anche i campi content-length e content- type.

Connection: close date: Fri, 28 May 2021 15:53:20 GMT Host: www.google.com Accept: text/html, image/jpeg, image/png, text/, image/, / Content-length: 5123 Content-type: text/html; charset=UTF-

2.3 Body

Nel caso di richiesta POST per esempio dobbiamo inviare dati al server, e per cui avremo anche la sezione body nella nostra richiesta. Questa sezione è divisa da una linea vuota dagli headers e contiene i dati da inviare al server.

Per cui una richiesta HTTP sarà di questo tipo:

POST /login HTTP/1. Connection: keep-alive date: Fri, 28 May 2021 15:53:20 GMT Host: www.amazon.com Accept: text/html, image/jpeg, image/png, text/, image/, / Content-length: 32 Content-type: text/*; charset=UTF-

un possibile input dell’utente

Server: Apache/2.2.11 (unix) date: Fri, 28 May 2021 15:53:20 GMT Content-length: 5123 Content-type: text/jpeg Content-Encoding: gzip

3.3 Body

Anche in questo caso il body segue agli header dopo una linea vuota.

Per cui una richiesta HTTP sarà di questo tipo:

Server: Apache/2.2.11 (unix) date: Fri, 28 May 2021 15:53:20 GMT Content-length: 5123 Content-type: text/jpeg Content-Encoding: gzip

4 Format di un indirizzo URL

La sintassi di un URL è ben specificata ed è composta da più sezioni.

4.1 Scheme

La prima sezione è lo schema è serve al browser per capire quale protocollo sti- amo utilizzando. Infatti oltre ad "http://" o "https://" ricordiamo anche "C://" e "file://" per accedere al filesystem rispettivamente in Windows e in Linux.

4.2 Userinfo

Successivamente si inserisce "://" e a seguire, nel caso ci fossero, i dati dell’utente col quale vogliamo accedere al servizio (solitamente questa parte dell’URL non è pre- sente). Questo campo è del tipo "user:password". Dopo questo campo è necessaria una "@".

4.3 Host

Successivamente dobbiamo inserire l’indirizzo dell’host. L’indirizzo può essere in- serito sia come indirizzo IP sia come DNS. 217.32.0.234 oppure www.google.com.

4.4 Port

Anche il campo successivo solitamente non è presente e serve a indicare la porta del server a cui vogliamo connetterci, quando usiamo http la porta di default è la porta

  1. Per inserire questo campo, dopo il campo host dobbiamo inserire i ":".

4.5 Path

Dopo ciò c’è il campo path, cioè il percorso alla risorsa che vogliamo ottenere. Questo path non necessariamente indica il path preciso nel filesystem del server fino alla risorsa. Infatti il path è gestito dal server in base a come è stato programmato per farlo.

5 HTTPS

A differenza dell’HTTP ove tutte le comunicazioni avvengono “in chiaro” senza alcun genere di sicurezza, nell’HTTPS viene creato un canale di comunicazione criptato attraverso lo scambio di certificati in modo da garantire l’identità delle parti e la riservatezza dei dati (infatti HTTPS sta per HTTP Secured). L’HTTPS viene di norma utilizzato in tutte quelle situazioni in cui è richiesto un certo grado di sicurezza come transazioni elettroniche, isti online e lettura di messaggi di posta elettronica. Inoltre la porta utilizzata dal protocollo HTTPS non è più la porta 80 (o la 8080), ma bensì la porta 443.

5.1 Protocolli di criptazione

I protocolli di criptazione usati dall’HTTPS sono principalmente l’SSL (Secure Socket Layer) e il TLS(Transport Layer Security). Il primo è ormai considerato superato quindi sarebbe bene, in generale, utilizzare il TSL. Questi sistemi di crip- tazione sono a chiave asimmetrica, questo significa che la chiave con cui criptiamo qualcosa (chiave pubblica), non è la stessa con cui decriptiamo (chiave privata). Infatti questo permette al sito web di dare a qualsiasi client la sua chiave pubblica, ma di mantenere segreta la chiave privata (usata appunto per decriptare). Tut- tavia queste chiavi servono per la creazione di altre chiavi relative alla sessione di comunicazione. Quindi è come avere due livelli di sicurezza. Per autenticare un server sono distribuiti dei certificati dalla CA (Certification Authority). Questi certificati sono firmati dalle CA e ciò permette al client che comunica col server di "fidarsi" di lui. Esempio: Quando un browser visita un sito che presenta un certificato, il browser controlla la CA che ha firmato quel certificato: se la CA che ha firmato risulta una CA nota e attendibile, il certificato viene dichiarato attendibile, altrimenti l’utente viene avvisato in modo palese del rischio che starebbe per correre.

5.2 Vantaggi e svantaggi

Vantaggi

  • Tariffe del certificato: puoi ottenere un certificato SSL gratuito, ma per molti motivi, questo non è consigliato. A seconda del tipo di certificato ac- quistato, il prezzo varierà notevolmente. Tuttavia, se si considera l’aumento del livello di sicurezza, il costo non è molto elevato per la maggior parte dei siti Web.
  • Modalità mista: se la tua implementazione SSL non è configurata corret- tamente e hai ancora alcuni file serviti su HTTP invece che su HTTPS, i visitatori riceveranno un messaggio di avviso nel loro browser che li informa che alcuni dati non sono protetti. Ciò potrebbe confondere alcuni visitatori del sito web.
  • Memorizzazione nella cache del proxy: un altro possibile problema è se la configurazione del sistema di memorizzazione nella cache del proxy sul server Web è complicata. Il contenuto crittografato non può essere memorizzato nella cache. Per aggirare questo problema, è necessario aggiungere un server per gestire la crittografia e quindi aggiungerlo al server cache. Ciò richiederà costi aggiuntivi, ma è un buon modo per garantire che i visitatori vengano crittografati quando accedono al tuo sito web.
  • Mobile: quando SSL è stato implementato per la prima volta, era per ap- plicazioni basate sul web. Sebbene la capacità di superare HTTPS abbia fatto molta strada negli ultimi anni, a volte può essere difficile da configurare e potrebbe essere necessario modificare il software interno o acquistare altri moduli dal fornitore dell’applicazione.

Svantaggi

  • Fiducia: se il certificato EV che ottieni mostra una barra degli indirizzi verde nel browser, darà ai visitatori un senso di fiducia. Lo apprezzeranno quando sapranno che stai prendendo sul serio la loro sicurezza.
  • Verifica: una delle cose migliori dell’installazione di un certificato SSL sul tuo server è che può garantire che il visitatore sia davvero chi dici di essere. Questo è importante quando si cerca di fare affari online.
  • Integrità dei dati: SSL, puoi garantire l’integrità dei dati. Ad esempio, se non c’è SSL, non solo i dati in entrata e in uscita dal server web possono essere intercettati, ma possono anche essere modificati!