# Netwerklaag

De netwerklaag is een conceptuele laag in een computernetwerk; het is een voorgeschreven laag uit het OSI-referentiemodel.

## Verantwoordelijkheden van de netwerklaag

De netwerklaag is de derde laag gedefinieerd in het OSI-model, liggend tussen de datalinklaag en de transportlaag. De netwerklaag is in het model verantwoordelijk voor het overbruggen van de afstand tussen deze omliggende lagen: voor het vertalen van een conceptueel "gesprek" (een sessie) tussen begin- en eindpunt in een netwerk in een verzameling pakketten die door de verschillende verbindingen in het netwerk (de datalinks) geleid kunnen worden.
De netwerklaag is verantwoordelijk voor het routeren van de pakketten door het netwerk -- de beslissing over de achtereenvolgende rij computers die een pakket zullen ontvangen en doorgeven, wordt in de netwerklaag genomen. Dit moet niet verward worden met de verantwoordelijkheid van de datalinklaag, die gaat over de vraag of een pakket goed (correct, volledig, zonder fouten) is verzonden tussen twee direct verbonden computers.

## Routering

Wanneer de netwerklaag een datastroom in pakketten verdeelt, moet de netwerklaag beslissen hoe die pakketten over het netwerk verstuurd moeten worden. Globaal zijn daarvoor twee mechanismen:

### Er is een vaste route voor alle pakketten tussen begin- en eindpunt

    In dit geval spreekt men van een verbindingsgeoriënteerde routering (en: connection-oriented) of ook wel van een virtueel circuit. De voordelen van een dergelijke verbinding zitten voornamelijk in de relatieve eenvoud van de implementatie en foutencorrectie. Aangezien alle pakketten dezelfde route volgen tussen begin- en eindpunt, is het alleen nodig om een route te bepalen — vragen zoals drukte op de route doen er niet toe. Fouten zoals verloren pakketten komen meestal niet voor en ook het terugassembleren van pakketten tot een datastroom om naar de sessielaag van het eindpunt te sturen is zeer makkelijk: alle pakketten komen in volgorde aan. Daar staat tegenover dat een circuit er meestal niet tegen kan als een onderdeel van de verbinding (zoals een fysieke kabel) wegvalt. Dat is meestal de dood van de verbinding, de bovenliggende sessie en van alles wat daar weer boven zit. Ook kan een verbindingsgeoriënteerde routering geen rekening houden met plotselinge drukte op de route. Een virtueel circuit is dan ook voornamelijk geschikt voor verbindingen die zeer betrouwbaar zijn of volledig ter beschikking staan van een enkele sessie (zoals een telefoongesprek over een landlijn).

### Ieder pakket krijgt zijn eigen routering mee

    In dit geval spreekt men van een verbindingsloze routering (Engels: connectionless) of van een datagram routering. De voordelen van een dergelijke verbinding zijn te vinden in de mogelijkheid om verbroken verbindingen of andere moeilijkheden onderweg op te vangen. Komt een fysieke verbinding te vervallen, dan kunnen de pakketten een andere routering meekrijgen. Hetzelfde geldt als een route niet verbroken wordt, maar dermate onder druk komt te staan dat hij nauwelijks meer begaanbaar is. Daartegenover staan een aantal duidelijke nadelen, voornamelijk in de complexiteit van de uitvoering. Een routeringsalgoritme dat rekening kan houden met drukte of verbroken verbindingen, moet ook informatie binnenkrijgen over dat soort toestanden en er iets mee doen. Bovendien moet het algoritme bij het eindpunt slim omgaan met pakketten die binnenkomen. Individuele routering betekent dat pakketten niet noodzakelijkerwijze in de juiste volgorde aankomen en het algoritme dat de datastroom weer in elkaar zet voor de sessielaag moet daar rekening mee houden. Verbindingsloze routering is voornamelijk geschikt voor netwerken waarin individuele verbindingen (de fysieke verbindingen) niet erg betrouwbaar zijn (het open Internet), of waarin er geen verbindingen zijn die volledig beschikbaar zijn voor een enkele sessie (het internet, de mobiele telefonie) of waarin het uiteindelijk aankomen van de boodschap belangrijker is dan de snelheid (ook weer het Internet).

## Adressering

Als bijproduct van de routering is de netwerklaag ook begaan met de vraag hoe computers in het netwerk aangesproken worden, wat hun adres is binnen het netwerk en of er eventueel adresvertaling nodig is (bijvoorbeeld van een conceptueel adres dat makkelijk is in de menselijke omgang tot een fysiek adres dat makkelijk is voor computers -- zie bijvoorbeeld DNS). De netwerklaag moet bekend zijn met de adresseringsmechanismen in het netwerk, of in het uiterste geval met alle adressen in het netwerk.

## Protocollen

Er zijn een groot aantal datacommunicatieprotocollen die zich binnen de beschrijving van de netwerklaag bevinden. Voorbeelden hiervan zijn:
Internet
* IP (Internet Protocol)
* PPP (Point-to-Point Protocol)
* ICMP (Internet Control Message protocol)
* OSPF (Open Shortest Path First Routing Protocol)
* ARP (Address Resolution Protocol)
* RARP (Reverse ARP)
OSI
* X25
Novell
* IPX (Internetworking Package Exchange)
Apple
* AARP (AppleTalk Address Resolution protocol)
* LAP (Link Access Protocol)
DEC
* DRP (DEC Routing Protocol)
* LAT (Local Area Transport)
* Distributed Systems, second edition, Sape Mullender et al., Addison-Wesley/ACM press, 1994, ISBN 0-201-62427-3