Hoe webservers werken. Hoe webservers werken

Doel van de lezing: definieer het concept van ‘webserver’ en vorm een ​​idee van de werking van dit mechanisme.

In de vorige lezing hebben we de werking van het HTTP-protocol begrepen. Laten we nu eens kijken hoe de tools die de eerder beschreven interacties mogelijk maken, werken. De werking van webapplicaties is gebaseerd op een concept als webserver. Een webserver is een programma dat binnenkomende HTTP-verzoeken accepteert, deze verzoeken verwerkt, een HTTP-antwoord genereert en dit naar de client verzendt. Het algemene algoritme van de webserver kan als volgt worden weergegeven (acties die door de webserver worden verwerkt, zijn groen gemarkeerd).

Nadat de gebruiker toegang heeft gekregen tot een specifieke bron met behulp van het HTTP-protocol, genereert de client (meestal een browser) een HTTP-verzoek naar de webserver. Meestal wordt een symbolische servernaam opgegeven (bijvoorbeeld "http://www.microsoft.com"). In dit geval converteert de browser deze naam eerst naar een IP-adres met behulp van DNS-services. Hierna wordt het gegenereerde HTTP-bericht via het HTTP-protocol naar de webserver verzonden. In dit bericht geeft de browser aan welke bron moet worden gedownload en alle aanvullende informatie. De taak van de webserver is om te luisteren op een specifieke TCP-poort (meestal poort 80) en alle inkomende HTTP-berichten te accepteren. Als de binnenkomende gegevens niet overeenkomen met het HTTP-berichtformaat, wordt het verzoek genegeerd en wordt er een foutmelding teruggestuurd naar de client.

In het eenvoudigste geval moet de webserver, wanneer een HTTP-verzoek wordt ontvangen, de inhoud van het opgevraagde bestand van de harde schijf lezen, de inhoud ervan in een HTTP-antwoord verpakken en dit naar de client sturen. Als het vereiste bestand niet op de harde schijf wordt gevonden, genereert de webserver een foutmelding met de 404-statuscode en stuurt dit bericht naar de client. Dit type webserverwerking wordt gewoonlijk statische sites genoemd. In dit geval wordt er geen programmacode aan de serverzijde uitgevoerd, behalve de programmacode van de webserver zelf. Dergelijke werkscenario’s worden echter steeds ongeschikter en worden vervangen door volwaardige webapplicaties. Het verschil tussen deze toepassingen is dat HTML-documenten en andere bronnen niet als onveranderlijke gegevens op de server worden opgeslagen. In plaats daarvan slaat de server programmacode op die deze gegevens kan genereren op het moment dat het verzoek wordt verwerkt.


Een van de belangrijkste taken die worden opgelost bij het bouwen van een webserver is het garanderen van schaalbaarheid (d.w.z. de mogelijkheid om het aantal gebruikers te vergroten) en beveiliging tegen aanvallen van buitenaf. Omdat de webserver in een open omgeving – het mondiale internet – opereert, is deze vaak overal toegankelijk. Dit maakt de webserver onderhevig aan zware belasting en mogelijke aanvallen. De meest voorkomende aanvallen op een webserver zijn het benaderen van de webserver met een groot aantal verzoeken en de hoge frequentie ervan. In dit geval zal de webserver niet alle verzoeken snel kunnen verwerken, en dit kan de prestaties van de webserver voor echte gebruikers beïnvloeden. Webservers die een andere externe programmacode uitvoeren dan de programmacode van de webserver zelf, zijn bijzonder gevoelig voor dergelijke aanvallen.

Om dergelijke aanvallen te bestrijden worden doorgaans alle verzoeken die afkomstig zijn van een specifiek IP-adres geblokkeerd. Bovendien moet er in dergelijke gevallen voor worden gezorgd dat de applicatiecode wordt geoptimaliseerd, bijvoorbeeld door caching te gebruiken - in dit geval zal bij het verwerken van elk verzoek de belasting van de centrale processor minder zijn, wat de taak van aanvallers aanzienlijk kan bemoeilijken . Het is niet ongebruikelijk dat veel onafhankelijke websites op dezelfde webserver worden gehost. Bovendien gebruiken al deze websites hetzelfde IP-adres. Die. een webserver met slechts één IP-adres kan meerdere websites hosten, en elke website zal aan zijn eigen adres worden gekoppeld (één webserver kan bijvoorbeeld de volgende websites hosten: "microsoft.com", "gotdotnet.ru", " techdays.ru", enz.). Hoe wordt dit mogelijk? Dit fenomeen heet. Om te begrijpen hoe dit werkt, kijken we opnieuw naar het interactieproces tussen client en server. De browser stuurt een HTTP-verzoek naar het IP-adres van de webserver, dat aan de domeinnaam is gekoppeld. Omzetting van IP-adressen vindt plaats met behulp van DNS-services. Hoewel het verzoek wordt verzonden met behulp van het ontvangen IP-adres, specificeert de client echter een extra HTTP "Host"-header die de oorspronkelijke naam van de website specificeert. Dankzij deze informatie kan de webserver de toegang tot meerdere websites differentiëren en toch hetzelfde IP-adres gebruiken. Dit is een heel belangrijk punt, want als voor elke domeinnaam een ​​afzonderlijk IP-adres zou moeten worden geregistreerd, zou de adresruimte van het IP-protocol (v.4) zeer snel eindigen en zouden de kosten voor het hosten van een website op de mondiale markt zeer snel eindigen. Internet zou veel hoger zijn. Laten we, om het duidelijker te maken, eens kijken hoe virtuele hosting werkt aan de hand van een voorbeeld. Stel dat u een webserver heeft met het IP-adres 85.51.210.22. Deze server host verschillende websites: mijnsite1.com, mijnsite2.com, mijnsite3.com. De DNS-servers zijn zo geconfigureerd dat elk van deze domeinnamen naar één enkel IP-adres verwijst, 85.51.219.22.


Laten we eens kijken welke HTTP-verzoeken de browser zal genereren bij het openen van elke site. Wanneer u de site "mijnsite1.com" bezoekt, kan het HTTP-verzoek er als volgt uitzien.


Bij toegang tot de site "mysite2.com" zal het HTTP-verzoek er anders uitzien.


Een soortgelijk virtueel hostingprogramma wordt gebruikt door de meeste bedrijven die betrokken zijn bij het hosten van websites op internet. Omdat in dit geval een groot aantal totaal verschillende sites op één fysieke server kunnen worden gehost, is deze methode een van de goedkoopste. In het kader van shared hosting is het echter doorgaans verboden om diverse diensten en diensten te draaien en is er ook een grens aan de mate van gebruik van de centrale processor. Dit betekent dat in het geval dat een website te veel serverbronnen verbruikt, de site-eigenaar wordt gevraagd om ofwel te upgraden naar een duurder plan (waarbij meer bronnen worden toegewezen), of als de toegestane drempel wordt overschreden, de website enige tijd wordt geblokkeerd. . Omdat er soms een grote hoeveelheid bronnen van de server nodig is, of er extra applicaties of diensten binnen deze server moeten draaien, kan shared hosting niet altijd worden gebruikt.

