Pourquoi une adresse réseau ne peut-elle pas être une adresse d'hôte valide?

18

Donc ... j'ai étudié pour CCNA et autres et j'ai travaillé avec les réseaux IP au moins au cours des 8 dernières années. J'ai toujours vu et dit que l'adresse réseau d'un sous-réseau n'est pas une adresse d'hôte valide. Maintenant, je commencerai par dire que je sais que c'est vrai. Ma question est plus ... Y a-t-il une raison technique pour laquelle elle ne peut pas être utilisée ou a-t-elle été simplement convenue arbitrairement lors de la conception de la spécification? Je comprends pourquoi une adresse de diffusion ne peut pas être utilisée (car elle est réellement utilisée). Le truc, c'est que lorsque je vois une adresse réseau utilisée, ce n'est normalement que dans le routage qui utilise spécifiquement des adresses RÉSEAU. Cela étant le cas (les adresses réseau étant utilisées uniquement lorsque vous attendez une adresse réseau), y a-t-il une raison technique pour laquelle l'adresse réseau ne peut pas être une adresse d'hôte valide réelle?

Goblinlord
la source

Réponses:

16

Pour autant que je sache, "l'adresse réseau" en tant qu'adresse spéciale est un artefact des réseaux IP classe du passé. Aujourd'hui, nous utilisons le routage inter-domaine sans classe ( CIDR ) sur Internet, qui n'a pas le concept d'une adresse réseau (si vous regardez le RFC 4632 lié ci-dessus, vous verrez qu'il répertorie 256 adresses IP possibles par héritage Bloc "C", par exemple, aucune adresse réservée pour le réseau ou l'adresse de diffusion (bien que les diffusions soient définies comme essentielles dans d'autres RFC).

Cela dit, vous ne devez toujours pas attribuer d'adresse réseau à un hôte spécifique d'un réseau: l'adresse réseau est essentielle pour le routage. Ce concept est largement utilisé dans les RFC ( RFC 1812 ). Regardez simplement les tables de routage ( routecommande), vous verrez comment votre adresse réseau locale est utilisée pour séparer votre trafic réseau local de ce qui doit passer par le routeur. Que faire si cette adresse de réseau local a été attribuée à un hôte?

Pire encore: il vaut mieux ne pas attribuer d'adresses IP se terminant par zéro même si cette adresse n'est pas une adresse réseau. Par exemple, si votre réseau est 10.10.0.0/255.255.0.0, l'adresse IP 10.10.5.0 n'est pas votre adresse réseau, mais vous feriez mieux de ne pas attribuer une telle IP même si elle est complètement valide même sur des réseaux IP de classe. Certains logiciels / piles IP hérités peuvent rencontrer des problèmes.

MISE À JOUR: par goblinlord

Selon la RFC 1812 (section 5.3.5.2), ce que nous appelons une adresse réseau était à l'origine utilisé pour des "diffusions dirigées" qui enverraient un paquet de diffusion au réseau souhaité. Cette fonction est devenue obsolète à cause des attaques SMURF. La fonction a été officiellement modifiée dans la RFC 2644 . Par la suite, d'autres implémentations devraient supprimer silencieusement les paquets avec une adresse source comme décrit (l'adresse réseau). Bien que ce soit ce qui devrait arriver, je suis curieux de savoir combien d'implémentations le font réellement.

Ceci est ajouté à la RFC 3021 lorsque le sous-réseau / 31 a été traité.

haimg
la source
5
@grawity: Pas toujours. Uniquement dans un réseau supérieur à / 31. Par exemple, le P2P peut avoir deux adresses et aucune adresse de diffusion.
haimg
3
Hmmm ... j'aime la première partie de la réponse ... que c'est un artefact de réseaux IP classe. Mon problème avec la deuxième partie est que les tables de routage sont utilisées spécifiquement pour router vers un réseau. Si je comprends bien, la table de routage est uniquement consultée pour router vers un réseau sur lequel le récepteur n'est pas allumé (l'IP dest ne fait pas partie de votre sous-réseau / réseau). Cela étant le cas ... lorsque l'on regarde une table de routage, il est clair que les adresses qu'il contient sont des adresses réseau et non des adresses d'hôte, ce qui les sépare donc d'une adresse IP de paquet hôte. Dans le trafic réel, une IP de destination d'une adresse réseau n'est jamais utilisée.
Goblinlord
1
Alors ... y a-t-il une raison de le réserver spécifiquement si ces 2 instances sont déjà séparées (adresse réseau dans la table de routage et IP de destination pour déterminer si vous devez consulter une table de routage).
Goblinlord
1
@Goblinlord: Aucune raison officielle que j'ai pu trouver (RFC récents, etc.). Cependant, tant de logiciels sont construits avec l'hypothèse que l'adresse réseau est "spéciale", que dans la pratique, il vaut mieux ne pas l'utiliser comme adresse IP hôte.
haimg
1
Il y a une entrée de configuration Cisco qui permet à l'adresse réseau d'être également un hôte, qui existe depuis au moins 10 ans ... Je ne l'ai jamais utilisé, ni même testé, et en raison de problèmes de pile possibles comme mentionné, en particulier didn ne permettez pas aux hôtes de se terminer par .0 ou .255 sur les réseaux dont j'étais responsable, même si je n'avais pas rencontré d'autres adresses de réseau ou de diffusion utilisées pour des tailles inférieures à / 24, chez @Home, et alors que CoreOS voulait émettez les .0 et .255 du milieu en tant qu'hôtes dans les / 23 et / 21 de sanbrunocable, je les ai réservés manuellement.
Nevin Williams
5

La réponse pratique est donc: cela dépend vraiment. Ça dépend de:

  • L'adresse exacte et sa signification dans les nombreux RFC
  • La version et la révision de votre système d'exploitation
  • ... Et celle de votre routeur, et de tout autre routeur en amont
  • ... Et l'intelligence et la sophistication de tous les administrateurs réseau de ces routeurs ...

Je n'ai rencontré aucun problème pour accéder à des sites en testant cela; il semble qu'en fin de compte, tout soit laissé aux caprices des administrateurs réseau. Il n'y a généralement aucun moyen pour un périphérique en amont de dire si une adresse fait partie d'un réseau ou d'une adresse de diffusion, ou non, car il s'agit simplement d'une adresse dans un bloc plus grand pour eux ... Donc, aucun FAI ne vous empêchera d'attribuer et en utilisant votre adresse réseau, sauf s'ils vous l'ont attribuée et que leur administrateur réseau l'a explicitement bloquée.

Je suis sûr qu'il existe des analystes de la sécurité et des pirates qui ont des statistiques incroyablement détaillées sur le nombre exact de variantes d'implémentations de pile TCP-IP et sur ce qu'elles peuvent ou ne peuvent pas accepter ou permettre et exactement comment et où elles manquent leur marque .

En fait, je suis en train de parcourir et de publier ceci à partir de mon adresse réseau.

Ne m'appelez pas un mauvais internaute à moins d'avoir une meilleure solution pour réparer ce château de cartes: la réalité est que si c'est possible, cela arrivera. La réalité est que personne vraiment assez intelligent ne s'est assis et a pensé à tout cela dans toutes ses itérations possibles afin de proposer un design complètement infaillible, avant que les gens ne commencent à l'utiliser - comme avec la plupart des choses de la vie. Le résultat? Normes où beaucoup de choses ne s'additionnent pas et / ou se perdent dans la traduction.

Bienvenue dans le monde réel. Ne laissez pas cela vous dissuader de poursuivre les idéaux optimaux toujours insaisissables ... Ne vous attendez pas à un soutien des canaux ou des forums "officiels" à moins que vous ne vouliez vous salir les mains et y consacrer votre temps et votre vie, en construisant le consensus nécessaire, et naviguer dans la politique autour de cela.

Donc, je pense que ce que les autres affiches essayaient de dire: si vous voulez faire cette politique officielle et l'utiliser dans la production, vous êtes seul. (Mais n'est-ce pas?) Peut-être que nous aurons de la chance et qu'une intelligence informatique nous concevra un IPv8 rétrocompatible avec IPv4 et IPv6 et toutes leurs implémentations cassées.

Dagelf
la source
Bien sûr - lorsque vous utilisez votre adresse réseau, l'appareil auquel il est affecté peut recevoir toutes sortes de trafic de diffusion, car certaines piles réseau le traitent comme une diffusion. Cependant, ceux-ci n'interfèrent généralement pas beaucoup car ils sont simplement supprimés en silence. Je suis curieux de savoir combien d'exploits de réseau dépendent des particularités qui l'entourent cependant ...
Dagelf
2

Je suis nouveau sur le réseau, mais je donnerai également mes 2 cents.

Si j'ai un sous-réseau / 28 de xxx0 à xxx15 Selon les règles prédéfinies, nous aurions 14 hôtes utilisables et 2 restants. les autres sont destinés au réseau et à la diffusion.

Permet, au lieu de suivre la règle ci-dessus, d'utiliser les 16 hôtes. Dans ce cas, tout irait bien, pas de problème. Mais si la communication était nécessaire en dehors du réseau, cela ne serait pas possible en raison du manque de ressources pour envoyer ou recevoir les informations.

Je ne suis pas très doué pour expliquer mais pour le dire autrement.

Si je vivais dans une maison dans une rue et que la rue contenait 14 maisons. Une ruelle pour entrer et sortir pour accéder à la route principale.

Mon adresse postale serait comprise entre 1-14 Personal Street, Off Network Road.

Ce ne serait pas un problème pour le facteur. Supposons maintenant que les développeurs sont devenus gourmands et ont ajouté 2 autres maisons et se sont débarrassés des ruelles.

Ensuite, ma nouvelle adresse postale serait comprise entre 1-16 Personal Street

Dans ce cas, le facteur serait en difficulté.

C'est une supposition, faites-moi savoir si je parle de taureau.

William
la source
0

L'adresse réseau vous permet de créer des tables de routage avec une colonne de destination de taille fixe (4 octets IPv4) et des opérations binaires de taille fixe afin que le routage hôte et le routage réseau soient en fait la même chose.

Imaginez une table de routage comme celle-ci: (ce PC a une connexion parallèle avec un autre PC et une carte réseau)

Dest           Mask    Dev
192.168.0.123  /32     plip0   # This is a single host
192.168.0.0    /24     eth0    # This is a network

Le ET entre l'adresse IP et le masque de réseau vous donne exactement ce dont vous avez besoin, un nombre de 4 octets qui peut être comparé à chaque ligne sans autres calculs.

Le numéro d'hôte zéro est donc spécial dans le sens où, après l'opération ET, son adresse représente naturellement l'ensemble du réseau.

Si vous décidiez d'utiliser le numéro de réseau comme numéro d'hôte, cela donnerait un tableau comme celui-ci:

Dest           Mask    Dev
192.168.0.0    /32     eth0    # This is the host (it's a redundant line)
192.168.0.0    /24     eth0    # This is the network

Cela semble légitime, donc je suppose que le concept d'adresse réseau est utilisé pour des raisons de routage et il a donc été décidé arbitrairement de la marquer comme adresse spéciale et d'interdire son utilisation comme adresse d'hôte.

Eh bien ... en fait, ce n'est pas si simple. J'ai décidé de lui laisser une chance (!!!):

# route add -net 192.168.0.0/32 eth0
# ping 192.168.0.0
Do you want to ping broadcast? Then -b
# telnet 192.168.0.0
Trying 192.168.0.0...
telnet: connect to address 192.168.0.0: Network is unreachable

À l'heure actuelle, les programmes réseau ne me permettent pas d'utiliser un numéro de réseau comme adresse normale.

David Costa
la source
Compte tenu de votre premier exemple de table de routage, je pense que c'est une très mauvaise façon de faire les choses ... si vous avez d'autres hôtes sur votre sous-réseau .0.0, comment communiquent-ils correctement entre eux ainsi qu'avec l'hôte .0.123 sans définir statiquement des routes sur chaque hôte unique? Cela ne semble vraiment pas être la bonne façon de faire les choses.
Goblinlord
C'est juste un exemple fictif, je ne configurerais jamais une table comme ça :-) L'hôte .123 est connecté avec une connexion point à point tandis que le reste est le réseau Ethernet habituel. Si vous souhaitez que d'autres machines accèdent à l'hôte .123, vous devez effectuer un travail supplémentaire, mais ce n'est pas impossible.
David Costa
0

En cherchant la réponse à cette question, je suis tombé sur cet article de Cisco. La citation suivante de cet article résume bien, je pense.

[...] considérez l'adresse IP 172.16.1.10. Si vous calculez l'adresse de sous-réseau correspondant à cette adresse IP, la réponse à laquelle vous arrivez est le sous-réseau 172.16.0.0 (sous-réseau zéro). Notez que cette adresse de sous-réseau est identique à l'adresse réseau 172.16.0.0, qui a été mise en sous-réseau en premier lieu, donc chaque fois que vous effectuez un sous-réseau, vous obtenez un réseau et un sous-réseau (sous-réseau zéro) avec des adresses indiscernables. C'était autrefois une source de grande confusion .

Éviter la confusion est une raison suffisante pour moi.

Samuel Harmer
la source
Je sais que cette question a été posée il y a longtemps, mais je ne faisais que revoir ce truc. L'article que vous citez parle de "sous-réseau zéro" ou du premier sous-réseau d'une adresse réseau. C'est quelque chose de complètement différent et dans tout réseau moderne sur lequel j'ai travaillé, chaque commutateur a la fonction "ip subnet-zero" activée. Il mentionne également que ces jours-ci, il est activé par défaut sur tous leurs commutateurs (à partir de la version 12 qui a été publiée vers 2003).
Goblinlord
0

La RFC 1122 ("Exigences pour les hôtes Internet - Couches de communication") l'interdit:

Les adresses IP ne doivent pas avoir la valeur 0 ou -1 pour les champs <numéro d'hôte>, <numéro de réseau> ou <numéro de sous-réseau>

Bryan
la source
0

Une adresse réseau n'est pas considérée comme une adresse d'hôte mais ce n'est qu'un numéro. Dans les zones d'adresses limitées telles que les réseaux point à point, un masque / 30 est souvent utilisé, mais utilise toujours les adresses d'hôtes. Une pratique moindre, mais qui applique le même principe, consiste à utiliser un masque / 31 et à utiliser une extrémité comme adresse réseau et l'autre comme diffusion.

Ex.

Router(config)#int gi0/0
Router(config-if)#ip add 10.0.0.0 255.255.255.254
Router(config-if)#no shut


Router2(config)#int gi0/0
Router2(config-if)#ip add 10.0.0.1 255.255.255.254
Router2(config-if)#no shut


        .0        .1
[Router]-----------[Router2]
   network      broadcast
cmd
la source