Netwerkprotocollen/Internetlaag

Uit Wikibooks
Naar navigatie springen Naar zoeken springen

Het bekendste protocol uit de internetlaag is het Internetprotocol (IP). Dit protocol is verantwoordelijk voor het adresseren van hosts en voor het routeren van datagrammen (pakketten) van een bronhost naar een doelhost. Een computer die in zo'n netwerk voorkomt, wordt geïdentificeerd aan de hand van een IP-nummer.

IPv4[bewerken]

Notatie[bewerken]

In onze maatschappij kan je voor jouw woning niet zomaar je eigen straat en huisnummer kiezen. Al snel zou dit chaos zijn en zou de postbode met de handen in het haar zitten. Gelukkig is dat beter geregeld: ieder huis krijgt een unieke combinatie van straat, straatnummer, gemeente en land. Zo ook op het internet.

Een IPv4-adres wordt bijna altijd aangegeven als een groep van 4 decimale getallen, gescheiden door een punt, bv.:

81.241.89.194
74.125.230.196
192.168.2.1

Je zou dan vermoeden dat 301.140.45.13 ook een geldig IP zal zijn, wat niet het geval is. Dit komt omdat per getal slechts 8 bits gebruikt worden (cfr. Wikibook "Talstelsels in de informatica"). Het grootst mogelijke getal dat daarmee kan worden gemaakt is 28-1=255. Het grootst mogelijke IP-adres is dus (in theorie) 255.255.255.255.

Data wordt in een netwerk verdeeld in stukjes, die men ethernetframes noemt. Daar een router moet kunnen weten waar een frame naartoe moet, moet er een IP-adres zijn van de ontvanger, maar ook van de verzender. Met een programma zoals Wireshark kan je deze frames onderzoeken en zo zie je hieronder een frame van 192.168.1.2 naar 74.125.230.196. Hexadecimaal wordt dit respectievelijk 0xc0a80102 en 0x4a7de6c4. De inkapseling heeft gezorgd voor een header, waardoor het duidelijk is dat het om IPv4 gaat. Dat zie je bij 08 00.

0000 00 1b bf 89 a3 50 00 24 1d c1 71 e6 08 00 45 00 
0010 04 30 5c bd 40 00 40 06 e7 1e c0 a8 01 02|4a 7d 
0020 e6 c4 b4 c5 00 50 7d 1c 56 57 19 1d 1d 1e ...

In een firewall kan een IP-adres gebruikt worden om communicatie van en/of naar bepaalde hosts te blokkeren.

Publiek of privaat[bewerken]

Wil je dat een host bereikbaar is in een netwerk, dan heb je dus nood aan een uniek IP-adres. Met een bitruimte van 32 bits kan je iets meer dan 4 miljard unieke IP-adressen maken (nl. 232). Door de groei van het aantal hosts, had men nood aan veel IP-adressen. Men zag dat door die groei er te weinig zouden zijn. De bitruimte uitbreiden lijkt dan eenvoudig, maar is het helemaal niet: alle apparatuur moet hier mee overweg kunnen. Alle oude apparatuur vervangen is op korte termijn niet haalbaar.

Als tussenoplossing heeft men vastgelegd dat bepaalde IP-adressen meerdere keren gebruikt kunnen worden, zolang ze maar uniek zijn binnen het eigen (LAN-)netwerk:

range 192.168.0.0 - 192.168.255.255, bv. 192.168.0.101 ; 192.168.0.254 ; 192.168.5.2
range  172.16.0.0 -  172.31.255.255, bv. 172.16.0.1 ; 172.16.0.2 ; 172.27.1.1
range    10.0.0.0 -  10.255.255.255, bv. 10.0.0.1 ; 10.0.0.3 ; 10.1.0.3

Deze adressen worden private IP adressen genoemd. Deze worden heel vaak gebruikt in LANs bij je thuis, op het kantoor of in bedrijven. Je kan deze IP-adressen zelf beheren (of jouw router het voor jou laten doen). Binnen je eigen netwerk mag bv. 192.168.0.101 maar één keer voorkomen, maar bij je buur of je concurrent mag 192.168.0.101 opnieuw gebruikt worden.

In de meeste gevallen wil je ook communicatie met het Internet en hiervoor kan je geen private adressen gebruiken, net omdat ze niet noodzakelijk uniek zijn op de wereld. Hiervoor heb je een abonnement met een internet service provider (ISP) nodig. Deze geeft een IP-adres aan jouw router, dat voor de rest van de wereld zichtbaar én uniek is. Men heeft het over een publiek IP-adres.

