このトピックでは、ネットワークアドレスタイプの定義と構文について説明します。
ネットワークアドレスタイプ
名前 | ストレージサイズ | 説明 |
| 7または19バイト | IPv4およびIPv6ネットワーク |
| 7または19バイト | IPv4およびIPv6のホストとネットワーク |
| 6バイト | MACアドレス |
| 8 バイト | MACアドレス (EUI-64形式) |
inetまたはcidrデータ型をソートする場合、IPv4アドレスは常にIPv6アドレスの前にソートされます。これには、: 10.2.3.4または: ffff:10.4.3.2などのIPv6アドレスにカプセル化またはマッピングされたIPv4アドレスも含まれます。
inet
inetタイプは、IPv4またはIPv6ホストアドレスと、オプションでそのサブネットをすべて1つのフィールドに保持します。 サブネットは、ホストアドレス (「ネットマスク」) に存在するネットワークアドレスビットの数によって表される。 ネットマスクが32で、アドレスがIPv4の場合、値はサブネットではなく、単一のホストのみを示します。 IPv6では、アドレス長は128ビットであるため、128のビットは一意のホストアドレスを指定します。 ネットワークのみを受け入れる場合は、inetではなくcidrタイプを使用する必要があります。
このタイプの入力形式はaddress/yで、addressはIPv4またはIPv6アドレス、yはネットマスクのビット数です。 /yの部分を省略した場合、ネットマスクはIPv4の場合は32、IPv6の場合は128となるため、値は1つのホストのみを表します。 ネットマスクが単一のホストを指定している場合、ディスプレイ上で /y部分は抑制されます。
cidr
cidrタイプは、IPv4またはIPv6ネットワーク仕様を保持します。 入力および出力形式は、Classless Internet Domain Routing規則に従います。 ネットワークを指定するためのフォーマットはaddress/yであり、ここでaddressはIPv4またはIPv6アドレスとして表されるネットワークの最低アドレスであり、yはネットマスクのビット数である。 yが省略される場合、それは、入力に書かれたオクテットのすべてを含むのに少なくとも十分な大きさであることを除いて、より古いクラスフルのネットワーク番号付けシステムからの仮定を使用して計算される。 指定されたネットマスクの右側にビットが設定されているネットワークアドレスを指定するのはエラーです。
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
inetとcidrデータ型の本質的な違いは、inetがネットマスクの右側にゼロ以外のビットを持つ値を受け入れますが、cidrは受け入れません。 たとえば、192.168.0.1/24はinetには有効ですが、cidrには有効ではありません。
inetまたはcidr値の出力形式が気に入らない場合は、host、text、およびabbrev関数を試してください。
macaddr
macaddrタイプは、例えばイーサネット (登録商標) カードハードウェアアドレスから知られるMACアドレスを格納する (ただし、MACアドレスは他の目的にも使用される) 。 入力は次の形式で受け付けられます。
|
|
|
|
|
|
|
これらの例はすべて同じアドレスを指定します。 桁aからfは大文字と小文字が受け入れられます。 出力は常に示されている形式の最初のものです。
IEEE標準802-2001は、MACアドレスの標準形式として示されている2番目の形式 (ハイフン付き) を指定し、ビット反転されたMSB最初の表記で使用される最初の形式 (コロン付き) を指定します。 この規則は今日では広く無視されており、古くなったネットワークプロトコル (トークンリングなど) にのみ関連しています。 PostgreSQLはビット反転を規定していません。受け入れられたすべての形式は、標準LSB順序を使用します。
残りの5つの入力形式は標準の一部ではありません。
macaddr8
macaddr8型は、例えばイーサネット (登録商標) カードハードウェアアドレスから知られるEUI-64フォーマットでMACアドレスを記憶する (ただし、MACアドレスは他の目的にも使用される) 。 このタイプは、6バイトと8バイトの両方の長さのMACアドレスを受け入れ、8バイトの長さの形式で保存できます。 6バイトフォーマットで与えられたMACアドレスは8バイト長フォーマットで記憶され、4番目と5番目のバイトはそれぞれFFとFEに設定される。 IPv6は、EUI-48からの変換後に7番目のビットが1に設定されるべき修正されたEUI-64フォーマットを使用することに留意されたい。 関数macaddr8_set7bitは、この変更を行うために提供される。 一般的に言えば、(バイト境界上の) 16進数字の対からなり、':' 、'、または '.' のうちの1つによって任意に一貫して分離される任意の入力が受け入れられる。 16進数の桁数は16 (8バイト) または12 (6バイト) でなければなりません。 先頭および末尾の空白は無視されます。 受け入れられる入力形式の例を次に示します。
|
|
|
|
|
|
|
|
これらの例はすべて同じアドレスを指定します。 桁aからfは大文字と小文字が受け入れられます。 出力は常に示されている形式の最初のものです。
上記の最後の6つの入力形式は、標準の一部ではありません。
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行)