Lezione (2025-10-10)
Versioni del protocollo HTTP
Section titled “Versioni del protocollo HTTP”HTTP/1.0: versione originale, ormai obsoleta in quasi tutti i sistemi.HTTP/1.1:- rilasciata pochi mesi dopo la 1.0;
- aggiunge la possibilità di riutilizzare connessioni per richieste successive;
- specifica alcune nuove headers;
HTTP/2- si basa sul protocollo SPDY, effettua il multiplexing di multiple richieste su un’unica connessione TCP;
- permette di assegnare una priorità alle richieste;
- permette di comprimere le headers, per ridurre la bandwidth usata;
- permette al server di anticipare l’invio di dati, senza che il client debba richiederli;
Frames HTTP/2
Section titled “Frames HTTP/2”Con HTTP/1.1, se si volevano eseguire più richieste in parallelo era necessario aprire multiple connessioni TCP.
In HTTP/2, Tutte le comunicazioni vengono eseguite su una singola connessione TCP, che può trasmettere un qualsiasi numero di streams bidirezionali. Uno stream può essere pensato come una connessione virtuale.
Per ogni stream viene creato un identificativo univoco e si possono impostare diverse opzioni di priorità.
- stream id 0: riservato per controllo della connessione;
- stream id dispari: richieste da client a server;
- stream id pari: risposte da server a client;
Ogni messaggio è diviso in uno o più frames, racchiusi da una testata in codifica binaria che contiene informazioni sullo stream di appartenenza, sulla lunghezza del frame etc…
Il multiplexing sulla connessione TCP si fa tra i vari frames inviati in uno specifico momento.
Server push
Section titled “Server push”L’estensione server push permette al server di inviare più risposte per una singola richiesta.
Questo permette di velocizzare il caricamento di pagine web, dato che il client non deve aspettare il file HTML per poter poi richiedere i file javascript e css referenziati.
HTTPS estende il protocollo HTTP inviando tutti i messaggi attraverso una connessione cifrata, tipicamente sulla porta 443.
Il protocollo usato per la cifratura è il TLS, che definisce:
- negoziazione dell’algoritmo di cifratura da usare;
- scambio delle chiavi e autenticazione;
- cifratura simmetrica dei messaggi;
Solo i messaggi di livello 7 sono criptati, la PCI del protocollo TCP è in chiaro.
Il protocollo FTP si basa sul modello client-server. Vengono usate connessioni su 2 porte:
- connessione di controllo:
- porta 21/TCP;
- usata per autorizzazione e invio di comandi;
- connessione dati:
- porta 20/TCP;
- usata per trasferire files;
- Il client contatta il server sulla porta 21, specificando il protocollo di trasporto TCP.
- Il server autorizza la connessione.
- Il client invia comandi al server sulla connessione di controllo.
- Il server risponde aprendo una connessione dati con il client.
- Dopo il trasferimento di un file, la connessione viene chiusa.
Comandi e codici di ritorno comuni
Section titled “Comandi e codici di ritorno comuni”- comandi: https://www.nsftools.com/tips/RawFTP.htm
- status codes: https://en.wikipedia.org/wiki/List_of_FTP_server_return_codes
Per l’invio della posta elettronica servono 2 componenti:
- Un agente utente, che costituisce l’interfaccia utente dove si possono leggere e scrivere le e-mail.
- Un server di posta, che memorizza i messaggi inviati e ricevuti e che accoda e invia i messaggi al server del destinatario.
Il protocollo SMTP è il protocollo usato dai server di posta per scambiarsi le e-mail. I server comunicano sulla porta 25/TCP, il ruolo di client è dato al server che sta inviando, il ruolo di server a quello che sta ricevendo.
I messaggi sono trasmessi in formato ASCII a 7-bit.
Esempio: invio di un’e-mail
- A usa il suo agente utente per comporre il messaggio da inviare a
[email protected]. - L’agente utente invia il messaggio al server di posta di A (
example1.com). example1.comapre una connessione SMTP conexample2.come invia il messaggio.example2.compone il messaggio nella casella di posta di B, che potrà leggerlo attraverso il suo agente utente.
Formato dei messaggi di posta elettronica
Section titled “Formato dei messaggi di posta elettronica”I messaggi di posta elettronica vengono conservati sul server con un formato standard, definito dalla RFC 822.
Sono composti da:
- un’intestazione che contiene diverse headers;
- una riga vuota di separazione;
- il corpo del messaggio (soltanto caratteri ascii);
La fine di una riga è denotata da \r\n.
Esempio:
Date: Fri, 19 May 2000 10:23:16 -0400 (EDT)From: Doug Sauder <[email protected]>To: =?iso-8859-1?Q?Heinz_M=FCller?= <[email protected]>Subject: PNG graphicMessage-ID: <[email protected]>MIME-Version: 1.0Content-Type: MULTIPART/MIXED; BOUNDARY="-1463757054-170444605-958746196=:8452"This message is in MIME format. The first part should be readable text,while the remaining parts are likely unreadable without MIME-aware tools.Send mail to [email protected] for more info.---1463757054-170444605-958746196=:8452Content-Type: TEXT/PLAIN; charset=US-ASCII---1463757054-170444605-958746196=:8452Content-Type: APPLICATION/octet-stream; name="redball.png"Content-Transfer-Encoding: BASE64Content-ID: <[email protected]>Content-Description: red ballContent-Disposition: attachment; filename="redball.png"iVBORw0KGgoAAAANSUhEUgAAABsAAAAbCAMAAAC6CgRnAAADAFBMVEX///8AAAABAAALAAAVAAAaAAAXAAARAAAKAAADAAAcAAAyAABEAABNAABIAAA9AAAjAAAWAAAmAABhAAB7AACGAACHAAB9AAB0AABgAAA5AAAUAAAGAAAnAABLAABvAACQAAClAAC7AAC/AACrAAChAACMAABzAABbAAAuAAAIAABMAAB3AACZAAC0GRnKODjVPT3bKSndBQW4AACoAAB5AAAxAAAYAAAEAABFAACaAAC7JCTRYWHfhITmf3/mVlbqHx/SAAC5AACjAABdAABCAAAoAAAJAABnAAC6Dw/QVFTek5PlrKzpmZntZWXvJSXXAADBAACxAACcAABtAABTAAA2AAAbAAAFAABKAACBAADLICDdZ2fonJzrpqbtiorvUVHvFBTRAADDAAC2AAB4AABeAABAAAAiAABXAACSAADCAADaGxvoVVXseHjveHjvV1fvJibhAADOAAC3AACnAACVAABHAAArAAAPAACdAADFAADhBQXrKCjvPDzvNTXvGxvjAADQAADJAAC1AACXAACEAABsAABPAAASAAACAABiAADpAADvAgLnAADYAADLAAC6AACwAABwAAATAAAkAABYAADIAADTAADNAACzAACDAABuAAAeAAB+AADAAACkAACNAAB/AABpAABQAAAwAACRAACpAAC8AACqAACbAABlAABJAAAqAAAOAAA0AACsAACvAACtAACmAACJAAB6AABrAABaAAA+AAApAABqAACCAACfAACeAACWAACPAAB8AAAZAAAHAABVAACOAACKAAA4AAAQAAA/AAByAACAAABcAAA3AAAsAABmAABDAABWAAAgAAAzAAA8AAA6AAAfAAAMAAAdAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD8LtlFAAAAAXRSTlMAQObYZgAAABZ0RVh0U29mdHdhcmUAZ2lmMnBuZyAyLjAuMT1evmgAAAIISURBVHicY2CAg/8QwIABmJhZWFnZ2Dk4MaU5uLh5eHn5+LkFBDlQJf8zC/EIi4iKiUtI8koJScsgyf5nlpWTV1BUUlZRVVPX4NFk1UJIyghp6+jq6RsYGhmbKJgK85mZW8Dk/rNaSlhZ29ja2Ts4Ojkr6Li4urFDNf53N/Ow8vTy9vH18w8IDAoWDQkNC4+ASP5ni4wKio6JjYtPSExKTnFWSE1LF4A69n9GZlZ2Tm5efkFhUXFySWlZlEd5RSVY7j+TkGRVdU1tXX1DY1Ozcktpa1t7h2YnOAj+d7l1tyo79vT29SdNSJ44SbFVdHIo9xSIHNPUaWqTpifNSJrZnK00S0U1a/acUG5piNz/uXLzVJ2qm6dXz584S2WB1cJFi5cshZr539xVftnyFKUVTi2TVjqvyhJLXb1m7TqoHPt6F/HW0g0bN63crGqVtWXrtu07BJihcsw71+zanRW8Z89eq337RQ/Ip60xO3gIElX/LbikDm8T36KwbNmRo7O3zpHkPSZwHBqL//8flz1x2OOkyKJTi7aqbzutfUZI2gIuF8F2lr/D5dw2+fZdwpl8YVOlI+CJ4/9/joOyYed5QzMvhGqnm2V0WiClm///D0lfXHtJ6vLlK9w7rx7vQk5SQJbFtSms1y9evXid7QZacgOxmSxktNzdtSwwU+J/VICaCPFIYU3XAJhIOtjf5sfyAAAAJXRFWHRDb21tZW50AGNsaXAyZ2lmIHYuMC42IGJ5IFl2ZXMgUGlndWV0NnM7vAAAAABJRU5ErkJggg==---1463757054-170444605-958746196=:8452--