localhost

In computer networking, localhost is a hostname that means this computer. It is used to access the network services that are running on the host via its loopback network interface. Using the loopback interface bypasses any local network interface hardware.

The local loopback mechanism is useful for testing software during development, independently of any networking configurations. For example, if a computer has been configured to provide a website, directing a locally running web browser to http://localhost may display its home page.

On most computer systems, localhost resolves to the IP address 127.0.0.1, which is the most commonly used IPv4 loopback address, and to the IPv6 loopback address ::1.[1]

The name localhost is also a reserved top-level domain name, set aside to avoid confusion with the definition as a hostname.[2] The IETF standards restrict domain name registrars from assigning the name localhost in registration procedures, such as for second-level domains.

Name resolution

IPv4 network standards reserve the entire 127.0.0.0/8 address block for loopback purposes. That means any packet sent to one of those 16,777,214 addresses (127.0.0.1 through 127.255.255.254) is looped back. IPv6 has just a single address, ::1.

The resolution of the name localhost into one or more IP addresses is configured by the following lines in the operating system's hosts file:

127.0.0.1    localhost
::1          localhost

However, it may also be resolved with the Domain Name System (DNS). Localhost may be mapped to other IPv4 loopback addresses, and additional names may be assigned to any loopback address.

The processing of any packets sent to a loopback address is implemented in the link layer of the TCP/IP stack. Such packets are never delivered to any network interface controller (NIC) or device driver, which permits testing of software in the absence of any hardware network interfaces.

Like any other packets traversing the TCP/IP stack, looped-back packets convey the IP address and port number they were addressed to. Thus, the services that ultimately receive them can respond according to the specified loopback destination. For example, an HTTP service could route packets addressed to 127.0.0.99:80 and 127.0.0.100:80 to different Web servers, or to a single server that would return different web pages. To simplify such testing, the hosts file can be modified to provide appropriate aliases for each such address.

IETF standards

The name localhost is reserved for loopback purposes by RFC 6761 (Special-Use Domain Names),[3] which achieved the Proposed Standard maturity level in February, 2013. The standard sets forth a number of special considerations governing the use of the name in the Domain Name System:

The IPv4 loopback addresses are reserved within the IPv4 namespace by the IETF Special Use IPv4 Addresses standard (RFC 5735).[4] The reservation can be traced back to the November, 1986 Assigned Numbers standard (RFC 990), which was issued at a time when the first byte of the IP address was a signed network number that was the only portion of the address assigned by the IETF. Reserving its highest possible network number (127) for loopback testing eventually resulted in the excessive reservation of 16,777,214 loopback addresses.

In contrast, the IETF IP Version 6 Addressing Architecture standard (RFC 4291) reserves the single IPv6 loopback address ::1 within the IPv6 namespace. The standard precludes the assignment of that address to any physical interface, as well as its use as the source or destination address in any packet sent to remote hosts. Any such packet that is erroneously transmitted is not supposed to be routed, and should be dropped by all hosts that receive it.

Special cases

The releases of the MySQL database differentiate between the use of the hostname localhost and the use of the addresses 127.0.0.1 and ::1.[5][6] When using localhost as the destination in a client connector interface of an application, the MySQL application programming interface connects to the database using a Unix domain socket, while a TCP connection via the loopback address requires the direct use of the explicit address.

One notable exception to the use of the 127.0.0.0/8 network addresses is their use in Multiprotocol Label Switching (MPLS) traceroute error detection, in which their property of not being routable provides a convenient means to avoid delivery of faulty packets to end users.

Martian packets

Any IP datagram with a source or destination address set to a loopback address must not appear outside of a computing system, or be routed by any routing device. Packets received on an interface with a loopback destination address must be dropped. Such packets are sometimes referred to as Martian packets[7] As with other bogus packets, they may be malicious and any problems they might cause can be avoided by applying bogon filtering.

References

This article is issued from Wikipedia - version of the Monday, April 25, 2016. The text is available under the Creative Commons Attribution/Share Alike but additional terms may apply for the media files.