slot deposit pulsa slot mahjong slot gacor slot gacor slot gacor resmi slot gacor 2025 slot gacor terpercaya slot gacor 2025 slot gacor hari ini slot gacor hari ini slot gacor hari ini
localhost 和 127.0.0.1 有什么区别?
17611538698
webmaster@21cto.com

localhost 和 127.0.0.1 有什么区别?

运维 0 980 2024-03-26 08:55:04

图片

当开发者在本地调试时,经常与localhost这个名字交互,比如只需运行npm run在浏览器中打开他们的网页,地址栏显示类似http://localhost:xxx/index.html.

还有一个ip地址,那就是127.0.0.1,也指的是本地主机。许多人在使用它时并没有考虑两者之间的区别。

考虑到我过去的合作和经验,一些对他们的差异缺乏清晰的了解,我觉得传播一些关于这个主题的知识至关重要。

什么是localhost?


localhost 是一个域名,除了便于记忆之外,与用于访问互联网的域名本质上没有什么不同。


localhost 的范围仅限于本地机器——它的名字很清楚:“本地”指的是本地范围内的东西。


张三和王二麻子都可以在各自的计算机上使用 localhost,访问各自的页面内容,而不会互相干扰。


从域名到Web应用


要真正理解localhost,我们需要讨论用户如何通过域名访问程序,我们以谷歌网站为例。

1. 在浏览器中输入google.com后,首先向DNS查询google.com的IP地址。

什么是IP地址?打个比方,如果有人向你的公司发送包裹,递送单将包括公司的地址、手机号和收件人等详细信息。投递过程依赖于地址进行路由,最终到达收件人。同样,在网络中,域名就像公司名称,IP 地址就像物理地址。在网络世界中,IP 地址对于定位相应的程序至关重要。

而DNS( domain name service)的作用就如同一个公司目录,列出每个域名对应的 IP 地址。如果域名未注册,所以其 IP 地址无法找到,而另一些域名可能有多个 IP 地址,DNS 根据某些规则自动返回一个 IP 地址。当你成功购买域名后,域名服务提供商通常会提供 DNS 解析服务,在 DNS 中注册域名及其对应的 IP 地址。

IP地址从哪里来?每台在线计算机都有一个IP地址,但个人计算机IP通常不适合公共访问,类似于公司内部位置,只有内部人员清楚,外部人员则不清晰。对于 Google 网站是提供的外部服务,需要公共 IP 地址,通常由互联网服务提供商提供。例如,如果你的公司使用中国联通访问互联网,你可以让他们为公司的网关服务器分配一个公共IP地址。网关服务器就像一个交换机,处理所有内部网络通信,并设置转发规则以将传入请求路由到适当的本地服务器。

2.有了IP地址,浏览器向该地址发送请求,由操作系统将请求封装成IP数据包,然后通过网络进行传输。网络的路由协议基于提供的 IP 地址并通过各种路由器,最终到达绑定该 IP 的计算机。

3. 一台计算机上可能部署多个Web应用程序。哪一个应该收到请求?这就是端口发挥作用的地方。每个Web应用程序都可以绑定到一个或多个端口,系统可以防止重叠。在请求中指定端口会将其路由到正确的应用程序。

但是,当访问Google.com时,我们并没有指定端口。这是因为在未指定端口时,将使用默认端口(HTTP 为 80,HTTPS 为 443)。启动Web程序时必须绑定端口,尽管某些框架会自动选择计算机上未使用的端口。

图片


localhost 和 127.0.0.1 有什么区别?


有了上面的基础知识,我们现在就很容易理解这个问题了。


如前所述,localhost 是一个域名。


127.0.0.1 是什么?它是一个IP地址,也就是当前机器的本地IP地址,只限在本机使用。计算机无需连接互联网即可使用该IP地址,方便开发和测试网络程序。我们调试的程序都是默认绑定到这个IP地址的。


值得我们注意的是,常见的IP地址的格式为XXXX,以点分为四段。实际上,它是一个 32 位二进制数,分为四个 8 位段,然后转换为十进制数进行显示。


那么 localhost 如何解析为 127.0.0.1 呢?它还通过 DNS 吗?不需要。每台计算机都可以使用 localhost 和 127.0.0.1,无需 DNS 解析。


该解析由每台计算机单独处理。每台计算机上都有一个主机文件,文件名为hosts,其中包含一些“硬编码”的 DNS 解析规则,包括将 localhost 解析为 127.0.0.1 的规则,这已经是一种业界约定。


如果不想使用 localhost,也没关系。你可以将其命名为任何名称,例如 wodehost,并将其解析到 127.0.0.1。


甚至可以使用 google.com,但它仅供自己使用,不会影响外部其他任何人。


域名层次结构


