# Hoe werkt het web?

*Onderstaande uitleg is gebaseerd op begrippenlijsten uit de eerste les.*

Als je een website wilt bezoeken, dan gebruik je daarvoor een **webbrowser** (zoals Chrome, Edge of Firefox): dat is het programma op je computer waarmee je websites kunt bekijken. In de **adresbalk** (het tekstvak bovenaan in je webbrowser) kun je het **webadres** invoeren van de pagina die je wilt bekijken. Het webadres noemen we ook **URL** (voor Uniform Resource Locator): het geeft de locatie van de webpagina aan. Het **domein** is het belangrijkste deel van de URL: het geeft aan op welke server de website te vinden is. In het webadres *https://app.q-highschool.nl/aanbod* is *app.q-highschool.nl* het domein. Voor websites begint het domein vaak met **WWW** (World Wide Web), om aan te geven dat het een website is. Technisch is dat niet per se nodig, maar het is een gewoonte uit de begintijd van het internet en het web die nog steeds gebruikt wordt (wel steeds minder tegenwoordig).

![Screenshot van Firefox met https://q-highschool.nl in de adresbalk](assets/hoe_werkt_het_web/image-20231212112939501.png)

Goed, je hebt een webadres ingetypt in je browser en drukt op enter. De browser moet nu de webpagina zien op te halen via het internet en de eerste stap is uitzoeken welke **server** (een computer die reageert op berichten van andere computers) we moeten vragen naar die website. (De "**cloud**" is overigens niets meer dan een groep servers op het internet.) Daarvoor gebruikt je browser **DNS** (Domain Name System), het telefoonboek van het internet. Op het internet kunnen computers en servers met elke communiceren als ze elkaars **IP-adres** weten. **IP** staat voor Internet Protocol. Een **protocol** is een set afspraken over hoe de communicatie werkt, dus IP beschrijft hoe apparaten over het internet met elkaar kunnen communiceren.

Zodra de browser dan weet wat het IP-adres is, verstuurt die een **HTTP** (HyperText Transfer Protocol) verzoek om de **HTML** (HyperText Markup Language) van de webpagina op te halen. De server stuurt dan die code terug waarmee de webbrowser de webpagina kan laten zien. **HyperText**, wat in beide afkortingen staat, is overigens niet meer dan tekst met linkjes (ook wel **hyperlinkjes**) naar andere pagina's. HTTP is dus het protocol dat beschrijft hoe die pagina's verstuurd kunnen worden en HTML de programmeertaal waarmee je een webpagina met linkjes kunt beschrijven. Aan het begin van het webadres zie je vaak **http://** of **https://** (de versleutelde versie) staan, wat dus aangeeft dat HTTP gebruikt moet worden om die pagina op te halen.

![Een laptop, DNS server en webserver met de DNS en HTTP verzoeken die verstuurd worden](assets/hoe_werkt_het_web/image-20231212113124077.png)

In de HTML-code staan nog referenties naar andere dingen die nodig zijn om de pagina te laten zien: bestanden met **CSS** (Cascading Style Sheets), die de stijl (dus kleuren, lettertypes etc.) van de pagina bepalen; afbeelding; video's etc. Zodra de browser de HTML-code heeft ontvangen en gelezen worden nieuwe HTTP-verzoeken verstuurd naar de server om die andere bestanden ook op te halen. De server antwoord op HTTP-verzoeken met een **status code**. De code **404 Not found** heb je vast wel eens gezien, dat betekent namelijk dat de pagina niet bestaat, maar als alles goed gaat is de status code **200 Ok**. Een andere reeks codes die je wel eens tegenkomt zijn **500** en hoger: die geven aan dat er op de server een onverwachte fout is ontstaan. Bij de module Security zie je die soms als iemand anders (of jijzelf) iets te ijverig was bij het hacken van de server.
