Kun aloitat oppimisen, kuinka verkkotunnukset, IP-osoitteet, verkkopalvelimet ja verkkosivustot sopivat ja toimivat yhdessä, se voi olla toisinaan hieman hämmentävää tai ylivoimaista. Kuinka kaikki on asetettu toimimaan niin sujuvasti? Tämän päivän SuperUser Q & A -viestissä on vastaukset utelias lukijan kysymyksiin.
Tämän päivän Kysymys- ja vastausistunto tulee meille SuperUser-yhteisöstään, joka on Stack Exchangen osasto.
Kuva: Rosmarie Voegtli (Flickr) .
Kysymys
SuperUser-lukija user3407319 haluaa tietää, pitävätkö Web-palvelimet vain yhtä verkkosivustoa:
Sen perusteella, mitä ymmärrän DNS: stä ja verkkotunnuksen linkittämisestä verkkosivuston IP-osoitteeseen, johon verkkosivusto on tallennettu, tarkoittaako tämä, että jokaisella verkkopalvelimella voi olla vain yksi verkkosivusto? Jos verkkopalvelimilla on useampi kuin yksi verkkosivusto, niin miten kaikki ratkaistaan, jotta voin käyttää haluamaani verkkosivustoa ilman ongelmia tai sekoituksia?
Pitävätkö Web-palvelimet vain yhtä verkkosivustoa vai pitävätkö ne enemmän?
Vastaus
SuperUser-avustaja Bobilla on vastaus meille:
Pohjimmiltaan selain sisältää verkkotunnuksen HTTP-pyynnössä, jotta verkkopalvelin tietää, mitä verkkotunnusta pyydettiin, ja voi vastata vastaavasti.
HTTP-pyynnöt
Näin tyypillinen HTTP-pyyntösi tapahtuu:
1. Käyttäjä antaa URL-osoitteen muodossa http: // isäntä: portti / polku.
2. Selain purkaa URL-osoitteen isännän (verkkotunnuksen) osan ja kääntää sen IP-osoitteeksi (tarvittaessa) nimien tarkkuudella. Tämä käännös voi tapahtua DNS: n kautta, mutta sen ei tarvitse (esimerkiksi yleisten käyttöjärjestelmien paikalliset isäntätiedostot ohittavat DNS: n).
3. Selain avaa TCP-yhteyden määritettyyn porttiin tai oletuksena kyseisen IP-osoitteen porttiin 80.
4. Selain lähettää HTTP-pyynnön. HTTP / 1.1: lle se näyttää tältä:
![]()
Isäntäotsikko on vakio ja vaaditaan HTTP / 1.1: ssä. Sitä ei määritetty HTTP / 1.0-määrityksessä, mutta jotkut palvelimet tukevat sitä joka tapauksessa.
Tästä lähtien verkkopalvelimella on useita tietoja, joiden avulla se voi päättää vastauksen. Huomaa, että yksi verkkopalvelin voi olla sidottu useisiin IP-osoitteisiin.
- Pyydetty IP-osoite TCP-liitännästä (asiakkaan IP-osoite on myös käytettävissä, mutta sitä käytetään harvoin ja joskus estämiseen / suodattamiseen)
- Pyydetty portti TCP-liitännästä
- Pyydetty isäntänimi, kuten selain on määritellyt isännän otsikossa HTTP-pyynnössä
- Pyydetty polku
- Muut otsikot (evästeet jne.)
Kuten näytät huomanneet, yleisin jaetun isännöinnin asennus asettaa nykyään useita verkkosivustoja yhdelle IP-osoitteelle: porttiyhdistelmälle, jolloin vain isäntä jättää eron verkkosivustojen välillä.
Tätä kutsutaan nimellä Nimipohjainen virtuaalinen isäntä Apache-maassa, kun taas Nginx kutsuu heitä Palvelinten nimet palvelinblokeissa , ja IIS mieluummin Virtuaalipalvelin .
Entä HTTPS?
HTTPS on vähän erilainen. Kaikki on identtinen TCP-yhteyden muodostamiseen asti, mutta sen jälkeen on luotava salattu TLS-tunneli. Tavoitteena on, ettei tietoja ole vuodettu pyynnöstä.
Varmistaakseen, että verkkopalvelin todella omistaa tämän toimialueen, verkkopalvelimen on lähetettävä luotettavan kolmannen osapuolen allekirjoittama varmenne. Selain vertaa sitten tätä sertifikaattia pyytämäänsä verkkotunnukseen.
Tämä on ongelma. Mistä verkkopalvelin tietää, minkä isännän / verkkosivuston varmenne lähetetään, jos sen on tehtävä se ennen HTTP-pyynnön vastaanottamista?
Perinteisesti tämä ratkaistiin omistamalla oma IP-osoite (tai portti) jokaiselle verkkosivustolle, joka vaatii HTTPS: n. Tästä on tietysti tullut ongelmallista, kun IPv4-osoitteet ovat loppumassa.
Tulla sisään SNI (Palvelimen nimen indikaatio). Selain välittää nyt isäntänimen TLS-neuvottelujen aikana, joten verkkopalvelimella on nämä tiedot riittävän ajoissa lähettääkseen oikean varmenteen. Verkkopalvelimen puolella kokoonpano on hyvin samanlainen kuin HTTP-virtuaaliasemien määritys.
Haittapuoli on, että isäntänimi välitetään nyt pelkkänä tekstinä ennen salausta, ja se on pääosin vuotanut tietoa. Tätä pidetään yleensä hyväksyttävänä kompromissina, vaikka otetaan huomioon, että isäntänimi on yleensä paljastettu DNS-kyselyssä.
Entä jos pyydät verkkosivustoa vain IP-osoitteen perusteella?
Se, mitä verkkopalvelin tekee, kun se ei tiedä haluamaasi isäntää, riippuu verkkopalvelimen toteutuksesta ja kokoonpanosta. Tyypillisesti on määritetty oletus-, catch-all- tai back-back-sivusto, joka antaa vastaukset kaikkiin pyyntöihin, joissa ei nimenomaisesti määritetä isäntää.
Tämä oletussivusto voi olla oma itsenäinen verkkosivustonsa (usein virheilmoitus), tai se voi olla jokin muu Web-palvelimen verkkosivusto riippuen verkkopalvelimen järjestelmänvalvojan asetuksista.
Onko sinulla jotain lisättävää selitykseen? Ääni pois kommenteista. Haluatko lukea lisää vastauksia muilta teknisesti taitavilta Stack Exchangen käyttäjiltä? Katso koko keskusteluketju täältä .