Ook een ISP kan niet zomaar een IP-adres kiezen: het beheer van alle publieke IP adressen wordt uitgevoerd door de ICANN. Een ISP krijgt dan een "range" van IP-adressen, waaruit zij vrij kunnen kiezen. RIPE biedt op hun site de mogelijkheid om via een whois-aanvraag te weten komen welke range van IP-adressen een ISP heeft.[1]

De aandachtige lezer zal opmerken dat er wel nog een koppeling moet gebeuren tussen publiek en privaat IP-adres: dat wordt opgelost door NAT.

NAT[bewerken]

Stel dat je vanuit jouw LAN wil surfen naar wikibooks.org. Je pc doet dus een DNS-aanvraag en komt zo te weten dat het IP-adres 91.198.174.192 hoort bij de domeinnaam wikibooks.org. De pc doet dan een HTTP-aanvraag aan 91.198.174.192 en geeft ook zijn eigen IP-adres 192.168.1.1 mee, omdat hij een HTTP-antwoord wil terugkrijgen, nl. de webpagina. Het gele bolletje stelt het pakketje voor dat zich doorheen het netwerk beweegt:

Nat-situation1.svg

Deze HTTP-aanvraag komt toe bij de webserver van wikibooks.org. Alleen weet hij niet naar waar hij het HTTP-antwoord moet terugsturen. Het IP-adres 192.168.1.1 is namelijk een privaat IP-adres, dat énkel uniek moet zijn binnen één netwerk, maar niet over heel de wereld. Het is dus duidelijk dat dit niet zal werken.

Nat-situation2.svg

Een privaat IP-adres is dus niet routeerbaar over het internet, maar van de ISP heeft router RA wel een publiek IP-adres (bv. 91.179.77.105) gekregen, wél uniek over heel de wereld.

Nat-situation3.svg

De router RA krijgt een pakketje met als source IP-adres 192.168.1.1, maar hij zal dit wijzigen naar 91.198.174.192, voordat hij het op het Internet zet. Dit principe noemen we network address translation, kortweg NAT. Hierdoor kan wikibooks.org de webpagina terugsturen naar de publieke interface van de router, nl. 91.179.77.105. Belangrijk is dat de router een NAT-tabel bijhoudt, omdat hij moet onthouden wie dit oorspronkelijk had aangevraagd in het LAN-netwerk van A.

Het voordeel van NAT is dat het interne LAN-netwerk niet zomaar zichtbaar is voor de buitenwereld. Verschillende methoden[2] laten echter zien dat het gros van de NAT-methoden te omzeilen valt. Bovendien kan je met een goed ingestelde firewall op de router een gelijkaardige veiligheidssituatie zoals bij NAT bekomen.

NAT lost dus het tekort aan IPv4-adressen op, omdat zo meerdere nodes samen één IPv4-adres kunnen delen. Deze methode kan echter voor problemen zorgen. Stel bv. dat de pc A een webserver heeft draaien en dat pc B deze wil kunnen bereiken. Naar http://192.168.1.1:80 kan pc B niet surfen, want dat is zijn eigen IP-adres, terwijl hij de webserver op pc A wil bereiken. Het wijzigen van het IP-adres van A haalt niets uit, want het zal een privaat IP-adres blijven en dus niet vindbaar (=routeerbaar) via het Internet.

De gebruiker kan in router RA wel portforwarding instellen. Bijvoorbeeld: router RA, als je op je publieke interface een aanvraag krijgt op poort 3005, dan wil ik dat je dit doorstuurt naar 192.168.1.1 op poort 80. Als pc B dan surft naar http://91.179.77.105:3005, dan zal hij uiteindelijk terechtkomen op pc A, op poort 80. Deze portforwarding moet ingesteld worden in router RA en zou je schematisch als volgt kunnen weergeven:

LAN-kant router WAN-kant router
IP Poort IP Poort
192.168.1.1 80 91.179.77.105 3005

Een andere mogelijkheid bij zo'n peer-to-peer situatie en private adressen is om gebruik te maken van een derde, niet ge-NAT-te client die als doorgeefstation dienst doet (zoals bij Skype).

Statisch of dynamisch[bewerken]

