O PostgreSQL disponibiliza tipos de dado para armazenar endereços de IP e de MAC, mostrado na Tabela 5-18. É preferível utilizar estes tipos em vez dos tipos de texto puro, porque estes tipos possuem verificação de erro na entrada, além de vários operadores e funções especializadas.
Tabela 5-18. Tipos de dado para endereço de rede
Nome | Armazenamento | Descrição | Intervalo |
---|---|---|---|
cidr | 12 bytes | redes IP | redes válidas IPv4 |
inet | 12 bytes | hospedeiros e redes IP | hospedeiros e redes válidas IPv4 |
macaddr | 6 bytes | endereço MAC | formatos personalizados |
O IPv6 ainda não é suportado.
O tipo de dado inet armazena um endereço de hospedeiro IP e, opcionalmente, a identificação da sub-rede onde se encontra, tudo em um único campo. A identificação da sub-rede é representada pelo número de bits na parte de rede do endereço (a "máscara de rede"). Se a máscara de rede for 32, então o valor não indica uma sub-rede, somente um único hospedeiro. Quando for desejado aceitar apenas redes, deve ser utilizado o tipo cidr em vez do tipo inet.
O formato de entrada para este tipo é x.x.x.x/y onde x.x.x.x é o endereço de IP e y é o número de bits da máscara de rede. Se a parte /y for deixada de fora, então a máscara de rede é 32, e o valor representa somente um único hospedeiro. Ao mostrar, o /y é deixado de fora se a máscara de rede for 32.
O tipo cidr armazena uma especificação de rede IP. Os formatos de entrada e de saída seguem as convenções do Classless Internet Domain Routing [1] . O formato para especificar redes sem classe é x.x.x.x/y onde x.x.x.x é a rede e y é o número de bits na máscara de rede. Se y for omitido será calculado pressupondo o sistema antigo de numeração com classes, exceto que será pelo menos suficientemente grande para incluir todos os octetos escritos na entrada.
A Tabela 5-19 mostra alguns exemplos.
Tabela 5-19. cidr Exemplos de entrada para este tipo
CIDR Entrada | CIDR Mostrado | 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 |
A diferença essencial entre os tipos de dado inet e cidr é que inet aceita valores com bits diferentes de zero à direita da máscara de rede, enquanto cidr não.
Dica: Caso não goste do formato de saída para os valores de inet ou cidr, tente utilizar as funções
host
(),text
() eabbrev
().
O tipo macaddr armazena endereços de MAC, ou seja, endereços de hardware da placa Ethernet (embora os endereços MAC sejam utilizados para outras finalidades também). A entrada é aceita em vários formatos personalizados incluindo
'08002b:010203' |
'08002b-010203' |
'0800.2b01.0203' |
'08-00-2b-01-02-03' |
'08:00:2b:01:02:03' |
O diretório contrib/mac na distribuição do fonte do PostgreSQL contém ferramentas que podem ser utilizadas para mapear endereços MAC em nomes de fabricantes de hardware.
[1] | O CIDR, definido pela RFC1519, elimina o sistema de classes que originalmente determinou a parte de rede de um endereço IP. Como a sub-rede, da qual é uma extensão direta, ele conta com uma máscara de rede explícita para definir o limite entre as partes de rede e de host de um endereço. Manual de Administração do Sistema Unix - Evi Nemeth e outros - Bookman. (N.T.) |