Localhost

在计算机网络中，localhost是用戶自己電腦的主机名。localhost被保留用于回环通信。localhost映射的IP地址為127.0.0.1，用戶向127.0.0.1发出的任何网络请求不是发送到互联网而且直接返回到自己的電腦，即通过回环网络接口访问自己主机上运行的网络服务。使用回环接口可以绕过任何本地网卡 。

 本地回环 
本地回环机制可用于在主机上运行网络服务，而无需物理网络接口，或者无需使该服务可从计算机连接的网络访问。例如，可以通过 URL http://localhost 从 Web 浏览器访问本地安装的网站，来访问本地网站。

 名称解析 
localhost这个主机名称一般会解析为IPv4本地环回地址127.0.0.1和IPv6本地环回地址[::1]。

IPv4网络标准将整个127.0.0.0/8地址块订为保留地址，供本地环回使用，整个地址块内有超过1600万个IP地址。所以，发送到这些地址（127.0.0.1 到 127.255.255.255）的所有数据包都会返回本机。地址127.0.0.1是IPv4环回的常用标准地址，其余地址并不是所有的操作系统都支持。但是，使用127.0.0.1/8内的不同地址，就可以在本机上设置侦听相同端口的多个服务器。IPv6标准只分配了一个本地环回地址：[::1]。

要将本地主机名localhost解析到一个或多个IP地址，可通过在操作系统的hosts文件中添加以下代码实现：
127.0.0.1    localhost
::1          localhost
本地主机名也可以由DNS服务器解析，但这一主机名的解析请求，应在本地处理，而非发送到远程服务器。

除了映射到环回地址（127.0.0.1 和 ::1）之外，localhost还可以映射到其他IPv4环回地址，更可以将其他名称或附加名称分配给任何回环地址。不过，在hosts文件或DNS中为localhost这个主机名设置映射地址时，假如新设置的映射地址并不在原本指定的映射地址范围内，所作映射不一定会生效，因为应用程序内部可能已对localhost进行映射操作。

在域名系统中，localhost被留作顶级域名，最初的目的，是要被留出以避免与用于回送目的的主机名混淆。IETF标准禁止域名注册商分配localhost名称。

 IETF 标准 
名称localhost由 RFC 6761（特殊用途域名）保留，用于环回。该域名在2013年2月达到了建议标准成熟度级别。该标准规定了一些特殊的考虑因素，规范其在域名解析系统中的使用：

 localhost的IPv4或IPv6地址查询必须始终解析为相应的环回地址，该地址在单独的标准中指定。
 应用可以自行解析环回地址，或者将他们交由本地解析器机制。
 当名称解析器收到localhost的地址（A 或 AAAA）查询时，它应该返回适当的环回地址，以及其他请求的记录类型的请求响应。不应将本地主机的查询转发到缓存名称服务器。
 为了避免使域名系统根服务器负担流量，缓存名称服务器不应请求本地主机的名称服务器记录，也不要向权威名称服务器转发解析。
 DNS 注册商不能在顶级域localhost中委派域名。
 在上述规定的前提下，当权威名称服务器收到 'localhost' 查询请求时，应该适当处理。
IPv4 环回地址由 IETF 特殊用途IPv4地址标准（RFC 5735）在 IPv4 地址中保留空间，可以追溯到 1986 年 11 月分配号码标准（RFC 990）。

相比之下，IETF IPv6 寻址体系结构标准（RFC 4291）在IPv6地址空间内保留单个IPv6环回地址 ::1。 该标准排除了将该地址分配给任何物理接口，以及在任何数据包中，将其用作发送到远程主机的源地址或目标地址的用途。任何这类被错误传输的数据包都不应该被路由转发，并且应该被接收它的所有路由器或主机丢弃。

 數據包處理 
任何發往環迴地址的數據包，其處理都是在 TCP/IP 協定疊的链路层中實現的。這些數據包不會交由网卡或者裝置驅動程式處理，既不應在電腦系統以外出現，也不可經路由器轉發。如此一來，電腦上即使沒有實體网卡，也可進行軟體測試或者運行本機服務。

环回数据包与其他任何通过 TCP/IP 协议栈的数据包仅通过寻址到的特殊IP地址进行区分。因此，最终接收到的服务将根据指定的目的地进行响应。例如，HTTP服务可以将发往127.0.0.99:80和127.0.0.100:80的数据包路由到不同的网络服务器，或发送到返回不同网页的单一服务器。为了简化这种测试，可以将hosts文件配置为为每个地址提供合适的名称。

具有环回源地址或目标地址的数据包，在非环回接口上收到则必须被删除。这种数据包有时被称为火星包。和其他虚假数据包一样，它们可能是恶意的，它们带来的问题可以通过bogon滤波避免。

 特殊情况 
在 MySQL 数据库上，使用主机名localhost与地址 127.0.0.1 和 ::1 是有差异的。当在应用程序的客户端连接器接口中使用localhost作为目标时，MySQL 的 API 使用 Unix 域套接字连接到数据库，而通过环回接口的 TCP 连接需要直接使用显式地址。

在 Android Studio 開發中所使用的模擬器，其網路環境的本地主機名稱localhost地址通常為 10.0.2.2，但其實它本身就是 127.0.0.1 地址。

使用 127.0.0.0/8 网络地址时，一个值得注意的例外是，它们用在多协议标签交换（MPLS）跟踪路由错误检测中，它们的不可路由属性提供了一种方便的方法来避免向最终用户传送错误数据包。

參見
 专用网络
 保留IP地址

參考資料

Category:電腦網路
Category:互联网结构
Category:IP地址