Documentazione di PostgreSQL 9.0 > Il linguaggio SQL > Tipi di Dato > Tipi indirizzi di rete
PrecedenteTipi geometriciTipi stringa di bitSuccessivo

8.9. Tipi indirizzi di rete

PostgreSQL™ offre tipi di dato per memorizzare indirizzi IPv4, IPv6 e MAC, come mostrato nella Tabella 8.21, «Tipi per gli indirizzi di rete». È preferibile usare questi tipi invece dei tipi in testo normale per memorizzare indirizzi di rete, in quanto questi tipi offrono il controllo degli errori in input e diversi operatori e funzioni specializzati (vedere dentro Sezione 9.12, «Funzioni e operatori per indirizzi di rete»).

Tabella 8.21. Tipi per gli indirizzi di rete

NomeDimensioneDescrizione
cidr7 o 19 bytereti IPv4 e IPv6
inet7 o 19 bytehost e reti IPv4 e IPv6
macaddr6 byteindirizzi MAC

Quando si ordinano tipi di dati inet o cidr, gli indirizzi IPv4 saranno sempre ordinati prima degli indirizzi IPv6, compresi gli indirizzi IPv4 incapsulati o mappati dentro indirizzi IPv6, come ::10.2.3.4 or ::ffff:10.4.3.2.

8.9.1. inet

Il tipo inet contiene un indirizzo host IPv4 o IPv6, e opzionalmente l'identità della subnet, tutto in un campo. L'identità della subnet è rappresentata dichiarando quanti bit dell'indirizzo dell'host rappresentano l'indirizzo di rete (il «netmask»). Se il netmask è 32 e l'indirizzo è IPv4, allora il valore non indica una subnet, ma solo un singolo host. In IPv6, la lunghezza dell'indirizzo è di 128 bit, per cui 128 bit specificano un unico indirizzo di host. Notare che se si vuole accettare solo reti, bisogna usare il tipo cidr piuttosto che il tipo inet.

Il formato di input per questo tipo è indirizzo/y dove indirizzo è un indirizzo IPv4 o IPv6 e y è il numero di bit nella netmask. Se la parte /y non è indicata, allora il netmask è 32 per IPv4 e 128 per IPv6, per cui il valore rappresenta solo un singolo host. In visualizzazione, la parte /y è soppressa se la netmask specifica un singolo host.

8.9.2. cidr

Il tipo cidr contiene una specificazione di rete IPv4 o IPv6. I formati di input e output seguono le convenzioni di instradamento di domini internet senza classi (Classless Internet Domain Routing) CIDR. Il formato per specificare la rete è indirizzo/y dove indirizzo è la rete rappresentata come un indirizzo IPv4 o IPv6, e y è il numero di bit nella netmask. Se y è omesso, esso viene calcolato usando l'assunzione dal vecchio sistema di numerazione di rete basato sulla classe, eccetto che dovrà essere almeno abbastanza largo da comprendere tutti gli ottetti scritti nell'input. È un errore specificare un indirizzo di rete che ha bit settati alla destra della netmask specificata.

Tabella 8.22, «Esempi di input dicidr» mostra qualche esempio.

Tabella 8.22. Esempi di input dicidr

cidr Inputcidr Outputabbrev(cidr)
192.168.100.128/25192.168.100.128/25192.168.100.128/25
192.168/24192.168.0.0/24192.168.0/24
192.168/25192.168.0.0/25192.168.0.0/25
192.168.1192.168.1.0/24192.168.1/24
192.168192.168.0.0/24192.168.0/24
128.1128.1.0.0/16128.1/16
128128.0.0.0/16128.0/16
128.1.2128.1.2.0/24128.1.2/24
10.1.210.1.2.0/2410.1.2/24
10.110.1.0.0/1610.1/16
1010.0.0.0/810/8
10.1.2.3/3210.1.2.3/3210.1.2.3/32
2001:4f8:3:ba::/642001:4f8:3:ba::/642001:4f8:3:ba::/64
2001:4f8:3:ba:2e0:81ff:fe22:d1f1/1282001:4f8:3:ba:2e0:81ff:fe22:d1f1/1282001: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

8.9.3. inet contro cidr

La differenza essenziale tra i tipi dato inet e cidr è che inet accetta valori con bit non zero alla destra della netmask, mentre cidr invece no.

[Suggerimento]

Suggerimento

Se non piace il formato di output dei valori per inet o cidr, provare le funzioni host, text, e abbrev.

8.9.4. macaddr

Il tipo macaddr memorizza indirizzi MAC, cioè, indirizzi hardware di schede Ethernet (anche se gli indirizzi MAC vengono usati altrettanto bene per altri scopi). L'input viene accettato in diversi formati, quali:

'08:00:2b:01:02:03'
'08-00-2b-01-02-03'
'08002b:010203'
'08002b-010203'
'0800.2b01.0203'
'08002b010203'

questi esempi specificano tutti lo stesso indirizzo. Sia le maiuscole che le minuscole sono accettate per le cifre da a a f. L'output è sempre nella prima delle forme mostrate.

Lo standard IEEE Std 802-2001 specifica la senda forma mostrata (con i trattini) come la forma canonica per indirizzi MAC, e specifica la prima forma (con i due punti) come la notazione "bit-reversed", così 08-00-2b-01-02-03 = 01:00:4D:08:04:0C. Questa convenzione è largamente ignorata oggigiorno, ed è rilevante solo per protocolli di rete obsoleti (come il Token Ring). PostgreSQL non prevede il "bit-reverse", e tutti i formati accettati usano l'ordine canonico LSB.

I rimanento quattro formati di input non sono parte di nessuno standard.

Documentazione di PostgreSQL 9.0 > Il linguaggio SQL > Tipi di Dato > Tipi indirizzi di rete
PrecedenteTipi geometriciTipi stringa di bitSuccessivo