Network Address Types

Kampfgummibaerlie

Datenbank-Guru
Beiträge
734
Network Address Types wäre für mich etwas neues, und ich möchte mich entsprechend näher damit befassen.

Über den Link 8.9. Network Address Types habe ich bereits erfahren, dass es verschiedene Methoden gibt, mich würde jedoch interesseren:

1.: Kann hier jemand erklären, was die Differenz zwischen ipv4 und ipv6 ist? (ja, könnte ich einfach googeln, aber evtl. auch für andere interessant)
2.: Was genau beschreibt ein Netzwerk? Mir ist bewusst, der Host ist das Gerät, dass aufs Netzwerk zugreift, nur würde mich interessieren, wo exakt der Unterschied ist
3.: Die macadress ist meines wissens nach eine eindeutige IP für das Gerät, welches sich verbindet und "all around the world" eindeutig oder so
4.: Nachdem ich gelesen habe, dass man mit dem Spaltentyp auch arbeiten kann, würde mich interessieren, in welchem Sinne...

Ich habe irgendwann einmal IP-Adressen "gesperrt", indem ich die Homepage für die IP so und so einfach durch eine Abfrage validiert oder ausgeschlossen habe, nur halt über den Spaltentyp "Text", und einer Arbeit mit PHP, um das zugreifende Gerät zu identifizieren.

Danke, Kampfgummibaerlie
 
Werbung:
zu 1)
Ich glaube, man muss sich von Privat bis Mittelstand keine Gedanken um IPV6 machen. Viele ISP bieten das nicht mal als funktional durchgängiges Merkmal an.

zu 4)
Arbeit im Sinne von funktionalem Nutzen und eleganter Vorgehensweise ohne Konvertierung, Bugs und mühsame Workarounds wie etwa bei Vergleichen von vollständigen IP, Subnetzen usw.. Siehe z.B. Original Thread Problem der Typsicherheit.
Basiscs: Wir kennen alle die Grundrechenarten und wir kennen auch (bis zu einem gewissen Grad) die Handhabung bei unterschiedlichen Zahlenräumen. Also ganze Zahlen, dezimal Zahlen, .. und was anhand solcher Späße wie Devision by Zero Error selbst bei der PC Nutzung auffällt, es gibt da ein paar Regeln. Diese Regeln helfen, verlässliche Berechnungen anzustellen. Wesensmerkmal der Regeln: sie sind abhängig von den Werten, für Programmierer von den Typen. Die Addition von Text ergibt etwas anderes als die von Zahlen.
4+4=8
'4'+'4'='44'
Spezifische Typen ermöglichen spezifische Regeln und Operatoren.
'192.168.1.1' ist ein Text und er ist für Menschen (oder die Teilmenge der Netzwerker oder ITler) äquivalent mit '192.168.001.001'.
Postgres kennt nicht nur den Typ inet, cidr, mac... es beherrscht auch die Regeln dazu und bietet zusätzlich einen Haufen Operatoren dafür.
Man kann keine falsche IP in eine entsprechend typisierte Spalte eintragen. (Siehe anderer Thread)
Und man kann einen Haufen von Vergleichen durchführen, bei denen man sich schön einen abbrechen würde, wäre der Typ nicht definiert und die Operationen folglich unbekannt.

Hier nur mal 5 willkürliche Beispiele aus der Hilfe (die da sehr ausführlich ist)
family ( inet ) → integer

Returns the address's family: 4 for IPv4, 6 for IPv6.

family(inet '::1') → 6
host ( inet ) → text

Returns the IP address as text, ignoring the netmask.

host(inet '192.168.1.0/24') → 192.168.1.0
hostmask ( inet ) → inet

Computes the host mask for the address's network.

hostmask(inet '192.168.23.20/30') → 0.0.0.3
inet_merge ( inet, inet ) → cidr

Computes the smallest network that includes both of the given networks.

inet_merge(inet '192.168.1.5/24', inet '192.168.2.5/24') → 192.168.0.0/22
inet_same_family ( inet, inet ) → boolean

Tests whether the addresses belong to the same IP family.

inet_same_family(inet '192.168.1.5/24', inet '::1') → f
Was nebenbei ansatzweise sogar Deine Frage 1 beantwortet. Cool oder? Postgres unterscheidet für Dich, ob es eine IPv4 oder IPv6 ist. Auch wenn Du es wahrscheinlich nicht brauchen wirst.

Rest der Hilfe zu den Funktionen und Operatoren für INET & Co:
Um diese Masse an Funktionen zu Fuß anhand Stringzerlegung und Teilberechnungen durchzuführen, brauchst Du einen ziemlichen Haufen RegExp und etwas Mathe und Binär Logik.
 
Werbung:
Zurück
Oben