Het IP-adres van een computer kan manueel worden ingesteld op de computer, het is dan steeds hetzelfde (statisch). Voor servers en routers is een vast IP handig, omdat deze dan altijd op dat adres te bereiken zijn. Zowel door rechtstreeks het IP in te typen, als bij de koppeling domeinnaam-IP (DNS). Bedrijven of scholen vragen vaak ook een statisch IP aan bij hun ISP.

Op werkstations statische IP's gebruiken is moeilijker, omdat je zelf een goed overzicht moet behouden. Je mag een IP-adres namelijk maar één keer toewijzen. Bij het wegnemen of bijzetten van werkstations wordt dit snel onbeheerbaar. Vandaar wordt er bij werkstations bijna altijd gebruik gemaakt van DHCP, waardoor automatisch een IP wordt toegewezen. Men spreekt van een dynamisch IP. Het is dan wel niet zeker dat je steeds hetzelfde IP-adres krijgt. Bij het abonnement van een particulier zal je standaard ook een dynamisch IP van je ISP krijgen.

Netwerk- en hostdeel[bewerken]

IP-pakketten worden verstuurd door computers, servers,... Het is de verantwoordelijkheid van een router om deze pakketten op de juiste bestemming te krijgen. Een router scheidt minstens twee netwerken, maar het kunnen er ook meer zijn. De vraag is via welke interface de router een binnenkomend pakket verder zal sturen en om dus deze te routeren.

De routeringstabel kan niet alle mogelijke bestemmingen (=IPv4-adressen) bevatten van de volledige wereld. Alleen al het opsommen van alle IPv4-adressen zou een bestand geven van 16 GiB (=232mogelijkheden * 4B/230=24), wat dus nog geen routeringsinformatie zou bevatten. Laat staan dat je in dat bestand een bestemming moet zoeken of dat je een bestemming moet aanpassen.

Een routeringstabel bevat dus niet (uitsluitend) afzonderlijke IP-adressen, maar er wordt gewerkt met afzonderlijke netwerken, subnetten genoemd. Hiervoor bestaat een IP-adres uit een netwerk- en een hostdeel. Het netwerkdeel geeft aan welk netwerk bedoeld is en het hostdeel geeft een bepaalde host (pc, router,...) binnen dat netwerk aan. Om te weten waar de grens ligt tussen de twee delen, zal een IP-adres vergezeld zijn van een subnetmasker. Een kortere notatie is de CIDR-notatie.

Subnetmasker[bewerken]

Dankzij het subnetmasker kan je besluiten wat van het IP-adres behoort tot het netwerkdeel en wat tot het hostdeel. Zo kan je ook besluiten of hosts tot elkaars netwerk kunnen behoren.

PC IP Subnetmasker Netwerkdeel Hostdeel
A 192.168.1.104 255.255.255.0 192.168.1 .104
B 192.168.2.104 255.255.255.0 192.168.2 .104

Conclusie: het netwerkdeel van pc A en B is niet gelijk en dus behoren ze niet tot elkaars netwerk.

PC IP Subnetmasker Netwerkdeel Hostdeel
C 192.168.1.104 255.255.0.0 192.168 .1.104
D 192.168.2.104 255.255.0.0 192.168 .2.104

Conclusie: het netwerkdeel van pc C en D is gelijk en dus behoren ze tot elkaars netwerk.

Nu blijkt dat de situatie van pc A en B toch anders is dan de situatie bij pc C en D, terwijl het nochtans gaat om dezelfde IP-adressen (maar een ander subnetmasker).

CIDR-notatie[bewerken]

In plaats van een subnetmasker wordt vaak ook aangegeven hoeveel bits gebruikt worden voor het netwerkdeel. Dit is de CIDR-notatie, die IP en subnetmasker in 1 notatie weergeeft:

PC IP Subnetmasker #netwerk- en hostbits CIDR-notatie
A 192.168.1.104 255.255.255.0 24+8=32 192.168.1.104/24
B 192.168.2.104 255.255.255.0 24+8=32 192.168.2.104/24
C 192.168.1.104 255.255.0.0 16+16=32 192.168.1.104/16
D 192.168.2.104 255.255.0.0 16+16=32 192.168.2.104/16

In plaats van de mogelijke private IP-adressen op te sommen met de range, kunnen ze heel compact genoteerd worden met de CIDR-notatie:

192.168.0.0/16
172.16.0.0/12
10.0.0.0/8

