Cum funcționează serverele web. Cum funcționează serverele web

Scopul prelegerii: definiți conceptul de „server web” și faceți-vă o idee despre funcționarea acestui mecanism.

În prelegerea anterioară, am înțeles funcționarea protocolului HTTP. Acum să vedem cum funcționează instrumentele care fac interacțiunile descrise mai devreme. Funcționarea aplicațiilor web se bazează pe un astfel de concept ca server web. Un server web este un program care acceptă solicitările HTTP primite, procesează acele solicitări, generează un răspuns HTTP și îl trimite clientului. Algoritmul general al serverului web poate fi reprezentat astfel (acțiunile care sunt procesate de serverul web sunt marcate cu verde).

După ce utilizatorul a accesat o anumită resursă folosind protocolul HTTP, clientul (de obicei un browser) generează o solicitare HTTP către serverul web. De obicei, este specificat un nume de server simbolic (de exemplu, „http://www.microsoft.com”) - în acest caz, browserul convertește mai întâi acest nume într-o adresă IP utilizând serviciile DNS. După aceasta, mesajul HTTP generat este trimis către serverul web prin protocolul HTTP. În acest mesaj, browserul indică ce resursă trebuie descărcată și toate informațiile suplimentare. Sarcina serverului web este să asculte pe un anumit port TCP (de obicei portul 80) și să accepte toate mesajele HTTP primite. Dacă datele primite nu se potrivesc cu formatul mesajului HTTP, cererea este ignorată și un mesaj de eroare este returnat clientului.

În cel mai simplu caz, atunci când se primește o solicitare HTTP, serverul web trebuie să citească conținutul fișierului solicitat de pe hard disk, să împacheteze conținutul acestuia într-un răspuns HTTP și să îl trimită clientului. Dacă fișierul necesar nu este găsit pe hard disk, serverul web va genera o eroare indicând codul de stare 404 și va trimite acest mesaj clientului. Acest tip de operare de server web este denumit în mod obișnuit site-uri statice. În acest caz, niciun cod de program nu este rulat pe partea serverului, cu excepția codului de program al serverului web însuși. Cu toate acestea, astfel de scenarii de lucru devin din ce în ce mai nepotrivite și sunt înlocuite cu aplicații web cu drepturi depline. Diferența dintre aceste aplicații este că documentele HTML și alte resurse nu sunt stocate pe server ca date imuabile. În schimb, serverul stochează cod de program care este capabil să genereze aceste date în momentul procesării cererii.


Una dintre cele mai importante sarcini care sunt rezolvate la construirea unui server web este sarcina de a asigura scalabilitatea (adică capacitatea de a crește numărul de utilizatori serviți) și securitatea împotriva atacurilor externe. Deoarece serverul web funcționează într-un mediu deschis - Internetul global - acesta poate fi adesea accesat de oriunde. Acest lucru face ca serverul web să fie supus unor sarcini grele și atacuri potențiale. Cele mai frecvente atacuri asupra unui server web sunt accesarea serverului web cu un număr mare de solicitări și frecvența mare a acestora. În acest caz, serverul web nu va putea procesa rapid toate cererile, iar acest lucru poate afecta performanța serverului web pentru utilizatorii reali. Serverele web care rulează un cod de program extern, altul decât codul de program al serverului web însuși, sunt deosebit de susceptibile la astfel de atacuri.

De obicei, pentru a combate astfel de atacuri, toate cererile care provin de la o anumită adresă IP sunt blocate. În plus, în astfel de cazuri, trebuie avut grijă să optimizați codul aplicației, de exemplu, folosiți memorarea în cache - în acest caz, la procesarea fiecărei cereri, sarcina procesorului central va fi mai mică, ceea ce poate complica semnificativ sarcina atacatorilor. . Nu este neobișnuit ca multe site-uri web independente să fie găzduite pe același server web. Mai mult, toate aceste site-uri web folosesc aceeași adresă IP. Aceste. un server web cu o singură adresă IP poate găzdui mai multe site-uri web, iar fiecare dintre ele va fi asociat cu propria sa adresă (de exemplu, un server web poate găzdui următoarele site-uri web: "microsoft.com", "gotdotnet.ru", " techdays.ru”, etc.). Cum devine posibil acest lucru? Acest fenomen se numește. Pentru a înțelege cum funcționează acest lucru, să ne uităm din nou la procesul de interacțiune dintre client și server. Browserul trimite o solicitare HTTP către adresa IP a serverului web, care este asociată cu numele domeniului. Rezolvarea adresei IP are loc folosind serviciile DNS. Cu toate acestea, deși cererea este trimisă folosind adresa IP primită, clientul specifică un antet HTTP suplimentar „Gazdă” care specifică numele original al site-ului web. Datorită acestor informații, serverul web poate diferenția accesul la mai multe site-uri web și poate folosi în continuare aceeași adresă IP. Acesta este un punct foarte important, deoarece dacă ar trebui înregistrată o adresă IP separată pentru fiecare nume de domeniu, atunci spațiul de adrese al protocolului IP (v.4) s-ar termina foarte repede, iar costul găzduirii unui site web la nivel global. Internetul ar fi mult mai mare. Pentru a fi mai clar, să vedem cum funcționează găzduirea virtuală folosind un exemplu. Să presupunem că aveți un server web cu o adresă IP de 85.51.210.22. Acest server găzduiește mai multe site-uri web: mysite1.com, mysite2.com, mysite3.com. Serverele DNS sunt configurate astfel încât fiecare dintre aceste nume de domeniu să indice o singură adresă IP, 85.51.219.22.


Să vedem ce solicitări HTTP va genera browserul la accesarea fiecărui site. Când accesați site-ul „mysite1.com”, cererea HTTP poate arăta astfel:


Când accesați site-ul „mysite2.com”, cererea HTTP va arăta diferit.


O schemă similară de găzduire virtuală este utilizată de majoritatea companiilor implicate în găzduirea site-urilor web pe Internet. Deoarece în acest caz un număr mare de site-uri complet diferite pot fi găzduite pe un server fizic, această metodă este una dintre cele mai ieftine. Cu toate acestea, în cadrul găzduirii partajate, este de obicei interzisă rularea diferitelor servicii și servicii și există, de asemenea, o limită a gradului de utilizare a procesorului central. Aceasta înseamnă că, în cazul în care un site web consumă prea multe resurse de server, proprietarul site-ului este solicitat fie să facă upgrade la un plan mai scump (cu mai multe resurse alocate), fie dacă se depășește pragul permis, site-ul este blocat pentru o perioadă de timp. . Deoarece uneori este necesară o cantitate mare de resurse de la server sau trebuie să ruleze aplicații sau servicii suplimentare pe acest server, găzduirea partajată nu poate fi întotdeauna utilizată.

În acest caz, de obicei închiriază un server dedicat – fizic sau virtual. Cu toate acestea, acesta este un tip mai scump de găzduire a aplicațiilor web pe Internet, așa că este adesea folosită găzduirea virtuală.

  • După cum am menționat mai devreme, cel mai simplu scenariu pentru un server web este de a primi o solicitare HTTP, de a o procesa, de a citi fișierul dorit de pe hard disk, de a genera un răspuns HTTP și de a-l trimite clientului. Acest scenariu este cel mai simplu, cu toate acestea, în realitate devine din ce în ce mai puțin obișnuit. Cert este că prin această abordare, conținutul care este transferat către client este static (adică nu se schimbă de la cerere la cerere). Totuși, dacă trebuie să construiți o aplicație web, atunci conținutul paginii HTML care este transferată către client trebuie să se modifice în funcție de diferite condiții externe (parametrii cererii, conținutul bazei de date, timpul de procesare a cererii, tipul de utilizator etc.). În acest caz, este necesar să rulați cod de program extern (în raport cu serverul web) care implementează logica aplicației web. Acest cod trebuie păstrat separat de serverul web în sine, deoarece codul aplicației va fi diferit de la o aplicație la alta, dar serverul web va fi același. Astfel, codul programului care procesează cererile HTTP și generează răspunsuri HTTP poate fi împărțit în două părți:
  • cod de program care implementează logica unei anumite aplicații web (logica de afaceri, acces la un SGBD etc.).

Deoarece codul aplicației web este de obicei împachetat în module separate și livrat independent, sunt necesare mecanisme de interacțiune între aceste două părți, de ex. interfață de interacțiune. În acest caz, interfața de interacțiune se referă la setul de reguli prin care serverul web și aplicația vor interacționa între ele. De fapt, diagrama flux de procesare a cererii ar putea arăta astfel:


Din punct de vedere istoric, au existat două tipuri principale de interfață între o aplicație externă și un server web - CGI și ISAPI.

CGI(Common Gateway Interface) este cea mai timpurie modalitate de interacțiune între un server web și o aplicație web. Ideea principală care stă la baza CGI este că atunci când sosește următoarea solicitare HTTP, serverul web inițiază crearea unui nou procesși îi transmite toate datele necesare solicitării HTTP. După rularea acestui proces, acesta se încheie, trecând rezultatul înapoi serverului web. Întrucât serverul web și aplicația sunt procese diferite din punctul de vedere al sistemului de operare, mijloacele de comunicare interproces (IPC) sunt folosite pentru a schimba informații între ele - adesea acestea sunt variabile de mediu, conducte numite etc. Principalul avantaj al CGI este că procesul serverului web și aplicația sunt izolate unul de celălalt, iar în cazul unor probleme în aplicația web, procesul de aplicare este cel care va eșua, în timp ce procesul serverului web în sine va continua să funcționeze.

Pe de altă parte, necesitatea de a crea un nou proces de fiecare dată implică costuri generale suplimentare pentru crearea unui proces (crearea unui proces este o operațiune costisitoare din punctul de vedere al sistemului de operare) și transferul de date peste granițele procesului. Acest fapt este un dezavantaj serios și are un impact semnificativ asupra scalabilității aplicației web (capacitatea de a gestiona un număr mai mare de solicitări primite).

ISAPI(Internet Server API) este o modalitate alternativă de interacțiune între un server web și o aplicație web. Spre deosebire de CGI, atunci când interacționează în cadrul interfeței ISAPI, când sosește următoarea solicitare, serverul web inițiază crearea unui nou curgereîn cadrul procesului principal în care rulează serverul web. Deoarece crearea unui fir este o operațiune mai puțin costisitoare din punctul de vedere al sistemului de operare decât crearea unui proces, astfel de aplicații tind să fie mai scalabile în practică. De asemenea, simplifică interacțiunea dintre serverul web și aplicația web deoarece folosește un singur spațiu de adresă în cadrul sistemului de operare (deoarece tot codul rulează în același proces). Cu toate acestea, dacă există o problemă serioasă cu o aplicație web care comunică cu serverul web din ISAPI, serverul web este, de asemenea, potențial în pericol de a fi terminat.

Deoarece serverul web și aplicația web rulează în același proces, acesta este într-adevăr cazul. Prin urmare, dezvoltatorii de cod de server web care acceptă ISAPI ar trebui să acorde o atenție deosebită acestei probleme. Astăzi, cea mai comună modalitate de interacțiune între un server web și o aplicație web este interfața ISAPI, deoarece oferă cea mai optimă performanță în ceea ce privește supraîncărcarea și scalabilitatea. Cu toate acestea, atunci când rulați mai multe aplicații web pe același server web, există potențialul ca o aplicație să influențeze alta. Dacă vorbim despre companii care găzduiesc aplicații web pe serverele lor, atunci poate apărea o situație ca site-urile companiilor concurente să fie găzduite simultan pe același server web. În acest caz, teoretic, una dintre companii ar putea încărca în mod deliberat cod care ar bloca serverul web cu o eroare și, astfel, toate site-urile web găzduite pe acest server web ar fi indisponibile. Pentru a evita această situație, se folosește o abordare combinată - pentru fiecare aplicație se poate crea un pool de aplicații, care este un proces separat în care firele funcționează pentru a procesa cererile HTTP primite de la utilizatori. În acest caz, dacă vreuna dintre aplicații conține cod care încheie procesul cu o eroare, atunci numai procesul acestei aplicații se va încheia. Mai mult, fiecare grup de aplicații conține un set de fire pre-create și pregătite. Acest lucru este necesar pentru a nu pierde timpul creând un fir atunci când sosește o solicitare. Acest set de fire pre-create este numit. De obicei, serverul web monitorizează fiecare grup de aplicații și, dacă eșuează, serverul web își repornește procesul.

Pe lângă funcțiile și mecanismele de mai sus ale unui server web, funcțiile acestuia includ adesea sarcini suplimentare aferente. Aceste sarcini includ autentificarea și autorizarea utilizatorilor, menținerea unui jurnal de server (pentru a depana funcționarea serverului web), suportarea mai multor site-uri web pe un server (gazduire virtuală), sprijinirea conexiunilor securizate prin protocolul HTTPS etc. Aceste funcții depind de fiecare specific caz din implementarea serverului web.

Astăzi există un număr mare de implementări diferite ale serverelor web. Unul dintre cele mai populare și versatile servere web este serverul web Apache open source. A fost creat pentru a funcționa în mediul Linux și există, de asemenea, o implementare pentru lucrul în Windows. Pe acesta au fost construite diverse alte variante, cum ar fi Apache Tomcat pentru rularea aplicațiilor web bazate pe Java. Un alt produs, cel mai serios din acest domeniu este serverul web Microsoft Internet Information Services (IIS), care rulează în sistemul de operare Windows. De obicei, acest server web rulează aplicații bazate pe ASP.NET (și tehnologiile aferente), precum și aplicații PHP și site-uri web statice. Când creăm aplicații web bazate pe ASP.NET, vom folosi IIS 7. În sfârșit, există și alte proiecte, mai mici, pentru dezvoltarea serverelor web, de exemplu Nginx.

Acest proiect a fost dezvoltat de unul dintre dezvoltatorii Rambler pentru a optimiza performanța acestui motor de căutare. Ulterior, proiectul s-a dovedit a fi atât de reușit încât a fost folosit în alte aplicații. În mod obișnuit, Nginx este utilizat atunci când este necesar să construiți o infrastructură de mare sarcină.

Un server web este un program care procesează cererile HTTP primite și generează răspunsuri HTTP. În cel mai simplu caz, serverul web transferă către client conținutul fișierelor aflate pe hard disk-ul serverului. Când este necesar să se genereze răspunsuri HTTP bazate pe o anumită logică a programului, este conectat codul de program extern. Pentru a conecta codul de program extern, se folosesc interfețele CGI și ISAPI. În acest moment, cea mai promițătoare este utilizarea interfeței ISAPI datorită scalabilității sale mai mari. Un pool de aplicații este creat în cadrul serverului web (pentru fiecare aplicație web, un proces separat în cadrul sistemului de operare, care include mai multe fire de execuție pentru procesarea cererilor). Există un număr mare de implementări de server web, aplicațiile ASP.NET utilizând de obicei serverul web Microsoft Internet Information Services (IIS).

Întrebări de securitate

  • Ce este o aplicație web?
  • Ce este un browser?
  • Descrieți ciclul de procesare a unei cereri către o aplicație web de la un client.
  • De ce sunt necesare tehnologii de dezvoltare a aplicațiilor web (cum ar fi ASP.NET, PHP, Ruby On Rails etc.).
  • Cum funcționează protocolul HTTP și pentru ce este?
  • Ce sunt antetele mesajelor HTTP și pentru ce sunt acestea?
  • Care este corpul unui mesaj HTTP?
  • Cum sunt separate anteturile de corpul mesajului într-un mesaj HTTP?
  • Ce este o metodă de solicitare HTTP?
  • Care este codul de stare a răspunsului HTTP?
  • Dați exemple de anteturi HTTP pentru o solicitare HTTP și un răspuns HTTP.
  • Cum diferă algoritmii de criptare simetrică de cei asimetrici?
  • Cum funcționează protocolul securizat HTTPS?
  • Ce este un server web?
  • Pe baza ce interfețe pot interacționa un server web și o aplicație web?
  • Prin ce diferă CGI de ISAPI?
  • Ce este găzduirea partajată?
  • Ce este un pool de aplicații?
  • Denumiți cele mai populare implementări ale serverelor web.
  • În ce server web rulează aplicațiile ASP.NET?

Dacă tastați http://www.site/how-web-server-work/ în bara de adrese a browserului dvs. și apăsați tasta Enter, această pagină a site-ului nostru web va apărea pe ecran.

La cel mai elementar nivel, s-au întâmplat următoarele: Browserul dvs. a format o conexiune la serverul Web, a trimis o solicitare pentru a obține pagina Web a paginii și a primit-o.

Acum puțin mai multe detalii:

URL-ul este format din trei părți:

1. Protocol (http)

2. Numele serverului (www.site)

3. Adresele paginilor (cum-funcționează-serverul-web)

Browserul contactează serverul de nume de domeniu pentru a traduce numele site-ului www.site în adresa IP, pe care îl folosește pentru a se conecta la mașina server. Browserul face apoi o conexiune la serverul Web la adresa IP specificată pe portul 80 sau orice alta, dacă se dorește așa (vom discuta despre porturi mai târziu în acest articol).

Urmând protocolul HTTP, browserul a trimis o cerere către server, solicitând fișierul http://www.site/how-web-server-work/

Rețineți că cookie-uri poate fi trimis și din browser către server.

Ca răspuns, serverul a generat pagină web dinamicăși a trimis înapoi text HTML pentru a afișa această pagină în browser. Cookie-urile pot fi, de asemenea, trimise de la server la browser în antetul paginii. Browserul citește etichetele HTML și produce pagina Web pe ecran.

Internet

Deci, ce este „Internetul”? Internetul este format din sute de milioane de computere conectate între ele în retea de calculatoare. O rețea permite tuturor computerelor să comunice între ele. Un computer de acasă poate fi conectat la Internet folosind o varietate de metode și dispozitive - începând cu un modem primitiv pentru o linie telefonică, până la o conexiune de rețea locală ( LAN) cu furnizorul de internet ( ISP).

Principalii furnizori de servicii de internet acceptă linii de fibră optică pentru o întreagă țară sau regiune. Rețelele de coloană vertebrală sunt așezate peste tot în lume, conectate prin linii de fibră optică, cabluri submarine sau legături prin satelit. Astfel, fiecare computer de pe Internet este conectat la orice alt computer de pe Internet.

Clienti si Servere

În general, toate computerele de pe Internet pot fi împărțite în două categorii: servere și clienți. Calculatoarele care furnizează servicii (cum ar fi servere Web, servere FTP, servicii cloud) altor mașini sunt servere. Mașinile care sunt folosite pentru a se conecta la aceste servicii sunt − clientii. Când vă conectați la Google pentru a efectua o interogare de căutare sau pentru a utiliza oricare dintre serviciile sale, Google vă pune la dispoziție computerul (posibil un întreg grup de computere puternice) pentru a vă răspunde solicitării. Deci Google furnizează serverul. Aparatul dvs. poate oferi servicii cuiva de pe Internet. Astfel, mașina utilizator este de obicei un client, deși poate deveni și server dacă este necesar.

Un server poate furniza unul sau mai multe servicii pe Internet. De exemplu, un computer server poate avea instalat software care îi permite să acționeze ca server Web, server de e-mail și server FTP. Calculatoarele client care se alătură serverului își direcționează cererile către un software special care rulează pe un computer server partajat. De exemplu, dacă utilizați un browser Web pe computer, acesta va „vorbi” cu serverul Web de pe computerul server. Aplicația dvs. de e-mail va „vorbi” cu serverul de e-mail și așa mai departe.

adrese IP

Pentru a conecta toate aceste mașini într-o rețea, fiecare computer de pe Internet are o adresă unică numită adresa IP. O adresă IP tipică arată astfel:

Sunt apelate cele patru numere dintr-o adresă IP octeți deoarece pot lua valori între 0 și 255 sau 28 valori posibile.

Fiecare computer de pe Internet are propria sa adresă IP unică. Serverul are o adresă IP statică care se schimbă rar. Un computer de acasă are adesea o adresă IP atribuită de ISP atunci când aparatul se conectează la acesta. Această adresă IP este unică pentru această sesiune, dar poate fi diferită data viitoare. În acest fel, ISP-ul are nevoie de o singură adresă IP pentru fiecare router pe care îl acceptă, nu pentru fiecare client.

Dacă sunteți pe o mașină Windows, puteți vizualiza o mulțime de informații despre Internet pe computer, inclusiv adresa dvs. IP actuală și numele de gazdă, folosind comanda ipconfig. Pe o mașină UNIX, trebuie să tastați nslookup pe linia de comandă pentru a afișa adresa IP a aparatului.

Nume de domenii

Deoarece majoritatea oamenilor întâmpină dificultăți în a-și aminti succesiunea de numere care alcătuiesc adresele IP și pentru că uneori adresele IP trebuie schimbate, toate serverele și site-urile de pe Internet au, de asemenea, nume care pot fi citite de om. nume de domenii. De exemplu, www.. Acest lucru este mai ușor de reținut pentru majoritatea dintre noi www.site decât să-ți amintești 5.9.205.233

Numele www.site constă de fapt din trei părți:

1. Numele World Wide Web (www). De fapt, puteți face fără a specifica în mod explicit „www”, deși, formal, aceasta va fi o rețea diferită.

2. Nume de domeniu (qriosity)

3. În zona de domeniu de nivel superior (ru)

Nume de domenii gestionează Registratori de nume de domeniu. Registrarii creează nume de domenii de nivel superior și se asigură că toate numele din zona de nivel superior a domeniului sunt unice. Registratorul oferă, de asemenea, informații de contact pentru fiecare nume de domeniu și lansează serviciul whois, indicând proprietarul domeniului. Numele de gazdă este creat de proprietarul domeniului.

Servere de nume de domeniu

Un set de servere numit servere de nume de domeniu(DNS) mapează nume care pot fi citite de om în adrese IP. Aceste servere conțin baze de date simple cu nume și adrese IP și sunt distribuite pe internet. Majoritatea companiilor individuale, furnizorilor de servicii de internet și universităților mari acceptă DNS-uri mici. Există, de asemenea, DNS-uri centrale care utilizează date furnizate de registratorii de nume de domeniu.

Când introduceți adresa URL http://www..site, o transmiteți serverului de nume de domeniu, serverul returnează adresa IP corectă pentru www.site. Un număr de servere de nume pot fi implicate în obținerea adresei IP corecte.

Deci, să repetăm ​​ceea ce citim: Internetul este format din milioane de mașini, fiecare cu o adresă IP unică. Multe dintre aceste mașini sunt servere. Aceasta înseamnă că oferă servicii altor computere de pe Internet. Multe dintre aceste servere sunt servere de e-mail, servere web, servere FTP, servere de servicii cloud.

Porturi

Orice server își pune la dispoziție serviciile prin Internet folosind numere porturi, câte unul pentru fiecare serviciu disponibil pe server. De exemplu, există un computer server care rulează un server Web și un server FTP. Serverul web va fi de obicei disponibil pe portul 80, iar serverul FTP va fi disponibil pe portul 21. Clienții se conectează la serviciu pe o anumită adresă IP și pe un anumit port.

Fiecare dintre cele mai populare servicii este disponibil pe un număr de port precunoscut, dar puteți atribui propriul număr de port oricărui serviciu.

Dacă serverul acceptă conexiuni pe un port din lumea exterioară și dacă un firewall nu protejează porturile, vă puteți conecta la un port predefinit de pe orice computer de pe Internet și puteți utiliza serviciul. Rețineți că nu există nimic care să vă oblige, de exemplu, să păstrați serverul web pe portul 80. Dacă ați instalat serverul și ați încărcat software-ul serverului web pe el, puteți pune serverul web pe portul 999 sau orice alt port nefolosit. . Apoi, dacă, de exemplu, mașina dvs. este cunoscută ca xxx.yyy.com, atunci se pot conecta la el de la adresa URL http://xxx.yyy.com:999 -„:999” indică în mod clar numărul portului prin care se poate ajunge la serverul dvs. Web. Dacă portul nu este specificat, atunci browserul pur și simplu presupune că serverul Web este accesibil folosind portul bine-cunoscut 80.

Protocoale

Odată ce un client este conectat la un serviciu pe un anumit port, acesta accesează serviciul folosind un serviciu special protocol. Protocol este un set de convenții la nivel logic care permit programelor să schimbe date. Familia de protocoale TCP/IP este utilizată pentru a colabora între computere de pe Internet. Serverul web folosește protocolul HTTP.

Suplimentar: securitate

Puteți vedea din această descriere că un server Web este o bucată de software destul de simplă. Ia numele fișierului trimis folosind comanda GET, primește fișierul și îl trimite în browser. Chiar dacă țineți cont de tot codul pentru manipularea porturilor, un program simplu de server Web constă din cel mult 500 de linii de cod. Serverele Web la scară completă sunt mai complexe, dar în esență sunt și foarte simple.

Majoritatea serverelor stabilesc un anumit nivel securitate la procesele de service. Cea mai simplă opțiune este să solicitați o autentificare și o parolă pentru a obține acces la server. Serverele mai avansate adaugă securitate suplimentară prin stabilirea unei conexiuni criptate între server și browser, astfel încât informațiile sensibile (cum ar fi numerele de card de credit) să poată fi trimise prin Internet.

Acesta este cu adevărat tot ceea ce este necesar pentru un server Web care servește standard, pagini web statice. Paginile statice sunt pagini care nu se schimbă decât dacă însuși webmasterul le editează.

În plus: pagini dinamice

Ce s-a întâmplat dinamic Pagini web? De exemplu:

1. Orice carte de oaspeți vă permite să introduceți un mesaj într-un formular HTML și afișează automat intrările noi și vechi.

2. Orice motor de căutare vă permite să introduceți cuvinte cheie într-un formular de solicitare HTML și apoi creează dinamic o pagină bazată pe căutarea de informații folosind aceste cuvinte cheie.

În toate aceste cazuri, serverul Web face mai mult decât „căutarea unui fișier”. Prelucrează informații și generează pagini în funcție de specificul solicitărilor. În aproape toate cazurile, serverul Web folosește așa-numitul scenarii- cod de program scris în PHP, Perl, Java și alte limbaje de programare pentru a finaliza acest proces.

Paginile site-ului nostru sunt de asemenea dinamice, create folosind PHP folosind baze de date MySQL.

Internetul a izbucnit în viețile noastre cu o viteză extraordinară. I-a îmblânzit pe toți pentru el însuși, l-a încurcat în plasa lui și nu ne va lăsa să plecăm. Derulând zilnic zeci și sute de pagini de site-uri web, puțini oameni se gândesc la ce este această rețea globală de internet, cum funcționează, ce înseamnă acești termeni sau alții. Astăzi vom vorbi despre ce este un server web, pentru ce este necesar și ce funcții îndeplinește.

Ce se înțelege prin termenul de server web? O colecție de servere web stă la baza Internetului. Fără ele, nu ar exista World Wide Web. Utilizatorii pur și simplu nu ar fi capabili să comunice între ei, să găsească informațiile de care au nevoie sau să-și creeze și să-și întrețină site-urile și blogurile. Serverele web pot fi computere sau programe speciale care acționează ca un server.

Funcțiile serverului web

Sarcina principală a unui server web este să accepte solicitările HTTP de la utilizatori, să le proceseze și să le traducă în cod digital de computer. Apoi emiteți răspunsuri HTTP, transformându-le din milioane de zerouri și unu în imagini, fluxuri media, scrisori, pagini HTML.

Orice server web, pentru ușurința utilizării de către utilizatori, trebuie să aibă un browser web convenabil. Trimite cereri către serverul web, convertite în URL-uri ale resurselor de Internet.

Pe lângă funcțiile standard, unele servere web au altele suplimentare. Deci, de exemplu, software-ul corespunzător poate înregistra numărul de solicitări ale utilizatorilor către o anumită resursă și le poate înregistra într-un jurnal separat. De asemenea, pot suporta HTTPS, care este important pentru o conexiune sigură între site-uri și utilizatori. Adesea, un server web este instalat împreună cu un server de e-mail. Acest lucru permite utilizatorilor să acceseze rapid pagina de e-mail direct de pe site făcând clic pe un singur hyperlink.

Pentru ce este un server web?

După cum reiese deja din cele de mai sus, un server web este nevoie de toți cei care folosesc Internetul pentru a face schimb de informații. Cu toate acestea, în general, nu o persoană trebuie să-l acceseze, ci programele și dispozitivele. De exemplu, programele antivirus cer adesea să găsească un server în rețea și să își actualizeze bazele de date. Telefoanele mobile, televizoarele și alte dispozitive care au acces la Internet colaborează activ cu serverele web. În acest caz, puteți configura programele să se actualizeze automat. Apoi, participarea utilizatorului la acest proces va fi practic inutilă. Dar este mai bine să controlați singur unele baze de date actualizate.

Cele mai cunoscute servere web

Cele mai cunoscute și răspândite servere web sunt Microsoft IIS și Apache. Cel mai popular dintre ele este Apache. Software-ul său este folosit de mai mult de 60% din toate cele existente. Acest lucru este în mare măsură posibil datorită faptului că Apache este gratuit. Dezvoltatorii analizează în mod constant erorile produsului lor și le elimină. Dezavantajul programului este că, în general, este destinat programatorilor și utilizatorilor profesioniști, deci este destul de dificil să îl întreținem și să îl configurați.

Microsoft, dimpotrivă, se străduiește să facă serverul său web IIS accesibil pentru înțelegerea utilizatorului obișnuit. Toate setările sale se pot face fără specialiști. Este foarte posibil ca acest program să poată ajunge din urmă concurentul său cu un nume indian în ceea ce privește numărul de utilizatori.

Atât Apache, cât și IIS funcționează bine cu multe sisteme de operare, cum ar fi Mac OS, Linux, diferite modificări ale Microsoft Windows și multe altele. Aceste două servere web sunt stabile, au viteză bună și puteți conecta module suplimentare la ele.

server web (server web) este un server responsabil pentru primirea și procesarea cererilor (cereri HTTP) de la clienți către un site web. Clienții sunt de obicei diverse browsere web. Ca răspuns, serverul web emite răspunsuri HTTP clienților, în cele mai multe cazuri împreună cu o pagină HTML, care poate conține tot felul de fișiere, imagini, flux media sau orice alte date.

Serverul web îndeplinește și funcția de executare a scripturilor, precum CGI, JSP, ASP și PHP, care sunt responsabile de organizarea cererilor către serviciile de rețea, baze de date, acces la fișiere, redirecționare e-mail și alte aplicații de comerț electronic.

Termenul „server web” se aplică și dispozitivelor tehnice și software-ului care îndeplinesc funcțiile unui server web. Acesta ar putea fi un computer care este selectat special dintr-un grup de computere personale sau o stație de lucru pe care este instalat și rulează software-ul de serviciu.

Clientul utilizatorului, care este în primul rând un browser web, face cereri către serverul web pentru a obține resurse identificate prin URL-uri. Resursele sunt pagini HTML, conținut media digital, fluxuri media, diverse imagini, fișiere de date sau orice alte date solicitate de client. Ca răspuns, serverul web trimite clientului datele solicitate. Acest schimb are loc folosind protocolul HTTP.

HTTP (în engleză: HyperText Transfer Protocol) este un protocol de rețea pentru nivelul aplicației de transfer de date. Principiul principal al protocolului HTTP este tehnologia client-server, care asigură interacțiunea între rețea și utilizator.

În cazul unei organizații mici, un server web poate fi un sistem integral, care va consta din: server HTTP - folosit pentru solicitările către pagini web; Server FTP – folosit pentru a descărca fișiere prin Internet; Servere NNTP – oferă acces la grupuri de știri; Server SMTP – pentru e-mail.

Poveste

Omul de știință britanic Tim Berners-Lee este considerat inventatorul primului server web. Lucrând din 1980 la Laboratorul European de Cercetare Nucleară (Conseil Européen pour la Recherche Nucléaire, CERN) ca consultant de software, și-a început activitatea de dezvoltare. La Geneva, pentru propriile nevoi, a dezvoltat programul Inquire, care folosea asocieri aleatorii pentru a stoca date și a pus conceptul de bază pentru World Wide Web.

În 1989, Tim Berners-Lee, lucrând la intranetul CERN, a propus înființarea unui proiect global de hipertext, care a constat în publicarea documentelor hipertext legate prin hyperlinkuri. Implementarea acestui proiect, în opinia sa, ar face mai ușor pentru oamenii de știință de la CERN să combine, să caute și să schimbe informații. Pentru a implementa proiectul, Tim Berners-Lee, împreună cu asistenții săi, au inventat identificatorii URI și URL, protocolul HTTP și limbajul HTML. Toate aceste tehnologii sunt acum utilizate pe scară largă în internetul modern și nu se mai pot face fără ele.


Ca rezultat al acestui proiect, Berners-Lee a dezvoltat primul server web din lume, numit „httpd”, precum și primul browser web hipertext din lume pentru computerul NeXT, numit WorldWideWeb.

Primul browser web a rulat pe platforma NeXTSTEP, un sistem de operare multitasking orientat pe obiecte și a fost dezvoltat folosind Interface Builder. Interfața browserului web era foarte simplă și aproape toate informațiile erau afișate în format text cu doar câteva imagini. Pe lângă protocolul FTP standard, Tim Berners-Lee a folosit noul protocol HTTP, pe care l-a inventat. Între 1991 și 1993, Berners-Lee și-a rafinat proprietățile tehnice ale noilor sale dezvoltări: URI și URL-uri, protocolul HTTP și limbajul HTML și le-a publicat. Browserul web a fost redenumit ulterior „Nexus” pentru a evita confuzia cu sistemul de operare pe care a fost dezvoltat browserul și numele acestuia.

Primul server web și primul browser web din lume rulau pe computerul personal NeXTSTEP; acest computer este acum expus la muzeul CERN (Microcosm).

Tim Berners-Lee a găzduit primul site web din lume la http://info.cern.ch; Acest site este acum arhivat. Primul site a apărut pe internet pe 6 august 1991. Pe acest site s-a dat:

  • descrierea World Wide Web;
  • instrucțiuni pentru instalarea corectă a unui server web;
  • informații despre cum să achiziționați un browser web;
  • alte informatii tehnice.

Acest site a fost, de asemenea, primul director online din lume. Berners-Lee a postat pe acesta o listă de link-uri către alte site-uri și a actualizat-o în mod regulat.

Pe 12 decembrie 1991, primul server web din lume a fost instalat la Stanford Linear Accelerator Center (SLAC) din Statele Unite.

Funcții de bază și suplimentare

Toate funcțiile de bază și suplimentare ale serverului web:

  • Primirea cererilor de la browsere web prin standardul HTTP folosind protocoale de rețea TCP/IP;
  • Căutarea și trimiterea de fișiere cu hipertext sau orice documente către browser prin HTTP;
  • Servirea și procesarea cererilor, precum: mailto, FTP, Telnet etc.;
  • Lansarea de programe de aplicație pe un server web cu transferul și returnarea ulterioară a parametrilor de procesare prin standardul de interfață CGI;
  • Operarea și întreținerea hărților cu imagini de navigație (Hartă imagine);
  • Administrarea si managementul operational al serverului;
  • Autorizarea utilizatorilor și autentificarea acestora;
  • Mentinerea unui jurnal al cererilor utilizatorilor catre diverse resurse;
  • Operarea automată a paginilor web;
  • Suport pentru pagini care sunt generate dinamic;
  • Suport pentru protocolul HTTPS pentru conexiuni sigure cu clienții.

Descrierea modului în care funcționează serverul web

Browserele web comunică cu serverele web utilizând protocolul HTTP (Hypertext Transfer Protocol). Este un protocol simplu de solicitare și răspuns pentru trimiterea de informații folosind protocolul TCP/IP. Serverul web primește cererea, detectează fișierul, îl trimite către browser și apoi închide conexiunea. Informațiile grafice care sunt prezente pe pagină sunt procesate în același mod. Apoi, este rândul browserului web să afișeze documentul HTML descărcat de pe Internet pe monitorul utilizatorului.

Pe lângă paginile HTML și grafica, serverele web pot stoca orice fișier, inclusiv documente text, documente de procesor de text, fișiere video și informații audio. Astăzi, dacă nu țineți cont de chestionarele pe care le completează utilizatorii, cea mai mare parte a traficului web este transmisă într-o singură direcție - browserele citesc fișiere de pe serverul web. Dar acest lucru se va schimba odată cu adoptarea generală a metodei PUT descrisă în proiectul HTTP 1.1, care permite ca fișierele să fie scrise pe serverul Web. Astăzi, metoda PUT este folosită în principal de utilizatorii care creează pagini web, dar în viitor poate fi utilă și pentru alți utilizatori să ofere feedback centrelor de informare. Solicitările PUT sunt mult mai simple decât încărcarea fișierelor POST obișnuite pe un server web.

Diverse aplicații își desfășoară activitatea și pe serverul web, dintre care cele mai populare sunt motoarele de căutare și instrumentele de comunicare cu bazele de date. Standardele utilizate pentru dezvoltarea acestor aplicații includ Common Gateway Interface (CGI), limbaje de scripting JavaScript și limbaje de programare Java și VisualBasic. Pe lângă standardul CGI, unele companii de servere web au creat interfețe de programare a aplicațiilor (API), precum Netscape Server API și Internet Server API, care au fost create de Microsoft și Process Software AG. Aceste interfețe permit dezvoltatorilor să acceseze direct anumite funcții ale serverului web. Unele servere web oferă middleware pentru a se conecta la baze de date, ceea ce poate necesita cunoștințe avansate de programare pentru a funcționa.

Funcțiile de căutare de bază ajută utilizatorii să sorteze informațiile de care au nevoie, iar utilitățile bazei de date oferă utilizatorilor browserului web acces la acele informații.

Prezentare generală a serverului web

Criteriile de alegere a unui server web pot include diferite caracteristici: instalarea, configurarea, managementul serverului, administrarea, gestionarea informațiilor găzduite pe server, protecția acestor informații, controlul accesului, funcțiile de dezvoltare a aplicațiilor și performanța.

Majoritatea serverelor web sunt ușor și rapid de instalat.

Cea mai dificilă parte a procesului de instalare este configurarea mai multor nume de domenii pe un singur dispozitiv fizic sau, cu alte cuvinte, organizarea serverelor virtuale.

Serverele web dispun de instrumente pentru gestionarea modulului de informare care caracterizează organizarea generală a site-ului web, precum și instrumente de verificare a corectitudinii legăturilor hipertext interne și externe. Pachetul LiveWire de la Netscape Communications, care este livrat cu Novell Open Enterprise Server (OES) și este disponibil opțional cu FastTrack Server, are un utilitar de gestionare a gazdei care listează toate linkurile pentru o pagină selectată. Acest utilitar oferă, de asemenea, o listă generală a tuturor conexiunilor incorecte pe care le detectează. WebView O'Reilly & Associates are aceeași funcționalitate și poate afișa un arbore de fișiere detaliat cu toate linkurile nevalide evidențiate în roșu.

Există, de asemenea, instrumente de bază pentru gestionarea materialului de conținut. Administratorii web trebuie să aleagă unde să stocheze fișierele și cum vor fi accesate acele fișiere de către utilizatorii care accesează serverul web. Acest lucru necesită maparea adreselor URL logice la directoarele de fișiere fizice. Fiecare software efectuează această operație în felul său unic.

Odată cu popularitatea tot mai mare a serverelor web și utilizarea lor din ce în ce mai mare în intranet-uri, activitatea comercială pe Internet crește, astfel încât importanța protecției informațiilor crește. De cele mai multe ori, sistemele de securitate ale serverelor web sunt fie exagerate, fie insuficiente pentru intraneturile de astăzi. Dacă trebuie să limitați accesul la anumite informații din cadrul companiei, atunci există o alegere între utilizarea parolelor necriptate care sunt transmise prin canale de comunicare și utilizarea protocolului Secure Sockets Layer (SSL), o metodă complexă și lentă care este utilizată pentru a cripta parole și date.

Pentru a organiza munca utilizatorilor individuali și a grupurilor acestora, se pot folosi aplicații interne de server sau anumite funcții ale sistemului de operare. Pentru a organiza munca utilizatorilor individuali și a grupurilor acestora, se pot folosi aplicații interne de server sau anumite funcții ale sistemului de operare. Serviciul Microsoft IIS Batch oferă suport pentru sistemul de operare de rețea Windows NT subiacent.

NetWare Web Server de la Novell, Inc. Complet integrat cu serviciile de director de adrese (NetWare Directory Services, NDS). Este convenabil să gestionezi utilizatorii dintr-un centru comun, dar poate reprezenta un risc de securitate. Parolele sunt distribuite necriptate pe canalele de comunicare, iar dacă sunt interceptate, nu numai serverul web este în pericol, ci și securitatea întregului sistem de operare al rețelei.

Dezvoltarea aplicațiilor este una dintre funcțiile principale ale unui server web. Mediul de dezvoltare a aplicațiilor și instrumentele de conectivitate la baze de date sunt foarte importante pentru a extinde capacitățile serverului web, deoarece dezvoltarea aplicației depinde de diverse detalii idiosincratice ale interfeței de programare a aplicațiilor (API), precum și de caracteristicile limbajelor de programare sau ale preferințele individuale ale programatorilor.

Serverele web pot deservi o varietate de sisteme, de la un intranet pentru întreprinderi mici până la mari centre de informare web utilizate de milioane de oameni.

Pentru intraneturile corporative mici, cel mai bun pachet de utilizat este Internet Information Server (IIS), creat și distribuit de Microsoft. IIS are o instalare destul de simplă și setări de configurare simple. Acest pachet de server web este bine integrat cu controalele de acces, instrumentul de monitorizare a sistemului Performance Monitor și Event Viewer. Serverul web IIS oferă, de asemenea, mai multe instrumente pentru transferul dinamic de informații din baze de date. IIS este foarte rapid. Componentele IIS acceptă protocoale precum: HTTP, HTTPS, FTP, NNTP, SMTP, POP3.

Pentru a facilita crearea centrelor de informare web, majoritatea serverelor web vin cu utilități și instrumente pentru gestionarea conținutului. Pe lângă editorii HTML și convertizoarele de format de documente, cele mai utile instrumente sunt controalele URL, care asigură că toate legăturile hipertext de pe site-ul dvs. Web funcționează.

Orice computer personal care este conectat la Internet poate fi transformat într-un server web dacă instalați pe acesta un software special pentru server.

Cele mai comune servere web sunt Apache (Apache Software Foundation), IIS (Microsoft) și serverul iPlanet (de la Sun Microsystems și Netscape Communications Corporation). Acum, pe piața de software pentru servere web, există o selecție uriașă de produse, atât comerciale, cât și gratuite.

Unul dintre cele mai comune servere web este Apache de la Apache Software Foundation. Se estimează că este folosit pe 65% din toate serverele web din lume. Unul dintre principalele avantaje ale software-ului Apache este că este gratuit de distribuit. Dezvoltatorii remediază în mod regulat erorile găsite și oferă un suport bun pentru utilizatori. Acest server web acceptă un număr mare de module, utilități și suplimente. Întrucât de la început Apache a fost dezvoltat ca software pentru administratori și utilizatori avansați, dezavantajul este că este dificil de configurat și întreținut pentru webmasterii fără experiență.

Următorul ca popularitate este serverul web IIS de la Microsoft. Potrivit Netcraft, serverul web IIS reprezintă 12,46% din numărul total de servere web. Acest produs face parte din familia de software de server Windows NT. Principalele sale avantaje sunt stabilitatea, viteza mare și capacitatea de a conecta module suplimentare. Microsoft se străduiește să se asigure că orice utilizator își poate folosi produsele fără ajutorul specialiștilor dacă trebuie să rezolve probleme standard. Prin urmare, IIS este foarte ușor de instalat, configurat și întreținut. Serverul web acceptă tehnologia .NET, care recent a câștigat popularitate în rândul dezvoltatorilor și utilizatorilor profesioniști. Aceste beneficii duc serverul web IIS la nivelul următor și vă puteți aștepta ca utilizarea acestuia să crească.

Alte servere web celebre:

  • nginx este un server web gratuit și un server proxy de e-mail dezvoltat de Igor Sysoev. Server simplu, rapid și de încredere. Funcționează pe Linux și alte sisteme de operare asemănătoare Unix, precum și pe Windows. Popular pe site-urile principale;
  • lighttpd- server web gratuit. Dezvoltat de Jan Kneschke. Server web rapid și sigur. Funcționează pe Linux și alte sisteme de operare asemănătoare Unix, precum și pe Windows;
  • Server Web Google- un server web care se bazează pe Apache și este folosit de Google pentru a-și organiza infrastructura web;
  • Răşină- un server web gratuit și un server de aplicații pentru Java. Dezvoltat de Caucho Technology Inc.;
  • Cherokee- un server web gratuit care este controlat doar prin interfața web. Scris în limbajul de programare C;
  • Înrădăcinare- un server web scris în limbajul de programare Java. Funcționează pe Linux și Windows;
  • THTTPD- un server web simplu, mic, rapid și sigur. Dezvoltat de ACME Labs Software.

Clienti server web

De obicei, clientul este un browser web. Dar diverse alte dispozitive și programe pot accesa și serverul web:

  • Un browser web instalat pe un computer personal desktop;
  • Un browser web instalat pe un PDA sau alt dispozitiv portabil;
  • Telefoane mobile și smartphone-uri cu care utilizatorul obține acces la resursele serverului web prin protocolul WAP;
  • Diverse programe care pot accesa serverul web în mod independent pentru a actualiza sau a obține alte informații. Un exemplu sunt diverse antivirusuri care contactează periodic serverul web pentru a actualiza baza de date;
  • Diverse dispozitive digitale, precum și unele aparate de uz casnic.

În primul articol, aș dori să ating puțin acest subiect, deoarece este foarte important să cunoaștem mecanismele de funcționare ale instrumentului (în cazul nostru, serverul web) care implementează funcționarea site-ului nostru. Idealizăm puțin serverul web, vom rata câteva nuanțe tehnice subtile pentru a înțelege mai ușor esența. O sa incerc sa o scriu cat mai simplu si accesibil :)

Îmi amintesc că de mult m-am gândit la asta Internet concentrat într-un singur loc, era ceva ca un laborator, unde era amplasată o cantitate mare de echipamente care susțineau funcționarea tuturor acestor lucruri. Atunci nu am putut aprecia amploarea Rețelei Globale și complexitatea structurii acesteia. În realitate, Internetul este un concept abstract; Pentru a comunica acest echipament între ele pe distanțe mari, au fost inventați algoritmi și standarde speciali, în special, Protocolul TCP/IP, pe care funcționează în prezent internetul nostru. Conform acestui standard, fiecare computer situat în rețeaua globală are propria sa adresă unică - adresa IP. O adresă IP este o secvență de patru numere în intervalul de la 0 la 255, separate prin puncte (de exemplu, 92.166.31.18). Un computer poate comunica cu un alt computer din rețea cunoscându-i adresa IP. Dar a spune „un computer comunicat cu un computer” nu este în întregime corect, deoarece nu computerele în sine comunică, ci serviciile de rețea (programe, dacă doriți) care rulează pe ele. Să presupunem că îi trimiți un e-mail bunicului tău, iar programul tău de e-mail contactează serverul de e-mail pentru a trimite scrisoarea.

Mai multe programe de rețea pot rula pe un computer în același timp, prin urmare, pe lângă adresa IP pentru comunicare folosind protocolul TCP/IP, există și așa ceva port. Un port este un număr în intervalul de la 1 la 65536. Astfel, condiția minimă pentru comunicarea între un program de rețea și altul este ca primul să aibă adresa IP și numărul portului celui de-al doilea. Este obișnuit să scrieți combinația dintre adresa IP și portul, separate prin două puncte (de exemplu, 192.168.35.2:443).

Pentru a stabili comunicarea, primului program i se dă un număr de port și începe să „aștepte” să se conecteze al doilea. Al doilea program primește același număr de port și adresă IP ale computerului pe care rulează primul program. Legătura dintre cele două programe amintește de un apel pe un telefon mobil: Vasya o sună pe Petya, Petya ridică telefonul și începe conversația. În acest caz, numărul de telefon este o combinație între adresa IP și numărul portului în cazul nostru.

Este apelat programul care așteaptă o conexiune server. Când serverul pornește, este indicat numărul portului, de multe ori se spune: „serverul ascultă pe portul”. Un computer nu poate avea mai mult de un server care rulează cu același număr de port (altfel va fi imposibil să se determine la ce server să se conecteze). Este apelat programul care stabilește o conexiune la server client. Clienții nu sunt supuși acestei limitări (de exemplu, puteți rula doi clienți jabber). De asemenea, mai mulți clienți de pe computere diferite se pot conecta la server, dacă serverul însuși acceptă acest lucru.

Acum haideți, pe baza acestor cunoștințe superficiale, să stabilim ce este server web. În primul rând, după cum sugerează și numele, este un program de rețea care ascultă și acceptă conexiuni (server). În mod implicit, serverul web „ascultă” portul numărul 80. Serverul web acceptă lucrul cu mai mulți clienți simultan (mai multe persoane pot vizualiza site-ul în același timp). Clientul pentru serverul web este browser web(Internet Explorer, Opera etc.).

Astfel, site-ul funcționează în detrimentul unui server web, care trimite pagini ale acestui site clienților care le solicită de la acesta. Pentru a solicita o pagină, trebuie să cunoașteți adresa IP a computerului care rulează serverul web cu site-ul de care avem nevoie. Dar amintirea adreselor IP este incomod, așa că au venit cu nume de domenii care sunt un fel de entitate text (de exemplu, yandex.ru). Evident, numele de domenii sunt mai ușor de înțeles și mai ușor de reținut. Cu toate acestea, protocolul TCP/IP nu poate găsi computerul dorit după numele de domeniu, așa că trebuie convertit la o adresă IP. În acest scop se folosesc servere DNS, pe care se află tabele de corespondență între numele de domenii și adresele IP. Să presupunem că atunci când introducem domeniul yandex.ru în bara de adrese a browserului, este trimisă mai întâi o solicitare către serverul DNS pentru a determina adresa IP a acestui domeniu. Când se stabilește adresa, browserul încearcă să contacteze serverul web la această adresă și pe numărul portului standard 80. Dacă se stabilește o conexiune la serverul web, browserul solicită pagina de site necesară de la serverul web.

În principiu, serverul web poate fi configurat să funcționeze pe un alt port în acest caz, atunci când solicitați o pagină în browser, trebuie să o specificați cu două puncte după numele domeniului (de exemplu, site.ru:3182);

Cum solicită un browser o pagină de site de la un server web? Este clar că interacțiunea dintre un server web și un browser necesită un „limbaj comun”, adică un anumit standard prin care sunt generate cererile și răspunsurile. Acest standard este Protocolul HTTP(Protocol de transfer hipertext). Acest protocol este destul de simplu, deoarece urmează o schemă cerere-răspuns. Cu alte cuvinte, pentru fiecare solicitare HTTP de la un browser web, serverul web răspunde cu un răspuns HTTP. Serverul web nu trimite pachete HTTP din proprie inițiativă (în plus, de multe ori după finalizarea operației de cerere-răspuns, serverul întrerupe conexiunea cu clientul).

Să ne uităm la structura unui pachet HTTP. O solicitare HTTP și un răspuns HTTP constau din două blocuri - un bloc de anteturi și un bloc de corp de pachet. Aceste blocuri sunt separate unul de celălalt prin două fluxuri de linie (adică există o linie goală între anteturi și corp). Blocul header conține diverși parametri ai pachetului, blocul body conține unele date. Al doilea bloc poate lipsi, ceea ce înseamnă că pachetul HTTP poate consta doar dintr-un bloc de antet. De exemplu, să executăm o solicitare pe pagina principală a site-ului web ya.ru și să ne uităm la pachetele HTTP care au participat la ea. Când a solicitat pagina de pornire, Firefox a trimis următoarea solicitare HTTP către serverul web:

GET / HTTP/1.1 Gazdă: ya.ru User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2) Gecko/20100115 Firefox/3.6 Accept: text/html,application/xhtml+ xml ,application/xml;q=0.9,*/*;q=0.8 Accept-Language: ru,en-us;q=0.7,en;q=0.3 Accept-Encoding: gzip,deflate Accept-Charset: windows-1251 , utf-8;q=0.7,*;q=0.7 Keep-Alive: 115 Conexiune: keep-alive

În cererea HTTP lipsește un bloc de date (deoarece nu există o linie goală pentru a separa antetele de date). Să ne uităm la rândurile acestei interogări care ne interesează în acest moment. În primul rând, chiar prima linie:

GET / HTTP/1.1

„GET” - tip de solicitare. Cele mai comune două tipuri de solicitări sunt GET și POST. Despre ele vom vorbi într-unul dintre următoarele articole sau lecții. „/” indică faptul că pagina principală a site-ului este solicitată. În caz contrar, aceasta este calea și numele paginii sau fișierului solicitat. „HTTP/1.1” - versiunea protocolului HTTP.

Gazdă: ya.ru

Parametrul Gazdă conține domeniul site-ului care este accesat.

Agent utilizator: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2) Gecko/20100115 Firefox/3.6

User-Agent conține informații despre client: tip de browser, sistem de operare și așa mai departe. Parametrii rămași nu sunt deosebit de interesanți pentru noi momentan.

Serverul web a răspuns la această solicitare HTTP cu următorul răspuns HTTP:

HTTP/1.1 200 OK Server: nginx Data: joi, 25 februarie 2010 12:31:25 GMT Tip de conținut: text/html; charset=utf-8 Ultima modificare: Tue, 12 Jan 2010 15:29:06 GMT Transfer-Coding: chunked Conexiune: keep-alive Content-Coding: gzip Yandex ...

O linie goală indică prezența unui bloc de date (corp pachet). Ca și în cazul unei solicitări HTTP, să ne uităm la cele mai importante linii ale răspunsului primit. Prima linie indică versiunea protocolului HTTP (HTTP/1.1) și codul rezultat. Un cod de rezultat de 200 înseamnă că solicitarea a avut succes. Descrierea protocolului HTTP descrie toate codurile de rezultat. Vom face cunoștință cu unele dintre ele, cum ar fi 403 și 404, în viitor.

Server: nginx

Parametrul Server conține numele serverului web. În cazul nostru, avem de-a face cu serverul web nginx. Acest parametru poate fi absent din răspunsul HTTP dacă administratorul acestui server din anumite motive nu dorește să dezvăluie aceste informații.

Tip de conținut: text/html; set de caractere=utf-8

Content-Type conține tipul de date transferate și, dacă este necesar, codificarea acestuia (charset). De asemenea, anteturile conțin adesea un parametru Content-Length, care conține dimensiunea datelor transmise de server în octeți. Blocul corpul pachetului conține codul paginii solicitate.

Astfel, ne-am familiarizat cu principiile de bază ale funcționării unui server web și am examinat schema „cerere-răspuns”. Este foarte util pentru un webmaster să cunoască cât mai bine protocolul HTTP, deoarece aceasta este baza funcționării site-ului. În articolele și lecțiile ulterioare, ne vom uita la diferite capacități de server web care nu sunt acoperite în acest articol și vom vedea cum sunt implementate de protocolul HTTP. Și în prima lecție vom învăța cum să instalăm și să configuram singuri un server web.