Internettet: HTTP og HTML Jeg er Jasmine, og jeg er programmerings- chef på XBOX One-ingeniørholdet. Et af vores største funktioner hedder XBOX Live. Det er en onlinetjeneste, der forbinder spillere fra hele verden, og for at det skal ske, er internettet en nødvendighed. Dette er ikke en let opgave, og der sker meget bag kulisserne. Internettet ændrer fuldkommen, hvordan folk arbejder sammen og forbindes. Men hvordan virker det? Hvordan kommunikerer computere over hele verden egentlig med hinanden? Lad os tage et kig på webbrowsen. Først åbner du en webbrowser. Det er appen, du bruger til at tilgå websiderne. Som det næste indtaster du webadressen, eller URL'et, der står for Uniform Resource Locator, for websiden, som du vil besøge, såsom Tumblr.com. Hej, jeg er David Karp, stifteren af Tumblr, og I dag skal vi snakke om, hvordan de webbrowsere, som vi bruger til dagligt, faktisk virker. Du har nok undret dig, om hvad der faktisk sker, når du taster en adresse i din webbrowser og trykker enter. Og det er næsten lige så skørt, som du kan forestille dig. I det øjeblik, begynder din computer at tale med en anden computer, der hedder en server, og det er normalt tusindvis af kilometer væk. Og efter nogle millisekunder beder din computeren serveren om en webside, og den server begynder at besvare din computer på et sprog, der hedder HTTP. HTTP står for hypertext transfer protokol. Tænk på det som værende sproget, som en computer bruger til at bede en anden computer om et dokument. Og det er faktisk ret ligetil. Hvis du opfangede samtalen mellem din computer og en webserver på internettet, så består det hovedsagligt af noget, der hedder "GET"-anmodninger. Disse er helt enkelt ordet "GET" (hent) og navnet på det anmodede dokument. Så hvis du prøver at logge på Tumblr og indlæser vores loginside, er alt det, du gør faktisk at sende en GET-anmodning til Tumblrs server, der siger GET /login. Og det fortæller Tumblrs server, at du vil have al HTML-koden for Tumblr login-siden. Så HTML står for hyper text markup language, og du kan opfatte det som værende det sprog, du bruger til at fortælle en webbrowser, hvordan den skal vise en side. Forestil dig en side som Wikipedia, der virkelig bare er et stort enkelt dokument, og HTML er sproget, som du bruger til at gøre titlen stor og fed, til at gøre skrifttypen til den rette, til at linke til visse andre sider, til at gøre nogen tekst fed, til at gøre nogen tekst kursiv, til at sætte et billede i midten af siden, til at justere billedet til højre, til at justere den til venstre. En websides tekst er inkluderet direkte i HTML'en, men andre dele, såsom billeder eller videoer er særskilte filer med deres egne URL'er, der skal anmodes om. Browseren sender separate HTTP-anmodninger for hver af disse og viser dem, når de ankommer. Hvis en webside har en masse forskellige billeder, udløser hver af dem en separat HTTP-anmodning, og siden indlæses langsommere. Nogengange, når du browser internettet, anmoder du ikke blot om sider med GET-anmodninger. Nogengange sender du information, såsom når du udfylder en formular eller indtaster en søgeforespørgsel. Din browser sender denne information som klartekst til webserveren via en HTTP POST-anmodning. Sig f.eks. at du logger på Tumblr. Det første, du gør, er at lave en POST-anmodning, som er en POST til Tumblrs loginside, der har noget data forbundet til det. Den har din e-mailadresse, den har din adgangskode. Dette sendes til Tumblrs server. Tumblrs server regner ud at, okay, du er David. Den sender en webside tilbage til din browser, der siger: "Tillykke! Logget på som David." Men sammen med den webside sender den også lidt usynlig cookie-data, som din browser kan se, og ved at den skal gemme. Og det er virkelig vigtigt, da det er faktisk den eneste måde, en webside kan huske, hvem du er. Al den cookie-data er faktisk blot et ID-kort til Tumblr. Det er et nummer, der identificerer dig som David. Og din webbrowser holder fast på det nummer, og næste gang du opdaterer Tumblr, næste gang du går på Tumblr.com, ved din browser, at den skal automatisk tilføje det ID-nummer til anmodningen, som den sender til Tumblrs servere. Så nu ser Tumblrs servere anmodningen fra din browser, ser ID-nummeret og ved at "OK, dette er en anmodning fra David." Internettet er helt åbent. Alle dets forbindelser er delte og oplysninger sendes som klartekst. Dette gør det muligt for hackere at snage i enhver personlige information, du sender over internettet. Men sikre websider forhindrer dette ved at bede din webbrowser om at kommunikere på en sikker kanal, ved hjælp af noget, der hedder secure socket layer og dets efterfølger, transport layer security. Forestil dig SSL og TLS som et sikkerhedslag viklet omkring dine kommunikationer for at beskytte dem mod snagen og manipulation. SSL og TLS er aktive, når du ser den lille lås i din browsers addresselinje ved siden af HTTPS. HTTPS-protokollerne sørger for at dine HTTP-anmodninger er sikre og beskyttet. Når en webside beder din browser starte en sikker forbindelse, fremlægger den først et digitalt certifikat. Det er ligesom et officielt ID-kort, der beviser, at det er den webside, den siger, den er. Digitale certifikater udgives af certifikat-myndigheder, der er betroede organer, der bekræfter websiders identitet og udsteder certifikater til dem. På samme vis som en regering kan udstede ID'er eller pas. Hvis en webside nu prøver at starte en sikker forbindelse uden et korrekt udstedt digitalt certifikat, vil din browser advare dig. Det er det grundlæggende for webbrowsen! Den del af internettet vi ser til dagligt. For at opsummere, tager HTTP og DNS sig af at sende og modtage HTML, medie-filer eller alt, der er på internettet. Det, der understøtter dette er TCP/IP og router-netværk, der opdeler og transporterer information i små pakker. Disse pakker består af binær kode, rækker af 1'er og 0'er, der fysisk sendes gennem el-ledninger, fiberoptiske kabler og trådløse netværk. Når du har forstået, hvordan ét lag af internettet virker, kan du heldigvis stole på det uden at skulle huske alle detaljerne. Og vi kan stole på, at alle de lag vil virke sammen for at levere oplysninger på skalerbar og pålidelig vis.