web-dev-qa-db-fra.com

Pourquoi tous les zéros de la partie hôte de l'adresse IP ne peuvent-ils pas être utilisés pour un hôte?

Je sais que si j'ai un réseau 83.23.159.0/24 Ensuite, j'ai 254 adresses IP hôte utilisables parce que:

83.23.159.0      (in binary: Host portion all zeros) is the subnet address
83.23.159.1-254  are Host addresses
83.23.159.255    (in binary: Host portion all ones) is the broadcast address

Je comprends l'utilisation d'une adresse de diffusion, mais je ne comprends pas ce que l'adresse de sous-réseau n'est jamais utilisée. Je ne vois aucune raison pour que l'adresse de destination d'une paquetière IP serait définie sur l'adresse de sous-réseau, alors pourquoi le sous-réseau lui-même a-t-il besoin d'une adresse s'il ne sera jamais le point final pour un flux IP? Pour moi, il semble que des déchets ne permettent pas à cette adresse d'être utilisée comme adresse hôte.

Pour résumer, mes questions sont:

  1. Une destination de packet IP est-elle jamais définie sur l'adresse IP de sous-réseau?
  2. Si oui, dans quel cas et pourquoi?
  3. Si non, alors pourquoi ne pas libérer cette adresse pour un hôte à utiliser?
21
Grezzo

Une destination de packet IP est-elle jamais définie sur l'adresse IP de sous-réseau?

Oui. C'est une adresse IP valide afin qu'elle puisse être utilisée.

Si oui, dans quel cas et pourquoi?

C'est simplement l'un des 255 IPS utilisables dans A/24

Si non, alors pourquoi ne pas libérer cette adresse pour un hôte à utiliser?

Si vous avez Ancient ​​Hardware, vous devez vérifier s'il utilise la première ou la dernière adresse comme adresse réseau. (0,0 ou .255 pour les réseaux avec masque ff.ff.ff.00)

Cela en fait une bonne habitude de sauter cette adresse IP. Et les habitudes apprises depuis longtemps sont difficiles à ignorer.

Et les personnes qui ne connaissent pas l'arrière-plan ne l'utilisent pas 'car les autres ne l'utilisent pas non plus, il doit donc être faux de l'utiliser' ou parce qu'ils ne réalisent pas que "0" peut être un premier numéro.

[EDIT] GREZZO vient de le tester sur Windows XP Lorsque Windows Network GUI a empêché ce paramètre. Windows 7 a le même comportement. Je l'ai ensuite essayé sur un hôte non-Windows où il vient de Fonctionne. Si vous utilisez Windows, vous devrez peut-être configurer manuellement votre réseau via ipconfig pour la définir à tous les zéros.

192.168.1.0_on_win7192.168.1.0_on_FreeBSD

[Modifier 2]

Plus je travaille plus longtemps avec cela, plus je reçois.

RFC4632 - Routage inter-Domain sans classe ne semble pas l'interdire, mais il ne lui permet pas non plus explicitement.

ce poste serveurfault mentionne: "Pour des raisons historiques de nombreux OSES Traitez la première adresse en tant que diffusion. Par exemple, Pinging XXX0 de OS X, Linux et Solaris sur mon local (/ 24 ) Network reçoit des réponses. Windows ne vous permet pas de ping la première adresse par défaut, mais vous pourrez peut-être l'activer à l'aide de la méthode SETIPusezerOrocrocadcast WMI. Je me demande si vous pouviez vous échapper .0 En tant qu'adresse de l'hôte sur un. Windows Network. ".

C'est la même question, mais pas une réponse.

L'adresse réseau est également utilisée dans les tables de routage. Mais je ne vois pas pourquoi cela ne fonctionnerait pas en raison de cela. La même notation dans les tables de routage irait à la bonne voie. Une fois sur le bon réseau, il arriverait sur un PC avec IP 0.

(Tout cela pour un 192.168.1/24.
[.____] Si vous avez utilisé 192.168.0/23, alors 192.168.1.0 serait une valeur valide et sûre au milieu de la gamme)

