localhost 127.0.0.1 如何工作?

localhost 127.0.0.1 如何工作?

我找到了一些与此相关的文章,但对我来说还不够。我想知道它是如何localhost工作的,为什么在许多不同的机器上它是一样的?

当我们在文件中使用它来阻止网站时,如何localhost阻止对网站的访问host

答案1

我不会在这里谈论 Windows 的情况,因为它有点不同,但我们可以说:在每个*类 Unix 操作系统中,您都有两个网络设备:

  • 环回设备
  • 以太网设备

第一个是纯粹的“虚拟”。它就像一个你看不见的以太网插头。第二个与你电脑里的以太网插头有关。

在此处输入图片描述

环回接口起什么作用?您发送到环回的所有流量都将返回。

就像您的以太网设备有一个 IP 地址(例如 192.168.1.20)一样,环回设备也会有一个 IP 地址,即 127.0.0.1。为了方便起见,您也可以通过它来访问它localhost

如果你看一下典型的 Unix/etc/hosts文件,你会看到 127.0.0.1 被映射到“localhost”。因此,无论何时输入“localhost”,你的计算机都会知道调用 127.0.0.1。

这就是你可以“阻止”应用程序的原因。假设你不想让你的计算机向 Microsoft 发送数据。那么你可以简单地将每个请求重定向到microsoft.com127.0.0.1。每次尝试联系microsoft.com都会导致失败。

* 每个实际上具有硬件以太网端口的系统

答案2

互联网协议 (IP) 地址分为四个基本类别之一。

  1. 用于与世界各地的其他计算机通信的地址,
  2. 用于与特定公司或网络内的计算机进行通信的地址,
  3. 用于在网络上的计算机之间广播信息的地址,
  4. 用于允许计算机与自身对话的地址。

根据协议,127.0.0.1 是属于最后一个类别的地址之一。

作为人类,我们往往不太记得 IP 号码,但我们可以毫无问题地记住 superuser.com、www.google.com 和其他类似名称。当互联网规模很小(非常小)时,人类会与互联网上的其他人共享一个“hosts”文件,这样他们就不必记住数字。该 hosts 文件包含 IP 地址和一个或多个主机名的对。当有人尝试通过其名称访问主机时,计算机软件知道足够的信息去 hosts 文件中查找它。从那时起,互联网发展迅速,除了使用旧式 hosts 文件外,我们现在还使用域名系统 (DNS) 将名称解析为 IP 号码。大多数计算机都设置为首先在 hosts 文件中查找名称,如果查找失败,则在 DNS 中查找。

现在您已经了解了背景知识,下面是它的工作原理(通常):

当您将此条目添加到 hosts 文件中时,每当您的计算机尝试查找 www.foo.com 时,它都会尝试通过 IP 地址 127.0.0.1 访问该网站,因为您告诉它这是 www.foo.com 的 Internet 地址。请记住,127.0.0.1 将允许计算机与自身通信,因此尝试在浏览器中转到 127.0.0.1 将尝试联系您计算机上的 Web 服务器。如果您输入的是 2.3.4.5 而不是 127.0.0.1,则在打开 www.foo.com 时,它会尝试联系地址为 2.3.4.5 的计算机。

127.0.0.1 localhost
127.0.0.1 www.foo.com
127.0.0.1 foo.com

使用 hosts 文件进行此类操作的坏处是,一旦您在 hosts 文件中添加条目,您就有责任保持该信息为最新。如果您没有将该条目放入 hosts 文件中,您的计算机将尝试使用 DNS 查找 IP 地址,然后使用该 IP 地址联系服务器。

它的好处是,如果您不想让任何人仅通过您计算机上的主机名与 www.foo.com 通信,则将该条目添加到您的 hosts 文件中可能会(关键字 - 可能)阻止这种情况发生。如果目标是阻止以任何方式(而不仅仅是通过主机名)访问特定站点,还有其他更好、更可靠的方法来防止这种情况发生,例如正确使用防火墙。

答案3

Localhost 或 127.0.0.1 只是您本地计算机的内置“名称”。

也就是说,127.0.0.1 被称为“环回”,因为它只是一个指向你机器的指针。它是一个保留的 IP 地址,根据定义也可以写为 localhost。

这样做的目的是允许一个人通过向外发送信号然后将其环回来与他的计算机对话,以便该信号也可以被同一台计算机读取。

假设您正在您的机器上运行一个服务器 - 要访问它,您必须向服务器发送一个请求(将一个数据包发送到 127.0.0.1),并且您的服务器必须读取它(您的系统将数据包环回到 127.0.0.1 上的本地系统,然后由您的服务器软件读取)。

答案4

对于问题的第二部分,如果您将网站的主机名和地址 127.0.0.1 一起放在 hosts 文件中,这意味着当您在浏览器中输入地址时,它不是使用 DNS 来查找正确的地址,而是首先在 hosts 文件中找到它并将其解析为 localhost,而不是转到网站的地址,而是开始与您的机器对话,从而导致网站无法加载。

相关内容