En redes de computadoras , localhost es un nombre de host que se refiere a la computadora actual utilizada para acceder a él. El nombre localhost está reservado para fines de bucle invertido. [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 de bucle invertido omite cualquier hardware de interfaz de red local .
El mecanismo de bucle invertido local se puede utilizar para ejecutar un servicio de red en un host sin requerir una interfaz de red física o sin hacer que el servicio sea accesible desde las redes a las que puede estar conectada la computadora. 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 bucle invertido . [2] Eso significa que cualquier paquete enviado a cualquiera de esas direcciones se devuelve. La dirección 127.0.0.1 es la dirección estándar para el tráfico de bucle invertido 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 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 servidor 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 se puede asignar 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 al rango de direcciones de bucle invertido 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 nombre de dominio de nivel superior , originalmente reservado para evitar confusión con el nombre de host localhost . [4] Los registradores de nombres de dominio no pueden delegar nombres de dominio en el dominio .localhost de nivel superior . [1]
En 1981, el bloque 127.0.0.0/8 obtuvo el estado 'reservado', [ 5] para no asignarlo como una red IP de clase A de propósito general . Este bloque se asignó oficialmente para fines de bucle invertido en 1986. [6] Su propósito como bloque de direcciones IPv4 de uso especial se confirmó en 1994, [7] , 2002 [8] , 2010, [9] y por última vez en 2013. [2 ]
Desde el principio, en 1995, se definió la única dirección de loopback IPv6 ::1 . [10] Su propósito y definición se mantuvo sin cambios en 1998, [11] , 2003, [12] , y hasta la definición actual, en 2006. [3]
El procesamiento de cualquier paquete enviado a una dirección loopback se implementa en la capa de enlace de la pila TCP/IP . Dichos paquetes nunca se pasan a ningún controlador de interfaz de red (NIC) o 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 atraviese la pila TCP/IP sólo por la dirección IP especial a la que fueron dirigidos. Así, los servicios que finalmente los reciben responden según 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 devuelva diferentes páginas web. Para simplificar dichas pruebas, el archivo de hosts se puede configurar para proporcionar nombres apropiados para cada dirección.
Los paquetes recibidos en una interfaz sin bucle invertido con una dirección de origen o destino de bucle invertido deben descartarse. Estos paquetes a veces se denominan paquetes marcianos . [13] Al igual que con cualquier otro paquete falso, pueden ser maliciosos y cualquier problema que puedan causar se puede evitar aplicando filtrado bogon .
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 loopback requiere el uso directo de la dirección explícita.
Una excepción notable 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 enrutables proporciona un medio conveniente para evitar la entrega de paquetes defectuosos a los usuarios finales.