[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.