






Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
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
1 / 12
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!







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:
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.
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-
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
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.
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.
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 "@".
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.
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
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.
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.
Vantaggi
Svantaggi