Internet Protocol (IP) is een communicatieprotocol dat tussen alle netwerkmachines wordt gebruikt voor het doorsturen van gegevens. Zowel in het TCP/IP-model als in het OSI-model bevindt het belangrijke internetprotocol IP zich in de laag die de netwerklaag wordt genoemd.
Operatie
Gegevens op een IP-netwerk die worden verzonden in blokken die bestanden worden genoemd (de termen zijn in principe synoniem in IP en worden gebruikt voor gegevens op verschillende locaties in de IP-lagen). In het bijzonder is er in IP geen definitie nodig voordat het knooppunt bestanden probeert te verzenden naar een knooppunt waarmee het nog niet eerder heeft gecommuniceerd.
IP biedt een onbetrouwbare (ook wel best effort) datagram (pakket) service; dat wil zeggen, het pakket wordt geleverd met bijna geen garanties. Het pakket kan ongeordend aankomen (vergeleken met andere pakketten die tussen dezelfde knooppunten worden verzonden), het kan ook in tweevoud aankomen of het kan volledig verloren gaan. Als de applicatie een grotere betrouwbaarheid vereist, wordt deze toegevoegd op de transportlaag.
Routers worden gebruikt om IP-datagrammen door te sturen over onderling verbonden netwerken op de tweede laag. Het ontbreken van enige leveringsgarantie betekent dat het ontwerp van de uitwisseling van pakketten eenvoudiger wordt gemaakt. (Merk op dat als het netwerk een groot aantal pakketten laat vallen, opnieuw ordent of anderszins beschadigt, de prestaties die door de gebruiker worden waargenomen slecht zullen zijn, dus de meeste netwerkelementen doen hun best om dit soort dingen niet te doen – beste poging. Echter, af en toe fout zal geen merkbaar effect hebben.)
IP is het gemeenschappelijke element in het huidige openbare internet. Het wordt beschreven in IETF RFC 791, dat voor het eerst werd gepubliceerd in september 1981. Dit document beschrijft het meest populaire netwerklaagprotocol dat momenteel in gebruik is. Deze versie van het protocol wordt versie 4 of IPv4 genoemd. IPv6 heeft 128-bits bron- en bestemmingsadressering, wat meer adressering biedt dan IPv4’s 32-bits.
IPv4-koptekstindeling
Versie – Het eerste kopveld van een IPv4-datagram is het versieveld, met vier bits.
Header Size (IHL) – het tweede, vier-bits veld is de IHL (acroniem voor Internet Header Length) in 32-bits woorden (4 bytes) van de IPv4-header. Aangezien de IPv4-header het OPTIONS-veld biedt dat kan worden gebruikt om de IP-header uit te breiden, specificeert het IHL-veld in wezen waar de header precies eindigt en de IPv4-datagramgegevens beginnen. Een minimale IPv4-header is twintig bytes lang, dus de minimale decimale waarde in het IHL-veld zou vijf zijn, als volgt:
- Type of Service (ToS) – In RFC 791 worden de volgende acht bits toegewezen aan een Type of Service (ToS)-veld, nu DiffServ en ECN. De oorspronkelijke bedoeling was dat een knooppunt een voorkeur zou specificeren voor hoe datagrammen zouden kunnen worden verwerkt terwijl ze door het netwerk reizen. Het ene knooppunt kan bijvoorbeeld zijn ToS-waardenveld van IPv4-datagrammen instellen om de voorkeur te geven aan een kleine vertraging, terwijl andere de voorkeur geven aan hoge betrouwbaarheid. In de praktijk is het ToS-veld nog niet op grote schaal geïmplementeerd. Experimenteel, onderzoeks- en ontwikkelingswerk heeft zich echter gericht op het gebruik van deze acht bits. Deze bits zijn gereset en meer recentelijk door de DiffServ-werkgroep bij de IETF en door de codepunten vanExplicit Congestion Notification (ECN) (RFC 3168.)
- Lengte (pakket) – Het volgende zestien-bits IPv4-veld definieert de volledige lengte van het datagram, inclusief koptekst en gegevens, in acht-bits bytes. De minimale grootte van het datagram is twintig bytes en de maximale grootte is 64 Kb. De maximale datagramgrootte die elk knooppunt moet kunnen verwerken, is 576 bytes, maar modernere knooppunten kunnen veel grotere pakketten aan. Soms leggen subnetten beperkingen op aan de grootte, in elk geval moeten de datagrammen “gefragmenteerd” zijn. Fragmentatie wordt zowel bij het knooppunt als bij de pakketschakelaar in IPv4 afgehandeld, en alleen bij het knooppunt in het geval van IPv6.
- Identifier – het volgende veld van zestien bits is een identificatieveld. Dit veld wordt voornamelijk gebruikt om identificerende fragmenten van het originele IP-datagram te identificeren. In wat experimenteel werk wordt voorgesteld om het IP-veld voor andere doeleinden te gebruiken, zoals het toevoegen van pakketten om de informatie naar het datagram te brengen, op een manier die helpt om datagrammen achterstevoren op te zoeken met vervalste bronadressen.
- Vlaggen – het volgende drie-bits veld wordt gebruikt om fragmenten te besturen of te identificeren.
- Offset – Het fragment -offsetveld is dertien bits lang en stelt een ontvanger in staat de locatie van een bepaald fragment in het oorspronkelijke IP-datagram te bepalen.
- Time to live (TTL) – een 8-bits veld, TTL ( time to live) helpt voorkomen dat datagrammen blijven bestaan (dwz in cirkels ronddraaien) op een netwerk. Historisch gezien beperkt het TTL-veld de levensduur van een datagram tot seconden, maar het is een veld geworden voor het tellen van gelopen knopen. Elke pakketschakelaar die een datagram doorloopt, verlaagt het TTL-veld met één waarde. Wanneer het TTL-veld nul bereikt, wordt het pakket niet gevolgd door een pakketschakelaar en wordt het verwijderd.
- Protocol – een acht-bits protocolveld volgt, dat het volgende protocol definieert dat wordt gebruikt in een gegevensgedeelte van een IP-datagram. De Internet Assigned Numbers Authority houdt een lijst bij met protocolnummers. Veelgebruikte protocollen en hun decimale waarden zijn ICMP (1), TCP (6).
- Checksum – het volgende veld is een checksum-veld voor de IPv4-datagramheader. Een pakket in transit wordt gewijzigd door elke switch die het doorloopt. Een van deze schakelaars kan het pakket compromitteren en controleren is een eenvoudige manier om de consistentie van de header te detecteren. Deze waarde wordt gaandeweg aangepast en bij elk nieuw knooppunt gecontroleerd. Het gaat alleen om het controleren van de koptekst (niet de gegevens).
- Bronadres/Bestemmingsadres – na het controleveld volgen de bron- en bestemmingsadressen, elk 32 bits lang. Merk op dat de bron- en bestemmings-IPv6-adressen elk 128 bits zijn.
- Opties – Extra koptekstvelden kunnen het bestemmingsadresveld volgen, maar deze worden normaal gesproken niet gebruikt. Optievelden kunnen worden gevolgd door een padveld dat ervoor zorgt dat gebruikersgegevens worden uitgelijnd op een 32-bits woordgrens. (In IPv6 komen de opties buiten de standaardheader en worden ze gespecificeerd door het veld Volgende protocol , vergelijkbaar met de functie van het veld “Protocol” in IPv4).
Hieronder volgen drie voorbeelden van opties die op de meeste routers zijn geïmplementeerd en ondersteund:
- Beveiliging (specificeert het beveiligingsniveau van het datagram (gebruikt in militaire toepassingen));
- Tijdstempel (laat elke router zijn adres en tijdstempel toevoegen (32 bits), wat dient om routeringsalgoritmen te debuggen); en
- Route vastleggen (laat elke router zijn adres toevoegen).
IPv4-adressering en doorsturen [ bewerken | broncode bewerken ]
Misschien wel de meest complexe aspecten van IP zijn adressering en forwarding. Adressering definieert hoe IP-adressen van eindknooppunten worden toegewezen en hoe subnetten van IP-adressen van knooppunten worden verdeeld en gegroepeerd. IP-forwarding wordt gedaan door alle knooppunten, maar vaker door netwerkrouters, die doorgaans de IGP- of EGP-protocollen gebruiken om IP-datagrammen te helpen lezen die beslissingen over IP’s op gekoppelde netwerken doorsturen.
Op internet en in de privénetwerken die we tegenwoordig in bedrijven of zelfs thuis zien, wordt het communicatieprotocol dat door computers wordt gebruikt IP genoemd – een acroniem voor Internet Protocol. Het IP-protocol, dat eind jaren zeventig werd gecreëerd, heeft als “missie” niet alleen twee computers te laten “praten”, maar ook om de onderlinge verbinding van twee of meer afzonderlijke netwerken mogelijk te maken. Op een paar uitzonderingen na kwamen praktisch alle netwerken in de wereld op de een of andere manier met elkaar in verbinding en het was deze gemeenschap van netwerken die uiteindelijk vormde wat we tegenwoordig kennen als het internet (noem dat, in het Portugees , kan worden vertaald als “internetwerken” of “onderling verbonden netwerken”).
Het IP-protocol heeft een adresseringsschema dat vergelijkbaar is met telefoonnummers. Net zoals elke telefoon in de wereld uniek is (gezien het netnummer en landcode), heeft elke computer die is aangesloten op het internet een uniek nummer, dat een IP-adres of IP-nummer wordt genoemd. Dit nummer wordt gebruikt om de computer op internet te identificeren. Als u via internet met iemand wilt chatten, stuurt u gewoon berichten die zijn geadresseerd aan het IP-adres van de computer van die persoon.
Als een e-mail van Alice haar computer verlaat en bijvoorbeeld de computer van Beto bereikt, moeten de gegevens (in dit geval de tekst van de e-mail) worden verdeeld in kleine pakketjes (IP-pakketten genaamd) die in het bron-IP-adres zijn gemarkeerd (dat wil zeggen het unieke nummer van de computer van Alice) en het bestemmings-IP (het unieke nummer van de computer van Beto). Het internet “draait zich om” om zijn weg te vinden tussen Alice en Bob, zonder dat een van beiden zich daar zorgen over hoeft te maken.
Het IP-protocol in zijn huidige versie (versie vier, gelabeld IPv4) is echter al behoorlijk oud en kent veel problemen. De ernstigste zijn beveiligingsfouten, die periodiek worden ontdekt en waarvoor geen oplossing bestaat. De meeste aanvallen op computers op internet zijn tegenwoordig alleen mogelijk vanwege fouten in het IP-protocol. De nieuwe generatie van het IP-protocol, IPv6, lost de meeste beveiligingsproblemen van het internet van vandaag op, overgenomen van het verouderde project IPv4.
Maar IPv4 heeft een nog urgenter probleem dan zijn inherente onveiligheid: het heeft zijn schaalbaarheid al uitgeput. Elke computer die met internet is verbonden, of het nu een personal computer, een werkstation of een server is die een website host, heeft een uniek adres nodig dat hem op het netwerk identificeert. IPv4 definieert, onder andere voor communicatie tussen computers, dat het IP-nummer een 32-bits extensie heeft. Met 32 bits heeft IPv4 theoretisch ongeveer vier miljard IP-adressen beschikbaar, maar in de praktijk is wat er daadwerkelijk beschikbaar is minder dan de helft daarvan. Als we tellen dat de planeet zes miljard inwoners heeft en dat elk apparaat dat met internet is verbonden (waaronder smartphones, pc’s, notebooks en dergelijke) een aantal van zijn eigen nodig heeft, is het gemakkelijk te zien dat het account niet sluit. Dit aantal, dat eindig is, eindigt op een dag.
Bovendien zijn IP-adressen geografisch “ingesloten”. Twee adressen in de buurt bevinden zich noodzakelijkerwijs in dezelfde stad of regio. Gezien het feit dat ongeveer driekwart van de IP-adressen die beschikbaar zijn voor internet zich in de Verenigde Staten bevindt (zelfs als ze nooit worden gebruikt), zijn er iets meer dan een miljard adressen over voor de rest van de wereld – wat het tekortprobleem nog groter maakt.
De komst van smartphones en andere mobiele apparaten (die goedkoop en enorm populair zijn) op het internet heeft ertoe bijgedragen dat het aantal beschikbare IP-adressen nog schaarser is geworden. Sommige pessimistische voorspellingen waren zelfs dat IP-adressen in 2012 volledig zouden opraken, waardoor het internet in een echte chaos zou veranderen.
De komst van IPv6, met 128 bits, zou al deze problemen oplossen. Ten eerste omdat het vrijwel alle bekende IPv4-beveiligingslekken elimineert, waardoor communicatie enorm veiliger wordt. IPv6 zal waarschijnlijk een enorme hoofdpijn zijn voor criminele hackers.
Ten tweede definieert IPv6 128 bits voor adressering en heeft daarom ongeveer 3,4 × 10^38 adressen beschikbaar (of 340 gevolgd door 36 nullen). Voor degenen die niet willen rekenen, weet gewoon dat er vele miljarden biljard adressen beschikbaar zijn, wat garandeert dat er millennia lang geen tekort zal zijn aan IP-nummers voor mensen.
Volgens de eerste versie van een document voorgesteld door de IETF – Internet Engineering Task Force, de instantie die verantwoordelijk is voor de technologische ontwikkeling van internet, zou de migratie van IPv4 naar IPv6 ergens tussen 2009 en 2010 moeten zijn begonnen, met volledige migratie tegen het einde van 2011. De planning is nog steeds vertraagd door de verschillende problemen van de volledige ombouw. Google, Yahoo! en Facebook beginnen al IPv6 te adopteren.