Hoe werkt het internet?
Het internet is populair, daar hoef je niet lang over te discussiëren. Veel mensen besteden per dag uren tijd aan websites als Facebook, Google, YouTube en Wikipedia. Miljoenen mensen versturen ieder uur moeiteloos berichten naar servers aan de andere kant van de wereld. Hoe is dat mogelijk?
Het internet
Het internet is een wereldwijd netwerk van computers. De meeste mensen wisten dat al. Maar hoe de berichten van de ene computer naar de andere worden verzonden vergt een gestructureerd en tegelijkertijd ingewikkeld systeem van draden, apparatuur en afspraken. Om de communicatie tussen alle computers in goede banen te leiden is er het OSI-model (Open Systems Interconnect) met verschillende lagen gedefinieerd waar alle hard- en software zich aan moet houden. Dit model wordt globaal uitgelegd in dit artikel.
In schuine letters staat per laag een analogie met de post.
Fysieke laag
Uiteindelijk zijn alle computers op het internet met elkaar fysiek verbonden. De koperen bedrading en de glasvezels tussen twee apparaten maken deel uit van de fysieke laag. Maar ook de elektronica die de digitale signalen van de computer omzet naar signalen die door de koperen draden of door de glasvezels kunnen behoort bij deze laag. Op deze manier kunnen twee apparaten met elkaar worden verbonden, maar dat maakt natuurlijk nog geen volledig netwerk mogelijk.
De fysieke laag kan gezien worden als een postbode.
Datalinklaag
We hebben nu dus een fysieke verbinding tussen twee apparaten. Maar om er gegevens over te verzenden, komt er meer bij kijken. De afspraken tussen de twee apparaten hoe de gegevens over de fysieke verbinding worden gezonden maken deel uit van de datalinklaag. Bekende implementaties van de datalinklaag zijn ethernet en wifi. Het zendende apparaat verdeelt de gegevens in zogenaamde dataframes. In zo'n dataframe zit een deel van de gegevens, maar ook bijvoorbeeld een code die de ontvanger kan gebruiken om te controleren of het dataframe goed is ontvangen en of het dataframe in de goede volgorde aankomt.
Het dataframe krijgt ook een adres van het ontvangende apparaat mee. Ieder apparaat dat verbonden kan worden met het internet heeft namelijk een adres (MAC-adres). De fabrikant heeft een uniek adres meegegeven aan het apparaat zodat ieder apparaat in het netwerk adresseerbaar is. Op deze manier is er al een primitief netwerk mogelijk: allerlei apparaten met een uniek adres kunnen worden aangesloten op een zogenaamde switch en door van het ene apparaat een dataframe te sturen naar de switch kan de switch herleiden uit het adres naar welk apparaat het verstuurd moet worden. De switch heeft dan ook een geheugen voor iedere aansluiting waarin is opgeslagen wat het MAC-adres is van het apparaat dat daaraan is aangesloten.
Wat op deze manier niet kan is het aanleggen van grote netwerken door het koppelen van switches aan elkaar. Immers, de switches kunnen moeilijk van miljoenen computers onthouden welke adressen er allemaal op een aansluiting zijn aangesloten. Hiervoor is een hogere laag nodig waarbij computers niet een vast adres hebben, maar een dynamisch adres dat wordt bepaald door de aanbieders van het netwerk (ISP's of Internet Service Providers).
De datalinklaag kun je zien als de interne post van een bedrijf. De mensen van de interne post (de switches) weten precies waar elk kantoor is in het gebouw (het MAC-adres).
Netwerklaag
Grote netwerken zijn wel mogelijk dankzij de netwerklaag. Een belangrijke implementatie van de netwerklaag is het bekende IP, het Internet Protocol. Dit protocol beschrijft dat de gegevens in pakketten worden verdeeld. Ieder pakket krijgt een adres (IP-adres) en lijkt tot wat dat betreft op een implementatie van de datalinklaag, maar dan op een hoger niveau. Zo doen, in principe, switches niks op het IP-niveau, hiervoor zijn er routers. Routers lezen de IP-pakketten en bekijken waar deze naartoe moeten worden gestuurd.
Het IP-adres van de verschillende apparaten die verbonden zijn met de router wordt doorgaans opgelegd door een server (de DHCP-server) van de ISP. Een apparaat dat net wordt aangesloten op het netwerk (een computer die opstart bijvoorbeeld) vraagt aan alle computers van het netwerk of die een IP-adres kan geven. Uiteindelijk zal de DHCP-server reageren en zendt deze een IP-adres naar het MAC-adres van het vragende apparaat. En zo krijgt ieder apparaat op het internet een uniek IP-adres.
Iedere ISP en grote organisaties hebben een eigen verzameling IP-adressen. Ook bezitten zij meerdere routers. Omdat op deze manier bekend is wie welke IP-adressen bezit kunnen routers beslissen hoe ze de pakketten sturen over het netwerk.
Alle bedrijven met hun eigen interne post (datalinklaag) zijn verbonden met het grote postkantoor in de regio (de router in de netwerklaag). Dit postkantoor heeft ieder bedrijf een postcode en adres gegeven (IP-adres) en weet waar alle andere postkantoren zijn in de wereld. Op die manier kunnen de pakketten van de bedrijven uit de regio naar de rest van de wereld worden verstuurd.
Transportlaag
Nu kunnen er gegevens verstuurd worden over de hele wereld. Maar in veel gevallen wil men zeker zijn dat de gegevens ook aan komen. De datalinklaag heeft hier al low-level implementatie voor, maar dat geldt alleen voor de verbinding van apparaat naar apparaat. Door een uitvallende router kunnen ook hele pakketten kwijt raken, iets dat de verzendende zijde graag wil weten zodat deze de pakketten opnieuw kan sturen. Er zijn twee veelgebruikte implementaties van de transportlaag: TCP en UDP.
Bij TCP (Transmission Control Protocol) wordt er eerst een verbinding gemaakt met de ontvanger en gewacht of de verbinding wordt geaccepteerd. Dit wordt gedaan door wat eenvoudige pakketjes heen en weer te sturen. Als de verbinding is geaccepteerd wordt er na het verzenden van een pakket gewacht op een bevestiging van de ontvanger. Als deze bevestiging (een 'ACK' of acknowledgment) niet wordt ontvangen wordt het pakket opnieuw verzonden. Als het eerste pakket wel correct is ontvangen worden de rest van de pakketten gestuurd op eenzelfde wijze. Er bestaan ook TCP-verbindingen waarbij er na de eerste correcte aflevering van een pakket direct meer pakketten worden gestuurd zodat de snelheid bij betrouwbare verbindingen verhoogd wordt. Op deze manier zijn de gegevens aan de ontvangende zijde altijd gelijk aan de gegevens zoals ze verstuurd zijn. TCP wordt voor heel veel toepassingen op internet gebruikt: websites, gegevens van computerspellen en het uitwisselen van bestanden worden vrijwel altijd via TCP-verbindingen overgebracht.
Bij UDP (User Datagram Protocol) kent over het algemeen geen verbindingen die worden opgezet en pakketten bevestigingen dat pakketten goed zijn aangekomen; bij UDP worden de pakketten gewoon verstuurd. Dit zorgt ervoor dat er uiteindelijk minder gegeven hoeven worden overgezet. De betrouwbaarheid is dus lager, maar dat maakt voor sommige toepassingen niet zoveel uit. Vooral het streamen van video's en telefonie gaan via UDP, want als er zo nu en dan een pakketje wegvalt is dat nauwelijks zichtbaar.
Het postkantoor biedt twee verschillende manieren van verzenden aan: aangetekend (TCP) en niet aangetekend (UDP). Bij aangetekende post moet de ontvanger een handtekening zetten dat hij het ontvangen heeft. De zender ontvangt dan bericht dat het pakket is aangekomen. Dit kost de postbode, de zender en de ontvanger wel meer tijd, dus voor onbelangrijke post biedt het postkantoor ook niet aangetekend versturen aan.
Toepassingslaag
Een programma kan via internet contact maken met een ander programma op een andere computer. Zo kan iemand met zijn browser (bijvoorbeeld Mozilla Firefox of Microsoft Internet Explorer) contact maken met de webserver software van Wikipedia. Het is in dat geval natuurlijk handig als de browser een aanvraag stuurt die de webserver kan begrijpen. Daarnaast is het handig als de webserver de gevraagde website terugstuurt in een formaat dat de browser begrijpt. De afspraken die gemaakt zijn voor dit voor beeld zijn beschreven in HTTP (HyperText Transfer Protocol), en dit is een voorbeeld van een implementatie van de toepassingslaag.
Een bouwbedrijf heeft bakstenen nodig. Daarom stuurt eerst het bouwbedrijf een brief naar een bakstenenleverancier, hierin staan het aantal, de afmetingen en andere technische specificaties van de bakstenen die het bouwbedrijf nodig heeft. De bakstenenleverancier begrijpt precies wat het bouwbedrijf nodig heeft dankzij de duidelijke specificaties en zendt een pakket met de juiste bakstenen.
En de rest?
Dit is slechts een globale beschrijving hoe het internet in elkaar zit, maar er is natuurlijk veel meer. Er zijn alternatieven voor TCP en UDP bijvoorbeeld en er zijn zelfs protocollen die over meerdere lagen gedefinieerd zijn. Er zijn switches die zaken op de netwerklaag doen en er zijn routers die zich bemoeien met de datalinklaag. En dan zijn er nog technieken als DNS (Domain Name System), servers die domeinnamen om kunnen zetten naar IP-adressen.
Desalniettemin is dit ongeveer de manier hoe zo'n groot netwerk als het internet werkt, en dat is toch behoorlijk indrukwekkend!
Lees verder