Różnica między localhost a adresem IP

16

Jeśli powiążesz gniazdo w Pythonie z localhost, 8200 jest to dostępne poprzez http: // localhost: 8200 / . ale nie http: // xxxx: 8200 /

Jeśli powiążesz gniazdo w Pythonie z xxxx, 8200, machinename, 8200, jest to dostępne poprzez http: // xxxx: 8200 / i http: // machinename: 8200 / , ale nie http: // localhost: 8200 /

Myślałem, że localhost oznacza „ten komputer”, a użycie go „zapętliby” adres IP komputera, ale wygląda na to, że jest inny ips.

Czy 127.0.0.1 zawsze jest innym adresem IP niż adres IP maszyny?

aktualizacja:

Rozumiem, że rzeczywiste liczby są różne, ale co robi sprzężenie zwrotne?

Na przykład wikepedia mówi, że
„skierowanie przeglądarki internetowej na adresy URL http://127.0.0.1/ lub http: // localhost / spowoduje dostęp do strony internetowej tego komputera”

ale ta strona internetowa będzie również dostępna w xxxx i prawdopodobnie zostanie skonfigurowana z pojedynczym gniazdem w xxxx. Jak więc działają oba odwołania?

wniosek:

Myślę, że w końcu rozumiem, że 127.0.0.1 i xxxx działają w ten sposób

--127.0.0.1 ==\
               >- Computer
--x.x.x.x   ==/

i nie

--127.0.0.1 ==\
--------------- x.x.x.x >- Computer

lub

--x.x.x.x ==\
--------------- 127.0.0.1 >- Computer

Dziękuję wszystkim za pomoc

David
źródło
1
napisałeś: „127.0.0.1 to zawsze inny adres IP niż adres IP urządzenia”. Liczby między kropkami są różne, to znaczy inny adres IP. Jakie dziwne pytanie zadajesz. Jeśli pod adresem IP komputera masz na myśli coś innego niż 127.0.0.1, to tak, byłby to inny adres IP. A jeśli to, co nazywacie adresem IP urządzenia, to 192.168.0.1 (lub inny standardowy zasięg lokalny), nie musisz bać się tego powiedzieć. Możesz napisać zamiast xxxx. Ten adres 192 i tak nie będzie istniał w Internecie.
barlop,
Referencje dla obu działają ze względu na konfigurację serwera WWW. Możesz nakazać serwerowi, aby łączył się ze wszystkimi adresami lub nasłuchiwał tylko na określonych adresach. Ponieważ pętla zwrotna i rzeczywisty adres IP są odrębnymi adresami, konfiguracja określa, którego adresu IP należy słuchać. Ponieważ localhost jest tylko wpisem hosta dla 127.0.0.1, będzie działał tylko wtedy, gdy serwer WWW jest powiązany z 127.0.0.1.
peelman

Odpowiedzi:

17

Odpowiedzieć na Twoje pytanie.

127.0.0.1 to nie tylko inny adres IP niż adres IP maszyny, to także inny interfejs. 127.0.0.1 nie powinno być widoczne w sieci lokalnej. Jest to specjalny wewnętrzny adres IP adaptera sprzężenia zwrotnego.

xxxx będzie Twoją kartą Ethernet.

przy okazji „localhost” to po prostu wpis w pliku hosts, który wskazuje na 127.0.0.1

Jeśli powiążesz gniazdo z 127.0.0.1:8200, tylko klienci działający lokalnie będą mogli uzyskać do niego dostęp i tylko przy użyciu http://127.0.0.1:8200 lub http: // localhost: 8200 (lub wpisu pliku dns lub hosts wskazuje to na 127.0.0.1).

Gniazdo powiązane z xxxx: 8200 będzie dostępne tylko przez http: // xxxx: 8200 lub wpis pliku dns lub hosts, który na to wskazuje.

Powiązanie gniazda z 127.0.0.1 nie powoduje automatycznego udostępnienia go również w interfejsie Ethernet.

Dlatego nie możesz połączyć się z xxxx: 8200

Możesz powiązać port 8200 ze wszystkimi dostępnymi interfejsami (0.0.0.0), to powinno działać.