In dit geval huren ze meestal een dedicated server – fysiek of virtueel. Dit is echter een duurdere vorm van hosting van webapplicaties op internet, waardoor er vaak gebruik wordt gemaakt van virtuele hosting.

  • Zoals eerder vermeld, is het eenvoudigste scenario voor een webserver het ontvangen van een HTTP-verzoek, het verwerken ervan, het lezen van het gewenste bestand van de harde schijf, het genereren van een HTTP-antwoord en het verzenden ervan naar de client. Dit scenario is het eenvoudigste, maar in werkelijkheid komt het steeds minder vaak voor. Feit is dat bij deze aanpak de inhoud die naar de client wordt overgedragen statisch is (dat wil zeggen dat deze niet verandert van verzoek tot verzoek). Als u echter een webapplicatie moet bouwen, moet de inhoud van de HTML-pagina die naar de client wordt verzonden, veranderen afhankelijk van verschillende externe omstandigheden (aanvraagparameters, database-inhoud, verwerkingstijd van aanvragen, gebruikerstype, enz.). In dit geval is het noodzakelijk om externe (in relatie tot de webserver) programmacode uit te voeren die de logica van de webapplicatie implementeert. Deze code moet gescheiden worden gehouden van de webserver zelf, aangezien de applicatiecode per applicatie verschillend zal zijn, maar de webserver hetzelfde zal zijn. De programmacode die HTTP-verzoeken verwerkt en HTTP-antwoorden genereert, kan dus in twee delen worden verdeeld:
  • programmacode die de logica van een specifieke webapplicatie implementeert (bedrijfslogica, toegang tot een DBMS, enz.).

Omdat de webapplicatiecode meestal in afzonderlijke modules wordt verpakt en onafhankelijk wordt geleverd, zijn mechanismen voor interactie tussen deze twee delen vereist, d.w.z. interactie-interface. In dit geval verwijst de interactie-interface naar de reeks regels waarmee de webserver en applicatie met elkaar zullen communiceren. In feite zou het stroomdiagram voor de verwerking van verzoeken er als volgt uit kunnen zien:


Historisch gezien waren er twee hoofdtypen interfaces tussen een externe applicatie en een webserver: CGI en ISAPI.

CGI(Common Gateway Interface) is de vroegste manier van interactie tussen een webserver en een webapplicatie. Het belangrijkste idee dat ten grondslag ligt aan CGI is dat wanneer het volgende HTTP-verzoek binnenkomt, de webserver de creatie van een nieuw bestand initieert. proces en geeft alle benodigde HTTP-verzoekgegevens door. Nadat dit proces is uitgevoerd, wordt het beëindigd en wordt het resultaat teruggestuurd naar de webserver. Omdat de webserver en de applicatie vanuit het oogpunt van het besturingssysteem verschillende processen zijn, worden middelen voor interprocesscommunicatie (IPC) gebruikt om informatie tussen hen uit te wisselen - vaak zijn dit omgevingsvariabelen, genaamd pipelines, enz. Het grote voordeel van CGI is dat het webserverproces en de applicatie van elkaar geïsoleerd zijn en bij problemen in de webapplicatie zal het applicatieproces falen, terwijl het webserverproces zelf blijft functioneren.

Aan de andere kant brengt de noodzaak om elke keer een nieuw proces te creëren extra overhead met zich mee voor het creëren van processen (het creëren van processen is een dure operatie vanuit het oogpunt van het besturingssysteem) en gegevensoverdracht over procesgrenzen heen. Dit feit is een ernstig nadeel en heeft een aanzienlijke impact op de schaalbaarheid van de webapplicatie (de mogelijkheid om een ​​groter aantal inkomende verzoeken te verwerken).

ISAPI(Internet Server API) is een alternatieve manier waarop een webserver en een webapplicatie kunnen communiceren. In tegenstelling tot CGI initieert de webserver bij interactie binnen de ISAPI-interface, wanneer het volgende verzoek binnenkomt, de creatie van een nieuw stroom binnen het hoofdproces waarin de webserver draait. Omdat het creëren van een thread vanuit het oogpunt van het besturingssysteem een ​​minder dure operatie is dan het creëren van een proces, zijn dergelijke applicaties in de praktijk doorgaans schaalbaarder. Het vereenvoudigt ook de interactie tussen de webserver en de webapplicatie omdat het gebruik maakt van één adresruimte binnen het besturingssysteem (aangezien alle code in hetzelfde proces draait). Als er echter een ernstig probleem is met een webapplicatie die binnen ISAPI communiceert met de webserver, loopt de webserver mogelijk ook het risico te worden beëindigd.

Omdat de webserver en webapplicatie in hetzelfde proces draaien, is dit inderdaad het geval. Daarom moeten ontwikkelaars van webservercode die ISAPI ondersteunt speciale aandacht aan dit probleem besteden. Tegenwoordig is de meest gebruikelijke manier van interactie tussen een webserver en een webapplicatie de ISAPI-interface, omdat deze de meest optimale prestaties biedt op het gebied van overhead en schaalbaarheid. Wanneer er echter meerdere webapplicaties op dezelfde webserver worden uitgevoerd, bestaat de kans dat de ene applicatie de andere beïnvloedt. Als we het hebben over bedrijven die webapplicaties op hun servers hosten, kan de situatie ontstaan ​​dat de websites van concurrerende bedrijven tegelijkertijd op dezelfde webserver worden gehost. In dit geval zou een van de bedrijven theoretisch opzettelijk code kunnen uploaden die de webserver met een fout zou laten crashen, waardoor alle websites die op deze webserver worden gehost niet beschikbaar zouden zijn. Om deze situatie te voorkomen wordt een gecombineerde aanpak gebruikt: voor elke applicatie kan een applicatiepool worden gecreëerd, wat een afzonderlijk proces is waarin threads functioneren om inkomende HTTP-verzoeken van gebruikers te verwerken. Als een van de applicaties in dit geval code bevat die het proces met een fout beëindigt, wordt alleen het proces van deze applicatie beëindigd. Bovendien bevat elke applicatiepool een reeks vooraf gemaakte en voorbereide threads. Dit is nodig om geen tijd te verspillen aan het maken van een thread wanneer een inkomend verzoek binnenkomt. Deze set vooraf gemaakte threads wordt aangeroepen. Normaal gesproken controleert de webserver elke groep van toepassingen en als deze uitvalt, start de webserver het proces opnieuw.

Naast de bovengenoemde functies en mechanismen van een webserver omvatten de functies ervan vaak gerelateerde extra taken. Deze taken omvatten gebruikersauthenticatie en -autorisatie, het bijhouden van een serverlogboek (om de werking van de webserver te debuggen), het ondersteunen van meerdere websites op één server (virtuele hosting), het ondersteunen van beveiligde verbindingen via het HTTPS-protocol, enz. Deze functies zijn afhankelijk van elk specifiek geval van de webserverimplementatie.

Tegenwoordig zijn er een groot aantal verschillende implementaties van webservers. Een van de meest populaire en veelzijdige webservers is de open source Apache-webserver. Het is gemaakt om in de Linux-omgeving te werken, en er is ook een implementatie voor het werken binnen Windows. Er zijn diverse andere varianten bovenop gebouwd, zoals Apache Tomcat voor het draaien van Java-gebaseerde webapplicaties. Een ander, meest serieus product op dit gebied is de Microsoft Internet Information Services (IIS)-webserver, die draait binnen het Windows-besturingssysteem. Normaal gesproken voert deze webserver applicaties uit die zijn gebaseerd op ASP.NET (en aanverwante technologieën), evenals PHP-applicaties en statische websites. Bij het maken van webapplicaties op basis van ASP.NET zullen we IIS 7 gebruiken. Tenslotte zijn er nog andere, kleinere projecten voor het ontwikkelen van webservers, bijvoorbeeld Nginx.

