16. juni 2012 - 09:27Der er
10 kommentarer og 1 løsning
Hvordan ved computeren hvor localhost er?
Jeg har installeret xampp, som jeg bruger til at teste nogle hjemmesider. Når jeg i en browser skriver 'localhost/' får jeg følgende:
Index of/ . hjemmeside1 . hjemmeside2
Disse mapper sidder i C:/xampp/htdocs
i xampp er der en mappe apache, og jeg ser i apache/conf/httpd.conf, at ServerRoot er defineret som C:/xampp/apache og DocumentRoot som C:/xampp/htdocs. Men hvordan ved computeren, at den efter et kald til localhost skal finde apache/conf/httpd.conf og søge efter document root der?
Localhost er defineret som IP-adressen 127.0.0.1 og den adresse er defineret som computeren selv. Dette er en TCP/IP-standard og TCP/IP-standarden er den som benyttes på internettet og langt de fleste lokalnet.
Når du benytter en browser til at åbne en side, så tilføjer browseren usynligt at det er port 80, der skal tilgås, hvis du ikke specifikt angiver noget andet med :port efter domænenavnet.
På port 80 på din maskine lytter Apache efter forespørgsler og når den får en så henter læser den sin conf-fil og finder ud af hvor den skal finde filerne til forespørgslen.
Aha - det var nyttigt - da jeg installerede xampp valgte jeg at køre apache 'as a service' hvilket formodenligt betyder, at apache kører hele tiden. Så det er ikke computeren der står ved porten (80) og ved hvor de der kommer skal sendes hen med deres localhost forespørgsler, det er apache der venter ved porten og tager fat i de der kommer med localhost forespørgsler.
Hvis jeg ikke havde apache kørende som service og ikke havde startet den op (og jeg ikke havde andre webservere kørende) ville en localhost forespørgsel resultere i en fejl? Eller er der en default? Hvis jeg havde flere forskellige webservere kørende, hvordan afgøres det hvem der skal behaldle localhost forespørgsler?
Ud over 127.0.0.1 har det netkort sikkert også en almindelig LAN-adresse, fx. 192.168.1.10 eller 10.0.0.13.
Du kan - ofte - sætte flere IP-adresser på samme netkort og få webservere til at lytte på hver sin, fx 10.0.0.14 og 10.0.0.15
Mere almindeligt er det at sætte webserverne til at lytte på samme IP-adresse, men forskellige portnumre, fx 10.0.0.13:80 (default for web) og 10.0.0.13:8080.
Er det forskellige domænenavne navn1.xxx og navn2.xxx kan webserveren sættes op til at skelne mellem disse på samme IP og portnummer.
Så localhost er, i grunden, en url, og man kalder localhost med samme hensigt som man kalder andre url's, nemlig for at få et dokument, og der skal, ligesom ved externe url's, en webserver til at fortolke og udføre opgaven. Hvis der er en webserver der lytter, så kan den ekspediere forespørgslen, ellers ikke. Er det, på kylling-hjerne niveau, nogenlunde korrekt forstået?
Jeg spekulerer stadig på hvad der sker, hvis man har flere webservere kørende. Kommer de i konflikt, eller er der en rækkefølge, og i såfald hvordan? Hvis nogen har svaret, så er jeg fri for at eksperimentere ved at installere flere webservere o.s.v.
#2 Det er korrekt. Apache sidder og venter på porten og svarer. Stopper du Apache servicen (Kontrolpanel -> Administration -> Tjenester), så er der ingen til at besvare opkaldet og du vil så få en fejl i browseren ala siden kan ikke vises. Serveren svarer ikke.
Du vælger hvilke IP-adresser Apachen skal svare på i conf-filen, hvor der typisk står *:80 i linjen, som betyder at den svare på alle computerens IP-adresser og kun på port 80 på disse.
Det er helt korrekt, og du kunne udgive en Pixie-bog med det ;)
Der kan ikke køre to webservere samtidigt på samme IP og port. Derfor kan de ikke komme i konflikt. Nummer 2 får ikke lov til at starte. Og en forespørgsel indeholder både IP og port, og "ved" derfor hvor den skal hen.
Du har ret i at den traditionelle aldersgruppe for traditionelle pixie-bøger med traditionalle pixie-historier ikke er den samme som for de "pixie"-bøger, der lader til at være brug for ved de videregående uddannelser. ;)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.