[Modifier 3]

Un lien de plus vers la même question. Il semble un peu populaire sur l'échange de pile:

https://superuser.com/questions/379451/whay-can-a-network-address-not-be-a-valid-host-address

Et une pensée:

Destination_ip est probablement ET Ed avec le mât de réseau (une opération rapide dans le matériel) avant d'être comparé aux entrées dans les tables de routage. Mais:

(Une IP semi-aléatoire) 192.168.0.42 et 255.255.255.0 donnerait 192.168.0.0
Mais 192.168.0.0 et 255.255.2555.0 donneraient également lieu à 192.168.0.0


[Edit 4 - longtemps après que cette réponse ait été écrite - je pourrais avoir besoin de réécrire l'ensemble de l'article en raison de : cette nouvelle information ]

rfc92 États à la page 3 que:

  In certain contexts, it is useful to have fixed addresses with
  functional significance rather than as identifiers of specific
  hosts.  When such usage is called for, the address zero is to be
  interpreted as meaning "this", as in "this network".  The address
  of all ones are to be interpreted as meaning "all", as in "all
  hosts".  For example, the address 128.9.255.255 could be
  interpreted as meaning all hosts on the network 128.9.  Or, the
  address 0.0.0.37 could be interpreted as meaning Host 37 on this
  network.

Citant @ ylearn sur notre site de réseauNEnfrierering

Je crois que la première documentation de celle-ci vient de RFC95 Quelles références RFC94 (qui obsolètes RFC92 ci-dessus mais utilise la même langue pour des adresses spéciales):

     It is useful to preserve and extend the interpretation of these
     special addresses in subnetted networks.  This means the values
     of all zeros and all ones in the subnet field should not be
     assigned to actual (physical) subnets.
12
Hennes

Une adresse avec une partie d'hôte à zéro fait référence au réseau lui-même, plutôt qu'à un hôte particulier.

Historiquement, cette adresse hôte zéro a servi d'adresse de diffusion alternative et les appareils répondent toujours de cette façon.

Donc, je dois être en désaccord avec d'autres réponses: Non, zéro n'est pas une adresse hôte parfaitement utilisable. Si vous avez besoin de plus de 254 adresses, vous devez créer un sous-réseau plus grand.

Regardez, mon routeur Linksys, dont l'adresse est .1 répond aux pinges de .0. (Le masque Netmask est 255.255.255.0, donc le dernier octet correspond au numéro d'hôte.)

webserver:~# ping  192.168.1.0
Do you want to ping broadcast? Then -b
webserver:~# ping -b 192.168.1.0
WARNING: pinging broadcast address
PING 192.168.1.0 (192.168.1.0) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=1.46 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=0.812 ms
64 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=0.819 ms

Si j'ai assigné le .0 Adresse à certains hôtes, je ne serais pas en mesure de le ping sans le routeur avec ses réponses. Et comme vous pouvez le constater, certains outils comme la version de cette routeur de ping traite 0 comme une émission.

Vous pouvez plier les règles, si vous êtes prêt à corriger tous les piles de protocole et autres logiciels qui sont affectés par une telle flexion. Sinon, collez-vous aux règles.

Cas en point.

J'ai travaillé dans une entreprise qui a conçu un nœud de réseau construit dans un châssis de 14 emplacements, en fonctionnant de nombreuses images de système d'exploitation indépendantes sur plusieurs types de cartes, toutes communiquant via un fond de panier. Il y avait une installation de mise en réseau sur le fond de panier avec une convention que 127.X.0.Y est l'adresse IP interne du nœud Y dans la fente X, toutes numérotées à partir de 1.

Nous avons essentiellement sousblipé l'adresse de bouclage à nos propres fins. Pour le faire fonctionner, nous avons dû corriger le noyau Linux ici et là, et IIRC, un peu d'espace utilisateur.