localhost 与我们通常使用的域名不太像,例如www.21cto.com、juejin.cn、 google.com 或 csdn.net 。www、cn、com 和 net 是什么意思?为什么 localhost 不需要它们?


其实网络域名是有层次的,分为顶级域名(TLD)、二级域名(SLD)和三级域名(3LD)……


顶级域名(TLD):域名系统中的最高级别,位于域名的最右侧,通常由几个字母组成。TLD分为通用TLD和国家代码TLD,常见的通用通用TLD包括代表商业企业的.com、代表网络提供商的.net、代表非营利组织的.org,而国家代码TLD则代表特定的国家或地区,例如.cn 代表中国,.uk 代表英国。


二级域名 (SLD):低于 TLD 的级别,由注册人选择和注册,可以是个性化且易于记忆的名称。例如,21cto.cn是二级域名,通常由中国用户申请。为了简洁和便于记忆,.com、.net 或 .cn 等顶级域名的重要性往往被忽视。

三级域(3LD):在二级域之下,通常用于指向特定的服务器或子网。在 blog.example.com 中,“blog”是一个三级域名。“www”是最常见的三级域名,代表网站的主页或主站点,但这只是一种约定,现在许多网站建议通过二级域名直接访问。

根据这个定义,我们可以将 localhost 视为顶级域名,尽管是保留域,仅用于访问当前计算机。

多个网站共享一个IP和端口


如前所述,不同的Web程序不能使用相同的端口,但有一些方法可以规避这一点。


个人博客流行时,许多人更愿意购买虚拟主机并部署开源博客平台来表达自己。了赚钱,虚拟主机提供商会在一台计算机上分配许多虚拟主机,允许每个人使用默认端口 80 访问他们的域名,这没有任何问题。


为什么这样能够实现


如果你有使用 Nginx、Apache 或 IIS 等 Web 服务器的经验,可能会熟悉主机标头的概念。主机头本质上是一个域名。通过设置主机头,我们的程序可以共享一个网络端口。


当在 Nginx 等 Web 服务器中部署网站时,我们将其配置为在主机标头中包含域名。


启动后,Nginx 和其他 Web 服务器会为自己占用端口 80。

当网站请求到达Nginx的80端口时,它会根据请求中的域名识别配置了相应主机头的相应Web应用程序或网站。

然后,Nginx 将请求转发到该Web程序,并在必要时启动它。

图片


私有IP地址


除了127.0.0.1之外,其实还有很多私有IP地址,例如常见的192.168.xx、10.x.x.x这些私有IP地址大多保留在机构或家庭的局域网(LAN)内使用,因为为每台计算机分配唯一的IP地址是不可行的,只要局域网内不发生冲突,这些地址就可以自由使用。的公司可以使用192.168.1.1,我的公司也可以使用192.168.1.1,但是如果你想访问我的公司,你还是需要通过公共IP地址。


常用的IPv4私有IP地址范围分为如下三类:

  • A 类:从 10.0.0.0 到 10.255.255.255

  • B 类:从 172.16.0.0 到 172.31.255.255

  • C 类:从 192.168.0.0 到 192.168.255.255。

这些私有 IP 地址仅供内部网络使用,不能在公共互联网上使用。除了上面提到的三个私有IPv4地址范围外,还有一些保留的IPv4地址范围:

  • 127.0.0.0到127.255.255.255地址范围用于回环测试,其中包括问题中提到的127.0.0.1地址。你还可以为自己分配一个 IP 地址,例如 127.0.0.2,其功能与 127.0.0.1 相同。

  • 169.254.0.0 到 169.254.255.255 地址范围亦用于本地网络。这种情况比较少见;如果你的计算机无法连接到 LAN,可能会看到此 IP 地址,该地址是临时指定 LAN 局域网地址的。

这些地址范围也不能在公共互联网上使用。

还有一些不太常见的专用 IPv4 地址范围。IP 地址范围的完整定义可以在这里找到:www.iana.org/assignments...

IPv6


各位可能还听说过 IPv6,它的推出是解决 IPv4 地址空间不足,可用地址数据太少IPv6理论上可以为地球上的每一粒沙子分配一个IP地址。

尽管人们都谈论了很多年,IPv4 仍然得到更广泛的使用。造成这种情况的原因有很多,这里不再讨论。

IPv6 地址类似于:

XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX

它的长度为 128 位,用冒号分为 8 段,其中每个 X 代表一个十六进制数(范围从 0 到 F)。

IPv6 地址空间明显大于 IPv4。例如,2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b 是有效的 IPv6 地址。

关于 IPv6 的进一步讨论超出了本文的范围,但有兴趣的同学可以进一步探索。

感谢你阅读到最后,如果对你有用,请考虑点赞分享本文,鼓励作者的创作!图片

作者:金宝

评论