Matt H.
źródło
Więc co robi bit „loopback”? Do czego to pętla zwrotna? Myślałem, że to sposób na odniesienie do adresu IP maszyny, cokolwiek to się stało „tj. 127.0.0.1 => xxxx
David
1
Interfejs pętli zwrotnej jest interfejsem wirtualnym. Jest często używany, aby umożliwić programom komunikowanie się ze sobą na tym samym komputerze. To nie jest sposób na odniesienie do adresu IP urządzenia. 127.0.0.1 JEST adresem IP wirtualnego adaptera sprzężenia zwrotnego.
Matt H
1
Inną kwestią związaną z adapterem pętli zwrotnej jest to, że ponieważ jest wirtualny, tak naprawdę nie przepuszcza żadnych pakietów na kartę sieciową.
Matt H
1
dosłownie zmarnowałem 4 godziny, nie rozumiejąc tej koncepcji ... najwyraźniej niektóre serwery WWW automatycznie łączą się z Tobą zarówno xxxx, jak i 127.0.0.1, co wywołuje zamieszanie. Świetne pytanie i odpowiedź chłopaki. Thx =)
jrhee17
3

Na przykład wikepedia mówi, że „skierowanie przeglądarki internetowej na adresy URL http://127.0.0.1/ lub http: // localhost / spowoduje dostęp do strony internetowej tego komputera”

Nieco niedokładne. Może to zrobić. Równie dobrze może nie wyświetlać żadnej strony internetowej, a nawet możliwe jest wyświetlenie innej wewnętrznej strony internetowej niż to, co otrzymujesz, gdy używasz adresu xxxx.

127.0.0.1 wskazuje na twoją maszynę, ale to nie znaczy, że zachowa się tak samo, gdy dotrze do twojej maszyny

Jeśli chcesz nietechniczną analogię, możesz rozważyć różne drzwi do swojego domu.

Oba wskazują na ten sam dom, ale to nie to samo. Każde drzwi mogą zabrać cię do tego samego pokoju lub mogą zabrać cię do innego pokoju. Możliwe jest również zamknięcie jednych drzwi, a nie drugich.

Podczas konfigurowania strony internetowej określasz adresy, z którymi chcesz się powiązać, i dość często odpowiedzią są wszystkie adresy. (To znaczy, że wszystkie drzwi prowadzą cię do jednego pokoju)

Możesz także określić stronę internetową, aby była powiązana tylko z jednym adresem. (Jest to równoważne z zamknięciem wszystkich drzwi z wyjątkiem jednych).

Jeśli masz dwie (lub więcej) strony internetowe, możesz powiązać je z osobnymi adresami. (Jest to równoważne z tym, że każde drzwi przechodzą do oddzielnych pomieszczeń).

Przykładem działania obu odniesień jest to, że na moim komputerze z systemem Windows 7 zainstalowano usługi IIS. Po przejściu do Menedżera usług IIS i kliknięciu prawym przyciskiem myszy domyślnej witryny sieci Web pojawia się opcja menu „Edytuj powiązania”. Zaznaczenie spowoduje wyświetlenie listy powiązań. Mam tylko jeden, ale dla adresu IP ma *, co oznacza, że ​​IIS nasłuchuje na wszystkich moich adresach IP.

sgmoore
źródło
Świetna analogia! Bardzo ci dziękuję ! Właśnie zrobiłem proces. Udało mi się połączyć 127.0.0.1:5000z witryną i powiązać 192.168.1.104:5000z inną witryną. Kluczem jest to, że address:portoznacza inny pokój (usługę) w domu (komputer).
Rick
1

Każdy adres IP w systemie jest niezależny i może być powiązany osobno z gniazdami, z wyjątkiem specjalnego adresu 0.0.0.0, który wskazuje systemowi operacyjnemu powiązanie gniazda ze wszystkimi interfejsami.

Ignacio Vazquez-Abrams
źródło
1
Ale 127.0.0.1 jest także specjalnym adresem, jako najczęstszym wyborem dla interfejsu pętli zwrotnej. Do czego wraca ten adres?
David
To nie czyni go „specjalnym”, tylko czyni go „adresem w interfejsie sprzężenia zwrotnego” (chyba że powiesz „każdy adres jest wyjątkowy na swój sposób”, ale nie idźmy tam). To interfejs wykonuje pętlę, a nie adres.
Ignacio Vazquez-Abrams,