Quem escolheu o 127.0.0.1 como localhost e por quê? Que significado isso tem?

21

Estou quase certo de que todos aqui sabem o significado de 127.0.0.1. Mas, por que esse host SEMPRE local? Quem escolheu esse IP arbitrário? Por que esse IP foi escolhido? Por que não algo mais simples como o 1.0.0.0? Existe algum significado especial para 127.0.0.1?

James Graham
fonte
3
Buscar e achareis o RFC
SpaceManSpiff
@SpacemanSpiff RFC?
James Graham
4
RFCs ( Request For Comments ) são os blocos de construção básicos da Internet. Veja minha resposta abaixo para mais.
Michael Hampton

Respostas:

41

Jon Postel escolheu 127.

Antes que a Internet Assigned Numbers Authority assumisse ( RFC 3232 ) na época de sua morte ( RFC 2468 ), ele era o "czar" das atribuições de endereços e portas da Internet, tendo-se nomeado essencialmente para a tarefa. ( RFC 349 )

No início dos anos 80, quando o IPv4, como o conhecemos, foi distribuído, as redes existentes receberam blocos de endereços "classe A" no espaço de endereços de 32 bits que entrariam em vigor em 1983 ( RFC 801 ). Tanto as atribuições iniciais quanto as 127 que você pergunta, bem como as primeiras definições de endereços IP "classe A", "classe B" e "classe C", foram publicadas pela primeira vez na RFC 790 da Postel . (Observe que "classes" foram substituídas pelo CIDR na RFC 1519 , agora RFC 4632. )

Na RFC 790, Postel definiu 127 como "reservado".

      127.rrr.rrr.rrr                 Reserved                     [JBP]

Sua primeira definição formal aparece na RFC 990 , onde é definida da seguinte maneira:

O número de rede classe A 127 é atribuído à função "loopback", isto é, um datagrama enviado por um protocolo de nível superior a um endereço de rede 127 deve retornar dentro do host. Nenhum datagrama "enviado" para um endereço de rede 127 deve aparecer em qualquer rede em qualquer lugar.

E novamente na RFC 1060 :

(g) {127, <qualquer>}

Endereço de loopback do host interno. Nunca deve aparecer fora de um host.

Portanto, qualquer endereço dentro de 127.0.0.0/8 deve ser considerado loopback e roteado de volta para o host local.

A lista atual de endereços IPv4 de uso especial é a RFC 6890 , que obsoleta a RFC 5735 , que por sua vez obsoleta a RFC 3330 . A RFC 5735 afirma:

127.0.0.0/8 - Este bloco é atribuído para uso como o endereço de loopback do host da Internet. Um datagrama enviado por um protocolo de nível superior para um endereço em qualquer lugar dentro desse bloco volta para dentro do host. Isso geralmente é implementado usando apenas 127.0.0.1/32 para loopback. Conforme descrito em [RFC1122], Seção 3.2.1.3 , os endereços dentro de todo o bloco 127.0.0.0/8 não aparecem legitimamente em nenhuma rede em nenhum lugar.

Finalmente, em qualquer sub-rede IPv4 , o endereço mais baixo não é utilizável, pois representa a rota de rede. Portanto, o primeiro endereço utilizável na sub-rede e, portanto, o mais comum, é 127.0.0.1.

Michael Hampton
fonte
28

Do RFC :

127.0.0.0/8 - Este bloco é atribuído para uso como o endereço de loopback do host da Internet. Um datagrama enviado por um protocolo de nível superior para um endereço em qualquer lugar dentro deste bloco deve retornar dentro do host. Isso geralmente é implementado usando apenas 127.0.0.1/32 para loopback, mas nenhum endereço dentro desse bloco deve aparecer em nenhuma rede em qualquer lugar [RFC1700, página 5].

Da wikipedia :

Como em todos os endereços IP, definir um nome de host sinônimo simplesmente torna a vida mais fácil para usuários humanos - e localhost é o pseudônimo de pioneiro em redes estabelecido.

Observe também que 127 no binário é 01111111 , o valor invertido e invertido de 1 ( 00000001 )

oɔɯǝɹ
fonte
4
Obrigado! Eu votaria. Mas, infelizmente, minha reputação é a de uma criança.
James Graham
7
Er, 10000000 (128)é o notde 01111111 (127). "Oposto" não é uma operação pouco inteligente e não faz sentido nesse contexto.
Chris S
Suspeito que os valores bit a bit dos endereços sejam circunstanciais e não tenham significado oficial na escolha de 127 como o bloco de rede de loopback.
Matthew Ife
6
@Mlfe o valor bit a bit de 127 não é circunstancial: é a "última" endereço de classe A, que todos têm um pouco líder de 0.
KutuluMike