在网络通信中,localhost这个主机名指向了用于访问其的当前计算机。这个名称专门保留用于环回 purposes。它使得我们能够访问在主机上运行的网络服务,而无需依赖实际的本地网络硬体。透过环回网络介面,我们可以轻松测试和运行服务,无论是在没有任何物理网路介面的情况下还是想让服务专供本机使用。
例如,通过网址 http://localhost,我们可以访问本地安装的网站,这使得开发者能在无任何外部互联网干扰的情况下进行测试。
环回机制可以让用户在本地运行网络服务,这种情况下不需要物理网络介面或不必公开服务于任何可能连接的网络。根据IPv4网络标准,整个地址块127.0.0.0/8被保留用于环回目的。这意味着发送到这些地址的任何数据包都会被循环回来。其中,127.0.0.1是IPv4环回流量的标准地址,其余地址不是所有操作系统都支持,但可用以在主机上设置多个伺服器应用程序,所有这些应用程序都可在相同的端口号上进行监听。
localhost的名称通常解析为IPv4环回地址127.0.0.1和IPv6环回地址::1。这种解析通常由操作系统的hosts文件中的以下内容配置:
127.0.0.1 localhost
::1 localhost
此外,这个名称也可以通过域名系统(DNS)伺服器进行解析,但这其中有着特殊的考虑。无论是IPv4还是IPv6地址查询,localhost的名称必须始终解析为各自的环回地址。负责任的名称伺服器在接收到查询时应该适当地解析localhost的请求。
早在1981年,127.0.0.0/8这一块地址获得了“保留”状态,并不被用作一般用途的类A IP网路。 1986年,该区块正式被分配为环回用途,并在1994年、2002年、2010年、以及2013年时确认其作为特殊用IPv4地址的用途。从1995年开始,单个IPv6环回地址::1被定义并且其用途和定义至今未变。
任何发送到环回地址的数据包,其处理是在TCP/IP堆栈的链路层中进行的。这些数据包从不会被传送到任何网络介面控制器(NIC)或硬件设备驱动,亦不会出现在计算系统之外。适用此规则,软件测试与本地服务即便在没有硬件网络介面的情况下也能得以进行。数据包可依据指定的目标进行响应,例如,HTTP服务可根据127.0.0.99:80和127.0.0.100:80作为不同的Web伺服器进行路由。
例如,MySQL数据库区别对待localhost与127.0.0.1和::1的使用。在使用localhost作为应用程序的客户端连接器接口时,MySQL应用程序界面通过Unix域套接字连接数据库,而TCP连接则要求显式使用直接地址。此外,Multiprotocol Label Switching (MPLS) 的traceroute错误检测中也适用于127.0.0.0/8,这一特性可避免将故障数据包发送到最终用户相互作用。
总而言之,localhost无疑是网络开发、测试和运行服务的重要工具。它使开发者能随时随地轻松进行实验,并在安全的环境中开发应用。而在数据包不经过任何实体网路介面情况下进行的所有作业,是否使我们重新思考我们与科技的关系呢?