AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Delphi-PRAXiS - Lounge Klatsch und Tratsch Berechnung der IP-Adressen-Bereiche
Thema durchsuchen
Ansicht
Themen-Optionen

Berechnung der IP-Adressen-Bereiche

Ein Thema von Matze · begonnen am 27. Dez 2007 · letzter Beitrag vom 28. Dez 2007
Antwort Antwort
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#1

Berechnung der IP-Adressen-Bereiche

  Alt 27. Dez 2007, 15:48
Hallo zusammen,

ich komme nicht dahinter, wie man anhand der IP und der Subnetmask den Adressenbereich ermitteln kann.

Ich habe mir den Wikipedia-Artikel durchgelesen und versucht, das alles nachzuvollziehen, doch so ganz klappt es nicht. Wie man von der Anzahl der Bits auf die Subnetmask kommt, habe ich verstanden, das ist ja verhältnismäßig simpel. Einfach so viele 1er hinschreiben, wie man Bits hat, den Rest zu 32 Bit mit Nullen ergänzen und dann die Binärzahlen in Dezimalzahlen umwandeln.
So gehe ich vermutlich bei den Anfangswerten wie "172.23.66.111/21" vor, um erst einmal die Subnetmask zu erhalten.

Ich würde nun gerne anhand der Wikipedia-Beispiele (denn dazu gibt die Lösung) versuchen, das zu verstehen, denn nicht mal die einfachsten Beispiele verstehe ich:

10.0.0.44 / 255.0.0.0
Mal geht es bei der 0 der Subnetmask von 1 bis 254 und mal von 0 bis 255

Ich glaube einfach, mir fehlen da Grundlagen.

Ich würde am Ende gerne verstehen, wie man diese Wikipedia-Beispiele selbst nachrechnen kann:

Code:
10.0.0.44       255.0.0.0               10.0.0.1     bis 10.255.255.254
172.16.232.15   255.255.0.0             172.16.0.1   bis 172.16.255.254
172.23.66.111   255.255.248.0           172.23.64.1  bis 172.23.71.254
192.168.0.1     255.255.255.0           192.168.0.1  bis 192.168.0.254
172.23.66.109   255.255.255.240         172.23.66.97 bis 172.23.66.110
192.168.10.23   255.255.255.255         192.168.10.23
Kann mir dabei jemand helfen (Denkanstöße) oder weiterführende Links nennen, mit denen man dies leicht nachvollziehen kann?
Die Anzahl der möglichen IPs ist auch immer gefragt, doch das bekomme ich vermutlich hin.

Grüße, Matze
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Berechnung der IP-Adressen-Bereiche

  Alt 27. Dez 2007, 16:29
Zitat:
Mal geht es bei der 0 der Subnetmask von 1 bis 254 und mal von 0 bis 255
Die erste und die letzte Ip eines Bereichs haben eine besondere Bedeutung: Diwe 1. steht für das Netzt und die letzte ist die Broadcast-Adresse, auf welche alle Clients reagieren.

Man undiert die Bitmuster
Code:
  10.0.0.44         
 255.0.0.0
= 10.0.0.0
Markus Kinzler
  Mit Zitat antworten Zitat
SirTwist

Registriert seit: 28. Sep 2006
196 Beiträge
 
Delphi XE Professional
 
#3

Re: Berechnung der IP-Adressen-Bereiche

  Alt 27. Dez 2007, 18:01
Eine IP-Adresse gehört immer zu einem bestimmten IP-Netz, und die Subnetmaske teilt die IP-Adresse auf in einen vorderen Teil (dieser bestimmt das IP-Netz) und einen hinteren Teil (dieser bestimmt die Adresse des Rechners innerhalb des Netzes).

Es gibt eine etwas einfachere Notation: 10.0.0.44/8 oder 172.16.23.42/16. Bei dieser Notation wird hinter dem Schrägstrich angegeben, wie groß jeweils der Teil für die Netzadresse ist und für die Hostadresse.

Du musst die Zahlen der IP-Adressen etc. in Binärzahlen umrechnen:

Code:
Aus 10.0.0.44 wird dann 00001010.00000000.00000000.00101100 (IP-Adresse)
Aus 255.0.0.0 wird dann 11111111.00000000.00000000.00000000 (Subnetmaske)
Diese Subnetmaske entspricht dann der Notation "/8". Das nennt man auch den Suffix. Also die ersten 8 Bits der IP-Adresse bilden den Netzwerkteil. Die restlichen 24 Bits bilden den Hostteil.

Die Netzadresse für 10.0.0.44 bekommst Du einfach dadurch heraus, dass Du nur die Bits nimmst, bei denen in der Subnetmaske eine 1 steht:

Code:
10.0.0.44 = 00001010.00000000.00000000.00101100
255.0.0.0 = 11111111.00000000.00000000.00000000
            -----------------------------------
            00001010.00000000.00000000.00000000
Also ist die Netzadresse "10.0.0.0". Bei den Suffixen (Suffices) "/8", "/16" und "/24" ist das sehr einfach, denn dann nimmst Du einfach nur die erste Zahl, bzw. die ersten beiden oder die ersten drei Zahlen der IP-Adresse.

Schwierigeres Beispiel, nämlich 192.168.23.142/26. Um die "/26" in Langform umzurechnen, musst du also eine 32stellige Binärzahl nehmen und die ersten 26 Stellen mit 1 belegen, den Rest mit 0. Das macht dann 255.255.255.192:

Code:
192.168.23.142  = 11000000.10101000.00010111.10001110
255.255.255.192 = 11111111.11111111.11111111.11000000
                  -----------------------------------
                  11000000.10101000.00010111.10000000 = 192.168.23.128
Also ist 192.168.23.128 die Netzwerkadresse. Bei der Subnetmaske siehst Du hinten 6 Nullen, mit 6 Bits kann man maximal Werte von 0 bis 63 darstellen, also können in dem Netzbereich nur die nächsten 63 Zahlen verwendet werden. Also von 192.168.23.128 bis 192.168.23.191. Ab 192.168.23.192 fängt das nächste Teilnetz an.

Nun ist aber die allererste IP-Adresse im Netz immer das Netz selber, also kannst Du die 192.168.23.128 nicht benutzen. Auch die letzte IP-Adresse ist reserviert (die 192.168.23.191), das ist die sogenannte Broadcast-Adresse.

Das einzige, was Du jetzt noch brauchst, ist eine Tabelle der möglichen Suffixe und die daraus resultierenden Netzmasken:
Code:
/0 = 0.0.0.0      /8  = 255.0.0.0     /16 = 255.255.0.0
/1 = 128.0.0.0    /9  = 255.128.0.0   /17 = 255.255.128.0
/2 = 192.0.0.0    /10 = 255.192.0.0   /18 = 255.255.192.0
/3 = 224.0.0.0    /11 = 255.224.0.0   /19 = 255.255.224.0
/4 = 240.0.0.0    /12 = 255.240.0.0   /20 = 255.255.240.0
/5 = 248.0.0.0    /13 = 255.248.0.0   /21 = 255.255.248.0
/6 = 252.0.0.0    /14 = 255.252.0.0   /22 = 255.255.252.0
/7 = 254.0.0.0    /15 = 255.254.0.0   /23 = 255.255.254.0
etc ;-)
Der Rest ist nur noch Umwandlung in Binärzahlen und damit rechnen.

SirTwist
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Berechnung der IP-Adressen-Bereiche

  Alt 27. Dez 2007, 19:22
Hallo SirTwist,

das ist so hervorragend erklärt, dass ich das Thema so eingestellt habe, damit es nach 4 Wochen nicht automatisch entfernt wird. Vielleicht hilft dein Beitrag auch noch anderen. Große Klasse und herzlichen Dank (dir natürlich auch, Markus).

Eine Frage habe ich allerdings noch, die bei einem komplizierteren Beispiel aufgetreten ist, als du es genannt hast:

Code:
172.23.66.111 = 10101100.00010111.01000010.01101111
255.255.248.0 = 11111111.11111111.11111000.00000000
                -----------------------------------
                10101100.00010111.01000000.00000000
