AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1725375
Accepted
Mojtaba Rezaeian
Mojtaba Rezaeian
Asked: 2022-06-09 04:48:24 +0800 CST2022-06-09 04:48:24 +0800 CST 2022-06-09 04:48:24 +0800 CST

为什么我们在 127.0.0.0 中没有可用的 IP 地址?

  • 772

从理论上讲,IP 地址的每一部分都是一个介于 0 到 255 之间的数字(总共 256 个可用插槽)。

但是为什么0在第 4 部分的任何 IP 地址中都没有使用它们,并且在 IP 地址计算中它们总是从 1 开始呢?

例如:

127.0.0.1 <=== logically this should start from 0 as the first usable IP address.
192.168.0.1 <=== for example even default router IP address is set to 1 rather than to be 0
10.10.0.1
.
.

为什么0插槽总是从最后一部分跳过?

networking ip
  • 6 6 个回答
  • 6465 Views

6 个回答

  • Voted
  1. user1686
    2022-06-09T04:58:08+08:002022-06-09T04:58:08+08:00

    在 IPv4 中,保留子网的第一个地址是出于……不清楚的原因,实际上,但很可能是因为很久以前它曾经是“广播”地址。(后来,最后一个地址变成了标准的广播地址。)

    因此,从技术上讲,现在可能可以使用第一个地址,但大多数现有的网络堆栈仍然将其视为“保留”(有点像整个前“E 级”240.0.0.0/4 空间意外地变得不可用)。

    请注意,它专门是子网的第一个地址,并不总是0地址。这些仅在 /24 子网的情况下匹配。但是例如,/16 子网将.0.0保留,但没有 .1.0保留,或者.47.0- 它们位于 /16 的中间,因此它们是完全有效的主机地址。

    (另一方面,较小的 /27 子网不仅可以开始于.0,也可以开始于.32或.192- 将再次在 /27 中保留,即使它们没有在 /24 中保留。)

    另请注意,这仅适用于广播子网(例如以太网)。此类地址仍可用于点对点链接或单独路由为 /32。

    • 34
  2. penguin359
    2022-06-11T12:16:16+08:002022-06-11T12:16:16+08:00

    在 IPv4 规范中,任何 IPv4 网络中的最低地址都被保留为网络地址,该地址与通常是网络中最高地址的广播地址有不同的用途(尽管如果您正在寻找乐趣,可以进行不同的配置) . 在无类网络和子网掩码出现之前,网络地址的想法更有意义。子网和子网掩码背后的概念是原始规范中不存在的 IPv4 的附加组件。

    更新:它以“.0”结尾并没有什么神奇之处,只是它是子网中的最低地址(可能并不总是 .0)。

    最初,IPv4是有类的,分为5类;A、B、C、D 和 E。A 类网络都是最高有效位为 0 的 IP,或者换句话说,IP 从 0.0.0.0 到 127.255.255.255。高两位为 10 的 IPv4 地址是 B 类地址,对应地址 128.0.0.0 到 191.255.255.255。C 类在其第一个八位字节中以 110xxxxx 开头,或地址 192.0.0.0 到 223.255.255.255。D 类有一个匹配 1110xxxx 的第一个八位字节,为它们提供 IP 224.0.0.0 到 239.0.0.0。最后,E 类是 1111xxxx 或 IP 240.0.0.0 到 255.255.255.255。E 类地址被认为是保留的,除了 255.255.255.255 之外没有明确的用途。D 类是多播地址,用于将数据包一起发送到计算机组。AC 类是您的普通单播 IP,其中各个设备在某个网络上获得 IP。

    话虽如此,定义每个网络大小的是它的类。A 类网络被定义为具有前 8 位或第一个八位字节作为地址的网络部分,其余 24 位是单个 IPv4 网络上地址的主机特定部分。B 类将其分成 16 位和 16 位或 2 个八位字节。C 类网络使用前 24 位作为网络部分,后 8 位作为主机部分。用现代术语来说,A 类网络有 /8 子网,B 类是 /16,C 类是 /24 子网。IPv4地址的网络和主机部分之间的分离对于路由数据包很重要,并且任何设备如何决定是否可以将其直接发送到本地网络上的系统,或者是否必须将其发送到路由器以转发到其他地方. 在 IPv4 网络堆栈和协议实现子网划分之前,

    您可以在 RIPv1 路由协议等协议中看到这种残余。它只通告 IP,而不是子网掩码,因此主机地址和网络地址之间的区别是关键。如果一个 RIPv1 地址公布的地址为 192.0.0.0,那是 B 类网络中的最低地址,因此它是整个网络的网络地址。它会告诉其他设备从 192.0.0.0 到 192.0.255.255 的所有系统都可以从该路由获得(因为 B 类使用前两个八位字节作为网络,在本例中为 192.0)。但是,如果它宣传 192.0.0.1,那不是该网络中的最低地址,因此它是主机地址。这意味着 RIPv1 正在为单个特定主机而不是整个网络通告路由。也许它是一个拨号调制解调器,或者有其他原因获得一条独特的路由,

    既然子网很常见,而且像 RIPv2 这样的新协议将子网掩码与 IP 一起发送,网络地址的整个概念有点多余,但由于历史原因,我们一直坚持使用它。可以使用子网掩码 255.255.255.255 来通告主机特定路由,但我们仍然必须保持与假定网络地址位于网络范围底部的软件的兼容性。

    更新:为了进一步澄清,这里有一些例子。如果要将 10.xxx IP 地址范围划分为 /26 个子网,则每个子网总共有 64 个地址(62 个可用于主机),因为主机部分仅保留 6 位 32 位 IP。前五个子网网络地址为 10.0.0.0、10.0.0.64、10.0.0.128、10.0.0.192 和 10.0.1.0。默认广播地址将是子网中的最高地址,分别对应于 10.0.0.63、10.0.0.127、10.0.0.191 和 10.0.1.63。相反,如果使用 /23 子网,则每个网络将有 512 个地址(510 个可用)。前五个子网是 10.0.0.0、10.0.2.0、10.0.4.0 和 10.0.6.0。对应的广播地址为 10.0.1.255、10.0.3.255、10.5.255 和 10.7.255。请注意,在后一个示例中,10.0.1.0、10.0.3.0 等不是网络地址。它们非常适合用作主机的常规 IP,因为它们位于子网范围的中间。只有第一个和最后一个地址是特殊的。10.0.0.255 也同样可用作常规主机。

    • 6
  3. Best Answer
    larsks
    2022-06-11T10:17:07+08:002022-06-11T10:17:07+08:00

    但是为什么在第四部分的任何 IP 地址中都没有使用 0 并且在 IP 地址计算中它们总是从 1 开始呢?

    关于您的问题的标题,至少在 Linux 下,127.0.0.0是一个非常有用的地址(与任何其他127.*地址一样映射到环回接口)。

    例如,我可以在以下位置启动一个网络服务器127.0.0.0:8080:

    docker run -d --rm --hostname node1 --name node1 -p 127.0.0.0:8080:8080 alpine \
      sh -c "apk add --update darkhttpd; mkdir /srv; hostname > /srv/index.html; darkhttpd /srv --port 8080"
    

    然后开始另一个绑定到127.0.0.1:8080:

    docker run -d --rm --hostname node2 --name node2 -p 127.0.0.1:8080:8080 alpine \
      sh -c "apk add --update darkhttpd; mkdir /srv; hostname > /srv/index.html; darkhttpd /srv --port 8080"
    

    现在我可以通过它们各自的地址访问这些服务器:

    $ curl 127.0.0.0:8080
    node1
    $ curl 127.0.0.1:8080
    node2
    
    • 2
  4. cybernard
    2022-06-11T10:55:56+08:002022-06-11T10:55:56+08:00

    几十年前,127.0.0.0/8 地址被指定为内部环回地址。仅适用于与本地 PC 的本地流量。

    自从多年前做出决定以来,每个路由器制造商都将该地址指定为不可路由。许多旧路由器可能是硬编码且不可移动的。有些需要新固件,制造商已将它们指定为生产线末端,因此他们永远不会获得新固件。这将需要更换成百上千台路由器。有些确实存在,您可以重新编程。

    因此,互联网上的每一个路由器都会丢弃任何发往 127.0.0.0/8 地址的流量。因此,流量将永远无法通过互联网。

    从字面上看,必须重新编程数以万计的路由器才能允许路由该地址。你和你的目的地之间有一个不兼容的路由器,数据包永远不会到达你。

    即使现在进行了更改,数据包也需要数年时间才能可靠地通过。

    • 2
  5. linux-coding649
    2022-06-11T11:41:02+08:002022-06-11T11:41:02+08:00

    在 IPv4 中,任何以 .0 结尾的 IP 都意味着当您使用前缀 /24 时它是(默认)网络地址。您不能使用此地址并将其分配给计算机。要分配的“允许”IP 是从 0.1 到 0.254。您也不能使用 .255,因为它被用作网络的“广播”地址。

    • 1
  6. Remember Monica
    2022-06-10T17:39:40+08:002022-06-10T17:39:40+08:00

    问题已加载 - IPv4 地址不是您声称的,但它们可以表示为 0 到 255 之间的四个数字(但许多其他表示是可能的、使用的和有效的,例如 10.5、0x7f.0 等)。

    您想知道的是为什么子网中的第一个地址通常不被使用。但这与八位字节为零无关,如下例所示,它们都是其子网中的第一个地址:10.0.0.248、127.1.0.160、192.168.101.2。

    经常保留首地址的原因有历史和兼容性的原因——如果你可以浪费首地址,增强与旧设备和损坏设备的兼容性可能是谨慎的。由于如今 IPv4 地址非常昂贵,因此这种情况变得不那么普遍了。

    • -2

相关问题

  • 用户使用 FileZilla 连接到 SFTP 服务器拒绝连接

  • 是否可以在客户端中使用没有文件系统的 FTP?

  • NAT 后面的 NAT 如何工作(路由器的 NAT 和 ISP 的 NAT)?

  • Win10 1803:如何让移动热点成为专用网络?

  • nc如何识别服务名称

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    Saaru Lindestøkke 为什么使用 Python 的 tar 库时 tar.xz 文件比 macOS tar 小 15 倍? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    v15 为什么通过电缆(同轴电缆)的千兆位/秒 Internet 连接不能像光纤一样提供对称速度? 2020-01-25 08:53:31 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve