Räkna ut nätmasken
Att kunna räkna ut nätmasken på ett snabbt och enkelt sätt underlättar vid planerandet och byggandet av TCP/IP-nätverk. Det är nätmasken som bestämmer hur stort ett nät kan vara och hur IP-adresserna kommer att se ut.
I denna artikel kommer jag endast att gå igenom IPv4, då IPv6 fungerar på ett lite annorlunda sätt. IPv4 är fortfarande det som används mest idag även om IPv6 har fått en rejäl ökning de senaste två åren, framförallt eftersom allt fler VPS-leverantörer erbjuder IPv6 som standard. Men här kommer vi alltså att gå igenom hur IPv4-nätverk fungerar och är uppbyggda med fokus på nätmasken.
Vad är en IP-adress och var kommer nätmasken in i bilden?
En IP-adress är som ett telefonnummer som pekar på en viss enhet i nätverket. Enheten kan vara alltifrån en skrivare eller en mobiltelefon till en dator eller server.
Med IP-adressen kan du nå den specifika datorn i det nätverket den befinner sig. Men det är här nätmasken kommer in. Det är nätmasken som bestämmer nätets gränser, det vill säga vilka som är den första respektive sista adressen i nätverket.
Om vi tar ett vanligt hemmanätverk så brukar dessa ha adresser i nätet 192.168.0.0/24. Vad betyder då detta? Jo, en hel del faktiskt. Utifrån denna information får vi reda på allt vi behöver för att koppla in oss på nätverket och kunna nå de andra datorerna i samma nätverk. Först och främst tittar vi på /24. Detta innebär att nätet har en 24-bitars nätmask. En 24-bitars nätmask innebär att de första 24 bitarna redan är satta för själva nätet, det vill säga de är upptagna och går inte att använda för datorer.
Här kommer vi in på det binära talsystemet. Varje bit är en etta eller en nolla. Om vi sätter 24 stycken “ett”-bitar från vänster till höger, i kolumner om 8 bitar separerade med punkter, och fyller ut resterande 8-bitarna med nollor så att vi sammanlagt får 32 bitar, kommer det att se ut som nedan. En komplett IP-adress eller nätmask har sammanlagt 32 bitar.
11111111.11111111.11111111.00000000
Om vi översätter detta till vanlig decimalform får vi nätmasken enligt nedan:
255.255.255.0
Detta innebär i sin tur att vi bara kan använda den sista oktetten (oktett är en sekvens om 8 bitar) till adresser i vårt nätverk. Adresserna vi kan använda är således 0–255. Men detta är faktiskt inte helt sant, första adressen, nollan, går inte att använda som adress på en enhet; den är reserverad för att peka på själva nätet. Den sista adressen går heller inte att använda, 255, den är reserverad för broadcast-trafik.
Nu vet vi alltså att vi kan använda adresser i spannet 192.168.0.1 till 192.168.0.254 till våra datorer. Dessutom vi att nätmasken ska vara 255.255.255.0. T.ex. kan du använda adressen 192.168.0.15 med nätmasken 255.255.255.0 för din dator.
Räkna ut nätmasken
Finns det då något enkelt sätt att räkna ut hur många adresser det finns i ett visst nät? Det finns det, och det är dessutom inte särskilt svårt. Om $n$ är nätmasken i slash-notation får vi formeln:
\[2^{32-n}\]Om vi antar att nätmasken är 24, från vårt exempel ovan, får vi 256 adresser.
\[2^{32-24}=256\]Ett exempel till
Om vi istället har nätet 172.168.0.0/16 så ser vi att vi har nätmasken /16 i slash-notation vilket innebär att de första 16-bitarna redan är satta. Detta blir då som nedan:
11111111.11111111.0.0
Och detta i sin tur kan översättas till:
255.255.0.0
Här har vi istället två oktetter som vi kan använda för adresser i vårt nät. Vi har således adresserna från 172.168.0.0 till 172.168.255.255 (tänk dock på att 0 och 255 inte går att använda till enheter – dessa är reserverade).
Om vi använder formeln från ovan får vi antalet adresser i nätet.
\[2^{32-16}=65536\]Detta innebär i sin tur att det får plats 65534 datorer i nätverket (65536-2).
Några små program för att räkna ut nätmasken
Baserat på formeln $2^{32-n}$ kan vi göra följande enkla Pythonprogram för att snabbt och enkelt räkna ut antalet adresser i nätet.
#!/usr/bin/env python3
try:
slash = int(input("Ange nätmasken i slash-notation: "))
except(ValueError):
print ("Ange endast heltal mellan 0 och 32")
quit()
if ((slash < 1) or (slash > 32)):
print ("Ange endast värden mellan 0 och 32")
quit()
print ("Totalt antal adresser i nätet:", 2**(32-slash))
print ("Totalt antal användbara adresser i nätet:", 2**(32-slash)-2)
Jag har även gjort ett lite större Python-program som även visar hur nätmasken ser ut i dotted-decimal-formatet. Programmet finns på Github och heter subcalc.py.
Jag har även gjort ett annat program i PHP som heter netcalc.php. Detta program visar resultatet både i binärt format, dotted-decimal-format samt hur många sammanlagda adresser det finns och hur många adresser som är användbara till enheter.
Nyhetsbrev
Nyhetsuppdateringar från tidningen direkt till din inkorg, helt kostnadsfritt. Avsluta när du vill.
Kommentarer
Kommentarsfältet är modererat. Det innebär att alla kommentarer granskas av ansvarig utgivare före publicering.
Du väljer själv om du vill ange ditt riktiga namn, en pseudonym eller vara helt anonym. Ingen registrering behövs.
Relaterade artiklar
-
Avlyssna trafik på servern med Wireshark och TShark
Wireshark är ett ovärderligt verktyg för att felsöka nätverkskonfigurationer, applikationer, API:er, demoner och mycket annat. I kombination med
tshark
kan vi dessutom avlyssna trafiken på en server i realtid. -
Fortsatt låga IPv6-siffror i Sverige
Det är fortfarande knappt fem procent av internetanvändarna som har tillgång till IPv6. Det visar Post- och telestyrelsens senaste kartläggning. Samtidigt ökar andelen internetoperatörer som använder adressöversättning.
-
Grunderna i nätverk – del 2
I den här andra delen av serien om grunderna i nätverk ska vi utforska DNS-systemet. Vi kan lära oss mycket om internet och nätverk genom att slå upp information i DNS-servrarna. En DNS innehåller mer information än bara IP-adressen till en domän.
-
Grunderna i nätverk – del 1
I del 1 av denna artikelserie tittar vi på hur ett vanligt hemmanätverk fungerar. Detta är grunden för alla typer av nätverk. Vi utgår från nedanstående skiss och går igenom del för del, alltifrån hur datorerna får en IP-adress till hur de hittar ut på internet och kan slå upp rätt adress.
-
Tidssynkronisering med NTP
Senaste nyheterna och inläggen
-
Avlyssna trafik på servern med Wireshark och TShark
Wireshark är ett ovärderligt verktyg för att felsöka nätverkskonfigurationer, applikationer, API:er, demoner och mycket annat. I kombination med
tshark
kan vi dessutom avlyssna trafiken på en server i realtid. -
Mysig stämning på sommarens första demoparty
I helgen var det Reunion 2024 i Kvidinge Folkets hus, sommarens första skånska demoparty. Partyt organiserades av Jesper “Skuggan” Klingvall. På plats fanns ett 30-tal besökare.
-
Sommarens skånska demopartyn
Årets sommar bjuder på två skånska demopartyn. Först ut är Reunion i Kvidinge den 28–30 juni. Därefter är det Pågadata i Örtofta den 9–11 augusti.
-
Riskerna med BankID som ingen pratar om
BankID är ett säkert och smidigt sätt att identifiera sig online. Men i takt med dess ökade popularitet och användning har det blivit en svag länk – en single point of failure – på mer än ett sätt.
-
Polisernas fängelsedomar står fast
Efter tre år är målet mot de två poliser som olovligen tog sig in i en berusad mans bostad i Landskrona och misshandlade honom klart. Högsta domstolen beslutade den sjätte mars att avvisa överklagan. Fängelsedomarna för poliserna står därmed fast.
Utvalda artiklar
-
Mysig stämning på sommarens första demoparty
I helgen var det Reunion 2024 i Kvidinge Folkets hus, sommarens första skånska demoparty. Partyt organiserades av Jesper “Skuggan” Klingvall. På plats fanns ett 30-tal besökare.
-
Datorparty i Landskrona
I helgen höll Syntax Society sitt årliga sommarparty. Platsen var en källarlokal i Landskrona där ett femtontal personer medverkade.
-
Det första Pågadata har ägt rum
I helgen ägde det första Pågadata rum – uppföljaren till Gubbdata. Platsen var Folkets Hus i Kvidinge. Organisatör av partyt var Johan “z-nexx” Osvaldsson med hjälp från Jesper “Skuggan” Klingvall. Partyt hade över 100 anmälda deltagare.
-
Även hovrätten fäller poliserna för att ha satt dit oskyldig
Hovrätten fastställer straffet för de två poliser som förra året dömdes till vardera ett års fängelse av Lunds tingsrätt för att ha misshandlat och satt dit en oskyldig man. De båda poliserna ska även betala skadestånd till mannen.
-
Retroloppis i Påarp
Idag var det retroloppis hos Andreas Nilsson i Påarp. På baksidan av huset fanns hundratals spel uppradade på långa bord. Trots friska vindar och sval temperatur var loppisen välbesökt.
CyberInfo Sverige är ett it- och medieföretag i nordvästra Skåne som tillhandahåller böcker, utbildningar, nyheter och konsulttjänster inom Linux, säkerhet och programmering.
CyberInfo Sverige är godkänd för F-skatt, är momsregistrerat och innehar
utgivningsbevis för webbplatsen www.cyberinfo.se.