Warum kann eine Netzwerkadresse keine gültige Hostadresse sein?


17

Also ... Ich habe für CCNA und so studiert und arbeite seit ungefähr 8 Jahren mit IP-Netzwerken. Mir wurde immer gesagt, dass die Netzwerkadresse für ein Subnetz keine gültige Hostadresse ist. Zuerst möchte ich sagen, dass ich weiß, dass dies wahr ist. Meine Frage ist mehr ... gibt es einen technischen Grund, warum es nicht verwendet werden kann, oder wurde es nur willkürlich vereinbart, als die Spezifikation entworfen wurde? Ich verstehe, warum eine Broadcast-Adresse nicht verwendet werden kann (weil sie WIRKLICH verwendet wird). Die Sache ist, wenn ich eine Netzwerkadresse sehe, die verwendet wird, ist es normalerweise nur im Routing, das spezifisch NETZWERK-Adressen verwendet. Wenn dies der Fall ist (Netzwerkadressen werden nur verwendet, wenn Sie eine Netzwerkadresse erwarten), gibt es einen technischen Grund dafür, dass die Netzwerkadresse keine tatsächlich gültige Hostadresse sein kann?

Antworten:


16

Soweit ich weiß, ist "Netzwerkadresse" als spezielle Adresse ein Artefakt aus den klassischen IP-Netzwerken der Vergangenheit. Heutzutage verwenden wir Classless Inter-Domain Routing ( CIDR ) im Internet, das nicht das Konzept einer Netzwerkadresse hat (wenn Sie sich den oben verlinkten RFC 4632 ansehen, werden Sie feststellen, dass 256 mögliche IP-Adressen pro Legacy aufgelistet sind "C" -Block, z. B. keine reservierten Adressen für Netzwerk- oder Broadcast-Adresse (obwohl Broadcasts in anderen RFCs als wesentlich definiert sind).

Dennoch sollten Sie keinem bestimmten Host in einem Netzwerk eine Netzwerkadresse zuweisen: Die Netzwerkadresse ist für das Routing von entscheidender Bedeutung. Dieses Konzept wird häufig in RFCs ( RFC 1812 ) verwendet. Schauen Sie sich einfach die Routing-Tabellen an ( routeBefehl). Sie sehen, wie Ihre lokale Netzwerkadresse verwendet wird, um den lokalen Netzwerkverkehr von dem zu trennen, was über den Router gesendet werden muss. Was ist, wenn diese lokale Netzwerkadresse einem Host zugewiesen wurde?

Schlimmer noch: Es ist besser, keine IP-Adressen zuzuweisen, die mit Null enden, auch wenn diese Adresse keine Netzwerkadresse ist. Wenn Ihr Netzwerk beispielsweise 10.10.0.0/255.255.0.0 ist, ist die IP-Adresse 10.10.5.0 nicht Ihre Netzwerkadresse, aber Sie sollten diese IP-Adresse besser nicht zuweisen, obwohl sie auch in klassischen IP-Netzwerken vollständig gültig ist. Einige ältere Software- / IP-Stacks haben möglicherweise Probleme damit.

UPDATE: von Goblinlord

Gemäß RFC 1812 (Abschnitt 5.3.5.2) wurde eine Netzwerkadresse ursprünglich für "gerichtete Broadcasts" verwendet, die ein Broadcast-Paket an das gewünschte Netzwerk senden würden. Diese Funktion wurde aufgrund von SMURF-Angriffen überholt. Die Funktion wurde offiziell in RFC 2644 geändert . Anschließend weitere Implementierungen sollten geräuschlos Pakete mit einer Quelladresse fallen , wie beschrieben (die Netzwerkadresse). Während dies passieren sollte, bin ich gespannt, wie viele Implementierungen dies tatsächlich tun.

Dies wird in RFC 3021 hinzugefügt, wenn das / 31-Subnetting angesprochen wurde.


5
@grawity: Nicht immer. Nur in einem Netzwerk größer als / 31. Beispielsweise kann P2P zwei Adressen und keine Broadcast-Adresse haben.
haimg

3
Hmmm ... ich mag den ersten Teil der Antwort ... dass es sich um ein Artefakt aus klassischen IP-Netzwerken handelt. Mein Problem erneut mit dem zweiten Teil ist, dass Routingtabellen speziell zum Weiterleiten an ein Netzwerk verwendet werden. Soweit ich weiß, wird die Routing-Tabelle nur zum Weiterleiten an ein Netzwerk verwendet, an dem der Empfänger nicht angeschlossen ist (Ziel-IP ist nicht Teil Ihres Subnetzes / Netzes). Dies ist der Fall ... Wenn Sie sich eine Routing-Tabelle ansehen, ist klar, dass es sich bei den darin enthaltenen Adressen um Netzwerkadressen und nicht um Host-Adressen handelt. Im tatsächlichen Verkehr wird niemals eine Ziel-IP einer Netzadresse verwendet.
Goblinlord

1
Also ... gibt es einen Grund, es speziell zu reservieren, wenn diese 2 Instanzen bereits getrennt sind (Netzwerkadresse in der Routing-Tabelle und Ziel-IP, wenn Sie bestimmen, ob Sie eine Routing-Tabelle anzeigen müssen).
Goblinlord

1
@Goblinlord: Kein offizieller Grund, den ich finden konnte (aktuelle RFCs usw.). Es wird jedoch so viel Software mit der Annahme erstellt, dass die Netzwerkadresse "speziell" ist, dass Sie sie in der Praxis besser nicht als Host-IP-Adresse verwenden sollten.
Haimg

1
Es gibt einen Eintrag in der Cisco-Konfiguration, der es ermöglicht, dass die Netzwerkadresse auch ein Host ist, der es seit mindestens 10 Jahren gibt ... Ich habe ihn nie benutzt oder sogar getestet und aufgrund möglicher Stapelprobleme, wie erwähnt, speziell nicht Ich erlaube Hosts nicht, in den Netzwerken, für die ich verantwortlich war, mit .0 oder .255 zu enden, obwohl ich bei @Home keine anderen Netzwerk- oder Broadcast-Adressen gefunden habe, die seit weniger als / 24 Sekunden verwendet werden, und CoreOS dies wollte Geben Sie die mittleren .0 und .255 als Hosts in den / 23 und / 21 von Sanbrunocable aus. Ich habe sie manuell reserviert.
Nevin Williams

5

Die praktische Antwort lautet also: Es kommt wirklich darauf an. Es hängt davon ab:

  • Die genaue Adresse und ihre Bedeutung in den vielen RFCs
  • Die Version und Revision Ihres Betriebssystems
  • ... und das deines Routers und jedes anderen Upstream-Routers
  • ... und die Intelligenz und Raffinesse aller Netzwerkadministratoren dieser Router ...

Ich habe keine Probleme beim Zugriff auf Websites, die dies testen. Es scheint, dass letztendlich alles den Launen der Netzwerkadministratoren überlassen bleibt. Normalerweise kann ein Upstream-Gerät nicht erkennen, ob eine Adresse Teil eines Netzwerks oder einer Broadcast-Adresse ist oder nicht, da es sich lediglich um eine Adresse handelt, die in einem größeren Block für sie enthalten ist Verwenden Sie Ihre Netzwerkadresse, es sei denn, sie wurde Ihnen zugewiesen und der Netzwerkadministrator hat sie ausdrücklich blockiert.

Ich bin sicher, dass es Sicherheitsanalysten und Hacker gibt, die wahnsinnig detaillierte Statistiken darüber haben, wie viele Varianten von TCP-IP-Stack-Implementierungen es gibt und was die tun und nicht zulassen und genau, wie und wo sie ihre Marke verfehlen .

Tatsache ist, dass ich diese von meiner Netzwerkadresse aus durchsuche und poste.

Nennen Sie mich nicht einen schlechten Internetnutzer, es sei denn, Sie haben eine bessere Lösung, um dieses Kartenhaus zu reparieren: Die Realität ist, dass es passieren wird, wenn es möglich ist. Die Realität ist, dass sich niemand wirklich klug genug hinsetzte und das Ganze in all seinen möglichen Iterationen durchdachte, um ein absolut narrensicheres Design zu entwickeln, bevor die Leute damit anfingen - wie bei den meisten Dingen im Leben. Das Ergebnis? Standards, bei denen viele Dinge nicht stimmen und / oder bei der Übersetzung verloren gehen.

Willkommen in der realen Welt. Lassen Sie sich dadurch nicht davon abhalten, den immer schwer fassbaren optimalen Idealen nachzujagen ... Erwarten Sie nur dann Unterstützung von den "offiziellen" Kanälen oder Foren, wenn Sie nicht bereit sind, sich die Hände schmutzig zu machen und Ihre Zeit und Ihr Leben dem Bauen zu widmen den notwendigen Konsens und die Orientierung in der Politik.

Ich denke also, was die anderen Plakate zu sagen versuchten: Wenn Sie diese offizielle Richtlinie erstellen und in der Produktion verwenden möchten, sind Sie auf sich allein gestellt. (Aber sind Sie es nicht trotzdem?) Vielleicht haben wir Glück und lassen uns von einem Computerintelligenz-Team ein IPv8 entwerfen, das mit IPv4 und IPv6 und all ihren fehlerhaften Implementierungen abwärtskompatibel ist.


Natürlich - wenn Sie Ihre Netzwerkadresse verwenden, empfängt das Gerät, dem es zugewiesen ist, möglicherweise alle Arten von Broadcast-Verkehr, da einige Netzwerkstacks ihn als Broadcast behandeln. Diese stören jedoch im Allgemeinen nicht viel, da sie nur lautlos fallengelassen werden. Ich bin gespannt, wie viele Netzwerk-Exploits sich auf die damit verbundenen Besonderheiten stützen ...
Dagelf

2

Ich bin neu im Netzwerk, aber ich gebe auch meine 2 Cent.

Wenn ich ein / 28-Subnetz von xxx0 - xxx15 habe Gemäß den vordefinierten Regeln hätten wir 14 verwendbare Hosts und 2 verbleibende. die restlichen sind für Netzwerk und Broadcast.

Anstatt der obigen Regel zu folgen, können alle 16 Hosts verwendet werden. Dann wäre in diesem Fall alles in Ordnung, keine Probleme. Wenn jedoch eine Kommunikation außerhalb des Netzwerks erforderlich wäre, wäre es aufgrund fehlender Ressourcen nicht möglich, die Informationen zu senden oder zu empfangen.

Ich kann nicht gut erklären, aber anders ausgedrückt.

Wenn ich in einem Haus in einer Straße lebte und die Straße 14 Häuser enthielt. Eine Gasse für den Zugang zur Hauptstraße.

Meine Postanschrift reicht von 1-14 Personal Street, Off Network Road.

Für den Postboten wäre das kein Problem. Nehmen wir nun an, die Entwickler sind gierig geworden und haben zwei weitere Häuser hinzugefügt und die Gassen entfernt.

Dann würde meine neue Postanschrift von 1-16 Personal Street reichen

In diesem Fall wäre der Postbote in Schwierigkeiten.

Dies ist eine Vermutung, lassen Sie es mich wissen, wenn ich Bull spreche.


0

Mit der Netzwerkadresse können Sie Routentabellen mit IPv4-Zielspalte mit fester Größe (4 Byte) und Binäroperationen mit fester Größe erstellen, sodass Hostrouting und Netzwerkrouting tatsächlich dasselbe sind.

Stellen Sie sich eine Routingtabelle wie diese vor: (Dieser PC hat eine parallele Verbindung mit einem anderen PC und einer Netzwerkkarte.)

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

Das UND zwischen der IP-Adresse und der Netzmaske gibt Ihnen genau das, was Sie brauchen, eine 4-Byte-Zahl, die ohne weitere Berechnungen mit jeder Zeile verglichen werden kann.

Die Host-Nummer Null ist also insofern besonders, als ihre Adresse nach der UND-Verknüpfung natürlich das gesamte Netzwerk darstellt.

Wenn Sie sich entschließen, die Netzwerknummer als Hostnummer zu verwenden, wird eine Tabelle wie die folgende erstellt:

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

Dies scheint legitim zu sein, daher nehme ich an, dass das Konzept der Netzwerkadresse aus Routinggründen verwendet wird, und daher wurde willkürlich beschlossen, sie als spezielle Adresse zu kennzeichnen und ihre Verwendung als Hostadresse zu untersagen.

Naja ... eigentlich ist es nicht so einfach. Ich habe beschlossen, es zu versuchen (!!!):

# 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

Gegenwärtig erlauben mir die Netzwerkprogramme nicht, eine Netzwerknummer als normale Adresse zu verwenden.


In Anbetracht Ihres ersten Routing-Tabellen-Beispiels halte ich das für eine wirklich schlechte Vorgehensweise ... Wenn sich andere Hosts in Ihrem .0.0-Subnetz befinden, wie kommunizieren sie ordnungsgemäß miteinander und mit dem .0.123-Host, ohne dass statisch Routen festgelegt werden jeder einzelne Host? Das scheint wirklich nicht die richtige Art zu sein, Dinge zu tun.
Goblinlord

Es ist nur ein fiktives Beispiel, ich würde niemals eine solche Tabelle aufbauen :-) Der .123-Host ist mit einer Punkt-zu-Punkt-Verbindung verbunden, während der Rest das übliche Ethernet-Netzwerk ist. Wenn Sie möchten, dass andere Computer auf den .123-Host zugreifen, müssen Sie zusätzliche Arbeiten ausführen, dies ist jedoch nicht unmöglich.
David Costa