Als je een privaat netwerk opbouwt hoef je niet te kiezen voor de volledige range: bv. een netwerk 10.1.1.0/24 is ook mogelijk. Ieder IP-adres uit dit netwerk zal dan beginnen met 10.1.1.

Netwerkbits (ter info)[bewerken]

Het aantal netwerkbits hoeft dus niet noodzakelijk een veelvoud te zijn van 8, zie bv. 172.16.0.0/12. Het subnetmasker zal altijd beginnen met allemaal 1'tjes, gevolgd door allemaal 0'en. Bij 255.255.0.0 is dat geen probleem, want het decimale getal 255 is 11111111 binair. Ook het subnetmasker 11111111.11110000.00000000.00000000 is geldig, wat decimaal 255.240.0.0 zou zijn. Het subnetmasker 255.200.0.0 zou niet kunnen, want dit is 11111111.11001000.00000000.00000000 binair.

Zoals je merkt is het controleren of pc's in hetzelfde netwerk liggen een stuk moeilijker als het aantal netwerkbits geen veelvoud is van 8. Dan moet er nl. op binair niveau gekeken worden.

Netwerk- en broadcastadres[bewerken]

Het netwerkadres is het laagste adres uit de beschikbare range (dus binair is iedere hostbit een 0), terwijl een broadcastadres het hoogste adres uit de beschikbare ranges is (dus binair is iedere hostbit een 1).

PC CIDR-notatie Netwerkadres Broadcastadres #hosts
A 192.168.1.104/24 192.168.1.0 192.168.1.255 232-24-2=28-2=254
B 192.168.2.104/24 192.168.2.0 192.168.2.255 232-24-2=28-2=254
C 192.168.1.104/16 192.168.0.0 192.168.255.255 232-16-2=216-2=65534
D 192.168.2.104/16 192.168.0.0 192.168.255.255 232-16-2=216-2=65534

Enkele opmerkingen:

  • Het is logisch dat je voor pc C en D hetzelfde netwerk- en broadcastadres hebt, omdat ze in hetzelfde netwerk liggen.
  • Bij de berekening van het aantal hosts moet je altijd '-2' doen, omdat je een netwerkadres of een broadcastadres nooit mag toekennen als IP-adres voor een host.

Netwerkadres[bewerken]

In een firewall kan een netwerkadres in combinatie met een subnetmasker gebruikt worden om communicatie van en/of naar netwerken te blokkeren. Daar het netwerkadres dus een volledig netwerk voorstelt, mag het nooit gebruikt worden als IP-adres voor één host.

Broadcastadres[bewerken]

Pakketten die het broadcastadres als ontvanger hebben, komen op alle hosts van dat netwerk aan. Vandaar ook logisch dat je dit adres niet mag toekennen als IP-adres van een host, net omdat het gaat om broadcast en het dus geen unicast zou kunnen zijn.

Wanneer een client een IP-adres aanvraagt via DHCP, dan is dit ook via een broadcast. Hij weet dan echter nog niet in welk netwerk hij zit. In dat geval wordt 255.255.255.255 (of ff.ff.ff.ff hexadecimaal) als broadcastadres gebruikt. Merk op dat het MAC-adres van de verzender ook uit f'en bestaat, zodat de switch weet dat hij onderstaand pakket naar iedere host mag doorsturen.

0000 ff ff ff ff ff ff 08 00 27 75 b0 77 08 00 45 10 
0010 01 48 00 00 00 00 80 11 39 96 00 00 00 00 ff ff 
0020 ff ff 00 44 00 43 01 34 86 32 01 01 06 00 ...

Loopbackadres[bewerken]

Het netwerk 127.0.0.0/8 is het loopbacknetwerk. De meeste toepassingen gebruiken van dit netwerk enkel het adres 127.0.0.1. Dit adres is het loopbackadres en staat voor de eigen computer (men heeft het over de localhost). Dit kan bijvoorbeeld gebruikt worden om serverdiensten te benaderen die op de eigen computer staan. Als je bv. een eigen webserver draait om webtoepassingen lokaal uit te testen, dan kan je surfen naar je eigen website via http://127.0.0.1. Je zou ook je eigen IP-adres kunnen gebruiken, maar dan moet je dit eerst opzoeken en bovendien kan het veranderen. Vaak werkt ook http://localhost, wat achter de schermen vertaald wordt naar http://127.0.0.1.