Dit project is ontwikkeld door een van de Rambler-ontwikkelaars om de prestaties van deze zoekmachine te optimaliseren. Vervolgens bleek het project zo succesvol dat het in andere toepassingen werd gebruikt. Normaal gesproken wordt Nginx gebruikt wanneer het nodig is om een ​​infrastructuur met hoge belasting te bouwen.

Een webserver is een programma dat binnenkomende HTTP-verzoeken verwerkt en HTTP-antwoorden genereert. In het eenvoudigste geval draagt ​​de webserver de inhoud van bestanden op de harde schijf van de server over naar de client. Wanneer het nodig is om HTTP-antwoorden te genereren op basis van bepaalde programmalogica, wordt externe programmacode aangesloten. Om externe programmacode aan te sluiten, worden CGI- en ISAPI-interfaces gebruikt. Op dit moment is het gebruik van de ISAPI-interface het meest veelbelovend vanwege de hogere schaalbaarheid. Binnen de webserver wordt een applicatiepool aangemaakt (voor elke webapplicatie een apart proces binnen het besturingssysteem, dat meerdere threads omvat om verzoeken te verwerken). Er is een groot aantal webserverimplementaties, waarbij ASP.NET-toepassingen doorgaans gebruik maken van de Microsoft Internet Information Services (IIS)-webserver.

Beveiligingsvragen

  • Wat is een webapplicatie?
  • Wat is een browser?
  • Beschrijf de cyclus van het verwerken van een verzoek aan een webapplicatie van een klant.
  • Waarom zijn er technologieën voor de ontwikkeling van webapplicaties nodig (zoals ASP.NET, PHP, Ruby On Rails, enz.).
  • Hoe werkt het HTTP-protocol en waar dient het voor?
  • Wat zijn HTTP-berichtkoppen en waarvoor dienen ze?
  • Wat is de hoofdtekst van een HTTP-bericht?
  • Hoe worden de headers gescheiden van de berichttekst in een HTTP-bericht?
  • Wat is een HTTP-verzoekmethode?
  • Wat is de statuscode van het HTTP-antwoord?
  • Geef voorbeelden van HTTP-headers voor een HTTP-verzoek en een HTTP-antwoord.
  • Hoe verschillen symmetrische versleutelingsalgoritmen van asymmetrische versleutelingsalgoritmen?
  • Hoe werkt het veilige HTTPS-protocol?
  • Wat is een webserver?
  • Op basis van welke interfaces kunnen een webserver en een webapplicatie met elkaar communiceren?
  • Waarin verschilt CGI van ISAPI?
  • Wat is gedeelde hosting?
  • Wat is een applicatiepool?
  • Noem de meest populaire implementaties van webservers.
  • Op welke webserver draaien ASP.NET-applicaties?

Als u http://www.site/how-web-server-work/ in de adresbalk van uw browser typt en op Enter drukt, verschijnt deze pagina van onze website op het scherm.

Op het meest basale niveau gebeurde het volgende: uw browser maakte verbinding met de webserver, stuurde een verzoek om de webpagina van de pagina te verkrijgen en ontving deze.

Nu iets meer details:

De URL bestaat uit drie delen:

1. Protocol (http)

2. Servernaam (www.site)

3. Paginaadressen (hoe-webserver-werk)

De browser maakt contact met de domeinnaamserver om de sitenaam www.site te vertalen IP-adres, die het gebruikt om verbinding te maken met de servermachine. De browser maakt vervolgens verbinding met de webserver op het opgegeven IP-adres op poort 80 of een ander adres, indien dat de bedoeling is (we bespreken poorten later in dit artikel).

Volgens het HTTP-protocol stuurde de browser een verzoek naar de server, met het verzoek om het bestand http://www.site/how-web-server-work/

merk dat op koekjes kan ook vanuit de browser naar de server worden verzonden.

Als reactie hierop heeft de server gegenereerd dynamische webpagina en HTML-tekst teruggestuurd om deze pagina in uw browser weer te geven. Cookies kunnen ook vanaf de server naar de browser worden verzonden in de paginakop. De browser leest de HTML-tags en produceert de webpagina-uitvoer op het scherm.

Internet

Dus wat is het “internet”? Het internet bestaat uit honderden miljoenen computers die met elkaar zijn verbonden computernetwerk. Een netwerk zorgt ervoor dat alle computers met elkaar kunnen communiceren. Een thuiscomputer kan op verschillende manieren en apparaten met internet worden verbonden - te beginnen met een primitief modem voor een telefoonlijn tot een lokale netwerkverbinding ( LAN) bij internetprovider ( ISP).

Grote internetproviders ondersteunen glasvezellijnen voor een heel land of regio. Over de hele wereld worden backbone-netwerken aangelegd, verbonden via glasvezellijnen, onderzeese kabels of satellietverbindingen. Elke computer op internet is dus verbonden met elke andere computer op internet.

Klanten en servers

Over het algemeen kunnen alle computers op internet in twee categorieën worden verdeeld: servers en clients. Computers die diensten (zoals webservers, FTP-servers, clouddiensten) aan andere machines leveren, zijn dat wel servers. De machines die worden gebruikt om verbinding te maken met deze services zijn − klanten. Wanneer u verbinding maakt met Google om een ​​zoekopdracht uit te voeren of een van haar diensten te gebruiken, stelt Google haar computer (mogelijk een hele cluster van krachtige computers) ter beschikking om aan uw verzoek te voldoen. Dus Google levert de server. Uw machine kan ook diensten leveren aan iemand op internet. De gebruikersmachine is dus meestal een client, maar kan indien nodig ook een server worden.

Een server kan een of meer diensten op internet aanbieden. Op een servercomputer kan bijvoorbeeld software zijn geïnstalleerd waarmee deze kan fungeren als webserver, e-mailserver en FTP-server. Clientcomputers die zich bij de server aansluiten, sturen hun verzoeken naar speciale software die op een gedeelde servercomputer draait. Als u bijvoorbeeld een webbrowser op uw computer gebruikt, zal deze "praten" met de webserver op de servercomputer. Uw e-mailtoepassing zal "praten" met de e-mailserver, enzovoort.

IP-adressen

Om al deze machines met een netwerk te verbinden, wordt elke computer op internet een uniek adres genoemd IP-adres. Een typisch IP-adres ziet er als volgt uit:

De vier cijfers in een IP-adres worden gebeld octetten omdat ze waarden tussen 0 en 255 of 2 8 mogelijke waarden kunnen aannemen.

Elke computer op internet heeft zijn eigen unieke IP-adres. De server heeft een statisch IP-adres dat zelden verandert. Aan een thuiscomputer wordt vaak een IP-adres toegewezen door de ISP wanneer de machine er verbinding mee maakt. Dit IP-adres is uniek voor deze sessie, maar kan de volgende keer anders zijn. Op deze manier heeft de ISP slechts één IP-adres nodig voor elke router die hij ondersteunt, en niet voor elke client.

Als u een Windows-computer gebruikt, kunt u veel informatie over internet op uw computer bekijken, inclusief uw huidige IP-adres en hostnaam, met behulp van de opdracht ipconfig. Op een UNIX-machine moet u typen nsopzoeken op de opdrachtregel om het IP-adres van de machine weer te geven.

Domeinnamen

Omdat de meeste mensen moeite hebben met het onthouden van de reeks cijfers waaruit IP-adressen bestaan, en omdat IP-adressen soms moeten worden gewijzigd, hebben alle servers en sites op internet ook voor mensen leesbare namen, genaamd domeinnamen. Bijvoorbeeld www.. Dit is voor de meesten van ons gemakkelijker te onthouden www.site dan om te onthouden 5.9.205.233