Étant donné que ce réseau n'était utilisé que dans la case et la plupart des programmes nécessitant une utilisation en boucle d'utilisation de l'127.0.* Réseau (et en fait l'adresse spécifique 127.0.0.1) qui a continué à travailler normalement, tout était cool.

15
Kaz

en fait, cela dépend de la masque Netmas, par exemple, pour le réseau 83.23.159.0/23, 83.23.159.0 est une adresse IP parfaitement utilisable.

7
m0ntassar

On dirait qu'il y a un peu de confusion ici avec la mise en réseau de base.

Le "matériel antique" mentionné dans l'une des réponses n'utiliserait pas de sous-réseau IP - à l'aide de l'adresse IP X.x.x.0 avec une configuration réseau pour A/24 CIDR ou 255.255.255.0 Masque de sous-réseau est un problème différent.

Sous-réseau IP zéro

  • Le matériel plus ancien n'utiliserait pas de sous-réseau IP zéro - ce qui signifie qu'ils n'utiliseraient pas le premier sous-réseau sur un système de réseau multi-sous-réseau. Donc, sur le réseau A/23 ou 255.255.254.0 Le sous-réseau x.x.x.0 et toutes les adresses de ce type ne serait pas utilisé. Les routeurs modernes ne disposent pas de cette restriction mais peuvent être configurés pour utiliser cet ancien modèle I.E. Ne pas utiliser de sous-réseau zéro, si vous le souhaitez.

Adresses IP d'hôte utilisables sur un sous-réseau

  • Réseautage de base:
    • Avec/24 I.e. Masque de sous-réseau de 255.255.255.0
    • x.x.x.0 est réservé comme adresse réseau. Les routeurs et les protocoles de routage (EIGRP, RIP2, etc.) utilisent l'adresse réseau pour définir les segments de réseau pour déplacer des paquets dans les limites du réseau réseau.
    • x.x.x.255 est réservé à l'adresse de diffusion
    • Il est courant d'utiliser les adresses .1 ou .254 sur des routeurs de sorte que 253 numéros IP utilisables.

L'adresse réseau et l'adresse de diffusion sont réservées et ne peuvent pas être attribuées à un périphérique. Utiliser X.x.x.0 pour une adresse d'hôte sur un système A/24 est incorrect. Même si Linux vous permet d'utiliser, cela ne signifie pas que c'est vrai, cela signifie simplement que Linux pense que vous savez ce que vous faites.

Si votre système vous permettait d'affecter x.x.x.0 comme une adresse IP4 à un hôte et il semble fonctionner - des chances sont que cet hôte particulier reçoit tout le trafic ciblé à n'importe quel périphérique de ce réseau, de sorte que sa mise en réseau ne fonctionne probablement pas de manière optimale.

3
TheSteven

RFC 1122 ("Configuration des hôtes Internet - Les couches de communication") l'interdit:

Les adresses IP ne sont pas autorisées à avoir la valeur 0 ou -1 pour l'un des champs <numéro de numéro d'hôte>, <numéro de sous-réseau>.

3
Bryan

En fait, la réponse est la base du sous-réseau. L'adresse IP "Tout zéros" de votre sous-réseau combiné à l'ID de réseau est utilisée pour calculer où le paquet doit être envoyé.

Dans votre exemple, vous avez un sous-réseau de 255.255.255.0. Tout dispositif qui connaît le protocole TCP/IP utilisera le masque Netmas associé à l'adresse IP pour calculer si le paquet est destiné au réseau local (en effectuant une logique et une opération) ou qu'il doit être envoyé auge la passerelle/le routeur.

Je suppose donc que la raison pour laquelle la propriété intellectuelle ne peut pas être utilisée est parce qu'elle est déjà utilisée pour "définir" les limites du réseau avec le masque Netmask par conception.

0
Goez

Il a été demandé que je reposte ma réponse de NetworkEngineering , donc je vais le faire avec quelques modifications pour ce site.

Dans RFC919 , il fait référence de l'acceptation générale de l'adresse réseau:

However, as a notational convention, we refer to
networks (as opposed to hosts) by using addresses with zero fields.
For example, 36.0.0.0 means "network number 36"

Cela fournit une convention qui devrait clarifier notre compréhension si quelqu'un parler de " 10.1.2.0 ", comme le réseau et non un hôte sur le réseau.

De là, l'utilisation de " 0 " dans un addresss IP a été définie en RFC92 et reportés dans les RFCs successifs:

Special Addresses:

  In certain contexts, it is useful to have fixed addresses with
  functional significance rather than as identifiers of specific
  hosts.  When such usage is called for, the address zero is to be
  interpreted as meaning "this", as in "this network".  The address
  of all ones are to be interpreted as meaning "all", as in "all
  hosts".  For example, the address 128.9.255.255 could be
  interpreted as meaning all hosts on the network 128.9.  Or, the
  address 0.0.0.37 could be interpreted as meaning Host 37 on this
  network.

Cet exemple prévoit un hôte spécifique sur le réseau actuel (0.0.0.37) en utilisant 0 dans les parties du réseau de l'adresse, mais il ne précise pas vraiment le cas opposé (0 de dans la partie hôte de l'adresse). Cependant, comme il l'a fait définir " 0 " comme " cela. "

Dans RFC106 l'adresse " 0.0.0.0 " a été clairement documentée comme " cet hôte dans ce réseau ":

     (a)   {0, 0}

        This Host on this network.  Can only be used as a source
        address (see note later).

Étant donné que tous les zéros pour la partie hôte de l'adresse signifiait " cette hôte ", il en découle logiquement qu'il est inutilisable comme adresse de l'hôte.

Pour en revenir à répondre directement à vos questions:

  1. Une destination de packet IP est-elle jamais définie sur l'adresse IP de sous-réseau?
  2. Si oui, dans quel cas et pourquoi?
  3. Si non, alors pourquoi ne pas libérer cette adresse pour un hôte à utiliser?

D'après ce que je trouve dans les RFCs, cela ne devrait pas être utilisé. Je dois admettre qu'il est pas aussi clairement spécifié que je le voudrais, mais c'est tout commun dans de nombreuses normes. Lorsque les normes sont un peu moins ferme sur un point, l'industrie semble alors " Settle " dans une interprétation généralement acceptée.

De plus, en fonction du contenu du logiciel peut être écrit RFCs à supposer que cette adresse est utilisée pour traiter le réseau et non pas un hôte particulier. Ou encore plus littéralement comme une sorte de " réalimentation " (à savoir cet hôte dans le réseau spécifié).

Alors pourquoi certains systèmes d'exploitation permettent clairement l'utilisation de ce? J'imagine que beaucoup de choses qu'il se résume à temps développeur/ressources ou personne n'a vraiment pensé à ajouter le contrôle de validité. La logique doit être un peu plus impliqué que " si elle se termine par 0 " comme un sous-réseau plus grande (a/23 ou plus) contiendra l'adresse IP valide de 0,255 et .0 (c.-à-10.1.2.0/23 contient à la fois IP valide adresse 10.1.2.255 et 10.1.3.0). Bien que certaines organisations n'évitent également l'utilisation de ces adresses valides dans les grandes sous-réseaux pour éviter tout problème étrange avec des logiciels qui ne prennent pas en charge correctement moderne subnetting.

Quant à savoir pourquoi ne pas libérer une adresse IP qui, il est tout simplement à coût/bénéfice. Il faudrait beaucoup de temps et d'efforts pour faire ce changement pour retourner une adresse IP par sous-réseau et dans combien de cas où vous avez besoin d'adresses IP, sera une seule adresse suffit? Il est beaucoup plus facile d'ajouter un second sous-réseau ou agrandir le sous-réseau actuel, ce qui peut vous donner de nombreuses adresses à utiliser au lieu d'un seul en faisant aucun changement majeur à tout logiciel/matériel en place.

0
YLearn