Ich habe ein Sicherheitssystem und die Netzwerkeinstellung erlaubt nur eine dreistellige IP-Adresse. Ich kann es nicht einstellen 192.168.2.100
, sondern muss es verwenden 192.168.002.100
.
Unterscheiden sich diese beiden IP-Adressen? Muss ich das LAN meines Routers so einstellen, dass alles 192.168.xxx.xxx
funktioniert? Ich kann keine soliden Informationen darüber finden.
networking
ip
Brock Vond
quelle
quelle
192.168.2.100
, sich aber beschweren), sollten Sie sich mit dem Anbieter in Verbindung setzen (Wie vertrauenswürdig ist das Sicherheitssystem, wenn seine Eingabe validiert wird?) ist so beschissen?)0
s gültig , aber ich bin auf einige Anwendungen gestoßen, die eine IP-Adresse nicht unterstützen, die nicht 3 Stellen in jedem Oktett hatte.192.168.002.100
ist , wie Ihr Werkzeug darstellt ,0xc0a80264
/3232236132
/192.168.2.100
, dann ist es das Gleiche.Antworten:
Das hängt vom Werkzeug ab.
Für die meisten Zwecke sind die beiden gleich, aber nicht immer.
Wenn Sie beispielsweise eine dreistellige Zahl verwenden, die mit einer Null beginnt (oder eine zweistellige Zahl, die mit einer Null beginnt, danke @ Dietrich-Epp), geht ping davon aus, dass die Zahlen oktal sind.
quelle
inet_addr()
Angenommen, die gesamte von Ihnen verwendete Software verwendet Punkt-Dezimal und Subnetze korrekt. Ja, sie sind identisch.
192.168.0.1 ist beispielsweise nur die freundliche Punkt-Dezimal-Notation des Punkt-Binärwerts 11000000.10101000.00000000.00000001.
Unabhängig davon, ob Sie es als 192.168.0.1 oder 192.168.000.001 eingeben, sind beide gleich 11000000.10101000.00000000000001
quelle
C0A80001
3232235521
Dies hängt von den Tools oder Funktionen ab, die ein bestimmtes Programm zum Analysieren der angegebenen Adresse verwendet. Sowohl Microsoft als auch Linux und andere Betriebssysteme verwenden eine POSIX- kompatible
inet_addr()
Routine zum Parsen von Adressen.Aus diesem Grund erfordert Ihr spezielles System möglicherweise eine dreistellige Dezimalschreibweise für jedes Oktett. Dies ist jedoch nicht allgemein gültig. Achten Sie darauf, dass die richtige IP-Adresse eingegeben wird.
Natürlich funktionieren nur gültige Nummern für jeden Typ. Außerhalb des Bereichs liegende Oktal-, Hexa- oder Dezimalzahlen schlagen ebenfalls fehl oder verursachen Probleme. Octal 088, Hex 0xGG oder Decimal 280 sind ungültige Beispiele.
quelle
Wie Lightness Races in Orbit und andere darauf hingewiesen haben,
Die
INET(3)
Manpage beschreibtinet_addr
und beschreibtinet_aton
die Standardfunktionen, mit denen die "IPv4-Zahlen-und-Punkte-Notation in Binärform" konvertiert wird. Es sagtAlso technisch gesehen, NEIN , ist eine IP-Adresse mit führenden Nullen nicht (immer) dieselbe wie eine ohne führende Nullen. In Ihrem Fall jedoch
192.168.2.100
und192.168.002.100
ist identisch, da002 == 2
.Jede Benutzeroberfläche, für die jede Komponente genau drei Zeichen lang sein muss und die falsch angeforderte führende Null enthält, ist fehlerhaft.
quelle
Einige Implementierungen betrachten Oktette mit führenden Nullen als dezimal, andere als oktal. Solange sich das Oktett im Bereich von 0 bis 7 befindet, macht dies keinen Unterschied. So würde zum Beispiel
192.168.002.100
wie192.168.2.100
in beiden Implementierungen interpretiert .Wenn Sie jedoch eine Adresse eingeben, kann
192.168.010.100
diese je nach Implementierung als entweder192.168.10.100
oder interpretiert werden192.168.8.100
. Es ist auch nicht unwahrscheinlich, dass Implementierungen existieren, bei denen führende Nullen als Syntaxfehler angesehen werden. Darüber hinaus gibt es Szenarien, in denen Software möglicherweise darauf besteht, dass Sie die kanonische Darstellung aus dem einen oder anderen Grund verwenden müssen. Aus all diesen Gründen empfehle ich, beim Schreiben einer IP-Adresse führende Nullen zu vermeiden.Wenn Sie Software schreiben, die eine IP-Adresse analysieren muss, würde ich empfehlen, führende Nullen zu akzeptieren, aber in diesem Fall eine Warnung an eine geeignete Stelle auszugeben.
Etwas verwandt gibt es Implementierungen, die es Ihnen ermöglichen, weniger als vier Komponenten in der gepunkteten Notation zu haben. Wenn es weniger als vier Komponenten gibt, hat die letzte Komponente mehr als 8 Bits und die früheren Komponenten haben genau 8 Bits. Zum Beispiel
192.168.612
wäre eigentlich eine gültige Schreibweise192.168.2.100
. Die Verwendung dieser Notation wird jedoch nicht empfohlen.quelle
Nur ein kleiner Tipp: In einigen Fällen ist es wichtig, in den IP-Adressen Null-Präfixe zu verwenden. Ein Beispiel ist Apache .htaccess Deny Rules.
Wenn du so etwas verwendest
Apache ist so dumm, dass auch der Zugriff von den folgenden IPs blockiert wird:
111.22.33.22
11.22.33.221
211,22,33,221
und im allgemeinen jede IP - Adresse , die beinhaltet 11.22.33.22
Um sicherzugehen, dass Sie keine IP-Adressen blockieren, die Sie nicht blockieren wollten, sollten Sie Folgendes verwenden:
um sicherzugehen, dass Apache den Zugriff nur von der IP-Adresse 11.22.33.22 blockiert.
quelle
Sei vorsichtig damit. es sollte das gleiche sein , aber es ist NICHT !
Ich konnte keine Erklärung dafür finden, aber ich kann definitiv sagen, dass auf Windows und Linux IP-Adressen mit und ohne führende Nullen nicht gleich sind! Vielleicht hat dies mit der Konvertierung von anderen Formaten wie Hex oder Binär zu tun.
Aus meiner Erfahrung mit Windows und Linux ist es nicht toolabhängig, sondern os-abhängig, da ich mit IPS wie 10.08.03.100 ein Problem habe:
linux / debian7 / 8: gleiche ergebnisse mit tool "ping" und "snmpget"
windows7 / 8/10: gleiche ergebnisse mit tool "ping" und "telnet"
(Entschuldigung, ich habe kein englisches Fenster zur Hand, der Fehler sagt, dass der Host nicht gefunden werden konnte.)
quelle
Die beiden IP-Adressen sind unterschiedlich.
Jedoch:
Wenn das verwirrend klingt, liegt es daran, dass es keinen Standard gibt, der regelt, wie IP-Adressen geschrieben werden sollen, sodass verschiedene Programmierer zu verschiedenen Zeitpunkten in der Geschichte und auf verschiedenen Plattformen unterschiedliche Vorstellungen hatten, was zu tun ist.
IP-Adressen sind eigentlich binär und die IP-Adressen werden in der Regel mit einer gepunkteten Dezimalschreibweise dargestellt. Software kann verschiedene numerische Basen (dh Dezimal, Oktal, Hex) akzeptieren und die Dinge auf verschiedene Weise interpretieren, je nachdem, wie Sie sie schreiben. Wie Sie schreiben, kann der Software mitteilen, auf welcher Basis Sie schreiben.
Ich rate Ihnen: Verwenden Sie keine führenden Nullen, wenn Sie eine gepunktete Dezimalschreibweise verwenden möchten. Einige Software-Programme betrachten dieses Flag als Zeichen dafür, dass Sie eine Oktalzahl eingeben. Wenn Sie eine Dezimalzahl eingeben möchten, erhalten Sie nicht die erwarteten Ergebnisse.
Ich habe eine ähnliche Frage gestellt und einige gute Antworten erhalten. Wenn Sie sich also über RFCs informieren möchten, gibt es dort gute Informationen.
quelle
Es sollte so oder so funktionieren. Sie können sogar mit dreistelligen Zahlen pingen und der Computer wird die IP-Adresse verstehen.
Edit : Windows liest es als Oktal, dies funktioniert nur unter Linux.
quelle
Die führende Null ist bedeutungslos. Die Oktette sind (Basis-10) 0-255 Zahlen, keine Zeichenketten.
Da ich nicht genau weiß, was Sie fragen (oder was Sie fragen müssen :)): Das heißt, die IP-Nummer muss sich im selben Subnetz wie Ihr Netzwerk befinden. Wenn Sie 11.12.13.14 in einer Subnetzmaske von 192.168.0.0 auswählen, kann dieses Gerät nicht mit diesem Subnetz kommunizieren oder es verwenden.
quelle
inet_addr
und die Hunderttausende von Tools, die für die Adressanalyse darauf angewiesen sind, nehmen eine führende 0 an, um zu bedeuten, dass das Byte in der Basis-8-Notation angegeben ist. Das ist kaum "bedeutungslos".