Server web - Web server

Interiorul și partea din față a unui server Dell PowerEdge , un computer conceput pentru a fi montat într-un mediu de montare pe rack .
Mai multe servere web pot fi utilizate pentru un site cu trafic intens; aici, serverele Dell sunt instalate împreună fiind utilizate pentru Wikimedia Foundation .

Un server web este un software de calculator și hardware de bază care acceptă cereri prin HTTP , protocolul de rețea creat pentru distribuirea paginilor web sau varianta sa securizată HTTPS . Un agent de utilizator , de obicei un browser web sau un crawler web , inițiază comunicarea făcând o cerere pentru o anumită resursă folosind HTTP, iar serverul răspunde cu conținutul resursei respective sau cu un mesaj de eroare . De asemenea, serverul poate accepta și stoca resursele trimise de la agentul de utilizator, dacă este configurat pentru a face acest lucru.

Un server poate fi un singur computer sau chiar un sistem încorporat, cum ar fi un router cu o interfață de configurare încorporată, dar site-urile cu trafic mare rulează de obicei servere web pe flote de computere concepute pentru a gestiona un număr mare de cereri de documente, fișiere multimedia și scripturi interactive. O resursă trimisă de la un server web poate fi un fișier preexistent disponibil serverului sau poate fi generată în momentul solicitării de către un alt program care comunică cu programul server. Primul este adesea mai rapid și mai ușor memorat în cache pentru cereri repetate, în timp ce acesta din urmă acceptă o gamă mai largă de aplicații. Site-urile web care servesc conținut generat încorporează de obicei fișiere stocate ori de câte ori este posibil.

Tehnologii precum REST și SOAP , care utilizează HTTP ca bază pentru comunicarea generală de la computer la computer, au extins aplicația serverelor web mult dincolo de scopul lor original de a servi pagini citite de oameni.

Istorie

Primul server web din lume, o stație de lucru pentru computer NeXT cu Ethernet, 1990. Eticheta carcasei spune: "Această mașină este un server. NU-L PUTEȚI !!"
Sun cobalt Qube 3 - un calculator aparat de server (2002, întrerupt)

În martie 1989, Sir Tim Berners-Lee a propus angajatorului său CERN un nou proiect , cu scopul de a facilita schimbul de informații între oamenii de știință prin utilizarea unui sistem de hipertext . Proiectul a avut ca rezultat ca Berners-Lee să scrie mai multe biblioteci de software și trei programe între 1990 și 1991:

  • WWWNeXTStepEditor: un editor de browser web , numit și WorldWideWeb ;
  • WWWLineMode: un browser Web în modul linie portabil folosit pentru a explora primul site web;
  • WWWDaemon: un server Web , cunoscut ulterior sub numele de CERN httpd , care a rulat pe un computer NeXTSTEP .

Primul site web al viitorului web mondial a fost găzduit pe un computer NeXTSTEP administrat de Tim Berner-Lee.

În 1991 (august) Tim Berner-Lee a anunțat nașterea tehnologiei WWW și i-a încurajat pe oamenii de știință să o adopte și să o dezvolte.

În 1991 (decembrie), primul server web din afara Europei a fost instalat la SLAC (SUA).

În 1991-1992, CERN a promovat în mod activ adoptarea acestei noi arhitecturi în rândul oamenilor de știință, scriind despre aceasta în buletinele sale informative și făcând prezentări / demonstrații live în diferite institute și universități.

În 1993 „CERN a emis o declarație publică prin care se preciza că cele trei componente ale software-ului web (clientul de bază în modul linie, serverul de bază și biblioteca de cod comun) au fost introduse în domeniul public”.

În 1994 „Tim Berners-Lee a părăsit CERN pentru a crea World Wide Web Consortium (W3C) la MIT ” (în colaborare cu CERN și DARPA) pentru a reglementa dezvoltarea în continuare a numeroaselor tehnologii implicate ( HTTP , HTML etc.) printr-un procesul de standardizare.

