<productname>PostgreSQL</productname> offers data types to store IPv4, IPv6, and MAC addresses, as shown in <xref linkend="datatype-net-types-table"/>. It is better to use these types instead of plain text types to store network addresses, because these types offer input error checking and specialized operators and functions (see <xref linkend="functions-net"/>). PostgreSQLは、表 8.21に示すように、IPv4アドレス、IPv6アドレス、MACアドレスを格納するデータ型を提供します。 ネットワークアドレスを格納するには普通のテキストデータ型の代わりにこれらの型を使うことの方が優れています。 なぜなら、これらのデータ型は入力値のエラー検査と専用の演算子と関数を提供しているからです (9.12を参照してください)。
表8.21 ネットワークアドレスデータ型
名前 | 格納サイズ | 説明 |
---|---|---|
cidr | 7もしくは19バイト | IPv4、およびIPv6ネットワーク |
inet | 7もしくは19バイト | IPv4もしくはIPv6ホスト、およびネットワーク |
macaddr | 6バイト | MACアドレス |
macaddr8 | 8 バイト | MAC アドレス (EUI-64 形式) |
When sorting <type>inet</type> or <type>cidr</type> data types,
IPv4 addresses will always sort before IPv6 addresses, including
IPv4 addresses encapsulated or mapped to IPv6 addresses, such as
::10.2.3.4 or ::ffff:10.4.3.2.
inet
もしくはcidr
をソートする時、IPv4アドレスは常にIPv6よりも前にソートされます。
::10.2.3.4や::ffff:10.4.3.2などIPv6アドレス内に埋め込まれた、もしくは関連付けされたIPv4アドレスも同様です。
inet
#
The <type>inet</type> type holds an IPv4 or IPv6 host address, and
optionally its subnet, all in one field.
The subnet is represented by the number of network address bits
present in the host address (the
<quote>netmask</quote>). If the netmask is 32 and the address is IPv4,
then the value does not indicate a subnet, only a single host.
In IPv6, the address length is 128 bits, so 128 bits specify a
unique host address. Note that if you
want to accept only networks, you should use the
<type>cidr</type> type rather than <type>inet</type>.
inet
型はIPv4もしくはIPv6ホストアドレスとオプションでそのサブネットを1つのフィールドに保持します。
サブネットはホストアドレス内のネットワークアドレスのビット数(「ネットマスク」)により表現されます。
ネットマスクが32でアドレスがIPv4の場合、その値はサブネットを示さず、単一ホストを表します。
IPv6ではアドレス長は128ビットですので、128ビットが一意なホストアドレスを指定します。
ネットワークのみを使用したい場合はinet
ではなくcidr
型を利用してください。
The input format for this type is
<replaceable class="parameter">address/y</replaceable>
where
<replaceable class="parameter">address</replaceable>
is an IPv4 or IPv6 address and
<replaceable class="parameter">y</replaceable>
is the number of bits in the netmask. If the
<replaceable class="parameter">/y</replaceable>
portion is omitted, the
netmask is taken to be 32 for IPv4 or 128 for IPv6,
so the value represents
just a single host. On display, the
<replaceable class="parameter">/y</replaceable>
portion is suppressed if the netmask specifies a single host.
このデータ型に対する入力書式はaddress/y
です。
ここで、address
はIPv4またはIPv6のアドレス、y
はネットマスクのビット数です。
/y
部分が省略された場合、ネットマスクはIPv4では32、IPv6では128となり、つまり、その値は単一ホストを表現します。
ネットマスクが単一ホストを表す場合、その表示時、/y
の部分は抑制されます。
cidr
#
The <type>cidr</type> type holds an IPv4 or IPv6 network specification.
Input and output formats follow Classless Internet Domain Routing
conventions.
The format for specifying networks is <replaceable
class="parameter">address/y</replaceable> where <replaceable
class="parameter">address</replaceable> is the network's lowest
address represented as an
IPv4 or IPv6 address, and <replaceable
class="parameter">y</replaceable> is the number of bits in the netmask. If
<replaceable class="parameter">y</replaceable> is omitted, it is calculated
using assumptions from the older classful network numbering system, except
it will be at least large enough to include all of the octets
written in the input. It is an error to specify a network address
that has bits set to the right of the specified netmask.
cidr
データ型はIPv4、IPv6ネットワーク仕様を保持します。
入出力書式はCIDR表記(クラスレスアドレッシング)に従います。
ネットワークを指定する時の書式はaddress/y
で、address
がIPv4もしくはIPv6アドレスで表したネットワークの最下位アドレスで、y
はネットマスクのビット数です。
y
が省略された場合には、従来のクラス付きアドレス番号指定システムに従って計算されますが、入力時に書き込まれたオクテットすべてが含まれるように大きさは確保されます。
指定したネットマスクの右側にビットをセットしたネットワークアドレスを指定するとエラーになります。
<xref linkend="datatype-net-cidr-table"/> shows some examples. 表 8.22に例をいくつか示します。
表8.22 cidr
データ型入力例
cidr 入力 | 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/128 |
::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
データ型の違い #
The essential difference between <type>inet</type> and <type>cidr</type>
data types is that <type>inet</type> accepts values with nonzero bits to
the right of the netmask, whereas <type>cidr</type> does not. For
example, <literal>192.168.0.1/24</literal> is valid for <type>inet</type>
but not for <type>cidr</type>.
inet
データ型とcidr
データ型との基本的な相違は、inet
ではネットマスクの右側に0でないビット値を受け付けますが、cidr
では受け付けないことです。
例えば、192.168.0.1/24
はinet
では有効ですが、cidr
では有効ではありません。
If you do not like the output format for <type>inet</type> or
<type>cidr</type> values, try the functions <function>host</function>,
<function>text</function>, and <function>abbrev</function>.
もしinet
もしくはcidr
の値の出力書式が気に入らないのであれば、関数host
、text
およびabbrev
を試してください。
macaddr
#
The <type>macaddr</type> type stores MAC addresses, known for example
from Ethernet card hardware addresses (although MAC addresses are
used for other purposes as well). Input is accepted in the
following formats:
macaddr
データ型は例えばイーサネットカードのハードウェアアドレスとして知られるMACアドレスを保持します(MACアドレスは他の目的でも使われますが)。
入力は以下の形式を受け入れます。
'08:00:2b:01:02:03' |
'08-00-2b-01-02-03' |
'08002b:010203' |
'08002b-010203' |
'0800.2b01.0203' |
'0800-2b01-0203' |
'08002b010203' |
These examples all specify the same address. Upper and
lower case is accepted for the digits
<literal>a</literal> through <literal>f</literal>. Output is always in the
first of the forms shown.
これらの例はすべて同一のアドレスを指定します。
a
からf
までの桁は大文字小文字どちらでも構いません。
出力は常に最初に示された形式となります。
IEEE Standard 802-2001 specifies the second form shown (with hyphens) as the canonical form for MAC addresses, and specifies the first form (with colons) as used with bit-reversed, MSB-first notation, so that 08-00-2b-01-02-03 = 10:00:D4:80:40:C0. This convention is widely ignored nowadays, and it is relevant only for obsolete network protocols (such as Token Ring). PostgreSQL makes no provisions for bit reversal; all accepted formats use the canonical LSB order. IEEE標準802-2001では、2番目の書式(ハイフンを使用)をMACアドレスの正規の表現と規定しています。 また、ビット反転で表記する最初の書式(コロンを使用)をMSBファーストの表記と規定しています。つまり08-00-2b-01-02-03は10:00:D4:80:40:C0です。 この規約は現在ではほぼ無視され、古びたネットワーク(トークンリングなど)のみに関連するものです。 PostgreSQLではビット反転に関する準備をしていません。 また、すべての受付け可能な書式では正規のLSB順を使用します。
The remaining five input formats are not part of any standard. 残る5つの入力書式はどの標準にも属しません。
macaddr8
#
The <type>macaddr8</type> type stores MAC addresses in EUI-64
format, known for example from Ethernet card hardware addresses
(although MAC addresses are used for other purposes as well).
This type can accept both 6 and 8 byte length MAC addresses
and stores them in 8 byte length format. MAC addresses given
in 6 byte format will be stored in 8 byte length format with the
4th and 5th bytes set to FF and FE, respectively.
macaddr8
データ型はイーサネットカードのハードウェアアドレスなどで知られるEUI-64形式でデータを格納します(MACアドレスは他の目的にもよく使用されます)。
このデータ型は6バイト長と8バイト長の両方の長さのMACアドレスを受け入れることがき、8バイト長の形式で格納します。
6バイト形式で与えられたMACアドレスは8バイト長の形式では、それぞれ、4番目と5番目のバイトをFFとFEとして格納されます。
Note that IPv6 uses a modified EUI-64 format where the 7th bit
should be set to one after the conversion from EUI-48. The
function <function>macaddr8_set7bit</function> is provided to make this
change.
IPv6はEUI-48から変換後に7番目のビットに1となるべき設定がなされた修正EUI-64形式を使用する点に注意してください。
macaddr8_set7bit
関数がこの変換生成を提供します。
Generally speaking, any input which is comprised of pairs of hex
digits (on byte boundaries), optionally separated consistently by
one of <literal>':'</literal>, <literal>'-'</literal> or <literal>'.'</literal>, is
accepted. The number of hex digits must be either 16 (8 bytes) or
12 (6 bytes). Leading and trailing whitespace is ignored.
一般的には(バイト境界上での)16進数の対で構成され、任意に':'
、'-'
もしくは '.'
のいずれかの一貫した記号で分割された入力を受け付けます。
16進数の桁数は16桁(8 バイト)か12桁(6バイト)のいずれかである必要があります。
前後の空白は無視されます。
The following are examples of input formats that are accepted:
以下の入力形式の例は受け付けられます。
'08:00:2b:01:02:03:04:05' |
'08-00-2b-01-02-03-04-05' |
'08002b:0102030405' |
'08002b-0102030405' |
'0800.2b01.0203.0405' |
'0800-2b01-0203-0405' |
'08002b01:02030405' |
'08002b0102030405' |
These examples all specify the same address. Upper and
lower case is accepted for the digits
<literal>a</literal> through <literal>f</literal>. Output is always in the
first of the forms shown.
これらの例は全て同じアドレスを指します。
桁には大文字のA
からF
、小文字のa
からf
も受付けられます。
出力は常に1番目の形式です。
The last six input formats shown above are not part of any standard. 上記の最後の6つの形式は標準ではありません。
To convert a traditional 48 bit MAC address in EUI-48 format to
modified EUI-64 format to be included as the host portion of an
IPv6 address, use <function>macaddr8_set7bit</function> as shown:
従来のEUI-48形式の48ビットのMACアドレスからIPv6のホスト部を含む修正がなされたEUI-64形式へ変更するためには、以下に示すようにmacaddr8_set7bit
を使用します。
SELECT macaddr8_set7bit('08:00:2b:01:02:03');
macaddr8_set7bit
-------------------------
0a:00:2b:ff:fe:01:02:03
(1 row)