Da hat die Subnetmask am Ende 14 Nullen und somit ergibt sich ein Bereich von 2^14 = 16384.
Diesen kann man natürlich nicht so einfach auf die letzte Zahl addieren. Ich dachte mir daher, mit der letzten Zahl kann man die Ziffern von 0 bis 255 darstellen und hat somit 256 Möglichkeiten.
Daher ergibt sich für die Erhöhung der vorletzten Zahl:

Code:
16384 div 256 = 64
Für die Erhöhung der letzten Zahl würde sich diese Erhöhung ergeben, falls es in anderen Fällen einen Rest geben sollte:

Code:
16384 mod 256 = 0
Das würde doch heißen, ich muss zur vorletzten Zahl 64 dazuaddieren und käme zu folgendem Ergebnis: 172.23.130.111 (Broadcast)

herauskommen sollte jedoch: 172.23.71.254

Was mache ich denn in diesem Fall falsch?

Grüße, Matze
  Mit Zitat antworten Zitat
SirTwist

Registriert seit: 28. Sep 2006
196 Beiträge
 
Delphi XE Professional
 
#5

Re: Berechnung der IP-Adressen-Bereiche

  Alt 27. Dez 2007, 22:02
Zitat von Matze:
Code:
172.23.66.111 = 10101100.00010111.01000010.01101111
255.255.248.0 = 11111111.11111111.11111000.00000000
                -----------------------------------
                10101100.00010111.01000000.00000000
Da hat die Subnetmask am Ende 14 Nullen und somit ergibt sich ein Bereich von 2^14 = 16384.
Du vergisst, hier die Netzadresse zu bilden:
Code:
172.23.66.111 = 10101100.00010111.01000010.01101111
255.255.248.0 = 11111111.11111111.11111000.00000000
                -----------------------------------
                10101100.00010111.01000000.00000000 = 172.23.64.0
Und für den danachfolgenden Wertebereich brauchst Du eigentlich gar nicht so kompliziert mit div und mod zu rechnen. Du nimmst den Wert der Subnetmaske, der nicht 255 oder 0 ist (also die 248) und ziehst diesen von 256 ab (macht 8). Jetzt weißt Du, dass Du in der Netzadresse (172.23.64.0) den dritten Wert immer um 8 erhöhen oder vermindern musst, um das jeweils nächste oder vorige Netz zu erhalten. Das nächste Netz ist also 172.23.72.0, das vorige 172.23.56.0.

Wichtig ist, beim Rechnen mit den Netzadressen, immer erst den Host-Anteil auszufiltern (also die UND-verknüpfung mit der Subnet-Maske durchzuführen).

Böser Stolperstein: Natürlich geht nicht jede Kombination aus Subnetmaske und Netzadresse. Bei /20 kann man z.B. 172.23.48.0, 172.23.64.0 und 172.23.80.0 bilden, aber 172.23.56.0/20 ist kein gültiges IP-Netz, 172.23.56.0/21 dagegen schon.

Gruß,
SirTwist
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Berechnung der IP-Adressen-Bereiche

  Alt 27. Dez 2007, 22:08
Hallo SirTwist, danke für deine Antwort.

Zitat von SirTwist:
Du vergisst, hier die Netzadresse zu bilden
Tatsache, blöder Fehler von mir.

Du sagst, das nächste Netz sei 172.23.72.0. Dabei müsste es sich, wenn ich das richtig verstanden habe, um den Broadcast handeln. Folglich müsste ich doch die Adresse davor nehmen. Wäre diese nicht 172.23.71.255?
Denn das Ergebnis ist 172.23.71.254.

Grüße
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Berechnung der IP-Adressen-Bereiche

  Alt 28. Dez 2007, 10:29
Der Broadcast bildet sich durch "Auseinsen" aller Bits der IP-Adresse, in denen die Netzmaske eine 0 enthält. Nimmst Du statt der 1 eine 0, erhältst Du die Netzadresse.

Code:
172.23.66.111 = 10101100.00010111.01000010.01101111
255.255.248.0 = 11111111.11111111.11111000.00000000
                -----------------------------------
                10101100.00010111.01000000.00000000  <-- Netzadresse

172.23.66.111 = 10101100.00010111.01000010.01101111
255.255.248.0 = 11111111.11111111.11111000.00000000
                -----------------------------------
                10101100.00010111.01000111.11111111  <-- Broadcast
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:59 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz