Horst: Software zum Berechnen von IP-Adressen

Beitrag lesen

hi @ll,

vielen Dank für Eure Hinweise!

Und so habe ich bis gestern spät in die Nacht hinein überflüssige (redundante) printf's rausgeschmissen und den Calculator ersteinmal so gebaut, wie ich den als Netzdesigner gebrauchen könnte. Es gibt in c zwar auch eine getops-Library (wie in Perl, danke Vinzenz, Stichwort Schalter), aber mein Kommandozeilenprogramm tut nur mit Arguementen.

Ohne Argumente gibt es aus:

IP-Calculator zum Berechnen von Subnetzen

Netzmaske        Maskenlaenge  Anzahl moeglicher Hosts
255.255.255.255  32 Bit        1 (Single Host)
255.255.255.254  31 Bit        Nicht nutzbar
255.255.255.252  30 Bit        2
255.255.255.248  29 Bit        6
255.255.255.240  28 Bit        14
255.255.255.224  27 Bit        30
255.255.255.192  26 Bit        62
255.255.255.128  25 Bit        126
255.255.255.000  24 Bit        254
255.255.254.000  23 Bit        510
255.255.252.000  22 Bit        1022
255.255.248.000  21 Bit        2046
255.255.240.000  20 Bit        4094
255.255.224.000  19 Bit        8190
255.255.192.000  18 Bit        16382
255.255.128.000  17 Bit        32766
255.255.000.000  16 Bit        65534
255.254.000.000  15 Bit        131070
255.252.000.000  14 Bit        262142
255.248.000.000  13 Bit        524286
255.240.000.000  12 Bit        1048574
255.224.000.000  11 Bit        2097150
255.192.000.000  10 Bit        4194302
255.128.000.000  09 Bit        8388606
255.000.000.000  08 Bit        16777214
254.000.000.000  07 Bit        33554430
252.000.000.000  06 Bit        67108862
248.000.000.000  05 Bit        134217726
240.000.000.000  04 Bit        268435454
224.000.000.000  03 Bit        536870910
192.000.000.000  02 Bit        1073741822
128.000.000.000  01 Bit        2147483646
000.000.000.000  00 Bit        4294967293 (IP-Range)

Private IP-Adressen nach RFC 1918
10.0.0.0    - 10.255.255.255  (10/8 prefix)
172.16.0.0  - 172.31.255.255  (172.16/12 prefix)
192.168.0.0 - 192.168.255.255 (192.168/16 prefix)

Options: ipcalc.exe [ip.ip.ip.ip/masklen] [Subnets]

Mit einem Argument kommt das hier:

ipcalc 10.0.0.0/24

Ergebnis der IP-Calculation

Netzmaske        255.255.255.0
Netzadresse      10.0.0.0
Broadcastadresse 10.0.0.255
Anzahl der Hosts 254
Default Class    A

Das dritte Argument hat es "in sich", damit können die Adressbereiche für mögliche Subnets angezeigt werden, zwei Beispiele:

#1:ipcalc 10.0.0.0/24 2

Ergebnis der IP-Calculation

Netzmaske        255.255.255.0
Netzadresse      10.0.0.0
Broadcastadresse 10.0.0.255
Anzahl der Hosts 254
Default Class    A

2 Subnetze mit Maskenlaenge 25 (je 126 Hosts):

10.0.0.0 - 10.0.0.127
10.0.0.128 - 10.0.0.255

#2:ipcalc 10.0.0.0/28 4

Ergebnis der IP-Calculation

Netzmaske        255.255.255.240
Netzadresse      10.0.0.0
Broadcastadresse 10.0.0.15
Anzahl der Hosts 14
Default Class    A

4 Subnetze mit Maskenlaenge 30 (je 2 Hosts):

10.0.0.0 - 10.0.0.3
10.0.0.4 - 10.0.0.7
10.0.0.8 - 10.0.0.11
10.0.0.12 - 10.0.0.15

Ansonsten ist es mit c ein sehr spartanisches Programmieren, da ist viel zu Fuss zu machen und eine Funktion wie log2() in den Standardbibliotheken zu finden ist da schon Glücksache.

Andererseits macht das maschinennahe Programmieren mit Bit-Operatoren und richtigen Pointern schon alleine den besonderen Reiz von c aus und, wie mein damaliger c-Teacher immer sagte:

"Programmieren mit c ist wie das Fahren in einem offenen Geländewagen, je nach Gelände sieht der Chauffeur dann entsprechend aus." Nunja, es gibt Programmierfehler, die meckert der Compiler an, aber es gibt auch Solche, die er nicht bemerkt, sondern erst der Anwender, wenn er ein Speicherabbild gezeigt bekommt ;-)

Und überhaupt gibt es heute genügend Klickibunti-Programme, da tut es richtig gut, mal wieder auf der Kommandozeile was einzutippen.

Viele Grüße,
Hotte

PS: Geile Vorschau hier ;-)