De naam www.site bestaat eigenlijk uit drie delen:

1. World Wide Web-naam (www). In feite kunt u het doen zonder expliciet “www” op te geven, hoewel dit formeel een ander netwerk zal zijn.

2. Domeinnaam (qriosity)

3. In de topleveldomeinzone (ru)

Domeinnamen beheren Domeinnaamregistreerders. Registrars creëren topleveldomeinnamen en zorgen ervoor dat alle namen in de toplevelzone van het domein uniek zijn. De registrar verstrekt ook contactgegevens voor elke domeinnaam en lanceert de service wie is, waarmee de eigenaar van het domein wordt aangegeven. De hostnaam wordt aangemaakt door de eigenaar van het domein.

Domeinnaamservers

Een stel servers heeft gebeld domeinnaamservers(DNS) zet voor mensen leesbare namen om in IP-adressen. Deze servers bevatten eenvoudige databases met namen en IP-adressen en worden over het internet verspreid. De meeste individuele bedrijven, internetproviders en grote universiteiten ondersteunen kleine DNS. Er zijn ook centrale DNS's die gegevens gebruiken die zijn aangeleverd door domeinnaamregistreerders.

Wanneer u de URL http://www..site invoert, wordt deze doorgegeven aan de domeinnaamserver. De server retourneert het juiste IP-adres voor www.site. Bij het verkrijgen van het juiste IP-adres kunnen een aantal naamservers betrokken zijn.

Laten we dus herhalen wat we hebben gelezen: het internet bestaat uit miljoenen machines, elk met een uniek IP-adres. Veel van deze auto's zijn dat wel servers. Dit betekent dat ze diensten leveren aan andere computers op internet. Veel van deze servers zijn e-mailservers, webservers, FTP-servers en cloudserviceservers.

Poorten

Elke server stelt zijn diensten via internet beschikbaar met behulp van genummerd havens, één voor elke service die beschikbaar is op de server. Er is bijvoorbeeld een servercomputer waarop een webserver en een FTP-server draaien. De webserver is doorgaans beschikbaar op poort 80 en de FTP-server is beschikbaar op poort 21. Clients maken verbinding met de service via een specifiek IP-adres en een specifieke poort.

Elk van de populairste diensten is beschikbaar op een vooraf bekend poortnummer, maar u kunt aan elke dienst uw eigen poortnummer toewijzen.

Als de server verbindingen op een poort van de buitenwereld accepteert en als een firewall de poorten niet beschermt, kunt u vanaf elke computer op internet verbinding maken met een vooraf gedefinieerde poort en de dienst gebruiken. Houd er rekening mee dat er niets is dat u dwingt om bijvoorbeeld de webserver op poort 80 te houden. Als u uw server hebt geïnstalleerd en de webserversoftware erop hebt geladen, kunt u de webserver op poort 999 zetten, of welke andere ongebruikte poort dan ook. . Als uw machine bijvoorbeeld bekend staat als xxx.yyy.com, kunnen ze er verbinding mee maken via de URL http://xxx.jjj.com:999 -":999" geeft duidelijk het poortnummer aan waarlangs uw webserver bereikbaar is. Als de poort niet is opgegeven, gaat de browser er gewoon van uit dat de webserver toegankelijk is via de bekende poort 80.

Protocollen

Zodra een client is verbonden met een dienst op een bepaalde poort, krijgt hij toegang tot de dienst via een speciale poort protocol. Protocol is een reeks conventies op logisch niveau waarmee programma's gegevens kunnen uitwisselen. De TCP/IP-protocolfamilie wordt gebruikt om samen te werken tussen computers op internet. De webserver maakt gebruik van het HTTP-protocol.

Extra: Beveiliging

Uit deze beschrijving blijkt dat een webserver een vrij eenvoudig stukje software is. Het neemt de naam van het bestand dat is verzonden met de GET-opdracht, ontvangt het bestand en stuurt het naar de browser. Zelfs als je alle code voor het afhandelen van poorten in ogenschouw neemt, bestaat een eenvoudig webserverprogramma uit niet meer dan 500 regels code. Volledige webservers zijn complexer, maar in de kern zijn ze ook heel eenvoudig.

De meeste servers stellen een bepaald niveau in beveiliging aan serviceprocessen. De eenvoudigste optie is om een ​​login en wachtwoord aan te vragen om toegang te krijgen tot de server. Geavanceerdere servers voegen extra beveiliging toe door een gecodeerde verbinding tot stand te brengen tussen de server en de browser, zodat gevoelige informatie (zoals creditcardnummers) via internet kan worden verzonden.

Dit is eigenlijk alles wat nodig is voor een webserver die standaard, statische webpagina's. Statische pagina's zijn pagina's die niet veranderen tenzij de webmaster ze zelf bewerkt.

Aanvullend: dynamische pagina's

Wat is er gebeurd dynamisch Webpagina's? Bijvoorbeeld:

1. In elk gastenboek kunt u een bericht in een HTML-formulier invoeren en worden nieuwe en oude vermeldingen automatisch weergegeven.

2. Met elke zoekmachine kunt u trefwoorden invoeren in een HTML-aanvraagformulier, en vervolgens wordt er dynamisch een pagina gemaakt op basis van het zoeken naar informatie met behulp van deze trefwoorden.

In al deze gevallen doet de webserver meer dan alleen ‘een bestand zoeken’. Het verwerkt informatie en genereert pagina's afhankelijk van de specifieke kenmerken van de verzoeken. In vrijwel alle gevallen maakt de webserver gebruik van de zogenaamde scripts- programmacode geschreven in PHP, Perl, Java en andere programmeertalen om dit proces te voltooien.

De pagina's van onze site zijn ook dynamisch, gemaakt met behulp van PHP met behulp van MySQL-databases.

Het internet is met enorme snelheid ons leven binnengedrongen. Hij heeft iedereen voor zichzelf getemd, verstrikt in zijn web en zal ons niet meer loslaten. Terwijl ze elke dag door tientallen en honderden pagina's van websites scrollen, denken maar weinig mensen na over wat dit wereldwijde internetnetwerk is, hoe het werkt, wat deze of andere termen betekenen. Vandaag zullen we het hebben over wat een webserver is, waarvoor deze nodig is en welke functies deze vervult.

Wat wordt bedoeld met de term webserver? Een verzameling webservers vormt de basis van internet. Zonder hen zou er geen World Wide Web zijn. Gebruikers zouden eenvoudigweg niet meer met elkaar kunnen communiceren, de informatie kunnen vinden die ze nodig hebben, of hun websites en blogs kunnen maken en onderhouden. Webservers kunnen computers of speciale programma's zijn die als server fungeren.

Webserverfuncties

De hoofdtaak van een webserver is het accepteren van HTTP-verzoeken van gebruikers, het verwerken ervan en het vertalen ervan naar digitale computercode. Geef vervolgens HTTP-reacties uit en converteer deze van miljoenen nullen en enen naar afbeeldingen, mediastreams, brieven en HTML-pagina's.

Voor gebruiksgemak door gebruikers moet elke webserver een handige webbrowser hebben. Het stuurt verzoeken naar de webserver, omgezet in URL's van internetbronnen.

Naast de standaardfuncties hebben sommige webservers aanvullende functies. Zo kan de bijbehorende software bijvoorbeeld het aantal gebruikersverzoeken aan een bepaalde bron registreren en deze in een apart logboek vastleggen. Ze kunnen ook HTTPS ondersteunen, wat belangrijk is voor een veilige verbinding tussen sites en gebruikers. Vaak wordt er naast een mailserver ook een webserver geïnstalleerd. Hierdoor kunnen gebruikers snel rechtstreeks vanaf de site naar de e-mailpagina gaan door op slechts één hyperlink te klikken.

