In che modo è implementato HTTP Keep Alive? Utilizza internamente TCP Keep Alive? In caso contrario, come rileva il server se il client è vivo o morto?HTTP Keep Alive e TCP keep alive
risposta
HTTP Keep-Alive è una funzionalità del protocollo HTTP. Il server Web, che implementa la funzione Keep-Alive, deve verificare periodicamente la connessione/socket (per la richiesta HTTP in entrata) per l'intervallo di tempo dal momento in cui ha inviato l'ultima risposta HTTP (nel caso in cui vi fosse una richiesta HTTP corrispondente). Se non viene ricevuta alcuna richiesta HTTP al momento del tempo di keep-alive configurato (secondi), il server Web chiude la connessione. Nessuna ulteriore richiesta HTTP sarà possibile dopo la "chiusura" eseguita da Web Server. D'altra parte, TCP Keep-Alive è gestito dal sistema operativo nel livello TCP. HTTP Keep-Alive e TCP Keep-Alive sono cose totalmente indipendenti.
So che questa è una vecchia questione, ma ancora:
HTTP keep-alive è una funzione che consente client HTTP (solitamente browser) e il server (server web) per inviare più coppie richiesta/risposta sopra la stessa connessione TCP. Questo diminuisce la latenza per la 2a, 3a, ... richiesta HTTP, diminuisce il traffico di rete e simili.
TCP keepalive è una bestia completamente diversa. Mantiene aperta la connessione TCP inviando piccoli pacchetti. Inoltre, quando il pacchetto viene inviato questo serve come controllo in modo che il mittente venga avvisato non appena la connessione si interrompe (nota che questo NON è il caso altrimenti - finché non proviamo a comunicare attraverso la connessione TCP non abbiamo idea se sia ok o no).
per rispondere alle vostre domande su HTTP keep-alive:
How is HTTP Keep Alive implemented?
Per dirla semplicemente, il server HTTP non chiude la connessione TCP dopo ogni risposta, ma aspetta un po 'di tempo se qualche altro HTTP verrà richiesta anche la richiesta. Dopo un certo timeout lo chiude comunque.
Does it internally use TCP Keep Alive?
No, almeno non vedo alcun punto in esso.
If not, how does the server detect if the client is dead or alive?
Non - non è necessario. Se un cliente invia una richiesta, riceverà la risposta. Se il client non invia nulla tramite la connessione TCP (forse perché la connessione è morta), un timeout chiuderà la connessione; il cliente ovviamente lo noterà e invierà la richiesta tramite un'altra connessione TCP, se necessario.
http keep-alive sta solo facendo in modo che tcp viva più a lungo per trasferire la richiesta multi http. Dopo il timeout keep-alive, la connessione TCP sarà chiusa. tcp keep-alive è solo un meccanismo che mantiene la connessione TCP o verifica che la connessione TCP non sia chiusa
- 1. HTTP keep-alive in node.js
- 2. NSURLConnection e keep-alive
- 3. Abilita keep-alive (velocità pagina)
- 4. Python urllib2 con keep alive
- 5. Problemi keep-alive di connessione
- 6. iOS e Go - Keep-Alive con NSURLSession
- 7. "Connessione: keep-alive" nella risposta del server
- 8. Come inviare richieste consecutive con HTTP keep-alive in node.js?
- 9. Come testare HTTP Keep alive funziona in realtà
- 10. apache proxy to tomcat keep alive confusion
- 11. Utilizzo della funzione keep-alive in .htaccess
- 12. SPDY è diverso da multiplexing http su connessioni keep alive
- 13. HTTP non ha una statistica, quindi cosa significa keep-alive?
- 14. Come disabilitare HTTP Keep-Alive in ASP.NET MVC?
- 15. Puoi usare gzip su SSL? E connessione: intestazioni Keep-Alive
- 16. HTTP: quali sono le relazioni tra pipelining, keep-alive e Server Sent Events?
- 17. C# Come impostare HttpClient Keep-Alive su false
- 18. È possibile abilitare Keep-alive con un bilanciamento del carico?
- 19. AFNetworking/NSURLConnection HTTPS keep alive mostra un comportamento strano
- 20. Implementazione di messaggi keep-alive in Netty utilizzando WriteTimeoutHandler
- 21. come gestire la connessione keep alive in servizio Android
- 22. Come impostare il timeout Keep-Alive HTTP in un server nodejs
- 23. http Keep-Alive non risolve il problema risolto dal polling lungo?
- 24. è una richiesta HTTP/1.1 implicitamente keep-alive per impostazione predefinita?
- 25. come è websocket diverso da http con header header-keep-alive = million
- 26. Come impostare l'intervallo keep-alive per la connessione HTTP in WCF
- 27. connessione keep-alive che non funziona con System.Net.Http.HttpClient su alcuni host
- 28. Come posso disabilitare keep-alive sulle richieste del client di servizio Web ASP.NET?
- 29. Netty: devo chiudere il canale se si tratta di una connessione "keep-alive"?
- 30. Mantenere in modo programmatico HTTP Session Alive senza browser