我希望能够在我的表中存储IPv4和IPv6地址。无论是IPv4还是IPv6地址,存储用户IP地址的最有效方法是什么?
这将在生产环境中使用,因此首选未来证明建议。
答案 0 :(得分:9)
我建议以IPv6格式存储每个地址。有一个官方映射:IPv4-mapped IPv6 address。它的工作原理如下:
以IPv4地址192.0.2.44
为例
IPv4映射的IPv6地址为::ffff:192.0.2.44
其中也可以写成::ffff:c000:022c
(192
十进制为c0
十六进制等等)
您可以使用inet_pton()
函数来解析此类地址,并且在我的本地系统上,inet_ntop()
函数也以最易读的格式(::ffff:192.0.2.44
)输出它们。这样,您只需要在应用程序中处理一种格式。
答案 1 :(得分:1)
为什么它必须是一个列?一些建议......
有2列,一列用于IPv4,一列用于IPv6。
将IP地址存储在一个列中,并使另一列基本上保存一个布尔值,无论地址是否为IPv4 ......