0

Auf der Suche nach der Antwort auf diese Frage bin ich auf diesen Artikel von Cisco gestoßen. Das folgende Zitat aus diesem Artikel fasst es gut zusammen, denke ich.

[...] berücksichtigen Sie die IP-Adresse 172.16.1.10. Wenn Sie die dieser IP-Adresse entsprechende Subnetzadresse berechnen, lautet die Antwort, die Sie erhalten, Subnetz 172.16.0.0 (Subnetz Null). Beachten Sie, dass diese Subnetzadresse mit der Netzwerkadresse 172.16.0.0 identisch ist, die an erster Stelle in Subnetze unterteilt wurde. Wenn Sie also Subnetze ausführen, erhalten Sie ein Netzwerk und ein Subnetz (Subnetz Null) mit nicht unterscheidbaren Adressen. Dies war früher eine Quelle großer Verwirrung .

Verwirrung zu vermeiden ist für mich ein guter Grund.


Ich weiß, dass diese Frage vor langer Zeit gestellt wurde, aber ich habe gerade dieses Zeug durchgesehen. In dem von Ihnen zitierten Artikel geht es um "Subnetz Null" oder das erste Subnetz in einer Netzwerkadresse. Dies ist etwas völlig anderes und in jedem modernen Netzwerk, an dem ich gearbeitet habe, ist für jeden Switch die Funktion "IP-Subnetz-Null" aktiviert. Es wird auch erwähnt, dass es heutzutage standardmäßig auf allen Switches aktiviert ist (ab Version 12, die um 2003 veröffentlicht wurde).
Goblinlord

0

RFC 1122 ("Anforderungen für Internet-Hosts - Kommunikationsschichten") verbietet Folgendes:

IP-Adressen dürfen für keines der Felder <Hostnummer>, <Netzwerknummer> oder <Subnetznummer> den Wert 0 oder -1 haben


0

Eine Netzwerkadresse wird nicht als Hostadresse betrachtet, sondern ist nur eine Zahl. In adressenbeschränkten Bereichen wie Punkt-zu-Punkt-Netzwerken wird häufig eine / 30-Maske verwendet, die jedoch immer noch die Hostadressen verwendet. Eine geringere Praxis, die jedoch dasselbe Prinzip erreicht, besteht darin, eine / 31-Maske zu verwenden und ein Ende als Netzwerkadresse und das andere als Broadcast zu verwenden.

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.