En redes informáticas , localhost es un nombre de host que hace referencia a la computadora actual que se utiliza para acceder a ella. El nombre localhost está reservado para fines de loopback . [1] Se utiliza para acceder a los servicios de red que se ejecutan en el host a través de la interfaz de red loopback. El uso de la interfaz loopback evita cualquier hardware de interfaz de red local .
El mecanismo de bucle local se puede utilizar para ejecutar un servicio de red en un host sin necesidad de una interfaz de red física o sin que el servicio sea accesible desde las redes a las que la computadora pueda estar conectada. Por ejemplo, se puede acceder a un sitio web instalado localmente desde un navegador web mediante la URL http://localhost para mostrar su página de inicio.
Los estándares de red IPv4 reservan todo el bloque de direcciones 127.0.0.0 / 8 (más de 16 millones de direcciones) para fines de loopback. [2] Eso significa que cualquier paquete enviado a cualquiera de esas direcciones se envía en loopback. La dirección 127.0.0.1 es la dirección estándar para el tráfico de loopback de IPv4; el resto no son compatibles con todos los sistemas operativos. Sin embargo, se pueden utilizar para configurar múltiples aplicaciones de servidor en el host, todas escuchando en el mismo número de puerto. En la arquitectura de direccionamiento IPv6 [3] solo hay una única dirección asignada para loopback: ::1 . El estándar impide la asignación de esa dirección a cualquier interfaz física, así como su uso como dirección de origen o destino en cualquier paquete enviado a hosts remotos.
El nombre localhost normalmente se resuelve en la dirección de bucle invertido IPv4 127.0.0.1 y en la dirección de bucle invertido IPv6 ::1 .
Esta resolución normalmente se configura mediante las siguientes líneas en el archivo de hosts del sistema operativo :
127.0.0.1 host local::1 servidor local
El nombre también puede ser resuelto por servidores del Sistema de nombres de dominio (DNS), pero existen consideraciones especiales [1] que rigen el uso de este nombre:
Además de la asignación de localhost a las direcciones de loopback ( 127.0.0.1 y ::1 ), localhost también puede asignarse a otras direcciones IPv4 (loopback) y también es posible asignar otros nombres, o nombres adicionales, a cualquier dirección de loopback. No se garantiza que la asignación de localhost a direcciones distintas del rango de direcciones de loopback designado en el archivo de hosts o en DNS tenga el efecto deseado, ya que las aplicaciones pueden asignar el nombre internamente.
En el Sistema de nombres de dominio, el nombre .localhost está reservado como un nombre de dominio de nivel superior , originalmente reservado para evitar confusiones con el nombre de host localhost . [4] Los registradores de nombres de dominio tienen prohibido delegar nombres de dominio en el dominio de nivel superior .localhost . [1]
En 1981, el bloque 127.0.0.0/8 obtuvo un estado 'reservado', [5] para no asignarlo como una red IP de clase A de propósito general. Este bloque fue asignado oficialmente para fines de loopback en 1986. [ 6 ] Su propósito como un bloque de dirección IPv4 de uso especial fue confirmado en 1994, [7] , 2002 [8] , 2010, [9] y por última vez en 2013. [2]
Desde el principio, en 1995, se definió la dirección única de loopback IPv6 ::1 . [10] Su propósito y definición no se modificó en 1998, [11] , 2003, [12] y hasta la definición actual, en 2006. [3]
El procesamiento de cualquier paquete enviado a una dirección de loopback se implementa en la capa de enlace de la pila TCP/IP . Dichos paquetes nunca pasan a ningún controlador de interfaz de red (NIC) ni a ningún controlador de dispositivo de hardware y no deben aparecer fuera de un sistema informático ni ser enrutados por ningún enrutador. Esto permite realizar pruebas de software y servicios locales, incluso en ausencia de interfaces de red de hardware.
Los paquetes en bucle se distinguen de cualquier otro paquete que atraviesa la pila TCP/IP únicamente por la dirección IP especial a la que están dirigidos. Por lo tanto, los servicios que finalmente los reciben responden de acuerdo con el destino especificado. Por ejemplo, un servicio HTTP podría enrutar paquetes dirigidos a 127.0.0.99:80 y 127.0.0.100:80 a diferentes servidores web, o a un único servidor que devuelve diferentes páginas web. Para simplificar dichas pruebas, el archivo hosts puede configurarse para proporcionar nombres apropiados para cada dirección.
Los paquetes recibidos en una interfaz que no sea de bucle invertido con una dirección de origen o destino de bucle invertido deben descartarse. A estos paquetes a veces se los denomina paquetes marcianos . [13] Al igual que con cualquier otro paquete falso, pueden ser maliciosos y cualquier problema que puedan causar se puede evitar aplicando el filtrado de bogones .
Las versiones de la base de datos MySQL diferencian entre el uso del nombre de host localhost y el uso de las direcciones 127.0.0.1 y ::1 . [14] Cuando se utiliza localhost como destino en una interfaz de conector de cliente de una aplicación, la interfaz de programación de aplicaciones MySQL se conecta a la base de datos utilizando un socket de dominio Unix , mientras que una conexión TCP a través de la interfaz de loopback requiere el uso directo de la dirección explícita.
Una notable excepción al uso de las direcciones 127.0.0.0 / 8 es su uso en la detección de errores de traceroute de Conmutación de etiquetas multiprotocolo (MPLS), en el que su propiedad de no ser enrutable proporciona un medio conveniente para evitar la entrega de paquetes defectuosos a los usuarios finales.