I browser creano nuove connessioni TCP per ogni richiesta HTTP?


23

Quindi so che HTTP è fondamentalmente solo un protocollo di testo su TCP e che TCP è basato su stato / connessione. Ciò significa che il browser deve connettersi tramite TCP a un server prima di eseguire una richiesta HTTP. Domanda quindi: i browser in genere creano una nuova connessione TCP per ogni richiesta HTTP?

I browser potrebbero semplicemente aprire una richiesta TCP e mantenerla in vita finché l'utente sta ancora navigando su quel server, ma i server dovrebbero utilizzare una grande quantità di connessioni massime per gestirla. Ma ancora una volta, se i browser creano una connessione per ogni richiesta e l'utente naviga molto sullo stesso server, sembrerebbe uno spreco. Come funziona di solito? Forse attraverso l'uso di un timer?

Risposte:


30

In HTTP / 0.9 (non più utilizzato), ogni richiesta utilizzava una connessione TCP separata e la fine di una risposta veniva segnalata chiudendo la connessione.

In HTTP / 1.0, le connessioni separate sono ancora l'impostazione predefinita ufficiale. Tuttavia, è Connection: Keep-Alivepossibile utilizzare un'intestazione di richiesta " " non ufficiale ma ampiamente supportata per richiedere una connessione persistente se il server la supporta.

In HTTP / 1.1, le connessioni permanenti sono diventate quelle predefinite e il vecchio comportamento a richiesta singola deve essere esplicitamente richiesto. Di solito vengono utilizzate connessioni multiple (2-5) persistenti.

(Facoltativamente, è possibile eseguire il pipeline delle richieste , sebbene ciò sia risultato difficile da implementare e crei più problemi di quanti ne risolva (blocco head-of-line, ecc.), Quindi nessuno utilizza pipeline HTTP / 1.x.)

HTTP / 2 (noto anche come SPDY ) è stato appositamente progettato per il multiplexing di più richieste contemporaneamente. Ha uno strato di framing / packetization che consente alle risposte di arrivare in qualsiasi ordine e anche simultaneamente.

Risorse: articolo di Wikipedia e RFC 2616 sezione 8.1 .


Un altro articolo interessante che menziona lo stesso developer.mozilla.org/en-US/docs/Web/HTTP/…
Ganesh Satpute,

6

Esiste l'intestazione "Connessione: Keep-Alive". Vedi enwiki per i dettagli.

È possibile utilizzare Wireshark per acquisire e analizzare le connessioni e visualizzare tutte le intestazioni.


Perché Wireshark invece di Fiddler?
Pacerier,

3
Fiddler è 1. Non è un software Open Source; 2. Solo Windows.
Vi.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.