[song counts down: 7, 6, 5, 4, 3, 2, 1] Het internet: pakketjes, routing, en betrouwbaarheid
Hallo, ik heet Lynn. Ik ben een software-engineer bij Spotify en ik zal als eerste toegeven dat ik vaak
de betrouwbaarheid van het internet als vanzelfsprekend beschouw. De enorme hoeveelheid
informatie die over het internet wordt verplaatst is adembenemend. Maar hoe is het mogelijk dat elk stukje data op een betrouwbare
wijze wordt geleverd? Stel je wilt bijvoorbeeld een nummer afspelen vanuit Spotify. Het lijkt erop dat je computer direct verbinding maakt
met de servers van Spotify en dat Spotify je een nummer via een directe, speciale lijn stuurt.
Maar zo werkt het internet niet. Als het internet uit directe, speciale verbindingen bestond, dan
zou het onmogelijk zijn geweest om alles te laten werken terwijl miljoenen gebruikers
gaan meedoen. Vooral omdat er geen garantie dat elke kabel en computer constant functioneren.
In plaats daarvan reist data in een veel directe manier over het internet.
Lang geleden, in de vroege jaren zeventig begonnen mijn partner Bob Kahn en ik te
werken aan het ontwerp van wat we nu het internet noemen. Bob en ik hadden de
verantwoordelijkheid en kans om de protocollen en archtectuur ervan te ontwerpen. We volharden
in het deelnemen in de groei en evolutie ervan al die tijd tot de dag van vandaag.
De wijze waarop informatie van de ene computer wordt overgebracht naar een andere is
best wel interessant. Het hoeft geen vast route te volgen, sterker nog, je route kan midden in
een conversatie tussen twee computers veranderen. Informatie op het internet verplaatst zich op het internet
van de ene computer naar de andere in een informatiepakket, en een pakket reist van de ene plek naar een ander zoals
jij reist om van de ene plek naar de naar de andere in een auto.
Afhankelijk van de file of wegcondities, kun je er misschien voor kiezen of
worden gedwongen aan andere route te nemen om naar dezelfde plek te gaan elke keer als je reist.
En net als je allerlei spullen kunt vervoeren in een auot, kun je veel soorten digitale informatie verzenden
via IP-pakketen, maar er zijn enkele beperkingen. Wat als je bijvoorbeeld een ruimteveer van de
bouwplaats naar de lanceerplek wilt vervoeren. Het ruimteveer zal niet in één vrachtwagen passen
en moet in stukken worden gebruiken, en worden in een konvooi worden getransporteerd.
De vrachtwagens kunnen allemaal verschillende routes nemen op verschillende tijden op de
bestemming aankomen. Maar zodra alle stukken daar zijn, kun je het ruimteveer weer
in elkaar zetten en lanceren. De details op het internet werken op soortgelijke wijze. Als
je een grote afbeelding hebt die je naar een vriend wilt sturen of wilt uploaden,
dan kan het zijn dat die afbeelding uit miljoenen bits van enen en nullen bestaat; te veel om in één
pakket te sturen. Aangezien het data op een computer is, kan de verzendende computer de afbeelding
snel afbreken tot honderden of zelfs duizenden deeltjes die we pakketten noemen. In tegenstelling
tot auto's of vrachtwagens hebben deze pakketten geen bestuurders en kiezen zij hun route niet.
Elk pakket heeft het internetadres van de verzender en de bestemming. Speciale computers, die we routers
noemen, fungeren als verkeersbeheerders om de pakketten probleemloos door de netwerken
te begeleiden. Als één route file heeft, dan kunnen andere pakketten een andere route
nemen over het internet en kunnen ze op wat afwijkende tijden of niet op volgorde aankomen
op de bestemming. Laten we uitleggen hoe dit werkt. Als onderdeel van het internetprotocol,
houd elke router meerdere routes voor het verzenden van pakketten bij, en kiest het de
goedkoopste route voor elk stuk data gebaseerd op het doel IP-adres voor het pakket.
Goedkoopste gaat niet over kosten, maar over tijd en niet-technische factoren zoals
beleid en relatie tussen bedrijven. Vaak is de beste reisroute voor data niet noodzakelijkerwijs
de meest directe. Het hebben van route-opties maakt het netwerk tolerant bij fouten.
Dat betekent dat het netwerk pakketten kan blijven verzenden zelfs als er iets
helemaal mis gaat. Dat is het belangrijkste principe van de betrouwbaarheid. Wat als
je wat data wilt verzoeken en niet alles wordt geleverd? Stel dat je naar een nummer
wilt luisteren. Hoe kun je 100% zeker zijn dat alle data wordt geleverd zodat het nummer perfect
wordt afgedraaid? Maak kennis met je nieuwe beste vriend, TCP (transmission control protocol). TCP beheerd
het verzenden en ontvangen van al je data als pakketten. Zie het als aangetekende post.
Als je een nummer verzoekt op je apparaat, dan stuurt Spotify een nummer in heel veel pakketjes op.
Als je pakketjes arriveren, voert TCP een complete inventaris uit en stuurt een
bevestiging van elk ontvangen pakketje terug. Als alle pakketjes er zijn, tekent TCP voor ontvangst
en ben je klaar. (muziek) Als TCP ontdekt dat sommige pakketjes ontbreken, zal het niet tekenen, anders
zou je nummer niet goed klinken omdat er delen ontbreken. Elk ontbrekend of incompleet
pakket, wordt opnieuw verzonden door Spotify. Zodra TCP de ontvangst van veel pakketjes voor
dat nummer verifiëert, wordt je nummer afgespeeld. Wat zo leuk is aan TCP
en routersystemen, is dat ze aanpasbaar zijn. Ze kunnen met 8 of 8 miljard apparaten
werken. In feite is het zo dat vanwege deze principes van fouttolerantie en redundantie,
hoe meer routers we toevoegen, hoe betrouwbaarder het internet wordt. Wat ook prachtig is, is dat we kunnen
het internet kunnen laten groeien en aanpassen zonder dat de service voor iemand wordt onderbroken. Het internet
bestaat uit honderdduizenden netwerken en miljarden computers en apparaten fysiek met elkaar verbonden.
Deze verschillende systemen zijn het die ervoor zorgen dat het internet verbinding maakt, en met elkaar laat
communiceren en samenwerken vanwege overeengekomen standaarden over hoe data over het internet wordt verzonden.
Computers, of routers op het internet helpen alle pakketten hun weg te vinden naar hun
bestemming waar ze weer in elkaar worden gezet, indien nodig, op volgorde. Dit gebeurd miljarden keren
per dag, of jij en anderen een e-mail verzenden een webpagina bezoeken,
aan het videochatten zijn, een mobiele app gebruiken, of als sensoren of apparaten op het internet met
elkaar spreken.