Jak działa localhost 127.0.0.1?


17

Znalazłem kilka artykułów z tym związanych, ale nie były one dla mnie wystarczające. Chcę wiedzieć, jak localhostdziała i dlaczego jest taki sam na wielu różnych maszynach?

W jaki sposób localhostblokuje dostęp do strony internetowej, gdy wykorzystujemy ją w hostpliku do blokowania strony internetowej?


2
Przepraszam, ale całkowicie zgubiłeś się w drugiej linii twojego pytania ... co masz na myśli?
Windos

1
@Windos, po dodaniu wpisu do pliku hosts takiego jak „127.0.0.1 www.blah.com” przekierowuje on tę stronę na localhost (i tak współpracuje z IE8)
tzup

Odpowiedzi:


23

Nie będę tutaj mówił o obudowie Windows, ponieważ jest nieco inna, ale powiedzmy tak: w każdym * systemie operacyjnym uniksowym masz dwa urządzenia sieciowe:

  • Urządzenie sprzężenia zwrotnego
  • Urządzenie Ethernet

Pierwszy jest czysto „wirtualny”. To jest jak wtyczka Ethernet, której nie widać. Drugi dotyczy wtyczki Ethernet w twoim komputerze.

wprowadź opis zdjęcia tutaj

Do czego służy interfejs sprzężenia zwrotnego? Każdy ruch wysyłany do pętli zwrotnej powróci.

Podobnie jak twoje urządzenie Ethernet otrzymuje adres IP (na przykład 192.168.1.20), urządzenie z pętlą zwrotną również będzie miało adres IP, a mianowicie 127.0.0.1. Aby to ułatwić, możesz także uzyskać do niego dostęp localhost.

Jeśli spojrzysz na typowy /etc/hostsplik uniksowy , zobaczysz, że 127.0.0.1 jest mapowany na „localhost”. Gdy więc wpiszesz „localhost”, Twój komputer będzie wiedział, że może zadzwonić na numer 127.0.0.1.

I to jest powód, dla którego możesz „blokować” aplikacje. Powiedzmy, że nie chcesz, aby komputer wysyłał dane do firmy Microsoft. Następnie możesz po prostu przekierować każde żądanie microsoft.comna adres 127.0.0.1. Każda próba kontaktu microsoft.comspowoduje niepowodzenie.

* każdy system, który faktycznie ma sprzętowy port Ethernet


W systemie Windows podsystem DNS rozpoznaje hosta lokalnego na 127.0.0.1, a ruch do 127.0.0.1 nigdy nawet nie trafia do interfejsu, stos sieci zapętla się z powrotem (tak naprawdę jest tak samo jak w Uniksie, ale bez interfejsu wirtualnego jako przejaw procesu).
jcrawfordor

Chociaż możesz zainstalować Microsoft Loopback Adapter, ale to nie do końca to samo.
slhck,

Obecnie wiele systemów operacyjnych obsługuje 0.0.0.0, więc zamiast tego używaj tego do blokowania witryn. Unika pętli ...
Tamara Wijsman,

8

Adresy protokołu internetowego (IP) należą do jednej z czterech podstawowych kategorii.

  1. Adresy używane do komunikowania się z innymi komputerami na całym świecie,
  2. Adresy używane do komunikacji z komputerami w obrębie konkretnej firmy lub sieci,
  3. Adresy używane do transmisji informacji między komputerami w sieci,
  4. Adresy używane, aby komputer mógł mówić do siebie.

Zgodnie z umową 127.0.0.1 jest jednym z adresów należących do ostatniej z tych kategorii.

Jako ludzie nie pamiętamy zbyt dobrze numerów IP, ale nie mamy problemu z zapamiętywaniem nazw takich jak superuser.com, www.google.com i innych podobnych nazw. Kiedy internet był mały (bardzo mały), ludzie udostępnili plik „hostów” innym osobom w Internecie, aby nie musiały pamiętać numerów. Ten plik hostów zawierał pary adresu IP i co najmniej jedną nazwę hosta. Gdy ktoś próbował uzyskać dostęp do hosta według jego nazwy, oprogramowanie komputerowe wiedziało wystarczająco dużo, aby sprawdzić go w pliku hosts. Od tego czasu Internet rozwinął się tak bardzo, że teraz używamy systemu nazw domen (DNS) w celu rozpoznawania nazw na numery IP oprócz korzystania ze starego pliku hosts. Większość komputerów jest skonfigurowana do wyszukiwania nazw w pliku hosts, a następnie w DNS, jeśli to się nie powiedzie.

Teraz, gdy masz już tło, oto jak to działa (zwykle):