În practică, între 1991 și 1996, simplitatea și eficacitatea tehnologiilor timpurii utilizate pentru navigarea și schimbul de date prin intermediul World Wide Web au ajutat la transportarea acestora în multe sisteme de operare diferite și la răspândirea utilizării lor inițial între organizațiile științifice și universități, apoi și către public și companiilor private și, în cele din urmă, utilizatorilor finali privați.

În acei ani de început , au fost dezvoltate noi implementări atât ale browserelor web, cât și ale serverelor web (de exemplu, NCSA HTTPd , Apache HTTPd , AOLserver , Netscape Enterprise Server , IIS etc.) de către diverse organizații, inclusiv private, începând astfel o competiție acerbă care de atunci a crescut exponențial (vezi și cota de piață a software-ului pentru server web ).

Caracteristici comune de bază

Deși programele de server web diferă în ceea ce privește modul în care sunt implementate, cele mai multe dintre ele oferă următoarele caracteristici comune de bază.

  • HTTP : suport pentru una sau mai multe versiuni ale protocolului HTTP pentru a trimite versiuni ale răspunsurilor HTTP compatibile cu versiunile cererilor HTTP ale clientului, de ex. HTTP / 1.0, HTTP / 1.1 plus, dacă este disponibil, HTTP / 2 , HTTP / 3 ;
  • Înregistrare : de obicei, serverele web au, de asemenea, capacitatea de a înregistra unele informații, despre cererile clienților și răspunsurile serverului, pentru a înregistra fișiere în scopuri de securitate și statistice.

Câteva alte caracteristici populare (doar o selecție foarte scurtă) sunt:

Traducere cale

Serverele web sunt capabile să mapeze componenta cale a unui Uniform Resource Locator (URL) în:

  • o resursă de sistem de fișiere locală (pentru solicitări statice);
  • un nume de program intern sau extern (pentru solicitări dinamice).

Pentru o solicitare statică , calea URL specificată de client este relativă la directorul rădăcină al site-ului țintă.

Luați în considerare următoarea adresă URL, deoarece ar fi solicitată de un client prin HTTP:

http://www.example.com/path/file.html

Agentul utilizatorului clientului îl va traduce într-o conexiune lawww.example.comcu următoarea solicitare HTTP /1.1:

GET /path/file.html HTTP/1.1
Host: www.example.com
Connection: keep-alive

Serverul web activat www.example.comva adăuga calea dată la calea directorului rădăcină al site-ului web (gazdă). Pe un server Apache , acest lucru este frecvent/ acasă / www / site web(pe aparatele Unix , de obicei/ var / www / website). Rezultatul este resursa sistemului de fișiere local:

/home/www/www.example.com/path/file.html

Serverul web citește apoi fișierul , dacă există, și trimite un răspuns către browserul web al clientului. Răspunsul va descrie conținutul fișierului și va conține fișierul în sine sau va apărea un mesaj de eroare care spune că fișierul nu există sau nu este disponibil.

Servere web în modul kernel și în modul utilizator

Un software de server web poate fi încorporat fie în nucleul sistemului de operare , fie în spațiul utilizatorului (ca alte aplicații obișnuite).

Serverele web care rulează în modul kernel pot avea acces direct la resursele kernel și astfel pot fi, în teorie, mai rapide decât cele care rulează în modul utilizator; oricum există dezavantaje în rularea unui server web în modul kernel, de exemplu: dificultăți în dezvoltarea ( depanarea ) software-ului, în timp ce erorile critice în timpul rulării pot duce la probleme grave în kernel-ul OS.

Serverele web care rulează în modul utilizator trebuie să solicite sistemului permisiunea de a utiliza mai multă memorie sau mai multe resurse CPU. Nu numai că aceste solicitări către nucleu necesită timp, dar nu sunt întotdeauna satisfăcute, deoarece sistemul rezervă resurse pentru propria utilizare și are responsabilitatea de a partaja resurse hardware cu toate celelalte aplicații care rulează. Executarea în modul utilizator poate însemna și copii tampon inutile care reprezintă o altă limitare pentru serverele web în modul utilizator.

