¿Quién eligió 127.0.0.1 para ser localhost y por qué? ¿Qué significado tiene?

21

Estoy casi seguro de que todos aquí saben el significado de 127.0.0.1. Pero, ¿por qué SIEMPRE es localhost? ¿Quién eligió esa IP arbitraria? ¿Por qué se eligió esa IP? ¿Por qué no algo más simple como 1.0.0.0? ¿Hay algún significado especial para 127.0.0.1?

James Graham
fuente
3
Busque y encontrará el RFC
SpacemanSpiff
@SpacemanSpiff RFC?
James Graham el
44
Los RFC ( Solicitud de comentarios ) son los componentes básicos de Internet. Vea mi respuesta a continuación para más.
Michael Hampton

Respuestas:

41

Jon Postel escogió 127.

Antes de que la Autoridad de Números Asignados de Internet asumiera el control ( RFC 3232 ) en el momento de su muerte ( RFC 2468 ), él era el "zar" de las direcciones de Internet y las asignaciones de puertos, habiéndose nominado esencialmente para la tarea. ( RFC 349 )

A principios de la década de 1980, cuando IPv4, como sabemos, se estaba eliminando por primera vez, las redes existentes recibieron bloques de direcciones de "clase A" en el espacio de direcciones de 32 bits que entrarían en vigencia en 1983 ( RFC 801 ). Tanto las asignaciones iniciales como las 127 asignaciones que solicita, así como las primeras definiciones de direcciones IP de "clase A", "clase B" y "clase C", se publicaron por primera vez en el RFC 790 de Postel . (Tenga en cuenta que las "clases" fueron reemplazadas por CIDR en RFC 1519 , ahora RFC 4632 ).

En RFC 790, Postel definió 127 como "reservado".

      127.rrr.rrr.rrr                 Reserved                     [JBP]

Su primera definición formal aparece en RFC 990 , donde se define de la siguiente manera:

El número de red de clase A 127 tiene asignada la función de "bucle de retorno", es decir, un datagrama enviado por un protocolo de nivel superior a una dirección de red 127 debe regresar en bucle dentro del host. Ningún datagrama "enviado" a una dirección de red 127 debería aparecer en ninguna red en ningún lugar.

Y nuevamente en RFC 1060 :

(g) {127, <cualquiera>}

Dirección interna de loopback del host. Nunca debe aparecer fuera de un host.

Por lo tanto, cualquier dirección dentro de 127.0.0.0/8 debe considerarse loopback y enrutarse de nuevo al host local.

La lista actual de direcciones IPv4 de uso especial es RFC 6890 , que obsoleta RFC 5735 , que a su vez obsoleta RFC 3330 . RFC 5735 declara:

127.0.0.0/8: este bloque se asigna para su uso como dirección de bucle invertido de host de Internet. Un datagrama enviado por un protocolo de nivel superior a una dirección en cualquier lugar dentro de este bloque se repite dentro del host. Esto normalmente se implementa utilizando solo 127.0.0.1/32 para loopback. Como se describe en [RFC1122], Sección 3.2.1.3 , las direcciones dentro del bloque 127.0.0.0/8 completo no aparecen legítimamente en ninguna red en ninguna parte.

Finalmente, en cualquier subred IPv4 , la dirección más baja no se puede usar, ya que representa la ruta de red. Entonces, la primera dirección utilizable en la subred, y por lo tanto la más comúnmente vista, es 127.0.0.1.

Michael Hampton
fuente
28

Desde el RFC :

127.0.0.0/8: este bloque se asigna para su uso como dirección de bucle invertido de host de Internet. Un datagrama enviado por un protocolo de nivel superior a una dirección en cualquier lugar dentro de este bloque debe regresar dentro del host. Esto se implementa normalmente usando solo 127.0.0.1/32 para loopback, pero ninguna dirección dentro de este bloque debe aparecer en ninguna red en ningún lugar [RFC1700, página 5].

De wikipedia :

Al igual que con todas las direcciones IP, la definición de un nombre de host sinónimo simplemente facilita la vida de los usuarios humanos, y localhost es el alias de los pioneros en redes establecidos.

También tenga en cuenta que 127 en binario es 01111111 , el valor invertido e invertido de 1 ( 00000001 )

oɔɯǝɹ
fuente
44
¡Gracias! Yo votaría. Pero, por desgracia, mi reputación es la de un niño.
James Graham el
77
Er, 10000000 (128)es el notde 01111111 (127). "Opuesto" no es una operación inteligente y no tiene sentido en ese contexto.
Chris S
Sospecho que los valores bit a bit de las direcciones son circunstanciales y no tienen un significado autorizado en la elección de 127 como el bloque de red de bucle invertido.
Matthew Ife
66
@Mlfe, el valor en bits de 127 no es circunstancial: es la "última" dirección de clase A, que tiene un bit
inicial