PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : IP-Array - Host- und Router-IP unterscheiden


Diabolo
18.12.2004, 21:38
Hallo zusammen,

ich war mir nicht sicher ob ich in API oder hier poste und hoffe mal daß die Münze auf die richtige Seite gefallen ist.

Ich habe mir mittels GetHostByName den Pointer auf das IP-Array geholt und dann die IPs ermittelt.

Wie kann ich dann unterscheiden, ob es sich um die IP des Localhost oder die des Routers handelt ?

Danke,

Diabolo


Felix Kaiser
19.12.2004, 11:09
Das erkennst du an der IP selbst. Es gibt Adressbereiche, die für die Verwendung in lokalen Netzen vorgesehen sind:
10.0.0.0/8, 127.0.0.0/8, 169.254.0.0/16, 172.16.0.0/12, 192.168.0.0/16

Diabolo
19.12.2004, 18:12
Darauf möchte ich mich nur ungerne verlassen, weil die IP-Bereiche auch manuell eingestellt werden können.


Gibt es ein anderes Identifizierungsmerkmal ?

Xpyder
20.12.2004, 08:22
@Felix Kaiser: Weiß jetzt grad nicht, ob die Zahl hinter
dem Schrägstrich (/) jeweils die Bits der möglichen
Netmask sind (also Anzahl mögliche Adressen...)
Wenn ja, dann muß imo bei 10.0.0.0 eine 24 stehen. (A-Netz)
(So hatte ich das mal gelernt) und bei 127.0.0.0 auch.
(Weil 127.x.x.x ja immer der Computer selbst ist, egal,
was die anderen Werte sind...)
Kann mich auch irren - hoffe, ich erzähl jetzt keinen
Scheiß...


@Diabolo: Vertrau den Zahlen ruhig! JEDE Netzwerksoftware
und vor allem auch JEDE Netzwerkhardware benutzt diese
Werte auch - IP-Adressen sind nunmal die einzige Adresse,
die ein "Node" im Netzwerk hat. (Im allgemeinen weiß man
aber, wenn man ein Netzwerk einrichtet, welche IP die
einzelnen Knoten haben - weil man die ja selbst bestimmt.)
Ansonsten ist die einzige Möglichkeit, über "höhere"
Protokolle irgendwie eine ID abzufragen oder so. Zum
Beispiel die MAC-Adresse...
Will sagen: Wenn einer DIESE Zahlen benutzt, kommt er
damit auf keinen Fall ins Internet...
(Andersrum gehts natürlich - d.h. man kann THEORETISCH auch
ein LAN einrichten, was IPs benutzt, die garnicht für LAN
vorgesehen sind. Aber meines Erachtens geht das nur mit
Software Marke Eigenbau (und wenn die Hardware solche
Scherze mitmacht). Und außerdem kann man dieses LAN dann
nicht mehr mit dem restlichen Netz verbinden...)

Jan Krüger
20.12.2004, 12:38
Gibt es ein anderes Identifizierungsmerkmal ?
Entweder verlässt du dich darauf, dass der Netzadministrator vernünftig ist und die reservierten IP-Ranges (siehe Felix' Beitrag) benutzt hat, oder du sendest eine Anfrage nach draußen an einen Server, der dir deine extern sichtbare Adresse verrät.

Weiß jetzt grad nicht, ob die Zahl hinter
dem Schrägstrich (/) jeweils die Bits der möglichen
Netmask sind (also Anzahl mögliche Adressen...)
Wenn ja, dann muß imo bei 10.0.0.0 eine 24 stehen. (A-Netz)
Genau andersrum: 8 bedeutet, die ersten 8 Bit sind fest und der Rest variiert (deine Erinnerung täuscht dich also nicht, aber die Zahlen von Felix sind trotzdem richtig). Die Classes A, B, C benutzt man inzwischen nicht mehr zur Angabe von Netzgrößen (ist technisch nicht mehr sinnvoll), sondern verwendet diese CIDR-Angaben (CIDR = Classless Inter-Domain Routing).

(Andersrum gehts natürlich - d.h. man kann THEORETISCH auch
ein LAN einrichten, was IPs benutzt, die garnicht für LAN
vorgesehen sind. Aber meines Erachtens geht das nur mit
Software Marke Eigenbau (und wenn die Hardware solche
Scherze mitmacht).
Ich glaube, genau das war das Hauptproblem -- und leider, leider kann man in LANs beliebige IP-Adresse benutzen, ohne dass sich das Betriebssystem beschwert. Und wenn man diesen Adressbereich durch NAT nach außen hin nie sichtbar macht, kann man aus dem LAN zwar nicht auf diesen Adressbereich im echten Internet zugreifen, aber sonst funktioniert alles.
Naja, gehen wir nicht gleich vom Schlimmsten aus.

Diabolo
25.12.2004, 16:34
Erstmal frohe Weihnachten zusammen,


sorry wenn ich jetzt erst antworte, ich war krank gewesen und mit Stirnhöhlenvereiterung ist selbst das Aufstehen schwer. :(

Hmm, dann werde ich Euch mal vertrauen und die in einer Routine abfragen lassen, welche IP-Ranges belegt sind und dementsprechend in meinem Code weiterbehandeln.

Dazu nochmal eine Frage : laut den Beiträgen (und der vorwiegenden Meinung :p ) sind die Ranges

10.0.0.0/8, 127.0.0.0/8, 169.254.0.0/16, 172.16.0.0/12, 192.168.0.0/16
für Netzwerke vorgesehen. Die Zahlen hinter dem Slash interessieren mich näher.

Bedeuten sie, daß das die Bitgröße einer IP-Adresse ist ? Kann ich mich darauf verlassen, also indem ich die Bitgröße abfrage und damit weiterarbeite oder kann die IP mit der der Rechner ins Netz geht ebenfalls 8/12/16 Bit groß sein ?

Oder steh ich total im Wald und hab alles durcheinandergeworfen, was ein Kaufmann nur so durcheinander werfen kann ? :rolleyes:

Liebe Grüße,

Diabolo

Jan Krüger
27.12.2004, 09:42
Ich glaube, ich hab's im letzten Beitrag erklärt.
10.0.0.0/8 bedeutet, dass zu diesem Range alle Adressen gehören, deren erste 8 Bit mit den angegebenen übereinstimmen, also hier 10.0.0.0 - 10.255.255.255. Stände da 10.0.0.0/12, dann wären es die Adressen 10.0.0.0 - 10.15.255.255.

Diabolo
18.02.2005, 23:23
So, ist zwar schon etwas her aber ich habs dann folgendermassen gemacht (Eure Posts haben mich ja hingeführt) :


1. IP-Array ermittelt und IPs eingelesen
2. Mit Select Case geprüft welche IPs es sind (10er, 172er, etc.)
3. Dementsprechend dann mit dem Proggi weitergearbeitet

Danke für Euer Hilfe nochmal, funzt einwandfrei (auf verschiendenen Rechnern und Netzwerken getestet).