Het OSI-model
Je typt https://www.ap.be in de adresbalk en drukt op Enter. Een halve seconde later staat de pagina op je scherm. Tussen die twee momenten gebeuren tientallen dingen, in een vaste volgorde, verdeeld over verschillende lagen.
Die reis is de rode draad van deze pagina. We volgen ze eerst als verhaal, en gebruiken ze daarna om het OSI-model te begrijpen, het referentiemodel dat netwerkcommunicatie in zeven lagen opdeelt.
De reis van een URL
Klik door de stappen. Let bij elke stap op het label linksboven: dat zegt in welke laag je zit.
Stap 1. De browser leest de URL
De browser splitst je URL in scheme, host en pad.
Nog voor er ook maar één bit je toestel verlaat, ontleedt de browser wat je typte. Het scheme (https) bepaalt welk protocol en welke standaardpoort gebruikt worden, de host (www.ap.be) zegt met welke server gepraat moet worden, en het pad (/) zegt welke bron gevraagd wordt.
scheme = https host = www.ap.be poort = 443 pad = /
Wat opvalt aan die reis:
- Er gebeurt veel voor er ook maar iets verstuurd wordt. URL ontleden en DNS-opzoeking komen nog helemaal aan jouw kant.
- Eén pagina is niet één request. De HTML is het eerste request; daarna volgen er tientallen voor CSS, JavaScript, lettertypes en afbeeldingen.
- Elke stap heeft zijn eigen zorg. DNS bekommert zich niet om versleuteling, TCP niet om wat er in het bericht staat, IP niet om of het bericht compleet aankomt.
Die laatste vaststelling is precies het idee achter een gelaagd model.
Waarom lagen?
Stel je voor dat je een pakje naar Spanje stuurt. Jij schrijft de brief, stopt hem in een doos en geeft die af. Wat daarna gebeurt (bestelwagen, sorteercentrum, vliegtuig, lokale postbode) hoeft je niet te interesseren. Omgekeerd hoeft de piloot niet te weten wat er in de brief staat.
Netwerken werken net zo. Elke laag:
- lost één soort probleem op;
- gebruikt de diensten van de laag eronder;
- levert een dienst aan de laag erboven;
- kan vervangen worden zonder de rest te breken.
Daardoor werkt dezelfde fetch() in je code, of je nu op wifi zit, aan een kabel hangt of via 4G verbonden bent. Alleen de onderste laag verschilt.
De zeven lagen van OSI
Het OSI-model (Open Systems Interconnection) is een referentiemodel uit 1984. Het beschrijft geen concrete software, het geeft een woordenschat om te zeggen waar een probleem zich bevindt.
| # | Laag | Wat ze doet | Voorbeelden |
|---|---|---|---|
| 7 | Applicatie | De diensten die de gebruiker of het programma rechtstreeks gebruikt | HTTP, DNS, SMTP, SSH |
| 6 | Presentatie | Voorstelling van data: codering, compressie, versleuteling | TLS, UTF-8, JPEG |
| 5 | Sessie | Sessies opzetten, onderhouden en afsluiten | Sessiebeheer, WebSocket-sessies |
| 4 | Transport | Betrouwbaarheid, volgorde, poortnummers | TCP, UDP |
| 3 | Netwerk | Adressering en routering tussen netwerken | IP, ICMP (ping), routers |
| 2 | Datalink | Foutdetectie en adressering binnen één netwerk | Ethernet, MAC-adressen, switches |
| 1 | Fysiek | Bits als elektrische, optische of radiosignalen | Kabels, glasvezel, wifi, connectoren |
Van laag 7 naar 1: Alle Programmeurs Sturen Toch Nog Dagelijks Fouten.
OSI versus TCP/IP
In de praktijk draait het internet niet op OSI, maar op het TCP/IP-model: hetzelfde idee, maar met vier lagen. OSI leer je om erover te praten, TCP/IP is wat je effectief gebruikt.
| OSI | TCP/IP | Protocollen |
|---|---|---|
| 7 Applicatie, 6 Presentatie, 5 Sessie | Applicatie | HTTP, DNS, TLS, SMTP |
| 4 Transport | Transport | TCP, UDP |
| 3 Netwerk | Internet | IP |
| 2 Datalink, 1 Fysiek | Netwerktoegang | Ethernet, Wi-Fi |
Het TCP/IP-model komt later in dit hoofdstuk uitgebreider aan bod.
Encapsulatie: dozen in dozen
Data die naar beneden door de lagen zakt, krijgt bij elke laag een extra header: een stukje administratie voor de tegenpartij op diezelfde laag. Dat heet encapsulatie.
Applicatie [ GET / HTTP/1.1 Host: www.ap.be ]
Transport [ TCP-header | GET / HTTP/1.1 ... ]
Internet [ IP-header | TCP-header | GET / HTTP/1.1 ... ]
Netwerktoegang [ Ethernet | IP-header | TCP-header | GET ... | FCS ]
Aan de andere kant gebeurt exact het omgekeerde: elke laag pelt zijn eigen header af en geeft de rest door naar boven. De webserver ziet uiteindelijk weer precies dezelfde tekst als wat de browser verstuurde.
Vergelijk het met een brief in een envelop, in een doos, op een pallet. Elke tussenpersoon leest alleen zijn eigen etiket, en de brief zelf blijft ongewijzigd.
De reis, nu per laag
Dezelfde stappen als hierboven, maar nu geordend volgens het model:
| Stap uit de reis | OSI-laag | TCP/IP-laag |
|---|---|---|
| URL ontleden | 7 Applicatie | Applicatie |
| DNS-opzoeking | 7 Applicatie | Applicatie |
| TCP-handdruk (SYN, SYN-ACK, ACK) | 4 Transport | Transport |
| TLS-handdruk en versleuteling | 6 Presentatie (in de praktijk boven TCP) | Applicatie |
| HTTP-request versturen | 7 Applicatie | Applicatie |
| Pakketten routeren via routers | 3 Netwerk | Internet |
| Frames over kabel of wifi | 2 Datalink en 1 Fysiek | Netwerktoegang |
| HTTP-response ontvangen | 7 Applicatie | Applicatie |
| Pagina renderen | boven het model: de browser zelf | – |
Fouten zijn makkelijker te plaatsen als je weet welke laag klaagt:
DNS_PROBE_FINISHED_NXDOMAIN→ de naam bestaat niet: applicatielaag (DNS).ERR_CONNECTION_REFUSED→ niets luistert op die poort: transportlaag.Destination host unreachablebijping→ routering: netwerklaag.404 Not Found→ verbinding is perfect, de bron bestaat niet: applicatielaag (HTTP).- Geen wifi-signaal → fysieke laag.
Van boven beginnen of van onder beginnen maakt niet uit; systematisch één laag per keer uitsluiten wel.
Test jezelf
1. In welke stap van de reis wordt de domeinnaam omgezet naar een IP-adres?
2. Je krijgt `ERR_CONNECTION_REFUSED` bij het openen van localhost:5173. Waar zit het probleem het waarschijnlijkst?
3. Wat is encapsulatie?
4. Op welke OSI-laag werkt een router?
- Tussen Enter en pagina zitten vaste stappen: URL ontleden → DNS → TCP → TLS → HTTP-request → routering → response → renderen.
- Elke laag lost één probleem op en steunt op de laag eronder; daardoor is elke laag vervangbaar.
- OSI telt zeven lagen (fysiek, datalink, netwerk, transport, sessie, presentatie, applicatie), TCP/IP vat die samen in vier.
- Bij encapsulatie krijgt data per laag een header erbij; de ontvanger pelt ze in omgekeerde volgorde weer af.
- Lagen zijn een diagnosemiddel: elke foutmelding hoort bij een laag.