Kada prvi put počnete učiti kako se imena domena, IP adrese, web poslužitelji i web stranice sve uklapaju i rade zajedno, to može biti malo zbunjujuće ili nadmoćno s vremena na vrijeme. Kako je sve postavljeno da tako glatko radi? Danas SuperUser Q & A post ima odgovore na znatiželjna pitanja čitatelja.
Današnja pitanja i odgovori nam se javljaju zahvaljujući SuperUseru - podjele Stack Exchange-a, zajednice-driven grupiranja Q & A web stranica.
Fotografija ljubaznošću Rosmarie Voegtli (Flickr).
SuperUser čitač user3407319 želi znati imaju li web poslužitelji samo jednu web stranicu:
Na temelju onoga što ja razumijem o DNS-u i povezivanju naziva domene s IP adresom web poslužitelja na kojoj se web stranica pohranjuje, znači li to da svaki web poslužitelj može imati samo jednu web stranicu? Ako web poslužitelji imaju više od jedne web stranice, kako se sve riješi tako da mogu pristupiti web stranici koju želim bez ikakvih problema ili miješanja?
Da li web poslužitelji imaju samo jednu web stranicu ili imaju više?
Bobov agent za SuperUser ima odgovor za nas:
Uglavnom, preglednik sadrži naziv domene u HTTP zahtjevu tako da web poslužitelj zna koja je domena zatražena i može odgovoriti u skladu s tim.
HTTP zahtjevi
Evo kako se događa tipičan HTTP zahtjev:
1. Korisnik daje URL, u obliku http: // host: port / path.
2. Preglednik ekstrahira dio domaćina (domene) URL-a i prevodi ga u IP adresu (ako je potrebno) u procesu poznatoj kao razlučivanje imena. Ovaj prijevod može se izvršiti putem DNS-a, ali ne mora (na primjer, lokalna datoteka hostova na uobičajenim operacijskim sustavima zaobilazi DNS).
3. Preglednik otvara TCP vezu s navedenim priključkom ili zadana postavka 80 na toj IP adresi.
4. Preglednik šalje HTTP zahtjev. Za HTTP / 1.1, izgleda ovako:
Glavno je zaglavlje standardno i potrebno je u HTTP / 1.1. Nije određeno u HTTP / 1.0 spec., Ali neki poslužitelji to podržavaju ionako.
Odavde, web poslužitelj ima nekoliko informacija koje može koristiti za odlučivanje o tome što treba odgovoriti. Imajte na umu da je moguće da jedan web poslužitelj bude vezan za više IP adresa.
- Tražena IP adresa, iz TCP socket (IP adresa klijenta je također dostupna, ali to se rijetko koristi, a ponekad i za blokiranje / filtriranje)
- Zatražena luka, iz TCP utičnice
- Zatraženo ime računala, kao što je navedeno u glavnom hostu preglednika u HTTP zahtjevu
- Zatraženi put
- Bilo koja druga zaglavlja (kolačići itd.)
Kao što izgleda da ste primijetili, najčešći zajednički hosting postavljanje ovih dana stavlja više web stranica na jednu IP adresu: kombinacija priključaka, ostavljajući samo domaćinu razliku između web stranica.
To je poznato kao virtualni host na temelju imena u Apache zemlji, a Nginx ih naziva imenima poslužitelja u blokovima poslužitelja, a IIS preferira virtualni poslužitelj.
Što je s HTTPS-om?
HTTPS je malo drugačiji. Sve je identično do uspostavljanja TCP veze, ali nakon toga mora se uspostaviti šifrirani TLS tunel. Cilj je da ne procuri bilo kakve informacije o zahtjevu.
Kako bi se potvrdilo da web poslužitelj zapravo posjeduje ovu domenu, web poslužitelj mora poslati certifikat potpisan od strane pouzdanih trećih strana. Preglednik će zatim usporediti ovaj certifikat s domenom koju je zatražio.
To predstavlja problem. Kako web-poslužitelj zna koja je potvrda host / web site za slanje ako to mora učiniti prije nego što je primljen HTTP zahtjev?
Tradicionalno, ovo je riješeno posvećenom IP adresom (ili portom) za svaku web stranicu koja zahtijeva HTTPS. Očito je to postalo problematično jer istječu IPv4 adrese.
Unesite SNI (naznaka naziva poslužitelja). Preglednik sada prolazi naziv glavnog računala tijekom pregovora s TLS-om, tako da web poslužitelj ima te podatke dovoljno rano da pošalje ispravni certifikat. Na strani web poslužitelja konfiguracija je vrlo slična načinu konfiguriranja HTTP virtualnih hostova.
Nedostatak je ime domaćina koji je sada prošao kao običan tekst prije enkripcije i bitno je procurio informacije. To se obično smatra prihvatljivim skraćivanjem, iako s obzirom na ime domaćina normalno je izloženo DNS upitu ionako.
Što ako tražiš web stranicu samo IP adresom?
Što web poslužitelj radi kada ne zna koji specifični domaćin koji ste zatražili ovisi o implementaciji i konfiguraciji web poslužitelja. Uobičajeno je navedena web-lokacija "zadana", "catch-all" ili "fall back" koja će pružiti odgovore na sve zahtjeve koji izričito ne navode host.
Ova zadana web stranica može biti vlastita neovisna web stranica (često se prikazuje poruka o pogrešci) ili bi mogla biti bilo koja od drugih web mjesta na web poslužitelju, ovisno o postavkama administratora web poslužitelja.
Imate li nešto za objašnjenje? Zvuči u komentarima. Želite li pročitati više odgovora od drugih tehnoloških korisnika Stack Exchangea? Pogledajte ovdje cijelu raspravu.