?
本文檔使用
php中文網(wǎng)手冊 發(fā)布
PostgreSQL提供用于存儲 IPv4、IPv6、MAC地址的數(shù)據(jù)類型, 在Table 8-21里顯示。 用這些數(shù)據(jù)類型存儲網(wǎng)絡(luò)地址比用純文本類型好, 因為這些類型提供輸入錯誤檢查和好些種特殊的操作和功能(見Section 9.12)。
Table 8-21. 網(wǎng)絡(luò)地址類型
名字 | 存儲空間 | 描述 |
---|---|---|
cidr | 7或19字節(jié) | IPv4或IPv6網(wǎng)絡(luò) |
inet | 7或19字節(jié) | IPv4 或 IPv6 網(wǎng)絡(luò)和主機(jī) |
macaddr | 6字節(jié) | MAC 地址 |
在對inet或cidr數(shù)據(jù)類型進(jìn)行排序的時候, IPv4地址總是排在IPv6地址前面,包括那些封裝或者是映射在IPv6地址里 的IPv4地址,比如::10.2.3.4或::ffff::10.4.3.2
inet在一個數(shù)據(jù)域里保存主機(jī)的IPv4或IPv6地址, 以及一個可選的等效子網(wǎng)。子網(wǎng)的等效是通過計算主機(jī)地址中有多少位表示網(wǎng)絡(luò)地 址的方法來表示的("子網(wǎng)掩碼")。如果子網(wǎng)掩碼是32并且地址是IPv4, 那么不表示任何子網(wǎng),只是一臺主機(jī)。在IPv6里,地址長度是128位, 因此128位表明一個唯一的主機(jī)地址。請注意如果你想只接受網(wǎng)絡(luò)地址, 你應(yīng)該使用cidr類型而不是inet類型。
該類型的輸入格式是address/y, 這里的address是IPv4或者IPv6地址, y是子網(wǎng)掩碼的二進(jìn)制位數(shù)。 如果/y部分未填, 則子網(wǎng)掩碼對IPv4而言是32,對IPv6而言是128, 所以該值表示只有一臺主機(jī)。顯示時,如果該值表示只有一臺主機(jī), /y將不會顯示。
cidr保存一個IPv4或IPv6網(wǎng)絡(luò)地址。 其輸入和輸出遵循無類別的互聯(lián)網(wǎng)域路由習(xí)慣。 聲明一個網(wǎng)絡(luò)的格式是address/y, 這里的address是IPv4或者IPv6地址, y是子網(wǎng)掩碼的二進(jìn)制位數(shù)。 如果省略y, 那么掩碼部分用舊的有類別的網(wǎng)絡(luò)編號系統(tǒng)進(jìn)行計算, 但要求輸入的數(shù)據(jù)已經(jīng)包括了確定掩碼所需的所有字節(jié)。 聲明一個指定掩碼的網(wǎng)絡(luò)地址是錯誤的。
Table 8-22是些例子。
Table 8-22. cidr類型輸入舉例
cidr輸入 | cidr輸出 | abbrev(cidr) |
---|---|---|
192.168.100.128/25 | 192.168.100.128/25 | 192.168.100.128/25 |
192.168/24 | 192.168.0.0/24 | 192.168.0/24 |
192.168/25 | 192.168.0.0/25 | 192.168.0.0/25 |
192.168.1 | 192.168.1.0/24 | 192.168.1/24 |
192.168 | 192.168.0.0/24 | 192.168.0/24 |
128.1 | 128.1.0.0/16 | 128.1/16 |
128 | 128.0.0.0/16 | 128.0/16 |
128.1.2 | 128.1.2.0/24 | 128.1.2/24 |
10.1.2 | 10.1.2.0/24 | 10.1.2/24 |
10.1 | 10.1.0.0/16 | 10.1/16 |
10 | 10.0.0.0/8 | 10/8 |
10.1.2.3/32 | 10.1.2.3/32 | 10.1.2.3/32 |
2001:4f8:3:ba::/64 | 2001:4f8:3:ba::/64 | 2001:4f8:3:ba::/64 |
2001:4f8:3:ba:2e0:81ff:fe22:d1f1/128 | 2001:4f8:3:ba:2e0:81ff:fe22:d1f1/128 | 2001:4f8:3:ba:2e0:81ff:fe22:d1f1 |
::ffff:1.2.3.0/120 | ::ffff:1.2.3.0/120 | ::ffff:1.2.3/120 |
::ffff:1.2.3.0/128 | ::ffff:1.2.3.0/128 | ::ffff:1.2.3.0/128 |
inet和cidr類型之間的基本區(qū)別是inet接受子網(wǎng)掩碼, 而cidr不接受。
Tip: 如果你不喜歡inet或cidr值的輸出格式, 請試一下
host
,text
和abbrev
函數(shù)。
macaddr類型存儲MAC地址,也就是以太網(wǎng)卡硬件地址 (盡管 MAC 地址還用于其它用途)。可以接受多種自定義的格式,包括
'08:00:2b:01:02:03' |
'08-00-2b-01-02-03' |
'08002b:010203' |
'08002b-010203' |
'0800.2b01.0203' |
'08002b010203' |
IEEE標(biāo)準(zhǔn)802-2001指定第二種形式(帶連字符)為MAC地址的標(biāo)準(zhǔn)格式, 并指定的第一種形式(用冒號)為位反轉(zhuǎn)符號,因此08-00-2b-01-02-03=01:00:4D:08:04:0C。 這個條約現(xiàn)在已很少使用,它至于過時的網(wǎng)絡(luò)協(xié)議(如令牌環(huán))有關(guān)。 PostgreSQL對位反轉(zhuǎn)沒有規(guī)定,并且所有接受的格式使用LSB協(xié)議順序。
其余四個輸入格式不是任何標(biāo)準(zhǔn)的一部分。