3.1 Inleiding
3.2 IP Header
3.2.1 IP header velden met IP waarden
3.2.2 IP header velden met TCP/UDP waarden
3.3 Adresseren en Routeren
3.4 Fragmentatie
3.5 Reassembly
Begin van FileHet Internet Protocol (IP) is ontworpen voor het gebruik in gekoppelde computer netwerken die gebruik maken van packet-switching (pakket georiënteerd) en dient ervoor om blokken data (datagrammen) te transporteren van het bronadres naar de bestemming. Het Internet Protocol heeft dus als hoofdtaak het routeren en fragmenteren van pakketten data door het netwerk op basis van IP bestemmings adressen en andere gegevens die beschreven staan in de IP header. Het is op zichzelf een niet goed betrouwbaar protocol wat betreft transmissie fouten en bufferoverflows, omdat er geen ACK’s (bevestigingen van ontvangst) worden gegeven, er geen error controle plaats vindt op de data (alleen op de header) en de data bij fouten dus niet herstuurd wordt. Vandaar dat IP bijna altijd samen met TCP wordt gebruikt, die weer wel de controle houdt op deze zaken. Het Internet Protocol is connectieloos en dus gebaseerd op het versturen van pakketjes data zonder onderlinge relatie en zonder volgorde (Datagram service).
Begin van File
3.2 IP Header
Elk datagram pakketje die door IP verstuurd wordt, wordt voorzien van een IP header die aan het begin van de data wordt “geplakt”. Deze header is opgebouwd uit verschillende velden en deze velden zien er als volgt uit.

Binnen deze header zijn verschillende velden te onderscheiden die allemaal een verschillende functie hebben voor het gebruik en de verwerking van de IP datagrammen. In figuur 3.1 zijn de velden die licht zijn afgedrukt, de velden die door de bovenliggende laag TCP (dat in hoofdstuk 2 al is behandeld) of door UDP (dat in hoofdstuk 4 wordt behandeld) worden meegegeven. De donker gekleurde velden worden door het Internet Protocol zelf van waarden voorzien als deze de header aan de data koppelt.
Begin van File
3.2.1 IP header velden met IP waarden
Begin van File
3.2.2 IP header velden met TCP/UDP waarden
Bit 0 - 2 : Precedence. Bit 3 : 0 = Normal Delay, 1 = Low Delay. Bit 4 : 0 = Normal Throughput, 1 = High Throughput. Bit 5 : 0 = Normal Relibility, 1 = High Relibility. Bit 6 : Monetary Cost Bit 7 : Reserved for Future Use.

- Precedence. 111 - Network Control 110 - Internetwork Control 101 - CRITIC/ECP 100 - Flash Override 011 - Flash 010 - Immediate 001 - Priority 000 - Routine
Begin van File
3.3 Adresseren en Routeren
Het routeren en adresseren van de pakketten gebeurt door middel van de adressen die worden meegegeven door de bovenliggende laag (TCP of UDP). En, omdat iedere aansluiting in een IP netwerk een uniek IP adres bevat die nergens ter wereld hetzelfde mag zijn, komt het pakket altijd bij de juiste bestemming. Deze adressen die gebruikt worden als bron -of bestemmingsadres bestaan uit 4 bytes en bestaan uit een netwerknummer gevolgd door een lokaal adres. Het routeren gebeurt doormiddel van een routerings tabel die door elke host wordt bijgehouden en waarmee de pakketten via de verschillende routers verstuurd kunnen worden.Er zijn drie soorten van adres classes te onderscheiden ingedeeld aan de hand van de grote van het netwerk. Dit zijn:



Hierbij gaat het er dus om of er een adres gewenst is met een klein aantal netwerken en een groot aantal hosts, of een gemiddeld aantal netwerken en hosts, of een groot aantal netwerken met een klein aantal hosts. Aan dit adres is dan ook door de source gelijk te zien of de bestemming binnen het lokale netwerk ligt of dat deze doorgestuurd moet worden naar een router om vandaar uit verder te worden verstuurd.
Begin van File
3.4 Fragmentatie
Als een datagram te groot is voor het netwerk dat hij moet passeren, dan wordt deze gesplitst in fragmenten. ,Door dit splitsen, moet de IP header die bij de datagram hoort geheel of gedeeltelijk in de fragmenten worden gekopieerd. Hierbij kunnen een aantal velden veranderen, zoals:
Begin van File
3.5 Reassembly
Als de fragmenten bij het bestemmings adres aankomen moeten deze weer ge-“reassembled” worden naar een datagram. Aangezien de fragmenten verschillende routes kunnen volgen en door een error vernietigd kunnen worden, kunnen de fragmenten in verschillende volgorde aankomen en kunnen ook nog fragmenten van verschillende datagrammen door elkaar aankomen. Daarom worden de verschillende fragmenten eerst in een buffer geplaatst en pas als alle fragmenten van een datagram ontvangen zijn, wordt hier weer een geheel datagram van gemaakt. In figuur 3.2 is een voorbeeld te zien van een buffer waarin drie IP datagrammen worden gereassembled.

Als de fragmenten binnenkomen worden ze gecontroleerd op hun IP identificatie (ip_id) en aan de hand daarvan naar de juiste reassembly buffer toegestuurd. Hierin worden de fragmenten met behulp van hun fragment offset geplaatst op de juiste plek in de datagrambuffer.
Als de fragmenten binnen komen dan kan dat op verschillende manieren. Dit kunnen namelijk de eerst gestuurde fragmenten zijn maar ook fragmenten die na een error voor de tweede keer gestuurd zijn. Hierdoor kunnen fragmenten elkaar gedeeltelijk of geheel overlappen. Figuur 3.3 is een voorbeeld van hoe de verschillende fragmenten binnen komen en hoe ze elkaar gedeeltelijk of geheel kunnen overlappen.

De fragmenten zijn genummerd op hun tijd van binnenkomst in de buffer. Hierbij worden er bytes weggegooid van het deel van het fragment dat het achterstuk van een eerder fragment overlapt. (de voorkant van fragment 5 die het achterstuk van 1 overlapt) of wordt het hele fragment weggegooid als alle bytes al aanwezig zijn (fragment 6). Als een fragment het voorstuk van een eerder fragment overlapt wordt het voorstuk van dat eerdere fragment verwijderd (fragment 2) of als het eerdere fragment geheel overlapt wordt dan wordt hij geheel verwijderd (fragment 3). Zie bijlage voor een blokschema van de handelingen die nodig zijn voor reassembly.

Volgende hoofdstuk