Link-local adres[bewerken]

Stel dat je voor enkele computers snel een netwerk wil opzetten en je hebt enkel een switch (bv. op een LAN-party). Het manueel toekennen van statische, unieke IP-adressen en een bijhorend subnetmasker kost dan behoorlijk wat tijd. En het opzetten van een DHCP-server op één van de computers kost ook tijd. Gelukkig bestaat er het idee van een link-local adres (Microsoft heeft het over APIPA = Automatic Private IP Addressing). Dit idee is een onderdeel van Zeroconf of Zero Configuration Networking, nl. een reeks technieken die toelaat een bruikbaar IP-netwerk te maken zonder bijkomende configuratie of speciale servers.

APIPA.png

Bij IPv4 gaat het om het adresblok 169.254.0.0/16. Het besturingssysteem kiest uit dit blok een willekeurig IP-adres, dat met grote kans uniek is. Opgelet: je kan dit maar in een beperkt netwerk gebruiken, bv. in de context van een LAN. Bijhorende pakketten worden dan in principe door een router ook niet doorgestuurd.

In sommige situaties kan een Windows-client de DHCP-server (bv. van een 10.0.0.0/24 netwerk) niet bereiken en hij zal zich in dit geval een link-local IP-adres toekennen. In de achtergrond blijft Windows zoeken naar een DHCP-server. Dat betekent echter niet dat hij "per definitie" kan communiceren met andere hosts in het netwerk. De netwerken 169.254.0.0/16 en 10.0.0.0/24 zijn immers twee verschillende netwerken!

Microsoft Fixes Windows 10 Issue That Knocked People off the Internet
Microsoft had een update uitgerold die de CDPSVC service liet crashen op Windows 10, waardoor hosts geen IP-adres meer konden ontvangen via DHCP. Hierop kende Windows een link-local IP-adres toe. Pas een paar dagen later kwam een oplossing voor dit probleem.

(en) Microsoft Fixes Windows 10 Issue That Knocked People off the Internet. bleepingcomputer.com (2016-12-14).


IPv6[bewerken]

Internet Protocol versie 6 (IPv6) is versie 6 van het internetprotocol voor het toewijzen van IP-adressen. Het is de opvolger van Internet Protocol versie 4 (IPv4) en is de tweede versie van het internetprotocol die in gebruik is genomen. De tussenliggende versie IPv5 was een experimentele aanvulling op IPv4, maar deze werd nooit geïmplementeerd.

Notatie[bewerken]

IPv6-adressen zijn 128 bits lang en worden normaal geschreven als 8 groepen van 4 hexadecimale cijfers.

Een voorbeeld van een geldig IPv6-adres:

3ffe:6a88:85a3:08d3:1319:8a2e:0370:7344

Bij de cli-commando's ipconfig of ifconfig wordt gebruik gemaakt van shortcuts om een IPv6-adres zo kort als mogelijk te noteren. We overlopen de mogelijkheden.

Als een groep van 4 cijfers 0000 is, dan mag dit helemaal worden weggelaten.

3ffe:6a88:85a3:0000:1319:8a2e:0370:7344
3ffe:6a88:85a3::1319:8a2e:0370:7344

Wanneer er meer dan twee opeenvolgende groepen gereduceerd zijn tot dubbele punten, dan mogen ook die weer tot twee dubbele punten gereduceerd worden:

2001:2353:::::1428:57ab
2001:2353::1428:57ab

Opgelet, het mag enkel bij opeenvolgende groepen van nullen, omdat anders meerdere mogelijkheden ontstaan voor de posities van 0000.

2001::25de::cade is geen geldig IPv6-adres, want is het
2001:0000:25de:0000:0000:0000:0000:cade of 
2001:0000:0000:25de:0000:0000:0000:cade of nog iets anders??

Ook hoeven nullen vooraan in een getal (voorloopnullen) niet geschreven te worden:

2001:2353:02de::0e13
2001:2353:2de::e13

Opgelet! In de weergave mag dan gebruik gemaakt worden van shortcuts, achter de schermen blijft het een adres bestaande uit 128 bits! Dit kan je bv. bekijken met Wireshark. Hieronder is het bronIPv6-adres fe80::1 = fe 80 00 00 00 00 00 00 00 00 00 00 00 00 00 01 en het bestemmingsIPv6-adres ff02::1 = ff 02 00 00 00 00 00 00 00 00 00 00 00 00 00 01 zichtbaar. De inkapseling heeft gezorgd voor een header, waardoor het duidelijk is dat het om IPv6 gaat. Dat zie je bij 86 dd (bij IPv4 was dit 08 00).

