donderdag 21 mei 2015

IP-adres omrekenen naar binaire waarde

Huh? IP-adres omrekenen naar een binaire waarde? Wat is dat? Wat heb ik eraan? Het is waarschijnlijk niet iets waar je vaak over hoort. Sterker nog, als eindgebruiker zul je er nooit mee te maken krijgen. Als ICT- of netwerkbeheer echter weer wel. Ben je nieuw met ICT en wil je graag meer leren over digitale communicatie, dan is het belangrijk om het binaire stelsel te kennen.  In dit artikel wil ik, op basis van de kennis die ik de afgelopen week heb opgedaan over dit onderwerp, uitleg geven over het omrekenen van IP-adressen (en andere getallen) naar een binaire waarde. En waarom ook niet meteen omgekeerd?

Weten hoe het binaire stelsel in elkaar zit is onderdeel van ICT. En van het Cisco-curriculum. Je leert hierdoor makkelijker fouten te herkennen en oplossen. En dat is enorm belangrijk in de computerwereld. Daar krijg je continue met dit soort dingen te maken. Als je dan een keer een raar nummer te zien krijgt en je weet niet eens wat het betekent, dan is het vele malen moeilijker een diagnose te stellen.

Allereerst is het belangrijk een aantal termen te kennen vooraf. Zoals IP. Dit staat voor Internet Protocol en is in principe een postcode van jouw netwerk; het geeft de locatie weer van de router die je gebruikt om te kunnen internetten. Geen zorgen, het is niet zo dat als iemand jouw IP-adres weet, deze persoon ineens weet waar je woont! Sommige mensen denken van wel, maar het werkt in feite heel anders. Sterker nog, het is prima om te zeggen dat het IP-adres van jouw router hoogstwaarschijnlijk 192.168.1.1 is. Dit is een algemeen adres, en vrijwel altijd van de hoofdrouter. Ook wel bekend als de default gateway (standaardgateway). Heb je een tweede router, dan krijgt deze een normaal IP-adres, bijvoorbeeld 192.168.1.2. Maar je kunt hier van maken wat je wilt, zolang geen enkel ander apparaat ditzelfde adres gebruikt. Heb je bijvoorbeeld twee apparaten die allebei op hetzelfde adres zitten, dan zal dat conflicten opleveren en kun je simpelweg niet internetten. Moderne routers bieden gelukkig de mogelijkheid om te zien welke apparaten op het netwerk zitten en welk adres deze hebben. Is dat niet het geval, dan is het slim zelf een lijstje bij te houden hiervan.

Wat je ook moet kennen is de term bit. Een bit geeft heel simpel aan of iets wel of niet moet gebeuren. Je kunt het goed vergelijken met hoe een lichtschakelaar werkt. Wanneer je de lamp aanzet, is de waarde '1'. Zet je hem uit, dan verandert de waarde naar '0'. Bij een bit kun je alleen aan de waarden 0 en 1 denken. Tenzij je het natuurlijk hebt over de grootte van een bestand, alleen wordt de waarde dan gelijk als een decimaal weergegeven. Bijvoorbeeld 10 bits, wat gelijk staat aan de binaire waarde 0000 0101. Hoe ik dat weet? Daar gaan we het zometeen over hebben.

Ik ga nu wat uit het gedeelte over IP-adressen combineren met wat ik zojuist over bits heb uitgelegd. Er zijn twee soorten IP-addressen: IPv4 en IPv6. Vandaag wil ik me echt specifiek op IPv4 gaan richten. Beide soorten addressen beschikken over een maximum aantal bits. IPv4 is een 32-bits adres.

Een IPv4-adres wordt altijd verdeeld in vier stukjes. Deze stukjes worden ook wel octets genoemd, het verwijst naar de getallen die voor, na of tussen een puntje staat. 192 is een octet, 168 is een octet, 1 is een octet en de laatste 1 is een octet. Dit maakt samen 192.168.1.1. Ieder octet bestaat uit 8 bits (32 bits totaal / 4 octets = 8 bits). Ieder octet kan tot 255 gaan. Waarom dat zo is, daar ga ik vandaag niet op in.

