2012-02-17 21 views

Odpowiedz

15

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.

36

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.

-2

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

Powiązane problemy