Postgresには、IPとMACアドレスを格納するためのデータ型があります。 この型では入力された値と特別な演算子や関数のチェックを行うので文字データ型を 使用するよりもこちらをお使いになることをお勧めします。
Table 3-17. ネットワークアドレスデータ型
名称 | データベース上のバイト数 | 説明 | 有効範囲 |
---|---|---|---|
cidr | 12 バイト | IPネットワーク | 有効なIPv4ネットワーク |
inet | 12 バイト | IPホストとネットワーク | 有効なIPv4ホスト、またはネットワーク |
macaddr | 6 バイト | MAC アドレス | 通常のフォーマット |
IPv6はまだサポートされていません。
inet型はIPホストアドレスとオプションでそのホストアドレスの サブネットマスクの識別を1 つのフィールドに保持しています。 サブネットマスクの識別はアドレスのネットワークの部分("netmask")の ビットで表されます。もしネットマスクが32だった場合、 それはシングルホストを意味し、サブネットではありません。 ネットワークのみを使用したい場合はinet型ではなく cidr型をご利用下さい。
これらの関数を使う時の入力書式はx.x.x.x/yで、 x.x.x.xが インターネットホストアドレス、 yはネットマスクのビット数です。 もし/yの部分を省略すると、ネットマスクは32となり、 シングルホストを意味します。もしネットマスクが32の場合、画面では /yの部分は表示されません。
cidr型はIPネットワークの詳細を保持します。出入力フォーマットは クラス分けのない(classless networks)インターネットドメインルーティングにしたがっています。 クラス分けのないネットワークアドレスを指定するためのフォーマットは x.x.x.x/yで、x.x.x.xはネットワークアドレス、yはネットマスクのビット数です。もしyが が省略された場には、入力時に書かれたオクテットのすべてが含められるように 大きさが確保されること以外は、以前のクラス名付けシステムシステムを元に計算されます。
下記は参考例です。
Table 3-18. cidr型入力例
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 |
inet型とcidr型の根本的な違いは、inet型は ネットマスクの右側にゼロ以外のビット値を受けつけますが、cidr型は 受けつけないということです。
Tip: inet型やcidr型の値のフォーマットを 変更したい場合は、host()、text()、 abbrev()の関数をご利用下さい。
macaddr型はMACアドレス(イーサネットカードのアドレス; 他の用途にも使用されることもありますが)を保持します。 '08002b:010203'、'08002b-010203'、 '0800.2b01.0203'、'08-00-2b-01-02-03'、 '08:00:2b:01:02:03'など、様々なフォーマットでの入力が可能で、 上記のものはすべて同じアドレスと見なされます。a through f に関しては、大文字と小文字の両方が入力可能です。出力は必ず下記の形式となります。
Postgresのソースディストリビューション内の contrib/macディレクトリには MACアドレスとハードウェアの製造者の対応ができるツールがあります。