Nu is het zo dat als je een decimaal wilt omrekenen naar een binaire waarde, je dit doet door een reeks getallen te gebruiken. Het is uiteindelijk gewoon rekenen, door ieder getal maximaal één keer toe te passen. Bij een IP-adres mag je hiervoor de volgende getallen gebruiken:

128
64
32
16
8
4
2
1

Ik legde eerder al uit dat ieder octet van een IP-adres tot 255 gaat. Als je de cijfers in de reeks hierboven allemaal bij elkaar optelt zul je zien dat deze samen 255 zijn. Op deze manier kun je ook uitrekenen wat je nodig hebt om het eerste octet van het adres 192.168.1.1 te krijgen. 192 dus. Hiervoor gaan we gelijk kijken naar welke bits we nodig hebben. Hieronder zie je het resultaat.

128
64
32
16
8
4
2
1
1
1
0
0
0
0
0
0

Dit betekent dat dit de binaire waarde is van 192: 1100 0000 (voor het gemak splitsen we de 8 bits in twee groepjes van 4 bits). Begin je het al een beetje te begrijpen? Probeer dan eens dan dit getal om te rekenen naar een binaire waarde: 168. Het is een kwestie van rekenen met de getallen die in de tabel genoemd worden, meer niet. Je mag, als dit het voor jouw makkelijker maakt, een 1 zetten onder de getallen die je nodig hebt, en een 0 onder de getallen die je niet nodig hebt. Overigens, als je ooit bijvoorbeeld dit IP-adres krijgt: 192.168.1.0, onthoudt dan dat je de 0 niet hoeft om te rekenen. Dit is standaard al 0000 0000. Net als dat 255 gelijk staat aan de binaire waarde 1111 1111. Aan het einde zal ik nog vertellen hoe je dit doet bij een getal boven de 255.

Heb je inmiddels het antwoord al op de opdracht die ik net gaf en wil je controleren of je hem correct hebt? Kijk dan hier voor het antwoord.

Een binaire waarde omrekenen naar een decimaal is eigenlijk net zo makkelijk. Het verschil is dat je dan alle getallen waar een 1 onder staat moet gaan optellen om het antwoord te krijgen. De binaire waarde 0001 0101 bijvoorbeeld is 16 + 4 + 1 = 21.

Maar hoe zit het nu als ik wil weten wat de binaire waarde is voor het getal 756? Want zo ver kom ik toch niet met de cijfers uit dat tabelletje? Klopt! Die is namelijk echt bedoeld voor getallen tot 255. Wil je weten wat 756 in een binaire waarde is, dan moet je de tabel gaan uitbreiden. Voeg hiervoor vier getallen vóór de 128 (dus links ervan). Vul niet zomaar iets in, zoals 129. Je moet de waarde steeds verdubbelen. 128 × 2 = 256, 256 × 2 = 512 enzovoort. Om je te helpen heb ik in het voorbeeld hieronder 756 alvast omgerekend.


Ben je net zoals ik geen kei in rekenen, dan kan deze tip alvast een beetje helpen: vaak kun je bepaalde waarden al gelijk wegwerken. In het voorbeeld hiervoor kon je 2048 en 1024 werwerken, omdat deze hoger zijn dan 756. Begin altijd met de eerste waarde die vóór een getal komt dat je wilt omrekenen. Zou je de binaire waarde voor het decimaal 511 willen weten, dan gebruik je dus niet 512, 1024 of 2048. Je begint dan met 256.

Als bonusje mogen jullie proberen (zonder gebruik van Google!) het decimaal 1.000.000 om te rekenen naar zijn binaire waarde. Het antwoord is hier te vinden.

