diff --git a/networking/023-http.md b/networking/023-http.md new file mode 100644 index 0000000..645ffaa --- /dev/null +++ b/networking/023-http.md @@ -0,0 +1,14 @@ +# HTTP + +## Introduzione + +`HTTP` sta per *Hypertext Transfer Protocol* ed è il protocollo incaricato di gestire lo scambio di richieste e risposte http in un'architettura client-server. Questo protocollo è utilizzato per lo scambio di pagine web e altri contenuti multimediali. HTTP è associato alla well-known port *80*, mentre `HTTPS` (la versione sicura di HTTP) utilizza la porta *443*. Ciò significa che il processo sul server relativo a questi servizi è tipicamente legato a queste porte. + +In quanto protocollo dell'application layer, HTTP si appoggia al TCP del transport layer per garantire una comunicazione affidabile e robusta. Prima che avvenga lo scambio dei veri e propri messaggi, è necessario stabilire una connessione TCP tra il client e il server. + +## Tipologie di connessione http + +- **Connessione non persistente:** un metodo tradizionale in cui per ogni richiesta HTTP viene instaurata una sessione TCP separata. Questo approccio, essendo meno efficiente, può comportare un uso eccessivo di risorse, in particolare quando vengono richieste numerose risorse in rapida successione +- **Connessione persistente:** con questo metodo, una volta stabilita la connessione TCP tra il client e il server, tutte le risorse vengono scambiate utilizzando la stessa connessione. Solo al termine dello scambio della totalità delle risorse la connessione viene chiusa. Questo approccio è molto più efficiente, poiché riduce il sovraccarico derivante dall'instaurazione ripetuta di nuove connessioni TCP + +