2017-07-18 67 views
1

每个人都在谈论如何将IP地址转换为一个整数来存储,但传播这种方法的实际原因是什么? 它有什么好处/缺点?为什么要将IP转换为整数以存储它?

总之:为什么我应该这样做吗?

+1

为了能够正确排序并对IP地址进行数学运算。在包头中,IPv4地址是32位整数,而IPv6地址是128位整数。网络设备以这种方式使用它们。 –

回答

1

有几个通用的原因,比如整数比字符串占用的空间少,但只是想强调主要的一个:IP地址实际上是数字。

我们人类更喜欢IP地址字符串表示法,比如“10.0.0.1”或“2002 :: 2”,以使我们的生活更轻松。事实上,大多数对IP的操作都是严格的数字。例如,掩蔽(IP &掩模),检查IP范围(第一< IP <最后)等

所以,就像许多字符串表示我们转换为整数类型( “123” - > 123), IP的字符串表示应转换为其整数形式(“10.0.0.1” - > 0x0A000001或167772161)。

+0

我同意你的意见。 IP地址是整数(整数的定义,虽然它们通常不符合某些编程语言的整数定义)。有一个人强烈反对(见评论@ https://stackoverflow.com/q/45067655/3745413)。 –

+0

在今天的世界里,5个额外的字节加起来并不重要,对吧?但我知道你指出这是一个原则问题。 – Kapparina

+0

@Kapparina取决于你拥有多少IP地址;)如果它是一个连接数据库(流量),那5个额外的字节数百万(十亿)记录,每个记录少数IPs ......然后查询。相同IP的字符串表示可能会有所不同,例如“10.0.0.1”基本上与“010.000.000.001”相同。因此,要选择所有10.0。*。*连接,您必须考虑这些可能的不同表示。加起来。将IP存储为字符串没有任何优势,但可能存在技术限制。 –

相关问题