Waar is een webserver voor?

Zoals uit het bovenstaande al blijkt, heeft iedereen die internet gebruikt om informatie uit te wisselen een webserver nodig. Over het algemeen is het echter niet een persoon die er toegang toe moet hebben, maar programma's en apparaten. Antivirusprogramma's vragen bijvoorbeeld vaak om een ​​server op het netwerk te vinden en hun databases bij te werken. Mobiele telefoons, tv's en andere apparaten die toegang hebben tot internet werken actief samen met webservers. In dit geval kunt u programma's zo configureren dat ze automatisch worden bijgewerkt. Dan is de deelname van de gebruiker aan dit proces vrijwel onnodig. Maar het is nog steeds beter om sommige bijgewerkte databases zelf te beheren.

De bekendste webservers

De bekendste en wijdverspreide webservers zijn Microsoft IIS en Apache. De meest populaire daarvan is Apache. De software wordt door meer dan 60% van alle bestaande software gebruikt. Dit is grotendeels mogelijk vanwege het feit dat Apache gratis is. Ontwikkelaars analyseren voortdurend de fouten van hun product en elimineren deze. Het nadeel van het programma is dat het over het algemeen bedoeld is voor professionele programmeurs en gebruikers, waardoor het vrij lastig te onderhouden en te configureren is.

Microsoft daarentegen streeft ernaar zijn IIS-webserver toegankelijk te maken voor het begrip van de gemiddelde gebruiker. Alle instellingen kunnen zonder specialisten worden uitgevoerd. Het is goed mogelijk dat dit programma qua aantal gebruikers de concurrent met een Indiase naam kan inhalen.

Zowel Apache als IIS werken goed met veel besturingssystemen, zoals Mac OS, Linux, verschillende aanpassingen van Microsoft Windows en vele andere. Deze twee webservers zijn stabiel, hebben een goede snelheid en je kunt er extra modules op aansluiten.

Webserver (web-server) is een server die verantwoordelijk is voor het ontvangen en verwerken van verzoeken (HTTP-verzoeken) van clients naar een website. De clients zijn meestal verschillende webbrowsers. Als reactie hierop geeft de webserver HTTP-antwoorden aan clients, in de meeste gevallen samen met een HTML-pagina, die allerlei soorten bestanden, afbeeldingen, mediastreams of andere gegevens kan bevatten.

De webserver vervult ook de functie van het uitvoeren van scripts, zoals CGI, JSP, ASP en PHP, die verantwoordelijk zijn voor het organiseren van verzoeken aan netwerkdiensten, databases, bestandstoegang, het doorsturen van e-mail en andere e-commercetoepassingen.

De term ‘webserver’ is ook van toepassing op technische apparaten en software die de functies van een webserver uitvoeren. Dit kan een computer zijn die speciaal is geselecteerd uit een groep personal computers of een werkstation waarop servicesoftware is geïnstalleerd en actief is.

De client van de gebruiker, die voornamelijk een webbrowser is, doet verzoeken aan de webserver om bronnen te verkrijgen die worden geïdentificeerd door URL's. Hulpbronnen zijn HTML-pagina's, digitale media-inhoud, mediastreams, verschillende afbeeldingen, gegevensbestanden of andere gegevens die de klant nodig heeft. Als reactie hierop stuurt de webserver de cliënt de gevraagde gegevens. Deze uitwisseling vindt plaats via het HTTP-protocol.

HTTP (Engels: HyperText Transfer Protocol) is een netwerkprotocol voor de applicatielaag van gegevensoverdracht. Het belangrijkste principe van het HTTP-protocol is de client-server-technologie, die zorgt voor interactie tussen het netwerk en de gebruiker.

In het geval van een kleine organisatie kan een webserver een integraal systeem zijn, dat bestaat uit: HTTP-server - gebruikt voor verzoeken om webpagina's; FTP-server – gebruikt om bestanden via internet te downloaden; NNTP-servers – biedt toegang tot nieuwsgroepen; SMTP-server – voor e-mail.

Verhaal

De Britse wetenschapper Tim Berners-Lee wordt beschouwd als de uitvinder van de eerste webserver. Hij werkte sinds 1980 bij het European Nuclear Research Laboratory (Conseil Européen pour la Recherche Nucléaire, CERN) als softwareconsultant en begon zijn ontwikkelingswerk. In Genève ontwikkelde hij voor zijn eigen behoeften het programma Inquire, dat willekeurige associaties gebruikte om gegevens op te slaan en het concept legde voor de basis van het World Wide Web.

In 1989 stelde Tim Berners-Lee, die aan het CERN-intranet werkte, de oprichting voor van een mondiaal hypertekstproject, dat bestond uit het publiceren van hypertekstdocumenten die met elkaar verbonden waren door middel van hyperlinks. De uitvoering van dit project zou het volgens hem gemakkelijker maken voor CERN-wetenschappers om informatie te combineren, zoeken en uitwisselen. Om het project te implementeren heeft Tim Berners-Lee, samen met zijn assistenten, de URI- en URL-identifiers, het HTTP-protocol en de HTML-taal uitgevonden. Al deze technologieën worden nu op grote schaal gebruikt in het moderne internet en kunnen niet meer zonder.


Als resultaat van dit project ontwikkelde Berners-Lee 's werelds eerste webserver, genaamd "httpd", evenals 's werelds eerste hypertext-webbrowser voor de NeXT-computer, genaamd WorldWideWeb.

De eerste webbrowser draaide op het NeXTSTEP-platform, een objectgeoriënteerd, multitasking besturingssysteem, en werd ontwikkeld met behulp van Interface Builder. De webbrowserinterface was heel eenvoudig en bijna alle informatie werd weergegeven in tekstformaat met slechts een paar afbeeldingen. Naast het standaard FTP-protocol gebruikte Tim Berners-Lee het nieuwe HTTP-protocol, dat hij had uitgevonden. Tussen 1991 en 1993 verfijnde en publiceerde Berners-Lee de technische eigenschappen van zijn nieuwe ontwikkelingen: URI's en URL's, het HTTP-protocol en de HTML-taal. De webbrowser werd later omgedoopt tot "Nexus" om verwarring met het besturingssysteem waarop de browser is ontwikkeld en de naam ervan te voorkomen.

's Werelds eerste webserver en eerste webbrowser draaiden op de NeXTSTEP personal computer; deze computer is nu te zien in het CERN-museum (Microcosm).

Tim Berners-Lee was gastheer van de eerste website ter wereld op http://info.cern.ch; Deze site is nu gearchiveerd. De eerste site verscheen op 6 augustus 1991 op internet. Op deze website stond:

  • beschrijving van het World Wide Web;
  • instructies voor het correct installeren van een webserver;
  • informatie over hoe u een webbrowser kunt aanschaffen;
  • andere technische informatie.

Deze site was ook 's werelds eerste online directory. Berners-Lee plaatste er een lijst met links naar andere sites op en werkte deze regelmatig bij.

Op 12 december 1991 werd 's werelds eerste webserver geïnstalleerd in het Stanford Linear Accelerator Center (SLAC) in de Verenigde Staten.

Basis- en extra functies

