我知道127.0.0.1指向localhost,所以0.0.0.0也指向(如果我错了,请纠正我)。那么127.0.0.1和0.0.0.0有什么区别?

评论

您可能对此Chrome Bug跟踪器讨论中的有关如何处理地址输入中的0.0.0.0感兴趣。

在大多数服务器配置中,0.0.0.0表示监听所有地址!这将使您的服务器在Internet上可用。如果您在没有任何安全性的情况下对某些本地服务器执行此操作(那只是在本地主机上监听,对吗?),这很不好。别那样!

从字面上回答您的问题,区别是2130706433。

@桅杆噢,您是设置完全不安全的系统的人之一,因为防火墙可以修复所有问题?通常,可以使用shodan.io找到该系统:3这种心态的下一个层次是“我们完全可以使用5年以上的WordPress安装,我们有了WAF”。我不建议任何人走这条路!

@Shaz我想表达您的意见,但由于目前是42岁,所以我无法让自己去做...

#1 楼

127.0.0.1和0.0.0.0有什么区别?


127.0.0.1是回送地址(也称为localhost)。

0.0.0.0是不可路由的用于指定无效,未知或不适用目标(没有特定地址占位符)的元地址。


在路由条目的上下文中,它通常表示默认路由。

在服务器上下文中,0.0.0.0表示“本地计算机上的所有IPv4地址”。如果主机有两个IP地址192.168.1.1和10.1.2.1,并且主机上运行的服务器侦听0.0.0.0,则这两个IP都可以访问它。




什么是IP地址127.0.0.1?



127.0.0.1是回送Internet协议(IP)地址,也称为“本地主机”。该地址用于建立与最终用户所使用的同一台计算机或计算机的IP连接。

为支持IPv6寻址的计算机定义了相同的约定。使用:: 1的含义。最常见的做法是使用地址127.0.0.1建立连接。但是,
使用127 ... *范围内的任何IP地址将以相同或相似的方式起作用。环回结构使计算机或
设备能够联网,以验证或建立计算机上的IP堆栈。


来源:127.0.0.1 –它的用途是什么,为什么重要?


特殊地址


A类网络号127被分配了“回送”
/>功能,即由更高级别协议发送到网络127地址的数据报应在主机内部循环。没有
“发送”到网络127地址的数据报应该出现在
任何地方的任何网络上。


来源:网络编号


如果是整个A类,那么后三个八位位组的其他任意值的意义是什么?


回送范围的目的是测试TCP / IP协议在A主办。由于较低的层是短路的,因此发送到回送地址可以有效地测试较高的层(IP或更高),而不会在较低的层出现问题。 127.0.0.1是最常用于测试目的的地址。


源:IP保留,环回和专用地址

有关更多信息,请参见https:// askubuntu.com的问题什么是回送设备,如何使用?以及为什么回送IP地址从127.0.0.1到127.255.255.254 ?。


什么是IP地址0.0.0.0?


“ 0.0 .0.0“是有效的地址语法。因此,只要期望使用传统的点分十进制表示法的IP地址
,它都应解析为有效
。解析并转换为可行的数字形式后,
其值确定下一步将发生什么。

全零值确实具有特殊含义。因此它是“有效的”,但是
的含义在特定情况下可能不合适(因此被视为无效)。它基本上是“没有特定地址”的占位符。对于诸如
网络连接的地址绑定之类的事情,其结果可以是为该连接分配适当的
接口地址。如果使用它来配置接口,则可以从该接口中删除地址。它
取决于使用上下文来确定“没有特定的
地址”的实际作用。

在路由条目的上下文中,它通常表示默认路由。 br />这是由于更多的地址掩码(选择
位进行比较)导致的。掩码“ 0.0.0.0”不会选择任何位,因此compare
将永远成功。因此,当配置了这种路由时,总是会有
包要经过的地方(如果配置了有效的
目的地)。

在某些情况下,仅“ 0”将也可以工作并具有相同的效果。但是
不能保证。 “ 0.0.0.0”格式是表示“没有特定地址”的标准方法(在IPv6中为“ :: 0”或只是“ ::”)。


来源:IP地址0.0.0.0的含义是什么?



在Internet协议版本4中,地址0.0.0.0是非
可路由的元地址,用于指定无效,未知或非
适用的目标。要赋予本来无效的数据特殊的意义,就是带内信令的应用。

在服务器的上下文中,0.0.0.0表示“本地所有IPv4地址”。机”。如果主机有两个IP地址192.168.1.1和10.1.2.1,并且主机上运行的服务器侦听0.0.0.0,则这两个IP都可以访问。

就路由而言,0.0.0.0通常表示默认路由,即通向Internet“其余部分”而不是本地网络中某处的路由。

用途包括:


