29Jul

W jaki sposób serwery sieciowe nasłuchują nowych wniosków?

Podczas nauki o serwerach internetowych i ich działaniu możesz być ciekawy, czy ciągle nasłuchują żądań, czy oczekują, aż otrzymają prośbę o podjęcie działania. Mając to na uwadze, dzisiejszy post SuperUser Q & A ma odpowiedzi, które zaspokoją ciekawość czytelnika.

Dzisiejsze pytanie &Sesja odpowiedzi przychodzi do nas dzięki uprzejmości SuperUser - poddziału Stack Exchange, opartego na społecznościach grupy Q & A.

Zrzut ekranu ze zdjęciami xmodulo / Linux( Flickr).

Pytanie Użytkownik

SuperUser user2202911 chce wiedzieć, w jaki sposób serwery internetowe nasłuchują nowych żądań:

Próbuję zrozumieć "głębszy poziom" szczegółów działania serwerów sieciowych. Chcę wiedzieć, czy serwer, na przykład Apache, ciągle szuka nowych żądań lub działa przez jakiś system przerwań.Jeśli jest to przerwanie, co wywołuje przerwanie? Czy to jest sterownik karty sieciowej?

W jaki sposób serwer WWW nasłuchuje nowych żądań?

Odpowiedź Autor

SuperUser Greg Bowser ma dla nas odpowiedź:

Krótka odpowiedź to jakiś system przerwań.Zasadniczo używają blokujących I / O, co oznacza, że ​​śpią( blokują) podczas oczekiwania na nowe dane.

  1. Serwer tworzy gniazdo nasłuchiwania, a następnie blokuje je podczas oczekiwania na nowe połączenia. W tym czasie jądro umieszcza proces w stanie w stanie przerywanym i uruchamia inne procesy. To jest ważna kwestia;ciągłe odpytywanie procesu powodowałoby marnowanie zasobów procesora. Jądro może bardziej wydajnie wykorzystywać zasoby systemowe, blokując proces, dopóki nie będzie za to pracy.
  2. Gdy nowe dane docierają do sieci, karta sieciowa wydaje przerwanie.
  3. Widząc przerwanie z karty sieciowej, jądro, za pośrednictwem sterownika karty sieciowej, odczytuje nowe dane z karty sieciowej i zapisuje je w pamięci.(Musi to zostać wykonane szybko i jest zwykle obsługiwane wewnątrz obsługi przerwań.)
  4. Jądro przetwarza nowo otrzymane dane i kojarzy je z gniazdem. Proces, który blokuje się na tym gnieździe, zostanie oznaczony jako działający, co oznacza, że ​​można go teraz uruchomić.Niekoniecznie działa natychmiast( jądro może zdecydować o uruchomieniu jeszcze innych procesów).
  5. W czasie wolnym jądro obudzi zablokowany proces serwera WWW.(Ponieważ jest on teraz możliwy do uruchomienia.)
  6. Proces serwera sieciowego kontynuuje wykonywanie, jakby nie upłynął czas. Jego wywołanie systemowe blokowania zwraca i przetwarza wszelkie nowe dane. Następnie przejdź do kroku 1.

Czy masz coś do dodania do wyjaśnienia? Dźwięk w komentarzach. Chcesz przeczytać więcej odpowiedzi od innych użytkowników Stack Exchange, którzy znają się na technologii? Sprawdź cały wątek dyskusji tutaj.