W jaki sposób jest realizowane HTTP Keep Alive? Czy wewnętrznie używa TCP Keep Alive? Jeśli nie, w jaki sposób serwer wykrywa, czy klient jest martwy czy żywy?HTTP Keep Alive i TCP utrzymują się przy życiu
Odpowiedz
HTTP Keep-Alive to funkcja protokołu HTTP. Serwer internetowy, implementując funkcję Keep-Alive, musi okresowo sprawdzać połączenie/gniazdo (dla przychodzącego żądania HTTP) przez czas od wysłania ostatniej odpowiedzi HTTP (w przypadku, gdy było odpowiednie żądanie HTTP). Jeśli żadne żądanie HTTP nie zostanie odebrane do czasu skonfigurowanego czasu podtrzymania (sekund), serwer WWW zamknie połączenie. Żadne dalsze żądanie HTTP nie będzie możliwe po "zamknięciu" przez serwer WWW. Z drugiej strony, TCP Keep-Alive jest zarządzany przez system operacyjny w warstwie TCP. HTTP Keep-Alive i TCP Keep-Alive to rzeczy zupełnie niepowiązane.
wiem, że to jest stare pytanie, ale nadal:
HTTP Keep-Alive to funkcja, która pozwala klientowi HTTP (zazwyczaj przeglądarki) i serwera (serwera WWW), aby wysłać wiele par żądanie/odpowiedź w ciągu to samo połączenie TCP. Zmniejsza to opóźnienie dla 2., 3., ... żądania HTTP, zmniejsza ruch w sieci i podobne.
TCP keepalive to zupełnie inna bestia. Utrzymuje połączenie TCP otwarte przez wysyłanie małych pakietów. Dodatkowo, kiedy pakiet jest wysyłany, służy to jako kontrola, więc nadawca jest powiadamiany, gdy tylko połączenie się rozłączy (pamiętaj, że to NIE jest w innym przypadku - dopóki nie spróbujemy komunikować się przez połączenie TCP, nie mamy pojęcia, czy jest w porządku, czy nie.).
Aby odpowiedzieć na pytania dotyczące HTTP Keep-Alive:
How is HTTP Keep Alive implemented?
Mówiąc prościej, serwer HTTP nie zamyka połączenie TCP po każdej odpowiedzi, ale czeka jakiś czas, jeśli jakiś inny HTTP wniosek również nadejdzie. Po pewnym czasie i tak go zamyka.
Does it internally use TCP Keep Alive?
Nie, przynajmniej nie widzę w tym żadnego sensu.
If not, how does the server detect if the client is dead or alive?
Nie ma - nie musi. Jeśli klient wyśle żądanie, otrzyma odpowiedź. Jeśli klient nie wyśle niczego przez połączenie TCP (być może dlatego, że połączenie nie działa), to timeout zamknie połączenie; klient oczywiście to zauważy i w razie potrzeby wyśle żądanie przez inne połączenie TCP.
Funkcja http keep-alive powoduje wydłużenie czasu życia tcp w celu przesłania żądania multi http. Po upływie limitu czasu połączenia tcp zostanie zamknięte. tcp keep-alive to tylko mechanizm utrzymujący połączenie TCP lub sprawdź, czy połączenie tcp nie jest zamknięte
- 1. HTTP keep-alive w pliku node.js
- 2. iOS i Go - Keep-Alive przy użyciu NSURLSession
- 3. Gniazda Pythona - utrzymują gniazdo przy życiu?
- 4. Sposób testowania HTTP Keep alive działa w rzeczywistości
- 5. AFNetworking/NSURLConnection HTTPS keep alive pokazuje dziwne zachowanie
- 6. Python urllib2 z utrzymaniem przy życiu
- 7. Jak działa Keep-alive z ThreadPoolExecutor?
- 8. Używanie funkcji keep-alive w .htaccess
- 9. W jaki sposób websocket różni się od http z połączeniem nagłówka-keep-alive = million
- 10. Możliwe włączenie Keep-alive z modułem równoważenia obciążenia?
- 11. Problemy z utrzymaniem Google Cloud Message przy życiu
- 12. Czy usługa Keep-Alive HTTP nie rozwiązuje problemu, który rozwiązuje długi proces odpytywania?
- 13. Gniazdo XPCOM się zamyka. Jak utrzymać to przy życiu?
- 14. TCP vs. Http Benchmark
- 15. Dlaczego HTTP używa TCP?
- 16. Szablon konsumenta pliku wielbłąda - wątki pozostające przy życiu
- 17. Aplikacja Iphone Voip - Projektowanie i utrzymywanie przy życiu dziurawki
- 18. Utrzymywanie sesji przy życiu dzięki Curl i PHP
- 19. Netty: Czy powinienem zamknąć Kanał, jeśli jest to połączenie typu "keep-alive"?
- 20. Upewnianie się, że połączenie z bazą danych psycopg2 przy życiu
- 21. Python - threading.Timer pozostaje przy życiu po wywołaniu cancel() metoda
- 22. Trzymaj usługę WCF przy życiu pod IIS
- 23. połączenie, które spodziewano się być utrzymywane przy życiu zostało zamknięte przez serwer w ASP.NET
- 24. utrzymanie przy życiu zmienna w funkcji javascript
- 25. Kompilator F # utrzymuje martwe obiekty przy życiu
- 26. Utrzymaj subproces przy życiu i podawaj mu polecenia? Python
- 27. Wiosna @Transactional scalania i utrzymują pytanie
- 28. Tworzenie WebSockets między serwerem TCP i serwer HTTP w node.js
- 29. Czy można włączyć tcp, http i websocket przy użyciu tego samego portu?
- 30. TCP i PF_RING