În zilele noastre, aproape toate software-urile pentru server web sunt executate în modul utilizator (deoarece multe dintre dezavantajele mici de mai sus au fost depășite de hardware mai rapid, noi versiuni de sistem de operare , apeluri de sistem de sisteme de operare mult mai rapide și software de server web nou). A se vedea, de asemenea, comparația software-ului serverului web pentru a descoperi care dintre ele rulează în modul kernel sau în modul utilizator (denumit și spațiu kernel sau spațiu utilizator).

Spectacole

Pentru a îmbunătăți experiența utilizatorului, serverele web ar trebui să răspundă rapid (cât mai curând posibil) la solicitările clienților; cu excepția cazului în care răspunsul la conținut este limitat (prin configurație) pentru un anumit tip de fișiere (de exemplu, fișiere mari etc.), conținutul de date returnate trebuie trimis cât mai curând posibil (viteză mare de transfer).

Pentru software-ul de server Web, principalele statistici de performanță cheie (măsurate în funcție de o sarcină variabilă de clienți și cereri per client) sunt:

  • numărul maxim solicitări pe secundă (RPS, similar cuQPS, în funcție de versiunea și configurația HTTP, tipul de cereri HTTP etc.);
  • timpul de răspuns la latența rețelei (de obicei în milisecunde) pentru fiecare cerere de client nou;
  • randament în octeți pe secundă (în funcție de dimensiunea fișierului, conținutul în cache sau nu, lățimea de bandă a rețelei disponibile, tipul de protocol HTTP utilizat etc.).

Peste trei, numărul de performanță poate varia semnificativ în funcție de numărul de conexiuni TCP active, astfel încât un al patrulea număr statistic este nivelul de concurență acceptat de un server web sub o anumită configurație de server Web, tip OS și resurse hardware disponibile.

Nu în ultimul rând, modelul de server specific și alte tehnici de programare utilizate pentru implementarea unui program de server web pot influența performanța și, în special, nivelul de scalabilitate care poate fi atins sub sarcină mare sau când se utilizează hardware de ultimă generație (multe procesoare, discuri etc.) .).

Performanțele unui server web sunt de obicei comparate utilizând unul sau mai multe dintre instrumentele de testare automată a încărcării disponibile .

Limite de încărcare

Un server web (instalarea programului) are de obicei limite de încărcare predefinite, deoarece poate gestiona doar un număr limitat de conexiuni client concurente (de obicei între 2 și câteva zeci de mii pentru fiecare proces de server web activ, vezi și problema C10k și Problema C10M ) și poate servi doar un anumit număr maxim de solicitări pe secundă, în funcție de:

  • propriile setări,
  • tipul mediu de solicitare HTTP,
  • dacă conținutul solicitat este static sau dinamic,
  • dacă conținutul este stocat în cache sau comprimat ,
  • viteza medie a rețelei dintre clienți și serverul web,
  • numărul de conexiuni TCP active ,
  • de hardware și software limitările sau setările sistemului de operare al calculatorului (e) pe care rulează server web.

Când un server web se apropie sau depășește limitele sale, acesta este supraîncărcat și, prin urmare, poate să nu mai răspundă.

Cauze de supraîncărcare

În orice moment, serverele web pot fi supraîncărcate din cauza:

  • Excesul de trafic web legitim. Mii sau chiar milioane de clienți care se conectează la site-ul web într-un interval scurt, de exemplu, efect Slashdot ;
  • Atacuri de negare a serviciului distribuite . Un atac de refuz de serviciu (atac DoS) sau un atac de refuz de serviciu distribuit (atac DDoS) este o încercare de a face un computer sau o resursă de rețea indisponibilă pentru utilizatorii săi destinați;
  • Viermi de computer care uneori provoacă trafic anormal din cauza a milioane de computere infectate (care nu sunt coordonate între ele)
  • Viermii XSS pot provoca trafic ridicat din cauza a milioane de browsere sau servere web infectate;
  • Roboți pe internet Traficul nu este filtrat / limitat pe site-uri web mari cu foarte puține resurse (lățime de bandă etc.);
  • Încetinirea internetului (rețea) (din cauza pierderilor de pachete etc.), astfel încât solicitările clientului să fie servite mai încet și numărul de conexiuni crește atât de mult încât să se atingă limitele serverului;
  • Serverele web ( calculatoare ) indisponibilitate parțială. Acest lucru se poate întâmpla din cauza întreținerii sau actualizării necesare sau urgente, a defecțiunilor hardware sau software, a defecțiunilor din back-end (de exemplu, în baza de date ) etc .; în aceste cazuri, serverele web rămase pot obține prea mult trafic și pot fi supraîncărcate.