0000   33 33 00 00 00 01 d4 21 22 76 5b 78 86 dd 60 00
0010   00 00 00 20 3a ff fe 80 00 00 00 00 00 00 00 00
0020   00 00 00 00 00 01|ff 02 00 00 00 00 00 00 00 00
0030   00 00 00 00 00 01 88 00 87 8b a0 00 00 00 fe 80
0040   00 00 00 00 00 00 00 00 00 00 00 00 00 01 02 01
0050   d4 21 22 76 5b 78

Verbeteringen[bewerken]

In de informaticawereld betekent een nieuwe versie vaak hogere snelheden. Bij IPv6 t.o.v. IPv4 is dat niet per definitie het geval! Meer zelfs: doordat de IP-adressen langer zijn, zijn ze in theorie moeilijker te behandelen. Bovendien zitten we de komende jaren met een overgangsfase, waar zowel IPv4, als IPv6 nodig is. Een complexe situatie. Er moeten dus wel andere redenen zijn waarom IPv6 is ontwikkeld.

Groter adresbereik[bewerken]

Het tekort aan beschikbare IPv4-nummers levert een enorm probleem op. IPv4-adressen bestaan uit 32 bits, waarmee 232 ≈ 4 miljard adressen kunnen worden toegewezen. Dit is minder dan 1 per bewoner van de aarde (de wereldbevolking telt ruim 7 miljard mensen). Op 3 februari 2011 heeft de Internet Assigned Numbers Authority (IANA) dan ook de laatste IPv4-adresblokken toegewezen.[3]

Een IPv6-adres is 128 bits lang; het aantal mogelijke adressen is dus 2128 ≈ 3,4 × 1038. IPv6 heeft dus een bijna onuitputtelijke voorraad adressen: voor elke aardbewoner zijn er ongeveer 50 quadriljard beschikbaar. Laat je dan ook niet misleiden dat de adresruimte "maar" vier keer zo groot is, want dat betekent dat het aantal adressen 296 keer zo groot is, nl. 2128-32!

Betere autoconfiguratie[bewerken]

IP-adressen zijn belangrijk, omdat ze communiceren mogelijk maken. Hoe verkrijg je nu een IPv6-adres? Er zijn twee mogelijkheden:

  • Stateful autoconfiguratie, nl. via DHCPv6, wat gelijkaardig werkt zoals DHCP bij IPv4. Er is dus nog steeds nood aan een DHCP-server en beide moeten op de hoogte zijn van hun status m.b.t. het verkregen/uitgedeelde IP (vandaar stateful).
  • Stateless autoconfiguratie, waarbij de host een IPv6 adres zelfstandig "kiest", zodat het naar grote waarschijnlijkheid uniek zal zijn. Het wordt dan gebaseerd op het netwerkprefix en vaak ook het MAC-adres. Hier valt het opzetten en configureren van een DHCP-server/service dus weg. Bovendien zijn er dan geen DHCP-broadcasts nodig, wat bij grote netwerken doorweegt op het netwerk. Stel bv. dat iedere host in een netwerk 1 broadcast stuurt, dan is dat bij 10 hosts beperkt tot 90 berichtjes, maar bij 100 hosts al 9900 (nl. n(n-1)=100*99))!

Betere routering[bewerken]

Door de enorme hoeveelheid aan IPv6-adressen kan men er een stuk kwistiger mee omspringen en dat op een zodanige manier dat men een netwerknummerhiërarchie kan opzetten. Op hoog niveau wordt bv. een onderscheid gemaakt tussen netwerknummers voor de verschillende continenten. Binnen de continenten kunnen internet exchanges en internetaanbieders hiërarchische nummerplannen opstellen.

Deze hiërarchie kent twee voordelen:

  • Routeringstabellen in routers worden minder complex. Alhoewel IPv6-adressen langer zijn (en dus "moeilijker" te behandelen) kan een minder complexe routeringstabel zorgen voor toegenomen snelheid.
  • Applicaties kunnen, aan de hand van het IP-nummer, bepalen welke nodes netwerktechnisch dichterbij staan. Zo kunnen applicaties als BitTorrent distributiealgoritmen ontwikkelen die efficiënter netwerkverkeer opleveren doordat bij voorkeur peers worden gekozen die dichter bij elkaar staan.

