Wie hören Webserver auf neue Anforderungen?

Wie hören Webserver auf neue Anforderungen?

How Do Web Servers Listen

Wenn Sie mehr über Webserver und ihre Funktionsweise erfahren, sind Sie vielleicht neugierig, ob sie ständig auf Anfragen lauschen oder warten, bis sie eine Anfrage erhalten, um aktiv zu werden. Vor diesem Hintergrund enthält der heutige SuperUser Q&A-Post die Antworten, um die Neugierde eines Lesers zu befriedigen.



Die heutige Frage-und-Antwort-Sitzung kommt mit freundlicher Genehmigung von SuperUser – einer Unterabteilung von Stack Exchange, einer Community-gesteuerten Gruppierung von Q&A-Websites.

Unterschied zwischen Chrom und Chrom

Screenshot mit freundlicher Genehmigung von xmodulo/Linux-Screenshots (Flickr) .

Die Frage

SuperUser-Leser user2202911 möchte wissen, wie Webserver auf neue Anfragen warten:

Ich versuche, die 'tieferen' Details der Funktionsweise von Webservern zu verstehen. Ich möchte wissen, ob ein Server, zum Beispiel Apache, ständig nach neuen Anfragen fragt oder ob er mit einer Art Interrupt-System arbeitet. Wenn es ein Interrupt ist, was löst den Interrupt aus? Ist es der Netzwerkkartentreiber?

Wie hört ein Webserver auf neue Anfragen?

Die Antwort

SuperUser-Mitwirkender Greg Bowser hat die Antwort für uns:

Die kurze Antwort ist eine Art Interrupt-System. Im Wesentlichen verwenden sie E/A blockieren , was bedeutet, dass sie schlafen (blockieren), während sie auf neue Daten warten.

  1. Der Server erstellt einen Listening-Socket und blockiert dann, während er auf neue Verbindungen wartet. Während dieser Zeit setzt der Kernel den Prozess in eine unterbrechbarer Schlaf Zustand und führt andere Prozesse aus. Dies ist ein wichtiger Punkt; eine kontinuierliche Prozessabfrage würde CPU-Ressourcen verschwenden. Der Kernel ist in der Lage, die Systemressourcen effizienter zu nutzen, indem er den Prozess blockiert, bis er Arbeit zu erledigen hat.
  2. Wenn neue Daten im Netzwerk ankommen, gibt die Netzwerkkarte einen Interrupt aus.
  3. Da es einen Interrupt von der Netzwerkkarte gibt, liest der Kernel über den Netzwerkkartentreiber die neuen Daten von der Netzwerkkarte und legt sie im Speicher ab. (Dies muss schnell erfolgen und wird im Allgemeinen innerhalb des Interrupt-Handlers verarbeitet.)
  4. Der Kernel verarbeitet die neu angekommenen Daten und ordnet sie einem Socket zu. Ein Prozess, der auf diesem Socket blockiert, wird als lauffähig markiert, was bedeutet, dass er jetzt zur Ausführung berechtigt ist. Es wird nicht unbedingt sofort ausgeführt (der Kernel kann entscheiden, andere Prozesse noch auszuführen).
  5. Der Kernel wird den blockierten Webserverprozess nach Belieben aufwecken. (Da es jetzt lauffähig ist.)
  6. Der Webserverprozess wird weiter ausgeführt, als ob keine Zeit vergangen wäre. Sein blockierender Systemaufruf kehrt zurück und verarbeitet alle neuen Daten. Fahren Sie dann mit Schritt 1 fort.

Möchten Sie der Erklärung noch etwas hinzufügen? Ton aus in den Kommentaren. Möchten Sie mehr Antworten von anderen technisch versierten Stack Exchange-Benutzern lesen? Sehen Sie sich hier den vollständigen Diskussionsthread an .

WEITER LESEN
  • › Was ist MIL-SPEC Fallschutz?
  • & rsaquo; Cyber ​​Monday 2021: Die besten Tech-Deals
  • › 5 Websites, die jeder Linux-Benutzer mit einem Lesezeichen versehen sollte
  • › Funktionen vs. Formeln in Microsoft Excel: Was ist der Unterschied?
  • › So finden Sie Ihr Spotify Wrapped 2021
  • › Der Computerordner ist 40: Wie Xerox Star den Desktop erstellte
Akemi Iwaya
Akemi Iwaya ist seit 2009 Teil des How-To Geek/LifeSavvy Media-Teams. Sie hat zuvor unter dem Pseudonym 'Asian Angel' geschrieben und war Lifehacker-Praktikantin, bevor sie zu How-To Geek/LifeSavvy Media kam. Sie wurde von ZDNet Worldwide als maßgebliche Quelle zitiert.
Vollständige Biografie lesen