Gostaria de saber qual é a origem da decisão de tomar localhost
o endereço IP 127.0.0.1
. Qual é o "significado" de 127
? qual é o "significado" de 0.0.1
?
networking
localhost
ip
loopback
Roee Adler
fonte
fonte
Respostas:
127 é o último número de rede em uma rede classe A com uma máscara de sub-rede
255.0.0.0
.127.0.0.1
é o primeiro endereço atribuível na sub-rede.127.0.0.0
não pode ser usado porque esse seria o número do fio. Mas o uso de outros números para a parte do host deve funcionar bem e voltar ao uso127.0.0.1
. Você pode tentar você mesmo executando o ping,127.1.1.1
se desejar. Por que eles esperaram até o último número de rede para implementar isso? Eu não acho que esteja documentado.fonte
A primeira menção que posso encontrar sobre a atribuição de 127 como loopback é novembro de 1986 RFC 990, de autoria de Reynolds e Postel:
Mesmo em setembro de 1981, as RFC 790 , 0 e 127 já estavam reservadas:
0 e 127 eram as únicas redes reservadas de Classe A em 1981. 0 foi usado para apontar para um host específico, de modo que deixou 127 para loopback.
Eu sei que isso não responde à pergunta, mas isso é o mais antigo que eu pude cavar. Poderia ter feito mais sentido escolher 1.0.0.0 para loopback, mas isso já foi dado à BBN Packet Radio Network.
fonte
Os designers da Internet realmente sabiam como o hardware funcionava e os projetaram com a implementação de baixo nível em mente.
Os valores 0, 127 e 255 são especiais na montagem de 8 bits e na programação de linguagem de máquina, pois existem "truques" que você pode usar para testar esses valores e ramificar para código diferente usando instruções menores que são executadas mais rapidamente do que para outros números inteiros. 127 é o número inteiro de 8 bits mais alto e assinado, portanto, incrementá-lo em 1 causará um estouro assinado. Da mesma forma, incrementar 255 causará um estouro sem sinal. Simplesmente carregar o valor 0 em um registrador geralmente definirá um sinalizador zero no chip. Imagine que o programa de rede se parece com isso no pseudocódigo:
Embora dependa do chip, naqueles dias a maioria dos chips podia codificar esses testes com 2 palavras, 3 palavras e 3 palavras, respectivamente (total de 8 palavras) e, além disso, esses testes específicos provavelmente eram executados em 1 ciclo de clock cada. Usar qualquer outro valor provavelmente exigiria 4 palavras cada (total de 12 palavras), um aumento de 50% no tamanho do código e provavelmente um aumento de 50% no tempo de execução.
fonte
Se você pensar no significado de um host local ou endereço IP de loopback, percebe que nunca deseja ver esse endereço ou a rede à qual esse endereço pertence, fora de um host. (Dentro de um host, está escuro demais para vê-lo. Desculpas a Mark Twain.)
Então, alguém teve que escolher uma rede IP para representar este endereço de host local. Não me lembro de quem o escolheu primeiro, mas está especificado na solicitação de comentários da IETF, emitida periodicamente como "Requisitos de host".
Isso foi feito há muito tempo, que a idéia de "desperdiçar" um endereço inteiro de classe A não passou pela cabeça de ninguém na época.
O utilitário do localhost é que você pode conversar consigo mesmo usando um endereço IP codificado. Foi usado muito antes de existir o Sistema de Nomes de Domínio. Você poderia realmente usar qualquer um dos endereços válidos 127.xxx, mas ninguém nunca usa. Você não pode esgueirar-se e usar 127 como uma rede real porque o RFC "Requisitos de roteador" proíbe o roteamento dessa rede em qualquer Internet.
fonte
Primeiro, todo o intervalo 127.xxx aponta para o seu host local.
127 no binário é "01111111". "11111111" = 255 e 0 são reservados, portanto a escolha é óbvia :)
fonte
Porque quando esses padrões foram criados, os computadores eram lentos e geralmente limitados a registros de 8 bits. A comparação de números com números era muito lenta, especialmente se esses números tivessem que ser buscados na parte de trás e, em seguida, MUITO memória lenta. Registros, ou seja, o armazenamento "CPU on board" foi muito mais rápido.
Além disso, esses computadores antigos tinham instruções especiais e mais rápidas para detectar "igual a zero", "diferente de zero", "número inteiro negativo / positivo" (onde o sinal estava ... adivinhem, o bit mais à esquerda, agora veja uma conexão com 127 , esse é o número com todo o binário "1", exceto o sinal = mais à esquerda =).
Portanto, esses eram números especiais, porque permitiam que truques de programação economizassem muitos ciclos de CPU em operações realizadas com freqüência.
Você nunca veria uma instrução "IF CallerIP =" 0 ", mas" IF NotZero (CallerIP) ".
Você pode verificar as instruções de montagem antigas como "BEQ, BNE" (6502 CPUs) para obter explicações mais longas. Verifique também esta página .
No final:
0, 255 e 127 podem ser verificados com uma instrução mais rápida. Linguagens ainda mais de alto nível, como C, têm funções de comparação de "atalho" que o compilador pode otimizar internamente em uma única instrução.
Nos anos 70 e 80, os programadores realmente produziram arquiteturas magníficas com recursos escassos; por trás de padrões como a numeração IP, há muito pensamento e genialidade.
fonte