Skip to content

Lezione (2025-10-10)

  • 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;

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.

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;
  1. Il client contatta il server sulla porta 21, specificando il protocollo di trasporto TCP.
  2. Il server autorizza la connessione.
  3. Il client invia comandi al server sulla connessione di controllo.
  4. Il server risponde aprendo una connessione dati con il client.
  5. Dopo il trasferimento di un file, la connessione viene chiusa.

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

  1. A usa il suo agente utente per comporre il messaggio da inviare a [email protected].
  2. L’agente utente invia il messaggio al server di posta di A (example1.com).
  3. example1.com apre una connessione SMTP con example2.com e invia il messaggio.
  4. example2.com pone il messaggio nella casella di posta di B, che potrà leggerlo attraverso il suo agente utente.

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 graphic
Message-ID: <[email protected]>
MIME-Version: 1.0
Content-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=:8452
Content-Type: TEXT/PLAIN; charset=US-ASCII
---1463757054-170444605-958746196=:8452
Content-Type: APPLICATION/octet-stream; name="redball.png"
Content-Transfer-Encoding: BASE64
Content-ID: <[email protected]>
Content-Description: red ball
Content-Disposition: attachment; filename="redball.png"
iVBORw0KGgoAAAANSUhEUgAAABsAAAAbCAMAAAC6CgRnAAADAFBMVEX///8A
AAABAAALAAAVAAAaAAAXAAARAAAKAAADAAAcAAAyAABEAABNAABIAAA9AAAj
AAAWAAAmAABhAAB7AACGAACHAAB9AAB0AABgAAA5AAAUAAAGAAAnAABLAABv
AACQAAClAAC7AAC/AACrAAChAACMAABzAABbAAAuAAAIAABMAAB3AACZAAC0
GRnKODjVPT3bKSndBQW4AACoAAB5AAAxAAAYAAAEAABFAACaAAC7JCTRYWHf
hITmf3/mVlbqHx/SAAC5AACjAABdAABCAAAoAAAJAABnAAC6Dw/QVFTek5Pl
rKzpmZntZWXvJSXXAADBAACxAACcAABtAABTAAA2AAAbAAAFAABKAACBAADL
ICDdZ2fonJzrpqbtiorvUVHvFBTRAADDAAC2AAB4AABeAABAAAAiAABXAACS
AADCAADaGxvoVVXseHjveHjvV1fvJibhAADOAAC3AACnAACVAABHAAArAAAP
AACdAADFAADhBQXrKCjvPDzvNTXvGxvjAADQAADJAAC1AACXAACEAABsAABP
AAASAAACAABiAADpAADvAgLnAADYAADLAAC6AACwAABwAAATAAAkAABYAADI
AADTAADNAACzAACDAABuAAAeAAB+AADAAACkAACNAAB/AABpAABQAAAwAACR
AACpAAC8AACqAACbAABlAABJAAAqAAAOAAA0AACsAACvAACtAACmAACJAAB6
AABrAABaAAA+AAApAABqAACCAACfAACeAACWAACPAAB8AAAZAAAHAABVAACO
AACKAAA4AAAQAAA/AAByAACAAABcAAA3AAAsAABmAABDAABWAAAgAAAzAAA8
AAA6AAAfAAAMAAAdAAANAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD8
LtlFAAAAAXRSTlMAQObYZgAAABZ0RVh0U29mdHdhcmUAZ2lmMnBuZyAyLjAu
MT1evmgAAAIISURBVHicY2CAg/8QwIABmJhZWFnZ2Dk4MaU5uLh5eHn5+LkF
BDlQJf8zC/EIi4iKiUtI8koJScsgyf5nlpWTV1BUUlZRVVPX4NFk1UJIyghp
6+jq6RsYGhmbKJgK85mZW8Dk/rNaSlhZ29ja2Ts4Ojkr6Li4urFDNf53N/Ow
8vTy9vH18w8IDAoWDQkNC4+ASP5ni4wKio6JjYtPSExKTnFWSE1LF4A69n9G
ZlZ2Tm5efkFhUXFySWlZlEd5RSVY7j+TkGRVdU1tXX1DY1Ozcktpa1t7h2Yn
OAj+d7l1tyo79vT29SdNSJ44SbFVdHIo9xSIHNPUaWqTpifNSJrZnK00S0U1
a/acUG5piNz/uXLzVJ2qm6dXz584S2WB1cJFi5cshZr539xVftnyFKUVTi2T
VjqvyhJLXb1m7TqoHPt6F/HW0g0bN63crGqVtWXrtu07BJihcsw71+zanRW8
Z89eq337RQ/Ip60xO3gIElX/LbikDm8T36KwbNmRo7O3zpHkPSZwHBqL//8f
lz1x2OOkyKJTi7aqbzutfUZI2gIuF8F2lr/D5dw2+fZdwpl8YVOlI+CJ4/9/
joOyYed5QzMvhGqnm2V0WiClm///D0lfXHtJ6vLlK9w7rx7vQk5SQJbFtSms
1y9evXid7QZacgOxmSxktNzdtSwwU+J/VICaCPFIYU3XAJhIOtjf5sfyAAAA
JXRFWHRDb21tZW50AGNsaXAyZ2lmIHYuMC42IGJ5IFl2ZXMgUGlndWV0NnM7
vAAAAABJRU5ErkJggg==
---1463757054-170444605-958746196=:8452--