När du börjar lära dig hur domännamn, IP-adresser, webbservrar och webbplatser alla passar och fungerar tillsammans kan det ibland vara lite förvirrande eller överväldigande. Hur är allt inställt på att fungera så smidigt? Dagens SuperUser Q & A-inlägg har svaren på en nyfiken läsares frågor.
Dagens Fråga & Svar-session kommer till oss med tillstånd av SuperUser - en underavdelning av Stack Exchange, en community-driven gruppering av Q & A-webbplatser.
Foto med tillstånd av Rosmarie Voegtli (Flickr) .
Frågan
SuperUser-läsaren user3407319 vill veta om webbservrar bara innehåller en webbplats vardera:
Baserat på vad jag förstår om DNS och länka ett domännamn till IP-adressen till den webbserver som en webbplats är lagrad på, betyder det att varje webbserver bara kan innehålla en webbplats? Om webbservrar innehåller mer än en webbplats, hur löses allt så att jag kan komma åt den webbplats jag vill ha utan problem eller mix?
Har webbservrar bara en webbplats vardera, eller har de fler?
Svaret
SuperUser-bidragsgivaren Bob har svaret för oss:
I grund och botten inkluderar webbläsaren domännamnet i HTTP-begäran så att webbservern vet vilken domän som begärts och kan svara därefter.
HTTP-förfrågningar
Så här händer din typiska HTTP-begäran:
1. Användaren tillhandahåller en URL i form http: // host: port / path.
2. Webbläsaren extraherar värddelen (domänen) av URL: n och översätter den till en IP-adress (vid behov) i en process som kallas namnupplösning. Denna översättning kan ske via DNS, men det behöver inte (till exempel den lokala värdfilen på vanliga operativsystem kringgår DNS).
3. Webbläsaren öppnar en TCP-anslutning till den angivna porten eller är standard 80 på den IP-adressen.
4. Webbläsaren skickar en HTTP-begäran. För HTTP / 1.1 ser det ut så här:
![]()
Värdhuvudet är standard och krävs i HTTP / 1.1. Det specificerades inte i HTTP / 1.0-specifikationen, men vissa servrar stöder det ändå.
Härifrån har webbservern flera uppgifter som den kan använda för att bestämma vad svaret ska vara. Observera att det är möjligt för en enda webbserver att vara bunden till flera IP-adresser.
- Den begärda IP-adressen, från TCP-uttaget (klientens IP-adress finns också, men den används sällan och ibland för att blockera / filtrera)
- Den begärda porten från TCP-uttaget
- Det begärda värdnamnet, som anges i värdhuvudet av webbläsaren i HTTP-begäran
- Den begärda sökvägen
- Alla andra rubriker (kakor etc.)
Som du verkar ha lagt märke till, placerar den vanligaste delade webbkonfigurationen idag flera webbplatser på en enda IP-adress: portkombination, vilket gör att bara värden kan skilja mellan webbplatser.
Detta är känt som en Namnbaserad virtuell värd i Apache-land, medan Nginx kallar dem Servernamn i serverblock , och IIS föredrar Virtuell server .
Vad sägs om HTTPS?
HTTPS är lite annorlunda. Allt är identiskt fram till TCP-anslutningen, men efter det måste en krypterad TLS-tunnel upprättas. Målet är att inte läcka någon information om begäran.
För att verifiera att webbservern faktiskt äger den här domänen måste webbservern skicka ett certifikat signerat av en betrodd tredje part. Webbläsaren jämför sedan certifikatet med den domän som den begärde.
Detta utgör ett problem. Hur vet webbservern vilken värd / webbplats certifikat som ska skickas om den behöver göra detta innan HTTP-begäran tas emot?
Traditionellt löstes detta genom att ha en dedikerad IP-adress (eller port) för varje webbplats som kräver HTTPS. Uppenbarligen har detta blivit problematiskt eftersom vi har slut på IPv4-adresser.
Stiga på SNI (Serverns namnindikering). Webbläsaren skickar nu värdnamnet under TLS-förhandlingarna, så webbservern har denna information tillräckligt tidigt för att skicka rätt certifikat. På webbserversidan liknar konfigurationen mycket hur virtuella HTTP-värdar konfigureras.
Nackdelen är att värdnamnet nu skickas som ren text före kryptering och i huvudsak läckt information. Detta anses vanligtvis vara en acceptabel avvägning, men med tanke på att värdnamnet normalt exponeras i en DNS-fråga ändå.
Vad händer om du begär en webbplats endast med IP-adress?
Vad webbservern gör när den inte vet vilken specifik värd du begär beror på webbserverns implementering och konfiguration. Vanligtvis finns det en "standard", "catch-all" eller "fall back" webbplats som ger svar på alla förfrågningar som inte uttryckligen anger en värd.
Denna standardwebbplats kan vara en egen oberoende webbplats (visar ofta ett felmeddelande), eller det kan vara någon av de andra webbplatserna på webbservern beroende på inställningarna för webbserveradministratören.
Har du något att lägga till förklaringen? Ljud av i kommentarerna. Vill du läsa fler svar från andra tekniskt kunniga Stack Exchange-användare? Kolla in hela diskussionstråden här .