127.0.0.1和0.0.0.0有什么区别?
我们大多数人都听说过“ 127.0.0.1和0.0.0.0”,但可能没有多加考虑,但是如果两者似乎都指向同一位置,那么两者之间的实际区别是什么?今天的“超级用户问答”帖子有助于为困惑的读者弄清一切。
今天的问答环节由SuperUser提供,这是Stack Exchange的一个分支,Stack Exchange是由社区驱动的Q&A网站分组。
图片由Kate Gardiner(Flickr)提供。
问题
超级用户读者Sagnik Sarkar想知道127.0.0.1和0.0.0.0之间的区别是:
我了解127.0.0.1指向 本地主机 而且0.0.0.0也一样(如果我错了,请纠正我)。那么,127.0.0.1和0.0.0.0有什么区别?
127.0.0.1和0.0.0.0有什么区别?
答案
超级用户贡献者DavidPostill为我们提供了答案:
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连接。
对于使用:: 1的含义支持IPv6寻址的计算机,定义了相同的约定。最常见的做法是使用地址127.0.0.1建立连接。但是,使用127…*范围内的任何IP地址都将以相同或相似的方式起作用。环回结构使具有联网能力的计算机或设备能够验证或建立计算机上的IP堆栈。
来源: 127.0.0.1 –它的用途是什么,为什么重要?
特殊地址
为A类网络编号127分配了 回送 功能,即由更高级别的协议发送到网络127地址的数据报应在主机内部循环。没有数据报 发送 到网络127的地址应该出现在任何地方的任何网络上。
来源: 网络编号
如果是整个A类,则最后三个八位位组的其他任意值的意义是什么?
回送范围的目的是测试主机上的TCP / IP协议实现。由于较低的层是短路的,因此发送到环回地址可以有效地测试较高的层(IP和更高层),而不会在较低的层上出现问题。 127.0.0.1是最常用于测试目的的地址。
来源: IP保留,回送和专用地址
有关更多信息,请参见 询问Ubuntu 问题:什么是环回设备,如何使用?
什么是IP地址0.0.0.0?
0.0.0.0是有效的地址语法。因此,只要期望使用传统的点分十进制表示法的IP地址,它就应解析为有效。一旦解析并转换为可行的数字形式,则其值确定接下来将发生什么。
全零值确实具有特殊含义。就是这样 有效的,但其含义可能不适用于特定情况(因此被视为无效)。基本上是“没有特定地址”的占位符。对于诸如网络连接的地址绑定之类的事情,其结果可能是为该连接分配了适当的接口地址。如果使用它来配置接口,则可以从接口中删除地址。取决于使用的上下文来确定“没有特定地址”的实际作用。
在路由条目的上下文中,它通常表示默认路由。这是由于更多的地址掩码(选择要比较的位)而导致的。掩码0.0.0.0不会选择任何位,因此比较将始终成功。因此,当配置了这样的路由时,总是有地方可以发送数据包(如果配置了有效的目的地)。
在某些情况下,仅“ 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主机。在指定默认路由时以这种方式使用它。
- 一种明确指定目标不可用的方法。 来源: 127.0.0.1 –它的用途是什么,为什么重要?
- 一种指定方式 根本没有任何IPv4地址。在配置服务器时(即在绑定侦听套接字时)以这种方式使用它。 TCP程序员将其称为INADDR_ANY。 [bind(2)绑定到地址,而不是接口。]
在IPv6中,全零地址写为 ::
来源: 0.0.0.0 [Wikipedia]
DHCP发现/请求
客户端第一次启动时,据说是在 初始化状态,并通过用户数据报协议(UDP)端口67(BootP服务器)在其本地物理子网上发送DHCPDISCOVER消息。由于客户端无法知道其所属的子网,因此DHCPDISCOVER是所有广播的子网(目标IP地址为255.255.255.255),源IP地址为0.0.0.0。由于客户端没有配置的IP地址,因此源IP地址为0.0.0.0。
如果此本地子网上存在DHCP服务器,并且该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交换机或企业网络中的DHCP并对其进行故障排除
默认路线
本文档说明了如何配置默认路由或不得已的网关。这些IP命令用于:
- ip default-gateway
- ip默认网络
- IP路由0.0.0.0 0.0.0.0
IP路由0.0.0.0 0.0.0.0
创建到网络0.0.0.0 0.0.0.0的静态路由是在路由器上设置万不得已的网关的另一种方法。与 ip默认网络 命令,使用到0.0.0.0的静态路由不依赖于任何路由协议。但是,必须在路由器上启用IP路由。
笔记: IGRP无法理解通往0.0.0.0的路由。因此,它无法传播使用 IP路由0.0.0.0 0.0.0.0 命令。使用 ip默认网络 使IGRP传播默认路由的命令。
来源: 使用IP命令配置不得已的网关
有什么要补充的解释吗?在评论中听起来不错。是否想从其他精通Stack Exchange的用户那里获得更多答案?在此处查看完整的讨论线程。