मैं पोस्टग्रेस डीबी में स्टोर करने के लिए ipv4 और ipv6 के साथ काम कर रहा हूं।आईपीवी 6 के रूप में 128 बिट्स (16 बाइट्स) की आवश्यकता है तो सीईडीआर डेटाटाइप में 24 बाइट (8.1) और 1 9बीटी (9.1) के रूप में भंडारण क्यों है?
आईपीवी 4 के रूप में 32 बिट्स (4byte) और आईपीवी 6 की आवश्यकता 128 बिट्स (16byte) बिट्स की आवश्यकता है। फिर पोस्टग्रेज़ सीआईडीआर और आईएनईटी डाटाटाइप में आईपीवी 4 और आईपीवी 6 (8.1) के लिए क्रमशः 12 बाइट और 24 बाइट्स के रूप में स्टोरेज है।
9.1 के साथ, इसमें आईपीवी 4 और आईपीवी 6 के लिए क्रमशः 7 बाइट और 1 9 बाइट है।
मुझे समझ में नहीं आ रहा है कि आईपीवी 4 के लिए आईपीवी 6 और 4 बाइट स्टोर करने के लिए इसे 16 बाइट से अधिक अतिरिक्त बाइट क्यों चाहिए ??
typedef struct
{
unsigned char family; /* PGSQL_AF_INET or PGSQL_AF_INET6 */
unsigned char bits; /* number of bits in netmask */
unsigned char ipaddr[16]; /* up to 128 bits of address */
} inet_struct;
इसका मतलब यह है, कि अतिरिक्त IP4, 16 के लिए ipaddr
(4 बाइट्स में "कच्चे" डेटा के लिए:
http://www.postgresql.org/docs/8.1/static/datatype-net-types.html
http://www.postgresql.org/docs/9.1/interactive/datatype-net-types.html
नेटमास्क बिट्स के लिए इसे कम से कम +1 बाइट की आवश्यकता है जैसे "10.1.0.0/8" 10.1.0.0 मास्क 255.0.0.0 –