1,字符串存储方式
如果原来采用字符串存储方式可以保存不变,但需要程序自己根据各自串的格式差别区分IPv4和IPv6,IPv4采用“.”间隔,共4段,每段一个0~255的数字,每段表示一个Byte(8个bit),比如162.105.121.11;IPv6采用“:”间隔,共8段,每段一个0~0xffff的十六进制数字,每段表示2个Byte(16个bit), 比如c0ae:1234:3aa1:8899:b678:8e99:45cc:8800。
也可将IPv4的地址统一存储为映射后的IPv6形式的地址,即前缀是0000:0000:0000:0000:0000:ffff,后面2段则是原IPv4的32个bit值的十六进制表示,比如192.0.2.128的IPv4地址,可映射成0000:0000:0000:0000:0000:ffff:c000:280。
2,二进制存储方式
如果采用二进制字节存储,可以将IPv4和IPv6统一为16Byte(128bit)存储,其中IPv4的前10个Byte的值均为0, 接着2个Byte为ffff,最后原IPv4的32个bit值。.
3,IP认证的安全问题
对于Server是IPv4/IPv6双栈环境中,而client是IPv4的,Server端应用系统看到的来自该client的包中的IP已经是经过映射成IPv6的了,通常会添加一个前80个bit是0,接着32bit是1的前缀,最后32bit表示取原IPv4的32个bit值,比如192.0.2.128的IPv4地址,会映射成::ffff:c000:280。
对于服务端采用IP方式认证的系统,必须考虑这种映射情况。可以在存储上已开始就直接将IPv4的配置信息转换成这种映射地址进行存储,或者实时转换进行比对和合法范围判断。
另外像IIS 6.0这样的Web服务器不支持IPv6地址的过滤配置,如果原先依赖IIS做IP控制的应用程序需要更改升级。