Overbodig maken NAT[bewerken]

Bij IPv6 is NAT dus niet meer nodig, daar dit was ontwikkeld om meerdere nodes (met private IP-adressen) samen één (publiek) IPv4-adres te laten delen. Nu kan iedere host zijn eigen uniek IPv6-adres krijgen.

De (semi-)veiligheid die NAT bracht, moet bij IPv6 wel opgevangen worden door de firewall goed in te stellen! Anders kan je problemen krijgen, zoals enkele Tele2-klanten in 2014 hadden: alle computers in het interne netwerk van sommige klanten waren opeens bereikbaar vanaf de buitenwereld.[4]

Gegevensbeveiliging op IP-niveau[bewerken]

IPv6 maakt het mogelijk om gegevens tijdens het transport te voorzien van beveiliging op IP-niveau. Deze beveiliging kent twee vormen:

  • Versleuteling (encryptie) van gegevens. Zender en ontvanger kunnen een sleutel afspreken waarmee het gegevenstransport beveiligd wordt. IPv4 kent deze mogelijkheid niet, waardoor veel beveiligingsvarianten boven de IP-laag ontwikkeld zijn, bijvoorbeeld VPN, HTTPS of SSH. De versleuteling van IPv6 maakt beveiliging op bovenliggende niveaus overbodig: ieder gegevenstransport op basis van IPv6 kan immers veilig gebeuren.
  • Authenticatie van gegevens. Hierbij kan de zender ieder pakket voorzien van een elektronische waarborg. Andere partijen kunnen de gegevens niet ongemerkt wijzigen, noch zich als de oorspronkelijke afzender voordoen. Hierdoor heeft de ontvanger zekerheid over de herkomst van de ontvangen IP-pakketten.

Ondersteuning van mobiele nodes[bewerken]

Bij mobiele toestellen heb je soms een bestaande connectie, waarbij je plots terechtkomt in een ander netwerk. Graag zou je willen dat "lopende" connecties toch kunnen blijven. Bij IPv4 is dit niet zomaar mogelijk, terwijl IPv6 het mogelijk maakt dat een node (tijdelijk) van een ander IP-adres gebruik maakt. De preciezere details vallen buiten het kader van dit Wikibook, maar kunnen op Wikipedia worden nagelezen.

IPv4 vs IPv6 (ter info)[bewerken]

De wijze waarop het protocol werkt, verschilt nauwelijks van de wijze waarop IPv4 werkt. Een van de weinige verschillen is dat in IPv6 een subnet niet langer een netwerkadres en een broadcastadres bevat:

  • het netwerkadres van IPv4 wordt het "subnet-router anycast"-adres bij IPv6;
  • broadcast wordt in IPv6 geïmplementeerd als een speciaal geval van multicast.

Het is niet zo dat we nu van de ene op de andere dag IPv4 kunnen vervangen door IPv6. Eerst was er een periode van het testen van IPv6, om nu beide naast elkaar te laten bestaan, met een gestage groei van IPv6:

  • Op 8 juni 2011 was de wereldtestdag voor IPv6. Een aantal grote bedrijven, zoals Microsoft en Google, bood de websites voor één dag aan over zowel IPv4 als IPv6 om zo de impact hiervan te testen.[5]
  • Op 6 juni 2012 activeerden een aantal Internet Service Providers (ISPs) en bedrijven permanent IPv6.[6] Begin 2014 begon Telenet met de uitrol van IPv6.[7] Dit zorgt ervoor dat de groei van IPv6 gestaag toeneemt, te merken bij bv. de grafieken van de Amsterdam Internet Exchange (AMS-IX)[8], het belangrijkste internetknooppunt in Nederland en bij het gebruik van IPv6 bij Google gebruikers[9].

IP vs MAC[bewerken]

Reden[bewerken]

MAC- en IP-adressen worden dus beide gebruikt om te adresseren, waardoor het misschien lijkt alsof we óf een IP-adres, óf een MAC-adres kunnen gebruiken. We hebben ze echter allebei nodig:

  • Het voordeel van MAC-adressen is dat je ze per definitie al hebt, want ze hangen vast aan de hardware. Enkel MAC-adressen gebruiken is niet handig: zo is er geen netwerk- en hostdeel, wat het moeilijk zou maken deze te gebruiken op het wereldwijde Internet. Een MAC-adres is dan ook enkel “geldig” binnen één netwerk.
  • Het voordeel van IP-adressen is dat je efficiënter netwerken kan indelen: zo vat 10.1.0.0/16 één netwerk samen met meer 65000 hosts! Het nadeel is dat je IP-adressen moet instellen: of statisch, of dynamisch.