主机尚未分配地址时声明为自己的地址。例如,当使用DHCP发送初始DHCPDISCOVER
数据包时。
如果通过主机的IP堆栈支持,则通过DHCP的地址请求失败时,主机将为其分配的地址。在现代操作系统中,此用法已被APIPA机制所取代。
一种用于指定“根本没有IPv4主机”的方法。指定默认路由时,将以这种方式使用它。
一种明确指定目标不可用的方式。1

一种用于指定“所有IPv4地址”的方式。在配置服务器时(即在绑定侦听套接字时)以这种方式使用它。
TCP程序员将其称为INADDR_ANY。 (bind(2)绑定到
地址,而不是接口。)

在IPv6中,全零地址写为“ ::”。


来源:0.0.0.0


DHCP发现/请求


客户端第一次启动时,它说处于
初始化状态,并通过用户数据报协议(UDP)端口67(BootP
服务器)在其本地
物理子网上发送DHCPDISCOVER消息。由于客户端无法知道客户端所属的子网,因此DHCPDISCOVER是所有子网的广播(目标IP地址为255.255.255.255),源IP地址为0.0.0.0。源
的IP地址是0.0.0.0,因为客户端没有配置的
IP地址。如果此本地子网上存在DHCP服务器
,并且配置正确且运行正常,则DHCP服务器将听到
广播并以DHCPOFFER消息进行响应。如果本地子网上不存在DHCP服务器
,则此本地子网上必须有DHCP / BootP中继
代理,才能将DHCPDISCOVER消息转发到包含DHCP服务器的子网上。 。

此中继代理可以是专用主机(例如,
Microsoft Windows Server),也可以是路由器(例如,配置有接口级IP帮助器的Cisco路由器
)。语句)。


...


客户端收到DHCPOFFER后,它将以DHCPREQUEST消息响应,指示其打算接受DHCPOFFER中的参数,并进入请求状态。客户端可能会收到多条DHCPOFFER消息,每个收到原始DHCPDISCOVER消息的DHCP服务器都会收到一条消息。客户端选择一个DHCPOFFER并仅响应该DHCP服务器,从而隐式拒绝所有其他DHCPOFFER消息。客户端通过使用DHCP服务器的IP地址填充“服务器标识符”选项字段来标识选定的服务器。 DHCPREQUEST也是广播,因此所有发送DHCPOFFER的DHCP服务器都将看到DHCPREQUEST,并且每个服务器都将知道其DHCPOFFER是被接受还是被拒绝。客户端所需的任何其他配置选项将包含在DHCPREQUEST消息的选项字段中。即使为客户端提供了IP地址,它也会发送带有源IP地址0.0.0.0的DHCPREQUEST消息。目前,客户端尚未收到确认可以使用IP地址的验证。


...



客户端-客户端获取DHCP地址的客户端与服务器的对话,客户端和DHCP服务器位于同一子网上




源:了解和排除Catalyst Switch或企业网络中的DHCP故障


默认路由


本文档介绍了如何配置默认路由或
不得已的网关。使用这些IP命令:


ip default-gateway
ip default-network
和ip route 0.0.0.0 0.0.0.0

> ip route 0.0.0.0 0.0.0.0

创建到网络0.0.0.0的静态路由0.0.0.0是设置路由器上最后使用的网关的另一种方法。与ip
default-network命令一样,使用到0.0.0.0的静态路由并不依赖于任何路由协议。但是,ip路由必须为
在路由器上启用。

注意:IGRP无法理解到0.0.0.0的路由。因此,它
无法传播使用ip route 0.0.0.0
0.0.0.0命令创建的默认路由。使用ip default-network命令使IGRP传播默认路由。


源:使用IP命令配置万不得已的网关

评论


在服务器的上下文中,0.0.0.0表示“本地计算机上的所有IPv4地址”。如果主机有两个IP地址192.168.1.1和10.1.2.1,并且主机上运行的服务器侦听0.0.0.0,则这两个IP都可以访问。 -为我做到了

–拉斐尔·埃因(Rafael Eyng)
19年4月9日在14:23

您关于0.0.0.0的评论是相互矛盾的。

–user207421
20-10-28在9:09

#2 楼

它们是不相同的。
127.0.0.1是127/8网络的一部分,该网络保留并指向同一台计算机。
0.0.0.0是一个特殊的IP地址,根据上下文的不同,它的含义也不同。 >
在Internet协议版本4中,地址0.0.0.0是
不可路由的元地址,用于指定无效,未知或
不适用的目标。要给否则无效的数据赋予特殊含义,是带内信令的一种应用。

当您查看netstat和请参阅本地地址侦听为0.0.0.0,但这是使用0.0.0.0的另一种方式。

在服务器的上下文中,0.0.0.0表示“
本地计算机”。如果主机有两个IP地址192.168.1.1和
10.1.2.1,并且主机上运行的服务器侦听0.0.0.0,则在这两个IP上都可以访问它。
的路由,0.0.0.0通常表示默认路由,
即导致“其余”互联网而不是本地网络中某个位置的路由。

