Netzmaske zu einer IP-Adresse

Alles, was PHP betrifft, kann hier besprochen werden.

Netzmaske zu einer IP-Adresse

Postby jakimo72 » 01. September 2005 23:58

Hallo kann mir jemand sagen,
wie ich in PHP zu einer bekannten IP-Adresse die Netzmaske
herausbekommen kann?

Beispiel:
zu 192.168.8.13 soll 255.255.255.0 oder /8 herauskommen,
oder gleich die Netzadresse: 192.168.8.0

Gruss Jakimo
User avatar
jakimo72
 
Posts: 151
Joined: 07. February 2005 13:25
Location: Hamburg-Barmbek

Postby Eisbaer » 02. September 2005 05:59

Eisbaer
 
Posts: 19
Joined: 08. August 2005 00:09

Postby Wiedmann » 02. September 2005 12:07

Hi Jakimo,

das man da, nur vom Host ausgehend, mehr oder weniger nur raten kann ist dir klar?

Schon bei deiner Beispiel-IP wäre das Netzwerk ja normal "192.168.8.0/24". Man beachte die "/24". Also nicht "/8".

Im Allgemeinen kannst du (vereinfacht) davon ausgehen:
Code: Select all
Class   subnet mask     bitmask   first octet
A       255.0.0.0       8         0-127
B       255.255.0.0     16        128-191
C       255.255.255.0   24        192-223

Ich schätze mal, dass bekommst du schnell in PHP-Code umgesetzt. Zusätzlich vielleicht auch noch einen Blick in PEAR::Net_IPv4 werfen.
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby jakimo72 » 02. September 2005 13:16

Nein, mir war bis jetzt nicht klar, dass man nur raten kann,
ich habe gehofft, dass man die Netzwerkadresse irgendwie
herankommen kann. (Natürlich kann man die nicht berechnnen,
sondern muss sie irgendwie abfragen.)

Das mit /8 und /24 war nur eine kleine Verwechlung, war mir
auch schon aufgefallen.

Die Unterteilung in Class A, B und C-Netze ist in Zeiten von CIDR
wenig nützlich.
User avatar
jakimo72
 
Posts: 151
Joined: 07. February 2005 13:25
Location: Hamburg-Barmbek

Postby Wiedmann » 02. September 2005 13:42

Zumindest beschreibt diese Tabelle den "Standard", von dem man ja meist ausgehen kann.

Abweichende IP-Prefixe (CCID) von diesem "Standard" beschrieben ja mehr oder weniger nur ein Subnetz inerhalb dieser Class.

Für Router ist es natürlich einfacher classless zu adressieren, womit wir bei CCID sind und deinem Problem.

In welchem Netz sich eine IP definitiv befindet, weiss also nur der Router der für dieses Netz, wohin die IP gehört, zuständig ist. Im lokalen LAN könntest du da noch ein "ifconfig", "route print" o.ä. machen (je nach OS) und die Antwort auswerten. Für öffentliche Adressen gibt es da noch die Abfrage bei RIPE oder besser RADB.
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany


Return to PHP

Who is online

Users browsing this forum: No registered users and 60 guests