Bestimmen, ob zwei IP-Adressen sind auf dem gleichen Subnetz ist es, führende oder nachfolgende 0 get gelöscht von IP-Adresse?
Ich verstehen, wenn zwei IP-Adressen UND würde mit einer subnet-Maske, wenn das Ergebnis das gleiche, dann sind Sie auf dem gleichen Netzwerk. Wenn das Ergebnis anders ist, dann sind Sie auf verschiedenen Netzwerken. Meine Frage ist, wenn eine IP-Adresse, unter Auslassung einiger 0s wo kommen die extra-0s gestellt bekommen?
Zum Beispiel, wenn die Subnetzmaske 255 . 128 . 0 . 0 , und Sie haben die IP-126 . 1 . 0 . 10 und IP-126 . 127 . 0 . 1 wenn Sie einfach nur blind UND die IPs mit der Subnetz-Maske erhalten Sie unterschiedliche Ergebnisse, obwohl Sie auf dem gleichen Netzwerk.
Tut 126.1.0.10 werden 126.100.000.100 oder 126.001.000.100?
EDIT nach Lesen Antworten:
255128000000 UND 126001000010 = 1085496376*32* aber 255128000000 UND 126127000001 = 1085276323*84*
Bin ich etwas fehlt?
InformationsquelleAutor Celeritas | 2012-10-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
IPv4-Adressen werden so geschrieben, wie vier gewöhnlichen dezimalen zahlen (jeweils passend in ein byte) durch Punkte getrennt.
Den gewöhnlichen dezimalen Nummer 1 ist "eine", das kann auch geschrieben werden, 001. Aber 100 ist eine verschiedenen Zahl, nämlich die "hundert".
Die UND-operation ist immer eine bitweise UND so ist es zu verstehen, müssen Sie zuerst sehen, wie die dotted-decimal-Adresse und die Netzmaske entspricht einer rohen binären 32-bit-Adresse:
So 126.127.0.1 mit Netzmaske 255.128.0.0 ist im Subnetz 126.0.0.0/9
In der software eine in der Regel speichert IPv4-Adressen in einem einzigen 32-bit-variable -- so 126.127.0.1 ist 01111110011111110000000000000001 Binär (codiert auch 2122252289 dezimal, außer dass niemand kümmert sich, was den dezimalen Wert einer 32-bit-IP-Adresse ist), und es wird in dotted-decimal-nur, wenn es muss gezeigt werden, um menschliche Nutzer. Diese Darstellung ist, was glglgl beschreibt als Multiplikation mit 256 verschiedenen Zeiten.
Wenn Sie auch die Netzmaske ist eine 32-bit-variable (11111111100000000000000000000000 binäre oder 4286578688 dezimal), Sie können UND Sie in einem einzigen Maschinenbefehl zu Holen Sie sich die Netzwerk-Adresse 01111110000000000000000000000000.
InformationsquelleAutor Henning Makholm
Sind Sie völlig fehlt etwas: Sie müssen nicht nur die concat Ihre Ziffern zusammen, weil UND arbeitet auf binärer Ebene.
Also entweder verarbeiten Sie die IPv4-Adressen byte-Weise, oder Sie verwandeln Sie in eine Dezimalzahl, aber nicht mit Faktor 1000, sondern mit Faktor 256.
Dies ist zu sagen, statt zu tun,
sollten Sie tun
. Wenn Sie diese anwenden, um die anderen zahlen, sollten Sie erfolgreich sein.
Alternativ könnten Sie zusammen UND die 4 zahlen, getrennt, so
So erhalten Sie
126.0.0.0
für beide, so dass Sie gehören zum selben Subnetz.bitweise und-Verknüpfung der Ergebnisse. Siehe meine erweiterte Antwort.
InformationsquelleAutor glglgl
Trotz der Tatsache, dass es eine seltsame Frage, ich werde versuchen Sie beantworten Ihre spezifischen Abfrage:
Die Nummer '1' in die zweite Oktett ist wirklich eine Nummer 1, und daher ist es '001', nicht '100'.
Gesagt, dein Beispiel sollte gearbeitet haben, so vermute ich es ist etwas falsch mit Ihrer Umsetzung. Sie sollten nicht brauchen, um über padding oder so etwas. Dies sind die zahlen und bitweise UND-Verknüpfung sollte "einfach funktionieren".
Möchten Sie vielleicht mehr Details über das, was schief läuft.
InformationsquelleAutor Gian