localhost的定义和作用

localhost是什么

在计算机网络中,localhost是一种主机名,它指代当前用于访问它的计算机。localhost这个名字专门用于回环目的[1]。通过回环接口访问主机上的网络服务,可以绕过任何本地网络接口硬件。

localhost

localhost通常解析为以下两个回环地址:

  • IPv4:127.0.0.1
  • IPv6::1

localhost的作用

本地回环机制可以用于在主机上运行网络服务,而不需要物理网络接口,也不会使服务可通过计算机连接的网络访问。例如,可以通过 http://localhost 访问本地安装的网站,显示其主页。

回环地址范围

  • IPv4网络标准保留了整个127.0.0.0/8地址块(超过1600万个地址)用于回环目的[2]。这意味着发送到任何这些地址的数据包都会被环回。
  • 在IPv6寻址体系中[3],只分配了一个地址用于回环::1。该标准禁止将该地址分配给任何物理接口,也禁止在发送到远程主机的数据包中将其用作源地址或目标地址。

localhost的域名解析

localhost通常由以下主机文件中的行解析:

127.0.0.1 localhost

::1 localhost

它也可以由域名系统(DNS)服务器解析,但有一些特殊的考虑事项[1]:

  • 对localhost的IPv4或IPv6地址查询必须始终解析为各自的回环地址。
  • 应用程序可以自行解析该名称以获取回环地址,或者将其传递给本地名称解析机制。
  • 名称解析器在收到localhost的地址查询时,应返回相应的回环地址,对于任何其他请求的记录类型,应返回否定响应。localhost的查询不应发送到缓存名称服务器。

数据包处理

发送到回环地址的任何数据包都是在TCP/IP堆栈的链路层实现的。这些数据包永远不会传递给任何网络接口控制器(NIC)或硬件设备驱动程序,并且不得出现在计算系统之外或由任何路由器路由。

这允许软件测试和本地服务,即使没有任何硬件网络接口。

循环回的数据包与通过TCP/IP堆栈传输的任何其他数据包的唯一区别在于它们所针对的特殊IP地址。因此,最终收到它们的服务将根据指定的目标作出反应。例如,HTTP服务可以将 addressed 到 127.0.0.99:80 和 127.0.0.100:80 的数据包路由到不同的Web服务器,或者路由到返回不同网页的单个服务器。为了简化这种测试,可以配置主机文件以为每个地址提供适当的名称。

必须丢弃在非回环接口上收到的、源地址或目标地址为回环地址的数据包。这些数据包有时称为火星数据包[13]。与任何其他无效数据包一样,它们可能具有恶意性,任何它们可能导致的问题都可以通过应用无效过滤来避免。

特殊情况

MySQL数据库发行版在使用主机名localhost和使用地址127.0.0.1和::1之间进行了区分[14]。在应用程序的客户端连接器接口中将localhost用作目标时,MySQL应用程序编程接口使用Unix域套接字连接到数据库,而通过回环接口的TCP连接需要直接使用显式地址。

总的来说,localhost在本地回环和测试网络服务等方面起着非常重要的作用。正确理解和配置localhost可以提高开发效率,避免一些问题。

引用来源

  • S. Cheshire; M. Krochmal (February 2013). Special-Use Domain Names. IETF. doi:10.17487/RFC6761. ISSN 2070-1721. RFC 6761. Proposed Standard. Updates RFC 1918 and 2606.
  • M. Cotton; L. Vegoda; B. Haberman (April 2013). R. Bonica (ed.). Special-Purpose IP Address Registries. IETF. doi:10.17487/RFC6890. ISSN 2070-1721. BCP 153. RFC 6890. Best Common Practice. Obsoletes RFC 4773, 5156, 5735 and 5736. Updated by RFC 8190.
  • R. Hinden; S. Deering (February 2006). IP Version 6 Addressing Architecture. Network Working Group.
  • doi:10.17487/RFC4291. RFC 4291. Draft Standard. Obsoletes RFC 3513. Updated by RFC 5952, 6052, 7136, 7346, 7371 and 8064.
  • D. Eastlake; A. Panitz (June 1999). Reserved Top Level DNS Names. Network Working Group. doi:10.17487/RFC2606. BCP 32. RFC 2606. Best Common Practice. Updated by RFC 6761.
  • J. Postel (September 1981). ASSIGNED NUMBERS. Network Working Group. doi:10.17487/RFC0790. RFC 790. Obsolete. Obsoleted by RFC 820. Obsoletes RFC 776, 770, 762, 758, 755, 750, 739, 604, 503, 433 and 349.Obsoletes IENs: 127, 117, 93.
    J. Reynolds; J. Postel (November 1986). ASSIGNED NUMBERS. Network Working Group. doi:10.17487/RFC0990. RFC 990. Obsolete. Obsoleted by RFC 1010. Obsoletes RFC 960. Obsoletes IENs 127, 117, and 93.
localhost的定义和作用

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注