我有一个安全系统,网络设置只允许一个三位数的 IP 地址。我无法将其设置为192.168.2.100,而是必须使用192.168.002.100.
这两个IP地址不同吗?我是否需要将路由器的 LAN 设置为全部192.168.xxx.xxx才能使其正常工作?我找不到任何关于此的可靠信息。
Gre*_*ker 104
这取决于工具。
在大多数情况下,两者是相同的,但并非总是如此。
例如,如果您使用以零开头的 3 位数字(或以零开头的两位数字,感谢@Dietrich-Epp),则 ping 将假定数字为八进制。
Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.
C:\Users>ping 011.012.013.014
Pinging 9.10.11.12 with 32 bytes of data:
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Ping statistics for 9.10.11.12:
Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),
Run Code Online (Sandbox Code Playgroud)
Aus*_*nch 66
假设您使用的所有软件都正确使用点十进制和子网划分,是的,它们是相同的。
例如 192.168.0.1 只是点二进制值 11000000.10101000.00000000.00000001 的友好点十进制表示法。
无论你输入 192.168.0.1 还是 192.168.000.001 它们都等于 11000000.10101000.00000000.00000001
cde*_*cde 37
这取决于任何给定程序用来解析给定地址的工具或函数。Microsoft 和 Linux 以及其他操作系统都使用POSIX兼容inet_addr()例程来解析地址。
许多 TCP/IP 程序(例如 Ping 和 FTP)使用 inet_addr() 套接字函数将 IP 地址字符串转换为 4 字节地址。此函数接受采用标准十进制、八进制和十六进制表示法的 IP 地址。
Microsoft KB115388 Ping 和 FTP 将前导零解析为八进制的 IP 地址
inet_addr() 函数将 Internet 主机地址 cp 从 IPv4 数字和点表示法转换为网络字节顺序的二进制数据。
在上述所有形式中,点分地址的组成部分可以指定为十进制、八进制(以 0 开头)或十六进制(以 0X 开头)。任何这些形式的地址统称为IPv4数字和点符号。恰好使用四个十进制数的形式称为 IPv4 点分十进制表示法(或有时:IPv4 点分四线表示法)。
inet_addr(3):Internet 地址更改例程 - Linux 手册页
因此,您的特定系统可能需要每个八位字节使用三位十进制表示法,但这并不通用,应注意确保输入正确的 IP 地址。
当然,只有每种类型的有效数字才有效。超出范围的八进制、十六进制或十进制数字也会失败或导致问题。八进制 088、十六进制 0xGG 或十进制 280 都是无效示例。
Jon*_*art 14
正如Lightness Races in Orbit和其他人指出的那样,
该INET(3)手册页介绍了inet_addr和inet_aton,用于“IPv4的数字,和点符号转换成二进制形式的”转换的标准功能。它说
...点分地址的组成部分可以指定为十进制、八进制(以 0开头)或十六进制(以 0X 开头)。
所以从技术上讲,不,带有前导零的 IP 地址并不(总是)与没有前导零的 IP 地址相同。但是,在您的情况下,192.168.2.100和192.168.002.100是相同的,因为002 == 2.
任何要求每个组件的长度恰好为三个字符且带有不正确要求的前导零的用户界面都会被破坏。
一些实现将带有前导零的八位字节视为十进制其他实现将它们视为八进制。只要八位字节在 0 到 7 的范围内,就没有区别。因此,例如将192.168.002.100被解释为192.168.2.100在两种实现中。
但是如果你要输入一个地址,因为192.168.010.100它可以被解释为192.168.10.100或者192.168.8.100取决于实现。实现确实存在也不太可能,这会将前导零视为语法错误。此外,在某些情况下,软件可能会出于某种原因坚持要求您使用规范表示。出于所有这些原因,我建议您在编写 IP 地址时避免使用前导零。
如果您编写需要解析 IP 地址的软件,我建议您接受前导零,但在发生时将警告输出到适当的位置。
稍微相关的是,有些实现允许您在点符号中使用少于四个的组件。当少于四个分量时,最后一个分量多于 8 位,而较早的分量恰好为 8 位。例如192.168.612,实际上是一种有效的写入方式192.168.2.100。但不建议再次使用该符号。
| 归档时间: |
|
| 查看次数: |
34003 次 |
| 最近记录: |