IP Adressen und co sind immer (bei IPv4) 4 Bytes.
Diese werden in der Regel mit . getrennt, so dass Du a.b.c.d hast mit a/b/c/d jeweils im Wertebereich 0..255
Jedes Byte besteht auf 8 Bit und damit lässt sich jede der 4 zahlen durch
xxxxxxxx darstellen mit x jeweils 0 oder 1.
Dabei haben diese x unterschiedliche Werte - 2^0 = 1 wäre das Rechte, daneben 2^1 = 2, dann 4, 8, 16, 32, 64 und zuletzt 128.
Eine IP Adresse besteht somit streng genommen aus 32 (8*4) Bits.
Netzwerkmaske gibt nun an, wie viele Bits das Netzwerk angeben (die restlichen identifizieren dann Adressen im Netz).
255.255.255.0 ist eine Typische Subnetzmaske. 255 = 11111111
Die Subnetzmaske in bits ist somit
11111111 11111111 11111111 00000000
Oft wird dies auch einfach angegeben mit der Anzahl der 1er: Diese Subnetzmaske wäre also /24, da 24 1er kommen.
Wenn man nun eine beliebige IP Adresse nimmt:
00001010 00001010 00001010 10010010 in so einem Netzwerk:
11111111 11111111 11111111 00000000
Dann sind die ersten Bits das Netzwerk:
00001010 00001010 00001010 00000000
Und das könnte man im 10er System darstellen: Das Netzwerk ist also 10.10.10.0 mit 255.255.255.0 oder eben in 10.10.10.0/24
Und man kann schon erkennen: Das ist ein logisches und bei den bits. Bei den ersten Bits ist es
Wert UND 1 => Wert und bei den letzten
Wert UND 0 => 0
==> Über ein bitweises UND können wir aus einer IP Addresse und einer Subnetmaske also eine Netzwerkadresse / -nummer generieren.
Wenn Du nun hast:
Netzwerkadresse mit Subnetzmaske und eine IP Adresse, dann kannst Du prüfen, ob die IP zu dem Netzwerk gehört.
IP Adresse & Subnetzmaske == Netzwerkadresse.
Bei den 255.255.255.0 ist es trivial - da kann ich einfach die 3 zahlen vergleichen:
10.10.10.0/24 geht halt von 10.10.10.0 - 10.10.10.255. Sobald eine der ersten drei Zahlen nicht 10 ist, ist die IP nicht Bestandteil.
Wenn ich 255.255.255.128 als Subnetzmaske habe, dann sind das 25 1er. Also muss auch bei der letzten Ziffer das erste Bit überein stimmen.
Also 10.10.10.0/25 bedeutet: das 2^7 Bit der letzten ziffer ist 0. Damit geht der Bereich von 0..127
Und dann nehmen wir .192 -> da ist das 2^7 (128) und 2^6 (64) bit festgelegt.
Und nehmen wir statt 0 andere Werte:
64: das 128er bit ist 0, das 64er bit 1
128: das 128er bit ist 1, das 64er bit 0
192: das 128er bit ist 1, das 64er bit 1
Und umgedreht kann man weniger Bits verwenden: 255.255.254.0 ist ja
11111111 11111111 11111110 00000000 => 23 1er
Bei 10.10.10.0/23 wäre bei der dritten Zahl also erlaubt: 10 und 11.
Und damit kommen wir zu der Routing Tabelle:
Wenn an eine Adresse etwas geschickt werden soll, dann wird die Tabelle durchgegangen und bei jedem Eintrag geprüft: Gehört das Ziel zu dem Subnetz. Ist dies der Fall, dann geht das Paket an den genannten Adapter.
Default Adapter bekommt alles, was nicht zugeordnet werden konnte.