web-dev-qa-db-fra.com

Adresse IP: 000 simplifie 0?

Je mettais mon ubuntu avec un pilote d'imprimante frère et essayais d'utiliser la propriété intellectuelle de mon imprimante pour connecter mon PC à l'imprimante.

Sur mon imprimante, l'adresse IP est 192.168.000.008. J'ai donc entré cela dans mes paramètres pour vous connecter, mais en vain.

Cependant, quand j'ai entré 192.168.0.8 ça a marché. Je peux aussi me connecter à localhost:192.168.0.8 Pour vous connecter au serveur Paramètres de l'imprimante.

Cela signifie-t-il que par défaut, si une adresse IP a 000 cela simplifie à 0? S'il y a des zéros avant un nombre, comme 008 cela simplifiera-t-il à 8?

Quelles sont les règles de simplification des adresses IP? Y a-t-il des autres que je manque? Si je me trompe, alors pourquoi la simplification 192.168.0.8 Travailler pendant que 192.168.000.008 n'a pas?

mise à jour:

Je suivais ce tutoriel ici: https://kbpdfstudio.qoppa.com/install-printer-driver-on-linux/

lorsque je suis arrivé à Step7 dans le tutoriel ci-dessus, j'ai entré Y (dans mon terminal par défaut, pas le navigateur Web @kamil Maciorowski @ T.J. Crowder), puis sélectionné "Entrez l'adresse IP" à la connexion. J'avais initialement l'inclusion de cela depuis que je voulais principalement savoir ce qui se passe avec la chose de raccourcissement de la propriété intellectuelle. Désolé pour cette information manquante! J'ai eu un temps difficile à télécharger un pilote d'imprimante pour Ubuntu, j'espère donc que cela aide certaines personnes!

Aussi ci-joint ici est la photo de mon ip weird @barlop: weird IP on brother display

33

Les zéros principaux sont non une pièce standard de la syntaxe d'adresse IPv4, et il n'existe aucune règle de "simplification" qui s'applique à tous les systèmes. Certains seront libellés de telles adresses et pour une bonne raison. Et ceux qui ne le font pas, ont deux façons d'interpréter de telles adresses.

Decimal en pointillé à zéro était quelque peu courante dans les premiers documents IPv4, et ces jours-ci, vous trouverez diverses applications et de nombreux systèmes "intégrés" (imprimantes, téléviseurs, totasters) qui vous donnent simplement une taille fixe xxx.xxx.xxx.xxx champ de saisie avec coiffure zéro. Dans ces systèmes, 008 Est juste décimal 8.

Toutefois, sur les systèmes d'exploitation PC ainsi que sur des périphériques Linux, de nombreux programmes utilisent l'analyseur d'adresses IPv4 hérité des systèmes BSD il y a plusieurs décennies, qui accepte plusieurs variantes qui ne font partie d'aucune syntaxe officielle.

Dans cet original 4.2BSD inet_aton() Fonction, les numéros individuels ne doivent pas nécessairement être décimaux: ils pourraient également être spécifiés en octale ou en hexagone, tout comme dans C et diverses autres langages de programmation. Si le numéro commence par 0x Ensuite, il est hexadécimal, et s'il commence avec juste un 0 Alors c'est octal. Et rappelez-vous que l'octal n'a que des chiffres 0-7, ce qui signifie que 08 N'est pas un nombre valide (07 est suivi de 010).

Vous avez donc deux façons différentes de gérer les adresses avec des zéros de premier plan, et ils peuvent entraîner des valeurs complètement différentes. Par exemple, si vous entrez 011, Cela signifie que 11 sur des systèmes qui pensent que sa décimale est nulle, mais cela devient 9 sur des systèmes qui pensent que c'est octal.

En conclusion: Si le système Forces Vous devez entrer des adresses de cette manière, vous pouvez généralement supposer que cela "simplifier" l'adresse en supprimant les zéros de premier plan. Mais dans toute autre situation, NE PAS Utilisez des zéros de premier plan, car ils peuvent être interprétés de manière imprévisible.

Voir aussi: https://tools.ietf.org/html/draft-main-ipaddr-text-rep-02

92
user1686

Vous pensez à une adresse IPv4 comme une chaîne, ce qui n'est pas ce qu'il est. En d'autres termes, vous savez qu'entre chaque . Le caractère est typiquement de 3 caractères, vous essayez donc de vous conformer à cela. Cependant, ce n'est pas une chaîne; C'est un numéro de 4 octets. ‭3232235528‬ est un moyen valide d'écrire l'adresse IPv4 que vous avez fournie. Le . Sont des séparateurs logiques entre les octets pour faciliter la tâche d'un être humain de déchiffrer. En les plaçant, vous représentez fondamentalement chaque octet sous forme de numéro de 1 octet et en mettant cela entre chaque . personnage.

Pour simplifier un TAD, ce que vous tapez est (où X << Y est l'opérateur de changement de vitesse gauche, indiquant le changement de numéro X à gauche par Y bits):

192 << 24 + 168 << 16 + 0 << 8 + 8 << 0 = 3232235528

Maintenant, je ne dis peut-être pas que votre interface Web du routeur (juste comme un exemple aléatoire) prendra cela (la séparation de l'octet de la demande de l'interface graphique), mais comme une exercice amusante pour vous, allez à votre ligne de commande (SH pour Linux, cmd pour Windows) et exécuter

ping 2130706433.

C'est l'équivalent de taper

ping 127.0.0.1

et il est accepté par la commande ICMP.

En tant que plus de faits bonus, cela pourrait vous aider à connaître le logiciel derrière celui-ci (car ce que vous faites sur un ordinateur est écrit dans un langage de programmation s'il n'est pas fait au niveau du matériel). Checkout Cette réponse de Stackoverflow pourquoi 08 n'est pas un littéral entier valide en Java? . Cette réponse explique ce que certaines langues de programmation interprètent le premier jour. C/C++ a également ce comportement. Et cela pourrait vous intéresser de savoir que beaucoup d'utilisation d'OS sont écrites en C (au moins, * Nix est et par extension OSX).

Tout ce qui a dit, je pense que l'utilisateur1686 a une explication et une histoire beaucoup plus explicites (ce qui est probablement plus utile).

16
searchengine27

Les autres réponses font un bon travail expliquant les différentes représentations des adresses IP comme entrée de texte. Mais la raison pour laquelle votre imprimante indique son IP comme 192.168.000.008 est probablement juste une programmation paresseuse. Lors du formatage d'un numéro en texte, il est plus simple d'assumer un nombre fixe de caractères.

2
MooseBoys