127.0.0.1 - una carta a ti mismo

Una dirección IP que todo programador conoce: 127.0.0.1. También llamada "localhost", esta dirección no sale nunca a la red externa y apunta a tu propio ordenador. Cuando un desarrollador web prueba una aplicación en http://localhost:3000, los datos no recorren ni un milímetro de cable de red: se devuelven dentro del kernel del sistema operativo.

Pero, ¿por qué "127"? ¿Por qué no 1.0.0.1 o 10.0.0.1? Detrás de este número aparentemente trivial hay una historia que se remonta a los albores de internet en la década de 1970.

Por qué 127 - el último número de la Clase A

En el diseño inicial de IPv4, el primer octeto (8 bits) distinguía la clase de red. La Clase A eran direcciones cuyo primer bit comenzaba en 0, es decir, el rango de 0.0.0.0 a 127.255.255.255.

127 es el último número de red de la Clase A. En el RFC 790 de 1981, todo el bloque 127.0.0.0/8 (aproximadamente 16,77 millones de direcciones) fue reservado para loopback. Es decir, no solo 127.0.0.1, sino también 127.0.0.2 y 127.255.255.254 son todas direcciones de loopback.

No existe un registro oficial de por qué se eligió el último número de la Clase A. La teoría más aceptada es que los primeros números de la Clase A (0 y 1) estaban reservados para usos especiales, y el 127, al estar en el "extremo", era fácil de asignar también a un uso especial. "Desperdiciar" 16,77 millones de direcciones en loopback se menciona como una de las causas del agotamiento de direcciones IPv4, pero en aquella época, 4.300 millones parecían infinitos.

Cómo funciona el loopback - ¿por dónde viajan los datos?

Los paquetes dirigidos a 127.0.0.1 no se envían en absoluto a la interfaz de red (NIC). Dentro de la pila de red del SO existe una "interfaz de loopback" virtual (lo en Linux, lo0 en macOS), y los paquetes se devuelven en esta interfaz.

  • No pasa por la red física, por lo que no se ve afectado por fallos de red
  • Puede eludir el procesamiento de cifrado y firewall (dependiendo de la configuración)
  • La velocidad de comunicación es cercana a la velocidad de copia en memoria, con latencia prácticamente cero
  • No es accesible desde el exterior, por lo que se pueden probar servicios en desarrollo de forma segura

La dirección IP que puedes verificar en IP Check-san es tu dirección IP global. 127.0.0.1 nunca será visible desde el exterior.

¿Son localhost y 127.0.0.1 lo mismo?

Estrictamente hablando, son diferentes. localhost es un nombre de host que se resuelve a una dirección IP mediante DNS o el archivo /etc/hosts. En muchos sistemas, localhost se resuelve tanto a 127.0.0.1 (IPv4) como a ::1 (IPv6).

Esta diferencia puede causar problemas en ciertos casos:

  • MySQL usa un socket Unix al conectarse con localhost y TCP/IP al conectarse con 127.0.0.1. Como el método de conexión difiere, dependiendo de la configuración de autenticación, puede que solo funcione con uno de ellos
  • En entornos con IPv6 habilitado, localhost puede resolverse a ::1, y no poder conectarse a servicios que solo escuchan en IPv4
  • Algunos navegadores tratan localhost como un "contexto seguro", permitiendo usar Service Workers y la API de Geolocalización sin HTTPS, pero el tratamiento puede diferir con 127.0.0.1

0.0.0.0 - otra dirección especial

Una dirección que a menudo se confunde con 127.0.0.1 es 0.0.0.0. Su significado cambia según el contexto:

  • Como dirección de enlace del servidor: significa "escuchar en todas las interfaces de red". Si se inicia un servidor en 0.0.0.0:8080, es accesible tanto desde localhost como desde el exterior
  • En la tabla de enrutamiento: la ruta predeterminada (0.0.0.0/0) significa "destinos que no coinciden con ninguna otra ruta"
  • Como dirección de origen: un dispositivo que aún no ha obtenido una dirección mediante DHCP usa 0.0.0.0 como su propia dirección
  • En bloqueadores de anuncios: al escribir 0.0.0.0 ads.example.com en /etc/hosts, se puede desactivar el acceso al servidor de anuncios. 0.0.0.0 falla más rápido que 127.0.0.1, por lo que los bloqueadores de anuncios prefieren 0.0.0.0

El loopback en IPv6 - ::1

En IPv6, la dirección de loopback es ::1 (forma abreviada de 0000:0000:0000:0000:0000:0000:0000:0001). Mientras que 127.0.0.0/8 de IPv4 ocupaba 16,77 millones de direcciones, en IPv6 basta con una sola dirección. Con un espacio de direcciones de 128 bits, no hay necesidad de preocuparse por el "desperdicio" de 16,77 millones, pero los diseñadores de IPv6 priorizaron la eficiencia.

127.0.0.1 en la cultura popular

127.0.0.1 es un icono en la cultura de los programadores:

  • "There's no place like 127.0.0.1" (no hay lugar como 127.0.0.1) - parodia de la famosa frase de la película "El Mago de Oz": "There's no place like home". Un diseño clásico de camisetas para programadores
  • "localhost is where the heart is" (localhost es donde está el corazón) - otra parodia similar
  • En el contexto de seguridad, un "ataque desde 127.0.0.1" se usa como expresión que implica una amenaza interna

Conclusión

127.0.0.1 es la dirección que encarna el concepto más básico de internet: "la comunicación consigo mismo". Este número asignado en la década de 1970 sigue siendo utilizado diariamente por desarrolladores de todo el mundo medio siglo después.

La próxima vez que accedas a localhost, recuerda que esos datos no recorren ni un milímetro de cable de red, y que 16,77 millones de direcciones están reservadas para esta "carta a ti mismo". En contraste con la dirección IP global que puedes verificar en IP Check-san, 127.0.0.1 es una dirección que nunca saldrá al mundo exterior: es exclusivamente tuya.

Términos del glosario relacionados

Dirección IP Dirección numérica que identifica dispositivos en internet. 127.0.0.1 es una dirección especial para loopback. IPv6 Protocolo de nueva generación con espacio de direcciones de 128 bits. La dirección de loopback es solo ::1. DNS Sistema que convierte nombres de dominio en direcciones IP. También interviene en la resolución del nombre localhost. NAT Tecnología que traduce entre IP privada e IP global. La comunicación de loopback no pasa por NAT. Firewall Dispositivo de seguridad que monitoriza y controla las comunicaciones de red. El tratamiento de la comunicación de loopback depende de la configuración.