Alle basis- en extra functies van de webserver:

  • Het ontvangen van verzoeken van webbrowsers via de HTTP-standaard met behulp van TCP/IP-netwerkprotocollen;
  • Zoeken en verzenden van bestanden met hypertekst of andere documenten naar de browser via HTTP;
  • Bedienen en verwerken van aanvragen, zoals: mailto, FTP, Telnet, etc.;
  • Starten van applicatieprogramma's op een webserver met daaropvolgende overdracht en terugkeer van verwerkingsparameters via de CGI-interfacestandaard;
  • Bediening en onderhoud van navigatiebeeldkaarten (Image map);
  • Administratie en operationeel beheer van de server;
  • Autorisatie van gebruikers en hun authenticatie;
  • Het bijhouden van een logboek van gebruikersverzoeken aan verschillende bronnen;
  • Geautomatiseerde werking van webpagina's;
  • Ondersteuning voor pagina's die dynamisch worden gegenereerd;
  • Ondersteuning voor het HTTPS-protocol voor veilige verbindingen met clients.

Beschrijving van hoe de webserver werkt

Webbrowsers communiceren met webservers via het Hypertext Transfer Protocol (HTTP). Het is een eenvoudig verzoek- en antwoordprotocol voor het verzenden van informatie via het TCP/IP-protocol. De webserver ontvangt het verzoek, detecteert het bestand, stuurt het naar de browser en verbreekt vervolgens de verbinding. Grafische informatie die op de pagina aanwezig is, wordt op dezelfde manier verwerkt. Vervolgens is het de beurt aan de webbrowser om het van internet gedownloade HTML-document op de monitor van de gebruiker weer te geven.

Naast HTML-pagina's en afbeeldingen kunnen webservers elk bestand opslaan, inclusief tekstdocumenten, tekstverwerkerdocumenten, videobestanden en audio-informatie. Als je tegenwoordig geen rekening houdt met de vragenlijsten die gebruikers invullen, wordt het grootste deel van het webverkeer in één richting verzonden: browsers lezen bestanden van de webserver. Maar dit zal veranderen met de algemene acceptatie van de PUT-methode die wordt beschreven in het HTTP 1.1-concept, waarmee bestanden naar de webserver kunnen worden geschreven. Tegenwoordig wordt de PUT-methode vooral gebruikt door gebruikers die webpagina's maken, maar in de toekomst kan het ook nuttig zijn voor andere gebruikers om feedback te geven aan informatiecentra. PUT-verzoeken zijn veel eenvoudiger dan het gewone POST-uploaden van bestanden naar een webserver.

Ook op de webserver voeren verschillende applicaties hun werk uit, waarvan de meest populaire zoekmachines en tools voor communicatie met databases zijn. De standaarden die worden gebruikt om deze toepassingen te ontwikkelen, zijn onder meer de Common Gateway Interface (CGI), JavaScript-scripttalen en de programmeertalen Java en VisualBasic. Naast de CGI-standaard hebben sommige webserverbedrijven application programming interfaces (API's) gemaakt, zoals de Netscape Server API en de Internet Server API, die zijn gemaakt door Microsoft en Process Software AG. Met deze interfaces hebben ontwikkelaars rechtstreeks toegang tot specifieke webserverfuncties. Sommige webservers bieden middleware om verbinding te maken met databases, waarvoor mogelijk geavanceerde programmeerkennis nodig is om te kunnen werken.

Basiszoekfuncties helpen gebruikers de informatie te sorteren die ze nodig hebben, en databasehulpprogramma's geven webbrowsergebruikers toegang tot die informatie.

Overzicht webserver

De criteria voor het kiezen van een webserver kunnen verschillende kenmerken omvatten: installatie, configuratie, serverbeheer, administratie, beheer van informatie die op de server wordt gehost, bescherming van deze informatie, toegangscontrole, functies voor applicatieontwikkeling en prestaties.

De meeste webservers zijn eenvoudig en snel te installeren.

Het moeilijkste deel van het installatieproces is het configureren van meerdere domeinnamen op één fysiek apparaat, of met andere woorden, het organiseren van virtuele servers.

Webservers beschikken over hulpmiddelen voor het beheren van de informatiemodule die de algehele organisatie van de website kenmerkt, en beschikken ook over hulpmiddelen voor het controleren van de juistheid van interne en externe hyperlinks. Het LiveWire-pakket van Netscape Communications, dat wordt meegeleverd met Novell Open Enterprise Server (OES) en optioneel verkrijgbaar is met FastTrack Server, heeft een hostbeheerhulpprogramma dat alle koppelingen voor een geselecteerde pagina weergeeft. Dit hulpprogramma biedt ook een algemene lijst van alle onjuiste verbindingen die worden gedetecteerd. O'Reilly & Associates' WebView heeft dezelfde functionaliteit en kan een gedetailleerde bestandsboom weergeven waarin alle ongeldige links rood zijn gemarkeerd.

Er zijn ook basishulpmiddelen voor het beheren van inhoudsmateriaal. Webbeheerders moeten kiezen waar ze bestanden opslaan en hoe deze bestanden toegankelijk zijn voor gebruikers die toegang hebben tot de webserver. Dit vereist toewijzing tussen logische URL's en fysieke bestandsmappen. Elke software voert deze bewerking op zijn eigen unieke manier uit.

Met de toenemende populariteit van webservers en het toenemende gebruik ervan in intranetten neemt de commerciële activiteit op internet toe, waardoor het belang van het beschermen van informatie toeneemt. Vaker wel dan niet zijn beveiligingssystemen voor webservers overkill of onvoldoende voor de hedendaagse intranetten. Als u de toegang tot bepaalde informatie binnen het bedrijf wilt beperken, kunt u kiezen tussen het gebruik van niet-gecodeerde wachtwoorden die via communicatiekanalen worden verzonden, en het gebruik van het Secure Sockets Layer (SSL)-protocol, een complexe en langzame methode die wordt gebruikt om gegevens te versleutelen. wachtwoorden en gegevens.

Om het werk van individuele gebruikers en hun groepen te organiseren, kunnen interne serverapplicaties of bepaalde functies van het besturingssysteem worden gebruikt. Om het werk van individuele gebruikers en hun groepen te organiseren, kunnen interne serverapplicaties of bepaalde functies van het besturingssysteem worden gebruikt. De Microsoft IIS Batch Service biedt ondersteuning voor het onderliggende Windows NT-netwerkbesturingssysteem.

NetWare-webserver van Novell, Inc. Volledig geïntegreerd met adreslijstservices (NetWare Directory Services, NDS). Het is handig om gebruikers vanuit een gemeenschappelijk centrum te beheren, maar het kan een veiligheidsrisico met zich meebrengen. Wachtwoorden worden onversleuteld via communicatiekanalen verspreid en als ze worden onderschept, loopt niet alleen de webserver gevaar, maar loopt ook de veiligheid van het hele netwerkbesturingssysteem gevaar.

Applicatieontwikkeling is een van de belangrijkste functies van een webserver. De applicatieontwikkelomgeving en databaseconnectiviteitstools zijn erg belangrijk om de mogelijkheden van de webserver uit te breiden, aangezien de ontwikkeling van applicaties afhankelijk is van verschillende idiosyncratische details van de application programming interface (API), evenals van de kenmerken van programmeertalen of de individuele voorkeuren van programmeurs.

Webservers kunnen een verscheidenheid aan systemen bedienen, van een intranet van een kleine onderneming tot grote webinformatiecentra die door miljoenen mensen worden gebruikt.

Voor kleine bedrijfsintranetten is het beste pakket Internet Information Server (IIS), gemaakt en gedistribueerd door Microsoft. IIS heeft een vrij eenvoudige installatie en eenvoudige configuratie-instellingen. Dit webserverpakket is goed geïntegreerd met toegangscontrole, de Performance Monitor-systeemmonitoringtool en de Event Viewer. De IIS-webserver biedt ook verschillende hulpmiddelen voor het dynamisch overbrengen van informatie uit databases. IIS is erg snel. IIS-componenten ondersteunen protocollen zoals: HTTP, HTTPS, FTP, NNTP, SMTP, POP3.

Om het opzetten van webinformatiecentra eenvoudiger te maken, worden de meeste webservers geleverd met hulpprogramma's en hulpmiddelen voor het beheren van inhoud. Naast HTML-editors ena's zijn URL-controles de handigste hulpmiddelen, die ervoor zorgen dat alle hyperlinks op uw website werken.

Elke pc die met internet is verbonden, kan in een webserver worden veranderd als u er speciale serversoftware op installeert.

De meest voorkomende webservers zijn Apache (Apache Software Foundation), IIS (Microsoft) en iPlanet-server (van Sun Microsystems en Netscape Communications Corporation). Nu is er op de markt voor webserversoftware een enorme selectie aan producten, zowel commercieel als gratis.

Een van de meest voorkomende webservers is Apache van de Apache Software Foundation. Er wordt geschat dat het op 65% van alle webservers ter wereld wordt gebruikt. Een van de belangrijkste voordelen van Apache-software is dat deze gratis te distribueren is. De ontwikkelaars repareren regelmatig gevonden bugs en bieden goede gebruikersondersteuning. Deze webserver ondersteunt een groot aantal modules, hulpprogramma's en add-ons. Omdat Apache vanaf het allereerste begin is ontwikkeld als software voor beheerders en gevorderde gebruikers, is het nadeel dat het lastig te configureren en te onderhouden is voor onervaren webmasters.

De volgende in populariteit is de IIS-webserver van Microsoft. Volgens Netcraft is de IIS-webserver goed voor 12,46% van het totale aantal webservers. Dit product maakt deel uit van de Windows NT-serversoftwarefamilie. De belangrijkste voordelen zijn stabiliteit, hoge snelheid en de mogelijkheid om extra modules aan te sluiten. Microsoft streeft ernaar ervoor te zorgen dat elke gebruiker zijn producten kan gebruiken zonder de hulp van specialisten als hij standaardproblemen moet oplossen. Daarom is IIS zeer eenvoudig te installeren, configureren en onderhouden. De webserver ondersteunt .NET-technologie, die de laatste tijd aan populariteit wint onder ontwikkelaars en professionele gebruikers. Deze voordelen tillen de IIS-webserver naar een hoger niveau en u kunt ervan uitgaan dat het gebruik ervan zal toenemen.

Andere bekende webservers:

  • nginx is een gratis webserver en mailproxyserver ontwikkeld door Igor Sysoev. Eenvoudige, snelle en betrouwbare server. Werkt op Linux en andere Unix-achtige besturingssystemen, evenals op Windows. Populair op grote websites;
  • lichtpd- gratis webserver. Ontwikkeld door Jan Kneschke. Snelle en veilige webserver. Werkt op Linux en andere Unix-achtige besturingssystemen, evenals op Windows;
  • Google-webserver- een webserver die gebaseerd is op Apache en die door Google wordt gebruikt om haar webinfrastructuur te organiseren;
  • Hars- een gratis webserver en applicatieserver voor Java. Ontwikkeld door Caucho Technology Inc.;
  • Cherokee- een gratis webserver die alleen via de webinterface wordt bestuurd. Geschreven in de programmeertaal C;
  • Wortel- een webserver geschreven in de programmeertaal Java. Werkt op Linux en Windows;
  • THTTPD- een eenvoudige, kleine, snelle en veilige webserver. Ontwikkeld door ACME Labs Software.

Webserverclients

Meestal is de client een webbrowser. Maar ook diverse andere apparaten en programma’s hebben toegang tot de webserver:

  • Een webbrowser geïnstalleerd op een desktopcomputer;
  • Een webbrowser geïnstalleerd op een PDA of ander draagbaar apparaat;
  • Mobiele telefoons en smartphones waarmee de gebruiker via het WAP-protocol toegang krijgt tot webserverbronnen;
  • Verschillende programma's die onafhankelijk toegang hebben tot de webserver om bij te werken of andere informatie te verkrijgen. Een voorbeeld zijn verschillende antivirussen die periodiek contact opnemen met de webserver om de database bij te werken;
  • Diverse digitale apparaten, evenals enkele huishoudelijke apparaten.

In het eerste artikel wil ik wat dieper ingaan op dit specifieke onderwerp, omdat het erg belangrijk is om de werkingsmechanismen te kennen van de tool (in ons geval de webserver) die de werking van onze site implementeert. We idealiseren de webserver een beetje, we zullen enkele subtiele technische nuances missen om het gemakkelijker te maken de essentie te begrijpen. Ik zal proberen het zo eenvoudig en toegankelijk mogelijk te schrijven :)