Simptome de supraîncărcare

Simptomele unui server web supraîncărcat sunt:

  • Solicitările sunt furnizate cu întârzieri (posibil lungi) (de la 1 secundă la câteva sute de secunde).
  • Serverul web returnează un cod de eroare HTTP , cum ar fi 500, 502, 503, 504, 408 sau chiar un 404 intermitent .
  • Serverul web refuză sau resetează (întrerupe) conexiunile TCP înainte de a returna orice conținut.
  • În cazuri foarte rare, serverul web returnează doar o parte din conținutul solicitat. Acest comportament poate fi considerat un bug , chiar dacă apare de obicei ca un simptom al supraîncărcării.

Tehnici anti-suprasarcină

Pentru a depăși parțial limitele de încărcare peste medie și pentru a preveni supraîncărcarea, cele mai populare site-uri web folosesc tehnici comune, cum ar fi:

  • Reglarea parametrilor sistemului de operare pentru capacități și utilizare hardware.
  • Reglarea parametrilor serverului (serverelor) web pentru a îmbunătăți securitatea, performanțele etc.
  • Implementarea tehnicilor de cache web (nu numai pentru conținut static, ci, ori de câte ori este posibil, și pentru conținut dinamic).
  • Gestionarea traficului de rețea, utilizând:
  • Utilizarea diferitelor nume de domenii și adrese IP pentru a difuza conținuturi diferite (statice și dinamice) de servere web separate, de exemplu:
    • http://static.example.com
    • http://www.example.com
  • Utilizarea diferitelor nume de domenii, adrese IP și computere pentru a separa fișiere mari ( download.*) de fișiere mici și mijlocii ( static.*) și de site-ul dinamic principal (poate în cazul în care unele conținuturi sunt stocate într-o bază de date backend ) ( www.*); ideea este de a putea cache complet fișierele mici și mijlocii și de a servi în mod eficient fișiere mari sau uriașe (peste 10 - 1000 MB) (fără a afecta performanțele site-ului dinamic sub sarcină mare) utilizând setări diferite pentru fiecare (grup) de computere server web, de exemplu:
    • http://download.example.com
    • http://static.example.com
    • http://www.example.com
  • Folosind multe servere web (programe) pe computer, fiecare este legat de propria sa placă de rețea și de adresa IP .
  • Folosirea mai multor servere web (computere) care sunt grupate în spatele unui echilibrator de sarcină, astfel încât acestea să acționeze sau să fie văzute ca un mare server web.
  • Adăugarea mai multor resurse hardware (adică RAM , discuri rapide ) la fiecare computer.
  • Utilizarea unor programe de computer mai eficiente pentru servere web (adică programe care folosesc și tehnici de copiere zero etc.).
  • Utilizarea celei mai eficiente interfețe gateway server web pentru procesarea solicitărilor dinamice.
  • Folosind alte tehnici de programare și soluții , mai ales dacă este implicat conținut dinamic, pentru a accelera răspunsurile HTTP.
  • Utilizarea celor mai recente versiuni eficiente de HTTP (de ex., Dincolo de utilizarea HTTP / 1.1 comună, de asemenea, activând HTTP / 2 și poate HTTP / 3 ori de câte ori software-ul web server disponibil are suport fiabil pentru ultimele două protocoale) pentru a reduce mult numărul de TCP / Conexiunile IP începute de fiecare client și dimensiunea datelor schimbate (datorită reprezentării mai compacte a antetelor HTTP, compresiei datelor etc.); oricum, chiar dacă protocoalele HTTP (2 și 3) mai noi generează de obicei mai puțin trafic de rețea pentru fiecare cerere / răspuns de date, acestea pot necesita mai multe resurse ale sistemului de operare (de ex. RAM și CPU) utilizate de software-ul serverului web (din cauza datelor criptate , a comprimării datelor pe zborul și alte detalii de implementare) .