Gdy dodasz ten wpis do pliku hosts, za każdym razem, gdy Twój komputer spróbuje również wyszukać www.foo.com, spróbuje dotrzeć do tej strony pod adresem IP 127.0.0.1, ponieważ powiedziałeś, że to adres internetowy www. foo.com. Pamiętaj, że 127.0.0.1 pozwoli komputerowi mówić do siebie, więc próba przejścia do 127.0.0.1 w przeglądarce spróbuje skontaktować się z serwerem internetowym na twoim komputerze. Jeśli wprowadziłeś 2.3.4.5 zamiast 127.0.0.1, próbowałbyś skontaktować się z komputerem pod adresem 2.3.4.5 podczas otwierania www.foo.com.

127.0.0.1 localhost
127.0.0.1 www.foo.com
127.0.0.1 foo.com

Złą rzeczą w używaniu pliku hosts do takich rzeczy jest to, że po dodaniu wpisu do pliku hosts przyjmujesz odpowiedzialność za aktualizowanie tych informacji. Jeśli nie umieścisz wpisu w pliku hosts, komputer spróbuje użyć DNS, aby wyszukać adres IP, a następnie użyj tego adresu IP, aby skontaktować się z serwerem.

Dobrą rzeczą jest to, że jeśli nigdy nie chcesz, aby ktokolwiek mógł rozmawiać z www.foo.com tylko nazwą hosta na twoim komputerze, dodanie wpisu do pliku hosts może (słowo kluczowe - może) temu zapobiec. Jeśli celem jest uniemożliwienie kiedykolwiek dostępu do określonej witryny w jakikolwiek sposób (nie tylko według nazwy hosta), istnieją inne lepsze i bardziej niezawodne sposoby, aby zapobiec takiemu prawidłowemu użyciu zapory.


Obecnie wiele systemów operacyjnych obsługuje 0.0.0.0, więc zamiast tego używaj tego do blokowania witryn. Unika pętli ...
Tamara Wijsman,

7

Localhost lub 127.0.0.1 to po prostu wbudowana „nazwa” dla twojego komputera lokalnego.

Oznacza to, że 127.0.0.1 nazywa się „pętlą zwrotną”, ponieważ jest to tylko wskaźnik, który wskazuje na twoją maszynę. Jest to zarezerwowany adres IP, który z definicji można również zapisać jako host lokalny.

Ma to na celu umożliwienie rozmowy z komputerem przez wysłanie sygnału na zewnątrz, a następnie zapętlenie go z powrotem, tak aby sygnał był również odczytywany przez ten sam komputer.

Załóżmy, że masz serwer na swoim komputerze - aby uzyskać do niego dostęp, musisz wysłać żądanie do serwera (wysłać pakiet na adres 127.0.0.1), a serwer musi go odczytać (system zapętla pakiet z powrotem do system lokalny w wersji 127.0.0.1, który jest następnie odczytywany przez oprogramowanie serwera).


5

Odkryłem prezentację w Przewodniku TCP / IP, która wydała mi się bardzo pouczająca:

Zwykle, gdy aplikacja TCP / IP chce wysłać informacje, informacje te przemieszczają się w dół warstw protokołu do adresu IP, gdzie są zawarte w datagramie IP . Ten datagram następnie przechodzi do warstwy łącza danych fizycznej sieci urządzenia w celu przesłania do następnego przeskoku, w drodze do miejsca docelowego IP.

Jednak dla funkcji sprzężenia zwrotnego zarezerwowano jeden specjalny zakres adresów . Jest to zakres od 127.0.0.0 do 127.255.255.255. Datagramy IP wysyłane przez host do 127. x . x . x adres pętli zwrotnej nie jest przekazywany do warstwy łącza danych do transmisji. Zamiast tego „zapętlają się” do urządzenia źródłowego na poziomie IP. Zasadniczo oznacza to „zwarcie” normalnego stosu protokołów; dane są wysyłane przez implementację IP warstwy trzeciej urządzenia, a następnie natychmiast przez nią odbierane.


Ponadto Rutgers ma kurs sieciowy, który zawiera ilustrację normalnej komunikacji między hostami,

normalna komunikacja między hostami

i ten przepływ danych w pętli zwrotnej:

                                                    przepływ danych w pętli zwrotnej


4

Jeśli chodzi o drugą część pytania, jeśli umieścisz nazwę hosta witryny w pliku hosts o adresie 127.0.0.1, oznacza to, że po wpisaniu adresu w przeglądarce zamiast używania DNS w celu znalezienia poprawnego adresu, znajduje on w pliku hosts najpierw rozpoznaje go jako localhost i zamiast iść na adres strony, zaczyna rozmawiać z komputerem, co powoduje, że strona się nie ładuje.


Obecnie wiele systemów operacyjnych obsługuje 0.0.0.0, więc zamiast tego używaj tego do blokowania witryn. Unika pętli ...
Tamara Wijsman,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.