Kto wybrał 127.0.0.1 na localhost i dlaczego? Jakie to ma znaczenie?

21

Jestem prawie pewien, że wszyscy tutaj znają znaczenie 127.0.0.1. Ale dlaczego to ZAWSZE localhost? Kto wybrał to dowolne IP? Dlaczego wybrano ten adres IP? Dlaczego nie coś prostszego, na przykład 1.0.0.0? Czy jest jakieś specjalne znaczenie dla 127.0.0.1?

James Graham
źródło
3
Szukajcie, a znajdziecie RFC
SpacemanSpiff,
@SpacemanSpiff RFC?
James Graham,
4
RFC ( Request For Comments ) to podstawowe elementy składowe Internetu. Zobacz moją odpowiedź poniżej, aby uzyskać więcej.
Michael Hampton

Odpowiedzi:

41

Jon Postel wybrał 127.

Przed przejęciem przez Internet Urzędu ds. Przydzielonych numerów ( RFC 3232 ) mniej więcej w chwili jego śmierci ( RFC 2468 ) był „czarownikiem” adresów internetowych i przydziałów portów, zasadniczo mianując się tym zadaniem. ( RFC 349 )

We wczesnych latach osiemdziesiątych, kiedy IPv4, jak wiemy, został po raz pierwszy wyparty, istniejące sieci otrzymały bloki adresowe „klasy A” w 32-bitowej przestrzeni adresowej, która wejdzie w życie w 1983 roku ( RFC 801 ). Zarówno początkowe przypisania, jak i przypisanie 127, a także pierwsze definicje adresów IP „klasy A”, „klasy B” i „klasy C”, zostały po raz pierwszy opublikowane w RFC 790 firmy Postel . (Należy zauważyć, że „klasy” zostały zastąpione przez CIDR w RFC 1519 , teraz RFC 4632. )

W RFC 790 Postel zdefiniował 127 jako „zarezerwowany”.

      127.rrr.rrr.rrr                 Reserved                     [JBP]

Jego pierwsza formalna definicja pojawia się w RFC 990 , gdzie jest zdefiniowana następująco:

Do sieci o numerze 127 klasy A przypisana jest funkcja „sprzężenia zwrotnego”, to znaczy datagram wysłany przez protokół wyższego poziomu na adres sieci 127 powinien zapętlić się z powrotem w hoście. Żaden datagram „wysłany” na adres sieciowy 127 nigdy nie powinien pojawić się w żadnej sieci w dowolnym miejscu.

I znowu w RFC 1060 :

(g) {127, <any>}

Adres zwrotny hosta wewnętrznego. Nigdy nie powinien pojawić się poza hostem.

W związku z tym każdy adres w zakresie 127.0.0.0/8 należy traktować jako sprzężenie zwrotne i być kierowany z powrotem do hosta lokalnego.

Obecna lista adresów IPv4 specjalnego zastosowania to RFC 6890 , która zdezaktualizowała RFC 5735 , co z kolei zdezaktualizowało RFC 3330 . RFC 5735 stwierdza:

127.0.0.0/8 - Blok ten jest przypisany do wykorzystania jako adres zwrotny hosta internetowego. Datagram wysłany przez protokół wyższego poziomu na adres w dowolnym miejscu tego bloku zapętla się z powrotem w hoście. Jest to zwykle realizowane przy użyciu tylko 127.0.0.1/32 dla sprzężenia zwrotnego. Jak opisano w [RFC1122], sekcja 3.2.1.3 , adresy w całym bloku 127.0.0.0/8 nie pojawiają się legalnie w żadnej sieci.

Wreszcie w dowolnej podsieci IPv4 najniższy adres nie jest użyteczny, ponieważ reprezentuje trasę sieci. Tak więc pierwszym użytecznym adresem w podsieci, a zatem najczęściej spotykanym, jest 127.0.0.1.

Michael Hampton
źródło
28

Z RFC :

127.0.0.0/8 - Blok ten jest przeznaczony do użycia jako adres zwrotny hosta internetowego. Datagram wysłany przez protokół wyższego poziomu na adres w dowolnym miejscu w tym bloku powinien zapętlić się z powrotem w hoście. Zwykle jest to realizowane za pomocą tylko 127.0.0.1/32 dla pętli zwrotnej, ale żadne adresy w tym bloku nigdy nie powinny pojawiać się w żadnej sieci w dowolnym miejscu [RFC1700, strona 5].

Z wikipedii :

Podobnie jak w przypadku wszystkich adresów IP, zdefiniowanie synonimicznej nazwy hosta po prostu ułatwia życie użytkownikom - a localhost jest pionierem aliasów sieciowych.

Zauważ również, że 127 w systemie dwójkowym to 01111111 , a wartość odwrócona i odwrócona to 1 ( 00000001 )

oɔɯǝɹ
źródło
4
Dziękuję Ci! Głosowałbym za. Ale, niestety, moją reputacją jest dziecko.
James Graham,
7
Er 10000000 (128)jest notz 01111111 (127). „Opposite” nie jest operacją nieco mądrą i nie ma sensu w takim kontekście.
Chris S
Podejrzewam, że bitowe wartości adresów są poszlakowe i nie mają żadnego autorytatywnego znaczenia w wyborze 127 będącym blokiem pętli zwrotnej.
Matthew Ife
6
@Mlfe bitowa wartość 127 nie jest poszlakowa: to „ostatni” adres klasy A, z których każdy ma wiodący bit 0.
KutuluMike