Heb je vandaag wat kunnen leren over het binaire stelsel, en natuurlijk over IP-adressen? Dan heb ik mijn taak volbracht! Heb je toch ergens moeite mee, of wil je wat meer uitleg over iets, laat het dan gerust weten!


Tom de Beer | hoofdredacteur
Techblogger en Apple-fan in hart en nieren, student Medewerker Beheer ICT met passie voor netwerken, en altijd bereid kennis en ervaring op te doen. Tevens gecertificeerd Microsoft Office Specialist Master en Microsoft Technology Associate, taalfanaat en enorme fan van Lady Gaga.

6 opmerkingen:

  1. Hey hallo
    wij moeten voor school een ip adres omzetten naar binair. Onze code is 22.63.852.23 zou u ons kunnen helpen met het antwoord en ook de stappen aangeven hoe we dit moeten omzetten?
    dankuwel
    m.v.g. eva en djatou

    BeantwoordenVerwijderen
    Reacties
    1. Hallo Eva, Ik ben nu bezig barbier code uit te zoeken

      Verwijderen
  2. Alstublieft help ons met onze code 22.63.852.23

    BeantwoordenVerwijderen
    Reacties
    1. Sorry dat ik zo laat reageer, ik had jullie reacties niet gezien. Het IP-adres 22.63.852.23 kun je helaas niet binair schrijven. Reden hiervoor is die 852 die ertussen staat. Een IP-adres (althans, een IPv4-adres) gaat maar tot 255. Want als je alle getallen bij het berekenen van binaire naar decimale getallen bij elkaar optelt kom je uit op 255: 1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 = 255.

      Dus nogmaals, je kunt die getallen niet omzetten. De overige getallen wel:

      22 = 00010110
      63 = 00111111
      23 = 00010111

      Ik vraag me af hoe jullie aan een IP-adres komen met een getal erin dat hoger is dan 255. Kunnen jullie mij dat vertellen?

      Verwijderen
  3. dat hoort bij de opdracht je krijgt een niet bestaande dus krijg je ook hogere het is dus gewoon een octet maar dan boven de 255 je gebruikt daarbij de grotere tabel zoals hierboven geschreven heb de opdracht zelf ook gemaakt en als je dit doorleest snap je het wel

    BeantwoordenVerwijderen
    Reacties
    1. Dat kan inderdaad wel, maar dan is het geen IP-adres meer. :) In het geval van jullie opdracht zou 852 vertalen naar 01101010100.

      Om de theorie hierachter uit te leggen: een IPv4-adres is in totaal 32 'bits' lang. Eén bit is een binaire waarde van '1'. Een IP-adres bestaat uit vier groepjes, ook wel octetten genoemd. Ieder octet is dus, als je uitgaat van die 32 bits totaal, 8 bits lang: 00000000 (iedere 0 kan een bit zijn). Ofwel, 128, 64, 32, 16, 8, 4, 2 en 1. Dit maakt samen 255.

      Een IP-adres is 'fixed'. Daarmee wil ik zeggen, dat het niet aangepast kan worden. Het getal 852 kun je dan ook op geen enkele manier gebruiken. Wel kun je gebruikmaken van IPv6, waarbij hexadecimale waarden worden gebruikt. Hierdoor kun je in totaal 128 bits krijgen in principe. Maar dat is een verhaal apart allemaal, en ook een stuk ingewikkelder.

      Waar het om gaat: een IPv4-adres kan maar tot 32 bits in totaal, en ieder getal is maximaal 8 bits groot (tot 255). Het maximale dat je kunt krijgen is dus 255.255.255.255.

      Maar goed, waarschijnlijk interesseert dat jullie niet zo, haha. Ik dacht, ik leg het even uit zodat jullie ook begrijpen waarom het getal 852 wel kan worden vertaald naar een binaire waarde, maar niet als je het puur over een IP-adres hebt. :P

      Verwijderen