https://en.wikipedia.org/wiki/0.0.0.0

评论


0.0.0.0有时也可以指示广播,这意味着对网络上的所有计算机。

–詹姆斯·默兹(James Mertz)
15年8月3日在15:19

@KronoS我以为广播是255.255.255.255之类的东西(或者更实际的是本地网络是192.168.1.255之类的东西)

–尼克T
15年8月3日在16:51

@NickT是的,您是正确的:IP广播地址255.255.255.255存在特殊定义。它是零网络或0.0.0.0的广播地址,在Internet协议标准中代表该网络,即本地网络。到此地址的传输受到定义的限制,因为它永远不会由将本地网络连接到其他网络的路由器转发。

–詹姆斯·默兹(James Mertz)
15年8月3日在16:58

@KronoS您使广播地址与环回混淆。环回是0.0.0.0,如上所述,它监听所有本地地址。广播(以一种简单的方式)是要“广播”到该网络中所有地址的255个网络。

–混乱
15年8月3日在21:13

这是不完整的-许多操作系统实际上允许您连接到0.0.0.0,然后将其表现为回送地址。

–user1686
15年8月4日在7:48

#3 楼

127.0.0.1是本地计算机的地址之一,但是任何地址127.xyz也是计算机的另一个地址(称为“回送地址”),除了127.0.0.0(回送子网)和127.255.255.255(广播的地址) loopback子网)。

127.xyz的意思是“这里”。

0.0.0.0完全不同:0.0.0.0不是任何东西的地址,是小丑,如shell中的*

您无法将数据发送到0.0.0.0或主动打开与0.0.0.0的TCP连接,因为那里什么也没有。 0.0.0.0甚至不是无法到达或不可路由的地址,在需要地址的情况下它毫无意义。

在可以选择地址的情况下,可以使用小丑0.0.0.0提供,意味着我不在乎。

例如,当您主动打开与某个TCP服务器的TCP连接(TCP服务器是通过被动TCP打开创建的)时,您需要指定TCP服务器的地址(IP和端口号) ),您可以选择选择本地地址。 (由于您的套接字不是服务器套接字,因此没有人可以打开它的连接,并且连接一侧的地址通常不是很重要。)

bind系统调用用于选择TCP套接字的本地地址。传递给bind的数据实际上是一组约束:IP地址约束,TCP端口约束。常用的文本表示法是IP:port。 0.0.0.0:0表示可以接受任何IP和任何端口,这是空约束。 0.0.0.0:20表示本地端口必须为20,任何IP都是可接受的(在活动模式下,FTP服务器使用0.0.0.0:20进行数据连接)。

TCP / IP子系统将如果未选择,则使用路由表根据目标地址选择TCP连接一侧的地址:本地TCP套接字地址将是与与目标地址相对应的路由关联的本地地址。 br />
我之前曾提到外壳“元字符” *,但是结合元字符与*foo*之类的字符(任何包含“ foo”的文件名)的功能在IP地址约束下不存在,它全有还是全无:要么单个IP地址被认为是可接受的或所有地址都是可接受的。逻辑并不要求必须采用这种方式。您可以使用更丰富的约束语言来扩展接口。

精度:

句子127.x.y.z的意思是“这里”并不意味着所有这些地址都是相同的。它们分别代表本地“计算机”内部,本地IP堆栈内部的不同“位置”(套接字地址)。

备注:具有虚拟化功能的计算机(仿真,硬件虚拟化,半虚拟化,无论如何)想起...)具有多个独立的IP堆栈。

评论


当我在浏览器中输入以127(例如127.16.23.42)开头的随机地址时,它没有连接到本地主机。

–谁知道
15年8月3日在21:02

@whoKnows当然。本地主机是127.0.0.1,不是127.16.23.42。

–好奇
15年8月3日在21:47

我懂了。所以127.0.0.1表示本地主机,但是127.x.y.z可能表示本地计算机(如果以这种方式设置)?

–谁知道
15年8月3日,21:56

@whoKnows编号:127.x.y.z属于任何x y z的计算机。 “ localhost”只是127.0.0.1的名称,因此请忘记“ localhost”。使用netstat和相关程序的-n或-d标志显示数字地址,而不是名称。 127.0.0.1和127.16.23.42是不同的IP地址。因此127.0.0.1:80和127.16.23.42:80代表不同的TCP端点地址,一个地址处的Web服务器无法在另一个地址处找到。

–好奇
2015年8月3日23:45

#4 楼

通常,您使用bind-address 0.0.0.0允许来自外部网络和源的连接。许多服务器(例如MySQL)通常绑定到127.0.0.1,仅允许回送连接,要求管理员将其更改为0.0.0.0以启用外部连接。