Ik weet nog dat ik dat lang geleden dacht Internet geconcentreerd op één plek, het was zoiets als een laboratorium, waar zich een grote hoeveelheid apparatuur bevond die de werking van dit alles ondersteunde. Toen kon ik de omvang van het Mondiale Netwerk en de complexiteit van zijn structuur niet waarderen. In werkelijkheid is internet een abstract concept; internetbronnen zijn verspreid over apparatuur over de hele wereld. Om deze apparatuur over grote afstanden met elkaar te communiceren, zijn met name speciale algoritmen en standaarden uitgevonden: TCP/IP-protocol, waarop ons internet momenteel actief is. Volgens deze standaard heeft elke computer op het Global Network zijn eigen unieke adres - IP-adres. Een IP-adres is een reeks van vier cijfers in het bereik van 0 tot 255, gescheiden door punten (bijvoorbeeld 92.166.31.18). Eén computer kan communiceren met een andere computer op het netwerk door het IP-adres te kennen. Maar om te zeggen “een computer die met een computer communiceert” is niet helemaal correct, aangezien het niet de computers zelf zijn die communiceren, maar de netwerkdiensten (programma's, als je wilt) die erop draaien. Stel dat u een e-mail naar uw grootvader stuurt en dat uw e-mailprogramma contact maakt met de mailserver om de brief te verzenden.

Er kunnen meerdere netwerkprogramma's tegelijkertijd op een computer draaien. Daarom bestaat er naast het IP-adres voor communicatie via het TCP/IP-protocol ook zoiets als haven. Een poort is een getal in het bereik van 1 tot 65536. De minimale voorwaarde voor communicatie tussen het ene netwerkprogramma en het andere is dus dat het eerste het IP-adres en poortnummer van het tweede heeft. Het is gebruikelijk om de combinatie van IP-adres en poort gescheiden door een dubbele punt te schrijven (bijvoorbeeld 192.168.35.2:443).

Om communicatie tot stand te brengen, krijgt het eerste programma een poortnummer en begint het te "wachten" tot het tweede verbinding maakt. Het tweede programma krijgt hetzelfde poortnummer en IP-adres als de computer waarop het eerste programma draait. De verbinding tussen de twee programma's doet denken aan een gesprek op een mobiele telefoon: Vasya belt Petya, Petya neemt de telefoon op en het gesprek begint. In dit geval is het telefoonnummer in ons geval een combinatie van het IP-adres en het poortnummer.

Het programma dat wacht op een verbinding wordt opgeroepen server. Als de server opstart, wordt het poortnummer aangegeven; ze zeggen vaak: “de server luistert op de poort.” Op een computer kunnen niet meer dan één server actief zijn met hetzelfde poortnummer (anders is het onmogelijk om te bepalen met welke server verbinding moet worden gemaakt). Het programma dat een verbinding met de server tot stand brengt, wordt aangeroepen cliënt. Clients zijn niet onderworpen aan deze beperking (u kunt bijvoorbeeld twee jabber-clients uitvoeren). Ook kunnen meerdere clients van verschillende computers verbinding maken met de server, als de server dit zelf ondersteunt.

Laten we nu, gebaseerd op deze oppervlakkige kennis, bepalen wat het is webserver. Ten eerste is het, zoals de naam al doet vermoeden, een netwerkprogramma dat wacht op verbindingen (server) en deze accepteert. Standaard “luistert” de webserver naar poortnummer 80. De webserver ondersteunt het werken met meerdere clients tegelijk (meerdere mensen kunnen tegelijkertijd de site bekijken). De client voor de webserver is webbrowser(Internet Explorer, Opera, enz.).

De site werkt dus ten koste van een webserver, die pagina's van deze site verzendt naar klanten die deze opvragen. Om een ​​pagina op te vragen, moet u het IP-adres weten van de computer waarop de webserver draait met de site die we nodig hebben. Maar het onthouden van IP-adressen is lastig, dus bedachten ze domeinnamen die een soort tekstentiteit zijn (bijvoorbeeld yandex.ru). Het is duidelijk dat domeinnamen begrijpelijker en gemakkelijker te onthouden zijn. Het TCP/IP-protocol kan de gewenste computer echter niet vinden op basis van de domeinnaam, dus deze moet worden omgezet naar een IP-adres. Hiervoor worden DNS-servers gebruikt, waarop correspondentietabellen tussen domeinnamen en IP-adressen staan. Laten we zeggen dat wanneer we het domein yandex.ru in de adresbalk van de browser invoeren, er eerst een verzoek naar de DNS-server wordt gestuurd om het IP-adres van dit domein te bepalen. Wanneer het adres is bepaald, probeert de browser op dit adres en op het standaard poortnummer 80 contact te maken met de webserver. Als er een verbinding met de webserver tot stand is gebracht, vraagt ​​de browser de gewenste sitepagina op bij de webserver.

In principe kan de webserver worden geconfigureerd om op een andere poort te werken; in dit geval moet u bij het opvragen van een pagina in de browser deze opgeven met een dubbele punt achter de domeinnaam (bijvoorbeeld site.ru:3182).

Hoe vraagt ​​een browser een sitepagina aan bij een webserver? Het is duidelijk dat interactie tussen een webserver en een browser een ‘gemeenschappelijke taal’ vereist, dat wil zeggen een bepaalde standaard waarmee verzoeken en antwoorden worden gegenereerd. Deze standaard is HTTP-protocol(HyperText-overdrachtsprotocol). Dit protocol is vrij eenvoudig, omdat het een verzoek-antwoordschema volgt. Met andere woorden: voor elk HTTP-verzoek van een webbrowser reageert de webserver met een HTTP-antwoord. Op eigen initiatief verzendt de webserver geen HTTP-pakketten (bovendien verbreekt de server vaak na het voltooien van de request-response-operatie de verbinding met de client).

Laten we eens kijken naar de structuur van een HTTP-pakket. Een HTTP-verzoek en een HTTP-antwoord bestaan ​​uit twee blokken: een headerblok en een pakketbodyblok. Deze blokken worden van elkaar gescheiden door twee regelfeeds (dat wil zeggen, er is een lege regel tussen de kopteksten en de hoofdtekst). Het headerblok bevat verschillende parameters van het pakket, het bodyblok bevat enkele gegevens. Het tweede blok ontbreekt mogelijk, wat betekent dat het HTTP-pakket mogelijk alleen uit een headerblok bestaat. Laten we bijvoorbeeld een verzoek uitvoeren op de hoofdpagina van de ya.ru-website en kijken naar de HTTP-pakketten die eraan hebben deelgenomen. Bij het opvragen van de startpagina stuurde Firefox het volgende HTTP-verzoek naar de webserver:

GET / HTTP/1.1 Host: ya.ru User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2) Gecko/20100115 Firefox/3.6 Accepteren: text/html,application/xhtml+ xml ,application/xml;q=0.9,*/*;q=0.8 Accept-taal: ru,en-us;q=0.7,en;q=0.3 Accept-codering: gzip,deflate Accept-tekenset: windows-1251 , utf-8;q=0,7,*;q=0,7 Keep-Alive: 115 Verbinding: keep-alive

Het HTTP-verzoek mist een datablok (omdat er geen lege regel is om de headers van de gegevens te scheiden). Laten we eens kijken naar de regels van deze vraag die op dit moment voor ons interessant zijn. Eerst de allereerste regel:

GET / HTTP/1.1

"GET" - verzoektype. De twee meest voorkomende soorten verzoeken zijn GET en POST. We zullen erover praten in een van de volgende artikelen of lessen. "/" geeft aan dat de hoofdpagina van de site wordt opgevraagd. Anders is dit het pad en de naam van de pagina of het bestand dat wordt opgevraagd. "HTTP/1.1" - HTTP-protocolversie.

Gastheer: ya.ru

De parameter Host bevat het domein van de site waartoe toegang wordt verkregen.

User-agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2) Gecko/20100115 Firefox/3.6

User-Agent bevat informatie over de client: browsertype, besturingssysteem, enzovoort. De overige parameters zijn op dit moment niet bijzonder interessant voor ons.

De webserver reageerde op dit HTTP-verzoek met het volgende HTTP-antwoord:

HTTP/1.1 200 OK Server: nginx Datum: do, 25 februari 2010 12:31:25 GMT Inhoudstype: text/html; charset=utf-8 Laatst gewijzigd: dinsdag 12 januari 2010 15:29:06 GMT Overdrachtscodering: chunked Verbinding: keep-alive Inhoudscodering: gzip Yandex ...

Een lege regel geeft de aanwezigheid van een datablok (pakketlichaam) aan. Laten we, net als in het geval van een HTTP-verzoek, eens kijken naar de belangrijkste regels van het ontvangen antwoord. De eerste regel geeft de HTTP-protocolversie (HTTP/1.1) en de resultaatcode aan. Een resultaatcode van 200 betekent dat het verzoek succesvol was. De beschrijving van het HTTP-protocol beschrijft alle resultaatcodes. Een aantal van hen, zoals 403 en 404, zullen we in de toekomst leren kennen.

Server: nginx

De parameter Server bevat de naam van de webserver. In ons geval hebben we te maken met de nginx-webserver. Deze parameter kan ontbreken in het HTTP-antwoord als de beheerder van deze server om een ​​of andere reden deze informatie niet openbaar wil maken.

Inhoudstype: tekst/html; tekenset=utf-8

Content-Type bevat het type gegevens dat wordt overgedragen en, indien nodig, de codering ervan (charset). Bovendien bevatten de headers vaak een Content-Length-parameter, die de grootte van de door de server verzonden gegevens in bytes bevat. Het bodyblok van het pakket bevat de code van de opgevraagde pagina.

Zo maakten we kennis met de basisprincipes van het functioneren van een webserver en onderzochten we het ‘request-response’-schema. Voor een webmaster is het erg handig om het HTTP-protocol zo goed mogelijk te kennen, omdat dit de basis is voor het functioneren van de site. In volgende artikelen en lessen zullen we kijken naar verschillende webservermogelijkheden die niet in dit artikel worden behandeld en hoe deze worden geïmplementeerd door het HTTP-protocol. En in de eerste les leren we hoe we zelf een webserver kunnen installeren en configureren.