95 votes

Les adresses IP avec et sans zéros initiaux sont-elles les mêmes ?

J'ai un système de sécurité et le paramètre réseau n'autorise qu'une adresse IP à trois chiffres. Je ne peux pas le régler sur 192.168.2.100 à la place, je dois utiliser 192.168.002.100 .

Ces deux adresses IP sont-elles différentes ? Dois-je configurer le réseau local de mon routeur pour qu'il soit tout à fait 192.168.xxx.xxx pour que cela fonctionne correctement ? Je ne trouve aucune information solide à ce sujet.

104voto

Greenstone Walker Points 1032

Cela dépend de l'outil.

Dans la plupart des cas, les deux seront identiques, mais pas toujours.

Par exemple, si vous utilisez un nombre commençant par un zéro, ping supposera que le nombre est octal.

Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.

C:\Users>ping 011.012.013.014

Pinging 9.10.11.12 with 32 bytes of data:
Request timed out.
Request timed out.
Request timed out.
Request timed out.

Ping statistics for 9.10.11.12:
    Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),

66voto

Austin T French Points 10253

En supposant que tous les logiciels que vous utilisez utilisent le point-décimal et le sous-réseau correctement, oui, ils sont identiques.

192.168.0.1, par exemple, n'est que la notation amicale point-décimale de la valeur point-binaire 11000000.10101000.00000000.00000001.

Que vous tapiez 192.168.0.1 ou 192.168.000.001, ils sont tous deux égaux à 11000000.10101000.00000000.00000001.

37voto

cde Points 1743

Cela dépend des outils ou des fonctions qu'un programme donné utilise pour analyser l'adresse donnée. Microsoft et Linux, ainsi que d'autres systèmes d'exploitation, utilisent tous deux une fonction POSIX compatible inet_addr() pour l'analyse des adresses.

De nombreux programmes TCP/IP tels que Ping et FTP utilisent la fonction inet_addr() sockets pour traduire les chaînes d'adresses IP en adresses de 4 octets. Cette fonction accepte une adresse IP en notation standard décimale, octale et hexadécimale.
Microsoft KB115388 Ping et FTP résolvent l'adresse IP avec un zéro en tête comme un octal

La fonction inet_addr() convertit l'adresse d'hôte Internet cp de la notation numérique IPv4 en données binaires dans l'ordre des octets du réseau.

Dans toutes les formes ci-dessus, les composants de l'adresse en pointillés peuvent être spécifiés en décimal, en octal (avec un 0 en tête) ou en hexadécimal (avec un 0X en tête). Les adresses sous l'une de ces formes sont collectivement appelées IPv4 notation en chiffres et en points. La forme qui utilise exactement quatre nombres décimaux est appelée notation décimale pointillée IPv4 (ou parfois : notation quadratique pointillée IPv4).
inet_addr(3) : Routines de changement d'adresse Internet - Page de manuel Linux

Ainsi, votre système spécifique peut exiger une notation décimale à trois chiffres pour chaque octet, mais ce n'est pas universel, et il faut veiller à ce que l'adresse IP correcte soit saisie.

Bien entendu, seuls les numéros valides pour chaque type fonctionneront. Les nombres octaux, hexagonaux ou décimaux qui ne sont pas dans la fourchette autorisée ne fonctionneront pas non plus ou poseront des problèmes. Octal 088, Hex 0xGG, ou Décimal 280 sont tous des exemples non valides.

14voto

Timmy Points 3625

Comme La course à la légèreté en orbite et d'autres l'ont souligné,

Le site INET(3) page de manuel décrit inet_addr et inet_aton les fonctions standard utilisées pour convertir la "notation des nombres et des points de l'IPv4 en forme binaire". Il est dit

...les composants de l'adresse en pointillés peuvent être spécifiés en décimal, octal (avec un 0 en tête) ou hexadécimale, avec un 0X en tête).

Donc techniquement, NON En effet, une adresse IP avec des zéros en tête n'est pas (toujours) la même qu'une adresse sans zéros en tête. Dans votre cas cependant, 192.168.2.100 et 192.168.002.100 sont identiques, car 002 == 2 .

Toute interface utilisateur qui exige que chaque composant ait une longueur de trois caractères exactement, avec des zéros en tête incorrectement requis, est cassée.

6voto

kasperd Points 2801

Certaines implémentations considèrent les octets avec des zéros en tête comme des décimales, d'autres les considèrent comme des octales. Tant que l'octet est compris entre 0 et 7, cela ne fait pas de différence. Ainsi, par exemple 192.168.002.100 être interprété comme 192.168.2.100 dans les deux implémentations.

Mais si vous deviez taper une adresse comme 192.168.010.100 il pourrait être interprété comme 192.168.10.100 ou 192.168.8.100 selon l'implémentation. Il n'est pas non plus improbable qu'il existe des implémentations qui considéreraient les zéros en tête comme une erreur de syntaxe. En outre, il existe des scénarios dans lesquels les logiciels peuvent insister pour que vous utilisiez la représentation canonique pour une raison ou une autre. Pour toutes ces raisons, je recommande d'éviter les zéros en tête lorsque vous écrivez une adresse IP.

Si vous écrivez un logiciel qui doit analyser une adresse IP, je vous recommande d'accepter les zéros de tête, mais d'envoyer un avertissement à un endroit approprié lorsque cela se produit.

Dans le même ordre d'idées, il existe des implémentations qui permettent d'avoir moins de quatre composants dans la notation en pointillé. Lorsqu'il y a moins de quatre composants, le dernier composant a plus de 8 bits et les composants précédents ont exactement 8 bits. Par exemple 192.168.612 serait en fait une façon valide d'écrire 192.168.2.100 . Mais là encore, l'utilisation de cette notation n'est pas recommandée.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X