ARP[bewerken]

Zowel IP, als MAC zijn dus nodig in een netwerk. Toch betekent dit niet dat we ze automatisch allebei al weten. Stel dat we een webserver in ons LAN-netwerk draaien (bv. als onderdeel van een NAS). Als we deze willen bezoeken zal het IP-adres gebruikt worden (bv. doordat we het rechtstreeks intypen in de adresbalk van de browser of via DNS). Deze aanvraag komt in principe eerst toe bij een switch, die echter enkel MAC-adressen "begrijpt", maar geen IP-adressen. Als een pc wil dat zijn pakketje toekomt bij de ontvanger, zal hij dus eerst het MAC-adres van deze ontvanger moeten achterhalen.

Het Address Resolution Protocol heeft als voornaamste doel het MAC-adres of hardwareadres te achterhalen van een bepaald IP-adres. Dit proces wordt ook wel IP-adresomzetting genoemd. Om het gebruik van broadcasts te verminderen worden eenmaal geleerde netwerkkoppelingen IP-MAC meestal tijdelijk lokaal gecachet.

Een voorbeeld van een ARP-aanvraag:

0000   ff ff ff ff ff ff|08 00 27 75 b0 77|08 06 00 01
0010   08 00 06 04 00 01|08 00 27 75 b0 77|c0 a8 38 65
0020   00 00 00 00 00 00|c0 a8 38 03|00 00 00 00 00 00
0030   00 00 00 00 00 00 00 00 00 00 00 00

De host met MAC-adres 08:00:27:75:b0:77 doet een broadcast (ff:ff:ff:ff:ff:ff) waarbij de vraag wordt gesteld wie het IP-adres 192.168.56.3 (0xc0a83803) heeft. Het antwoord moet gestuurd worden naar het MAC-adres 08:00:27:75:b0:77, op het IP-adres 192.168.56.101 (0xc0a83865). Samengevat: Wie heeft 192.168.56.3? Vertel het aan 08:00:27:75:b0:77 = 192.168.56.101.

Door het versturen van ARP-pakketten met vervalste MAC-adressen (ARP spoofing) is het als hacker mogelijk om pakketjes te ontvangen, die niet voor hem bedoeld zijn (een man-in-the-middle-aanval). Een andere techniek is het versturen van een overvloed aan ARP-pakketten met willekeurige MAC-adressen (MAC flooding). Bij een aantal switches leidt dit ertoe dat ze in een soort van hub-modus veranderen: pakketjes worden dan naar alle poorten verstuurd. Een aanvaller kan vervolgens middels een packet sniffer al het lokale netwerkverkeer aftappen.[10]

Alhoewel ARP hier besproken wordt bij de internetlaag, behoort het strikt gezien tot de linklaag! Een ARP-aanvraag wordt namelijk niet voorbij een router gestuurd, want het is de switch die op basis van de MAC-adressen ARP-aanvragen en ARP-antwoorden bezorgt. Het is in dit geval geplaatst bij de internetlaag, omdat kennis van MAC en IP nodig is om het te begrijpen.

Bronnen, noten en/of referenties
  1. Zie ripe.net. (nl) Bron: forumbericht op 9lives.be, nl. Gezocht: IP range belgie
  2. (en) UDP hole punching op de Engelstalige Wikipedia. NAT to NAT client-server communication, beschrijving van de pwnat tool van Samy Kamkar
  3. (nl) ipv4-blocks zijn toegewezen, door Joost Schellevis, www.tweakers.net, 3 februari 2011
  4. Bron: Deel Tele2-klanten een week lang kwetsbaar
  5. Wereld IPv6 Dag op 8 juni 2011, Stichting IPv6 Nederland
  6. World IPv6 Launch
  7. Tweakers.net: Telenet begint met uitrol ipv6
  8. Ipv6 traffiek van AMS-IX in grafieken
  9. Wereldwijd IPv6-gebruik bij Google gebruikers.
  10. Zie bv. deze vermelding op de wiki van Wireshark.
Informatie afkomstig van http://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.