# Subnet

Een subnet is een deelnetwerk in een netwerk, dat werkt volgens het internetprotocol. Het werkwoord subnetten betekent het opdelen van een set opeenvolgende IP-adressen (een IP-range) voor adressering op gescheiden fysieke netwerken. Het subnetten vindt zijn uitdrukking in het zogenaamde subnetmasker. Met dit masker wordt door de netwerkbeheerder bepaald welk gedeelte van een IP-adres het netwerk-ID is, en welk deel het host-ID. Door de subnetmaskers weten de routers in het netwerk op welk fysiek segment zich een bepaald adres bevindt, en dus waarheen de gegevens voor dat bepaalde adres moeten worden gerouteerd.
Elk IP-adres in een subnet start in de binaire notatie met hetzelfde binaire getal. Dit getal geeft het netwerk-ID weer. Soms wordt dit ook wel aangeduid als netwerkadres of subnet-ID. Omdat de term netwerkadres ook vaak wordt gebruikt om het volledige IP-adres aan te duiden, wordt hier verder steeds de term netwerk-ID gebruikt. De overblijvende bits in het IP-adres vormen het host-ID of hostadres. Om van een IP-adres te weten welk deel behoort tot het netwerk-ID en welk deel tot het host-ID maakt men gebruik van een subnetmasker. In binaire notatie bestaat een subnetmasker uit een rij enen, een voor elke bit van het netwerk-ID deel van het IP-adres, gevolgd door een rij nullen, een voor elke bit van het host-ID deel van het IP-adres.
Een subnet wordt geïdentificeerd aan de hand van zijn algemeen IP-adres samen met zijn subnetmasker. Een alternatieve methode voor het subnetmasker is de CIDR-notatie, waarbij men het getal gebruikt dat het aantal bits van het netwerk-ID aangeeft.
Een voorbeeld: stel een netwerk bestaat uit 2 computers A en B, welke zijn verbonden met een router, die op zijn beurt via een kabelmodem gekoppeld is aan het internet. Dit netwerk is opgezet als een subnet, waarbij IP-adres 17.76.99.1 toegewezen is aan computer A en 17.76.99.2 aan computer B. Het subnet werd zo ingesteld op de router dat de eerste 24 bits, oftewel de eerste 3 bytes, het netwerk-ID vormen: 17.76.99. Dit wordt aangeduid via het subnetmasker 255.255.255.0 (binaire notatie: 11111111 11111111 11111111 00000000). De router kan vervolgens zien of een te contacteren IP-adres binnen of buiten het subnet ligt. Het algemene adres waarmee we bij dit voorbeeld het subnetwerk aanduiden is: 17.76.99.0. Als we, in plaats van het opgeven van het subnetmasker, gebruikmaken van de CIDR-notatie wordt het: 17.76.99.0/24, waarbij de 24 in deze notatie erop duidt dat de eerste 24 bits het netwerk-ID vormen en de overblijvende 8 bits het host-ID.
In een grote organisatie zou de hoeveelheid gegevens die wordt verstuurd onbeheersbaar worden als elke computer de door elke andere computer verstuurde gegevens via broadcast zou ontvangen. Via subnetten kan de aan een organisatie toegewezen set van opeenvolgende IP-adressen hiërarchisch opgesplitst worden in diverse subnetten. Routers verbinden de verschillende subnetten. Communicatie, van een host vanuit het ene subnet naar een host uit een ander subnet, verloopt via één poort op een specifieke router. Gegevens worden hierdoor enkel nog via broadcast verstuurd binnen het kleinst mogelijke subnet.

## Subnetmaskers binaire notaties

Subnetmaskers worden vaak voorgesteld in decimale vorm met punten tussen de bytes. Het gebruik van subnetmaskers is echter duidelijker als we de binaire notatie gebruiken. Om een IP-adres op te splitsen in een netwerk-ID en een host-ID gebruiken apparaten de bitsgewijze binaire AND operatie (hier is duidelijk een AND operatie te zien tussen het IP-adres en de Subnetmask).
Voorbeeld
| | Decimale notatie | Binaire notatie |
| IP-adres | 192.168.5.74 | 11000000.10101000.00000101.01001010 |
| Subnetmasker | 255.255.255.192 | 11111111.11111111.11111111.11000000 |
| Netwerk ID | 192.168.5.64 | 11000000.10101000.00000101.01000000 |
| Host ID | 0.0.0.10 | 00000000.00000000.00000000.00001010 |
Subnetmaskers bestaan net als IP-adressen uit 32 bits: een reeks enen gevolgd door een reeks nullen, waarbij de reeks enen het netwerk-ID deel, en de reeks nullen het host-ID deel aanduidt. Zoals het voorbeeld laat zien, hoeft het subnetmasker de splitsing tussen netwerk-ID en host-ID niet per hele byte te maken: het kan op bit niveau gebeuren. Een classful netwerk is een netwerk met een subnetmasker 255.0.0.0, 255.255.0.0 of 255.255.255.0 in overeenstemming met de netwerkklasse van het IP-adres, waarbij dus wel een verdeling gemaakt wordt op hele bytes.

## Waarom

Het onderverdelen van netwerken wordt om verschillende redenen gedaan:
* Koppeling: onderling incompatibele datalink protocollen krijgen een eigen subnet (bijvoorbeeld Ethernet en Token ring) en worden gekoppeld via een router.
* Beveiliging: hosts op een ander subnet zijn alleen via een router te bereiken. Deze router kan daardoor de verbindingen analyseren, filteren en loggen.
* Bandbreedte: alle hosts op een fysiek subnet delen de beschikbare bandbreedte van het medium. Door een aantal hosts te 'verplaatsen' naar een ander subnet kan op beide subnets de gemiddeld beschikbare bandbreedte meer evenredig worden verdeeld.

## Supernet

Het omgekeerde van een subnet is een supernet. Hierbij wordt door middel van één CIDR-notatie verwezen naar een combinatie van meerdere subnetten. Dit wordt gedaan om efficiënter te routeren en routetabellen klein te houden. Men kan bijvoorbeeld twee klasse-C netwerken combineren in een supernet, zoals de subnetten 192.168.0.0/24 en 192.168.1.0/24 kunnen worden samengevoegd tot het 192.168.0.0/23-supernet. In feite wordt hier het aantal bits van het netwerk-ID deel verlaagd en daardoor het aantal bits van het host-ID deel van het IP-adres verhoogd, waardoor het maximale aantal bereikbare hosts toeneemt. Dit is echter wel afhankelijk van de bit-boundary: je kunt bijvoorbeeld 192.168.1.0/24 en 192.168.2.0/24 NIET samenvoegen tot één supernet, maar 192.168.2.0/24 en 192.168.3.0/24 kunnen weer wél worden samengevoegd tot het 192.168.2.0/23-supernet.