Het internet: HTTP en HTML
Ik heet Jasmine en ik ben programmamanager van het XBOX One engineringteam.
Een van onze grootste voorzieningen heet XBOX Live. Het is een online dienst die
gamers wereldwijd verbindt, en wij vertrouwen op het internet dat dat lukt.
Dit is geen gemakkelijke taak en er gebeurd veel achter de schermen.
Het internet verandert compleet de manier waarop mensen communiceren. Maar hoe
werkt het? Hoe communiceren computers wereldwijd in feite met elkaar? Laten we
het surfen onder de loep nemen. Eerst open je een browser. Het is de app die je gebruikt
om pagina's te bezoeken. Daarna typ je het adres of URL in, dat staat voor Uniform Resource Locator,
van de website die je wilt bezoeken, zoals tumblr.com. Hallo, ik het David Karp, ik ben de oprichter van Tubmblr,
en hier leggen we uit hoe die browser die we elke dag gebruiken eigenlijk werken. Je hebt je waarschijnlijk wel
eens afgevraagd wat er gebeurd als je een adres in je browser invoert en daarna
op enter drukt. Het is net zo gek als je je kunt voorstellen. Op dat moment begint
je computer met een andere te praten, een server, die meestal duizenden kilometers
ver weg staat. En in milliseconden vraagt je computer aan de server om een website, en
die server begint te praten met je computer in een taal die HTTP heet, HTTP staat voor
Hyper Text Transfer Protocol. Je kunt zien de taal die de ene computer gebruikt om
aan de andere computer naar een document te vragen. Het is eigenlijk heel eenvoudig.
Als je een conversatie tussen je computer en een server op het internet zou
onderscheppen, dan zie je dat het voornamelijk bestaat uit "GET"-verzoeken. Die bestaan
eenvoudig uit het woord GET en de naam van het document dat je verzoekt. Dus als je
probeert in te loggen in Tumblr en je ons inlogscherm laat, dan is het enige dat je
doet een GET-verzoek sturen naar de server van Tumblr dat zegt Get /login. En dat
zegt de server van Tumblr dat je alle HTML- code wilt voor het inlogscherm van Tumblr.
HTML staat voor Hyper Text Markup Language, en dat kun je zien als de taal die jij gebruikt
om een browser te vertelen hoe een pagina eruit moet zien. Als je denkt aan bijvoorbeeld
Wikipedia, niets anders dan een groot eenvoudig document, dan HTML de taal die je gebruikt om
det titel groot en vet te maken, het juiste lettertype in te stellen, en te linken naar bepaalde andere pagina's,
tekst vet of cursief te maken, een afbeelding in het midden van de pagina te plaatsen, en de pagina
rechts of links uit te lijnen. De tekst van een pagina wordt altijd direct meegenomen in de HTML,
maar andere delen zoals afbeeldingen of video's zijn aparte bestanden met hun eigen URLs waarom
verzocht moet worden. De browser stuur aparte HTML-verzoeken naar elk van deze en toont hen
zodra ze binnenkomen. Als een webpagina veel verschillende afbeeldingen heeft, dan heeft
elk van hen een apart HTTP-verzoek en laadt de pagina langzamer. Soms als je surft op het web
verzoek je niet alleen om pagina's met GET-verzoeken. Soms stuur je informatie als je bijvoorbeeld
een formulier invult of een zoekopdracht geeft. Je browser stuurt deze informatie in platte tekst
naar de server door middel van een HTTP POST-verzoek. Laten we aannemen dat je inlogt op Tumblr.
Het eerste dat je doet is POST-verzoek maken, dat is een POST naar het inlogscherm van Tumblr
waaraan wat data is gekoppeld. Het heeft je e-mailadres, en je wachtwoord. Dat gaat naar de
server van Tumblr. Deze server ontdekt dat jij David bent. Het stuurt een pagina terug naar
Je browser en die zegt, Gelukt! Ingelogd als David. Maar naast die website
voegt het ook wat ontzichtbare cookiedata toe die je browser ziet en weet op te slaan.
Dat is echt belangrijk omdat het de enige manier is dat een website kan onthouden
wie je bent. Die cookiedata is niets anders dan een ID-kaart voor Tumblr. Het is een
nummer dat jouw als David identificeert. Je browser onthoudt dat nummer en de
volgende keer dat Tumblr ververst, de volgende keer dat je naar Tumblr.com gaat
zal je browser automatisch dat ID-nummer toevoegen bij het verzoek dat het naar de servers van Tumblr stuurt.
Nu zien de server van Tumblr dat het verzoek van jouw browser komt, zien het ID-nummer en weten
"OK, dit is een verzoek van David." Het internet is helemaal open. Alle verbindingen
worden gedeeld en de informatie wordt in platte tekst verzonden. Dit stelt hackers
in staat om te snuffelen naar persoonlijke informatie die jij over het internet verstuurd.
Maar veilige websites verhinderen dit, door aan je browser te vragen te communiceren
via een veilig kanaal met behup van Secure Sockets Layer, en de opvolger daarvan Transport Layer Security.
Zie SSL en TLS als een beschermingslaag om je communicatie om deze te beschermen
tegen rondsnuffelen of knoeien. SSL en TLS zijn actief als je het kleine slotje in de
adresbalk van je browser, naast de HTTPS. De HTTPS-protocollen garanderen
dat jouw HTTP-verzoeken veilig en beschermd zijn. als een website aan je browser vraagt
mee te doen in een beveiligde verbinding, geeft het eerst een digitaal certificaat.
Dat is een soort officiële ID-kaart welke bewijst dat de website is die het claimt te zijn. Digitale
certificaten worden gepubliceerd door bevoegde instanties die vertrouwde entiteiten zijn die
de identiteit van websites verifiëren, en certificaten voor hen uitgeven. Net als een overheid IDs of
passpoorten kan verstrekken. Als een website probeert een veilige verbinding te openen zonder
de juiste verstrekte digitale certificaten, dan zal je browser je waarschuwen. Dat is de basis van
surfen op het web! Het deel van het internet dat we dagelijks zien. Samenvattend, HTTP en DNS
regelen het verzenden en ontvangen van HTML, mediabestanden of alles op het web. Wat dit
mogelijk maakt onder de motorkap zijn TCP/IP en router- netwerken die informatie afbreken en transporteren in
pakketjes. Deze pakketjes zelf bestaan uit binaire codes, reeksen uit enen en nullen die
fysiek door elektrische kabels, glasvezel en draadloze netwerken worden verzonden.
Gelukkig geldt, dat zodra je hebt geleerd hoe een laag van het internet werkt, je erop
kunt vertrouwen zonder alle details te hoeven onthouden. En we kunnen erop vertrouwen
dat al die lagen zullen samenwerken om informatie op schaal en betrouwbaar aan te leveren.