localhost 127.0.0.1如何工作?


17

我发现了一些与此相关的文章,但对我来说还不够。我想知道localhost工作原理,为什么在许多不同的机器上都一样?

请问该怎么localhost阻止访问网站时,我们使用它的host文件,以封锁网站?


2
很抱歉,您在问题的第二行让我完全迷失了...您的意思是什么?
Windos

1
@Windos,当您向“ 127.0.0.1 www.blah.com”之类的主机文件添加条目时,它将将该站点重定向到本地主机(无论如何仍用于IE8)
tzup 2011年

Answers:


23

我不会在这里谈论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.com到127.0.0.1。每次尝试联系microsoft.com都将导致失败。

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


在“ dow”中,DNS子系统会将localhost解析为127.0.0.1,而对127.0.0.1的访问量甚至都不会进入接口,网络堆栈会直接循环(这实际上与Unix完全相同,但是没有虚拟接口)作为过程的体现)。
jcrawfordor 2011年

尽管您可以安装Microsoft环回适配器,但事实并非完全相同。
slhck

如今,许多操作系统都支持0.0.0.0,因此可以使用它来阻止站点。避免循环...
Tamara Wijsman 2012年

8

Internet协议(IP)地址属于四个基本类别之一。

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

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

作为人类,我们不太容易记住IP号,但是记住诸如superuser.com,www.google.com之类的名称以及其他类似名称没有问题。当互联网很小(非常小)时,人们与互联网上的其他人共享“主机”文件,因此他们不必记住数字。该主机文件包含一对IP地址和一个或多个主机名。当有人试图通过主机名访问主机时,计算机软件足够了解,可以在主机文件中查找主机。自那时以来,互联网已经发展得如此之快,以至于除了使用旧样式的主机文件之外,我们现在还使用域名系统(DNS)来将名称解析为IP号。大多数计算机都设置为先在主机文件中查找名称,然后在DNS中查找名称(如果失败)。

现在您有了背景,下面是它的工作原理(通常):

当您将此条目添加到主机文件中时,只要您的计算机尝试查找www.foo.com,它都会尝试访问IP地址为127.0.0.1的该站点,因为您告诉它这是www的Internet地址。 foo.com。请记住,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

将主机文件用于此类操作的坏事是,一旦您将一个条目添加到主机文件中,您就承担了使该信息保持最新的责任。如果您没有将条目放置在主机文件中,则计算机将尝试使用DNS查找IP地址,然后使用该IP地址与服务器联系。

这样做的好处是,如果您永远不希望任何人仅通过计算机上的主机名与www.foo.com进行对话,则将条目添加到主机文件中(关键字-可能)可以防止这种情况的发生。如果目标是通过任何方式(不仅仅是通过主机名)防止访问某个特定站点,那么还有其他更好且更可靠的方法可以防止这种情况发生,例如正确使用防火墙。


如今,许多操作系统都支持0.0.0.0,因此可以使用它来阻止站点。避免循环...
Tamara Wijsman 2012年

7

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

也就是说,127.0.0.1被称为“回送”,因为它仅仅是指向您计算机的指针。这是一个保留的IP地址,根据定义也可以写为localhost。

这样做的目的是通过向外发送信号,然后将其循环传回,以便与您的计算机进行通话,以便同一台计算机也可以读取该信号。

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


5

我在《 TCP / IP指南》中发现了一个演示文稿,使我印象深刻:

通常,当TCP / IP应用程序要发送信息时,该信息沿着协议层向下传播到IP,在IP中将封装在IP数据报中。然后,该数据报向下传递到设备物理网络的数据链路层,以便在到达IP目标的途中传输到下一跳。

但是,为回送功能预留了一个特殊的地址范围。这是127.0.0.0到127.255.255.255的范围。主机发送到127. x的 IP数据报。Xx回送地址没有向下传递到数据链路层进行传输。相反,它们在IP级别“环回”到源设备。从本质上讲,这代表了常规协议栈的“短路”。数据由设备的第三层IP实现发送,然后立即被其接收。


此外,罗格斯大学开设网络课程,其中包括正常的主机间通信示例

正常的主机间通信

这一个回送数据的流:

                                                    回送数据流


4

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


如今,许多操作系统都支持0.0.0.0,因此可以使用它来阻止站点。避免循环...
Tamara Wijsman 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.