127.0.0.1是一个非常有名的IP地址——你甚至可能在T恤上见过它。但它到底是什么,为什么这么有名?
互联网上的保留地址
互联网由数十亿台设备组成。它们使用IP地址相互识别和通信,IP地址在概念上类似于电话号码。互联网协议版本4(IPv4)已经使用了几十年,允许近43亿个这样的地址。IPv4的继任者IPv6拥有超过10^38个可用地址——足以满足地球上的每一粒沙子、可观测宇宙中的每一颗恒星,以及每个人身体中的每一个原子的需要,每个人都有一个唯一的IP地址,还有很多剩余地址。
尽管现在有大量可用的IP地址,但为特定目的保留一些地址,甚至是地址范围(通常称为块)是很方便的,以防止编程冲突。为特定目的保留地址可以很容易地为不同的IP地址建立一般规则和行为。与大多数互联网标准一样,保留IP地址是通过名为征求意见或RFC的文件建立的。
事实证明,让一台计算机与自己对话而不是与另一台计算机对话通常是有用的。为此,你需要一个具有一些独特属性的特殊保留IP地址——127.0.0.1。
什么是127.0.0.1
127.0.0.1是主机环回地址。主机环回指的是,地址为127.0.0.1的数据包不应离开计算机(主机)发送,而不是发送到本地网络或internet,它只是在自身上“环回”,发送数据包的计算机成为收件人。 RFC1122明确指出“内部主机环回地址。这种形式的地址不得出现在主机之外。” 因此,拾取定向到127.0.0.1的流量的路由器应该立即丢弃数据包。这可确保没有专门用于主机上的流量进入Internet。 虽然它是最常见和最著名的,但127.0.0.1只是一个大块中的一个地址,127.0.0.0–127.255.255.255,在RFC6890中保留用于环回目的。 IPv6也有一个环回地址。完全写出它是0000:0000:0000:0000:0000:0000:0000:0001,但为了方便起见,它通常被截断为::1。
如何使用127.0.0.1
那么为什么要让数据包循环回同一台计算机呢? 有一些常见的用例。 第一个是测试目的——如果你最终打算通过LAN或Internet托管服务器或网站,你可以在同一台计算机上运行服务器和客户端,以确保所有基础首先正常工作。例如,如果你在本地计算机上托管了一个专用的Minecraft服务器,你可以通过输入127.0.0.1作为IP地址来连接到它。这同样适用于几乎所有本地托管的服务器。消除与网络相关的复杂性,例如端口配置和延迟问题,可以提高故障排除过程的效率。
你也可能只想在本地设备上运行只有你可以访问的服务。这在自托管社区中相对常见——将服务不必要地暴露给外部设备和威胁是没有意义的。 hosts文件可用于指定与给定域名对应的IP地址。从功能上讲,这使你可以在hosts文件中使用127.0.0.1来阻止Web流量。例如,如果你告诉你的计算机在127.0.0.1上查找facebook.com,它将无法连接,从而有效地阻止它,除非你记住了facebook.com的实际IP。
什么是本地主机
在大多数情况下,localhost只是默认情况下引用127.0.0.1的简写。但它可以更改——如果你编辑你的主机文件,你可以让localhost引用任何127.XXX保留地址。你还可以创建其他localhost,例如localhost2,例如可以引用127.0.0.2。
随着IPv6被更快地采用,可能越来越多的设备将使用::1作为默认环回地址。但是,127.0.0.1已经使用了几十年,并且在可预见的未来仍将继续使用。