Cotă de piață

LAMP (pachet software) (aici în plus cu Squid ), compus în întregime din software gratuit și open-source , este o soluție de înaltă performanță grele și de înaltă disponibilitate pentru un mediu ostil
Diagramă:
Cota de piață a tuturor site-urilor serverelor web importante 2005–2018

Februarie 2021

Mai jos sunt cele mai recente statistici ale cotei de piață a tuturor site-urilor de pe serverele web de top de pe Internet de către Netcraft februarie 2021 Web Server Survey .

Produs Vânzător La sută
nginx NGINX, Inc. 34,54%
Apache Apache 26,32%
IIS Microsoft 6,5%
OpenResty Fundația software OpenResty 6,36%
Server Cloudflare Cloudflare, Inc. 5,0%

Toate celelalte servere web sunt utilizate de mai puțin de 5% din site-uri web.

Februarie 2020

Mai jos sunt cele mai recente statistici ale cotei de piață a tuturor site-urilor de pe serverele web de top de pe Internet realizate de Netcraft februarie 2020 Sondaj de server web .

Produs Vânzător La sută
nginx NGINX, Inc. 36,48%
Apache Apache 24,5%
IIS Microsoft 14,21%
OpenResty Fundația software OpenResty 4,00%
GWS Google 3,18%
Server Cloudflare Cloudflare, Inc. 3,0%

Toate celelalte servere web sunt utilizate de mai puțin de 3% din site-urile web.

Februarie 2019

Mai jos sunt cele mai recente statistici ale cotei de piață a tuturor site-urilor de pe serverele web de top de pe Internet realizate de Netcraft februarie 2019 Sondaj de server web .

Produs Vânzător La sută
IIS Microsoft 28,42%
Apache Apache 26,16%
nginx NGINX, Inc. 25,34%
GWS Google 1,66%

Toate celelalte servere web sunt utilizate de mai puțin de 1% din site-uri web.

Iulie 2018

Mai jos sunt cele mai recente statistici ale cotei de piață a tuturor site-urilor de pe serverele web de top de pe Internet realizate de Netcraft februarie 2018 Sondaj server web .

Produs Vânzător La sută
IIS Microsoft 34,50%
Apache Apache 27,45%
nginx NGINX, Inc. 24,32%
GWS Google 1,20%

Toate celelalte servere web sunt utilizate de mai puțin de 1% din site-uri web.

Februarie 2017

Mai jos sunt cele mai recente statistici ale cotei de piață a tuturor site-urilor de pe serverele web de top de pe Internet realizate de Netcraft februarie 2017 Sondaj de server web .

Produs Vânzător Ianuarie 2017 La sută Februarie 2017 La sută Schimbare Culoarea diagramei
IIS Microsoft 821.905.283 45,66% 773.552.454 43,16% −2,50 roșu
Apache Apache 387.211.503 21,51% 374.297.080 20,89% −0,63 negru
nginx NGINX, Inc. 317.398.317 17,63% 348.025.788 19,42% 1,79 verde
GWS Google 17.933.762 1,00% 18.438.702 1,03% 0,03 albastru

Februarie 2016

Mai jos sunt cele mai recente statistici ale cotei de piață a tuturor site-urilor de pe serverele web de top de pe Internet realizate de Netcraft februarie 2016 Sondaj pe server web .

Produs Vânzător Ianuarie 2016 La sută Februarie 2016 La sută Schimbare Culoarea diagramei
Apache Apache 304.271.061 33,56% 306.292.557 32,80% 0,76 negru
IIS Microsoft 262.471.886 28,95% 278.593.041 29,83% 0,88 roșu
nginx NGINX, Inc. 141.443.630 15,60% 137.459.391 16,61% −0,88 verde
GWS Google 20.799.087 2,29% 20.640.058 2,21% −0,08 albastru

Apache, IIS și Nginx sunt cele mai utilizate servere web de pe World Wide Web.

Vezi si

Referințe

linkuri externe