O que é Localhost e como é diferente de 127.0.0.1?

Mesmo quando todos os dispositivos de rede estão desconectados, seu computador ainda pode se comunicar por meio de uma espécie de rede. Conhecido como “loopback”, uma máquina Unix pode enviar e receber comunicações de rede de si mesma e para si mesma por meio de um dispositivo de rede virtual. Seu computador pode enviar mensagens de si mesmo para si mesmo, permitindo comunicações em estilo de rede sem a necessidade de uma rede funcional.
O que é 127.0.0.1?
127.0.0.1 é o endereço IP de loopback mais comumente utilizado. Ele faz parte do bloco reservado de mais de dezesseis milhões de endereços IP que são usados especificamente para funcionalidade de loopback. Um loopback permite que seu computador se comunique consigo mesmo enquanto usa protocolos de conexão de rede.
Em uma abstração ampla, um loopback é um dispositivo de rede virtual que cria uma conexão de rede com apenas um ponto final, o que significa que começa e termina no mesmo dispositivo: seu computador. Na verdade, o dispositivo de loopback aparece até no ipconfig com o nome lo, como visto acima. Os endereços de loopback são usados principalmente para solução de problemas (é semelhante a olhar em um espelho) ou para acessar recursos locais por meio de uma interface de rede.
Leia também: Como usar o Nginx como um Proxy Reverso
O que é localhost?

“localhost” descreve uma porta de comunicação que se conecta ao servidor de origem. Ele permite que uma conexão de rede “retorne” a si mesma, permitindo que você emule conexões de rede quando nenhuma rede desse tipo está presente ou disponível. Na prática, localhost é tratado como sinônimo de 127.0.0.1 para uso e discussão. No entanto, é importante lembrar que eles não são estritamente idênticos.
Antes de fazer uma solicitação DNS para traduzir a string de texto digitada pelo usuário em um endereço IP navegável, o sistema operacional verifica o arquivo HOSTS em busca de quaisquer aliases ou regras de redirecionamento. Em um sistema configurado para padrões padrão, “localhost” em uma URI será resolvido para 127.0.0.1 sob IPv4 ou ::1 para IPv6. No entanto, existem muito mais endereços de loopback do que apenas esses dois. O bloco de endereços IP reservados para endereços de loopback se estende de 127.0.0.0 a 127.255.255.255.
Na maioria dos casos, localhost será resolvido para 127.0.0.1, graças a uma regra de redirecionamento no arquivo HOSTS, como mencionado acima. Mas em alguns casos, localhost pode ser mapeado para um endereço IP diferente. Assim, localhost poderia ser apontado para qualquer endereço IP naquele bloco, e funcionaria de forma idêntica.
Conclusão: Qual é a diferença entre localhost e 127.0.0.1?
Na maioria das máquinas, localhost e 127.0.0.1 são funcionalmente idênticos. Mas localhost é um rótulo para o endereço IP e não o endereço em si. Localhost poderia ser apontado para diferentes endereços IP. Na verdade, poderia ser apontado para qualquer endereço IP, até mesmo um fora do bloco de endereços reservados. O arquivo HOSTS não se importa e não irá impedi-lo. No entanto, isso quebrará funcionalidades significativas em seu sistema e fará com que qualquer aplicativo que dependa de uma conexão localhost falhe.
O bloco de endereços 127 foi escolhido para o bloco de endereços de loopback porque foi o último bloco de endereços da Classe A, que vai do valor de endereço binário 00000001 a 01111111. No IPv6, o endereço de loopback é o primeiro endereço, 0:0:0:0:0:0:0:1, frequentemente expresso em sua forma truncada como ::1.
Se você está vindo do Windows para um sistema Unix, pode ter notado que loopback é praticamente sinônimo de localhost. Você pode usar seu arquivo HOSTS para fazer “loopback” redirecionar para 127.0.0.1, mas isso é mais uma substituição de texto do que qualquer outra coisa.