Overleg gebruiker:RonaldB/klad

Pagina-inhoud wordt niet ondersteund in andere talen.
Onderwerp toevoegen
Uit Wikipedia, de vrije encyclopedie

Achter de schermen van de Wikimedia techniek

Dit artikel poogt voor niet technici een beknopte uitleg te geven over de wijze waarop de vele servers van Wikimedia werken om pagina's in je browser weer te geven, te kunnen bewerken, historische overzichten te kunnen geven, enz. Dat gebeurt aan de hand van een korte uitleg over wat er in het algemeen gebeurt als je een pagina in je browser opvraagt en daarna meer specifiek als dat bijvoorbeeld een wikipedia pagina is.

Het opvragen van een pagina in je browser[brontekst bewerken]

Omzetten van adres naar IP-nummer[brontekst bewerken]

Als je met een blanco pagina begint en bijvoorbeeld www.ns.nl in de adresbalk van je browser intypt, zal als eerste stukje ns.nl (de domeinnaam) vertaald moeten worden naar een IP-nummer.
Internet kan namelijk alleen maar boodschappen sturen naar IP-nummers. Daartoe telt het internet heel veel z.g. DNS servers, die onderling met elkaar in contact staan. Dat zijn machines die ns.nl dus kunnen vertalen naar het IP-nummer waarmee de webserver van de NS op het internet bekend is. Alle providers hebben zo een DNS server.

Om de DNS server van je provider te kunnen bereiken, moet je computer echter wel het IP-nummer daarvan hebben, anders kan het niets. In de meeste gevallen wordt dit IP-nummer automatisch toegewezen op het moment dat je computer contact maakt met je provider (hetzij via een inbelverbinding, hetzij via een vaste verbinding, zoals ADSL).

Je kunt ook de DNS server omzeilen. Door //217.194.102.162 i.p.v. www.ns.nl in de adresbalk te typen, bereik je hetzelfde.

Dus je browser, tezamen met het besturingssysteem van je computer, is nu in staat om een z.g. request te doen aan een DNS server en krijgt het IP-nummer van de website van de NS terug. Vervolgens stuurt je computer een request voor een webpagina naar het IP-nummer van de NS website, die vervolgens die pagina naar je computer zal terugsturen, zodat de browser die kan weergeven. Voor het zover is gebeurt er nog veel meer, waarvan er een paar zaken voor deze uitleg nader worden toegelicht.

Welke pagina?[brontekst bewerken]

In dit voorbeeld (www.ns.nl) zal je zien dat de server er een hele waslijst aan toevoegt.

Als je alleen de z.g. URL hebt ingetypt, dus b.v. http://www.ns.nl (als de internetnaam met www begint, hoef je http:// niet zelf in te typen, dat zet de browser er zelf voor), dan zal de server van de NS daar de naam van de homepage aan toe voegen. Dat kan bijvoorbeeld index.htm zijn, maar er zijn vele andere semi-standaarden in omloop.

Als je iets anders dan de homepage wilt zien, moet dat de server kenbaar gemaakt worden. Dat gebeurt door de naam van die pagina erachter te plakken en wel op de volgende wijze: www.ns.nl/paginatwee.htm. Vaak worden daar nog weer eens parameters aan toegevoegd en dan kan het er zo uitzien: www.ns.nl/paginatwee.htm?van=eindhoven&naar=utrecht.

Subdomeinen[brontekst bewerken]

Behalve dat er het nodige achter de domeinnaam toegevoegd kan worden, is het ook mogelijk dat er iets aan voorafgaat. Soms moet dat. De domeinnaam wikipedia.org bijvoorbeeld dient voorafgegaan te worden door twee of meerdere letters die de taal aanduiden. nl.wikipedia.org heet dan een subdomein van wikipedia.org. Het hiervoor beschreven DNS systeem kan eventueel zodanig geconfigureerd worden dat verschillende subdomeinen op verschillende IP-nummers uitkomen. Daar wordt bij wikipedia nu echter nog geen gebruik van gemaakt. Bij het intypen van een subdomein in de adresbalk van je browser kan je die niet vooraf laten gaan door www, maar moet je beginnen met http://, anders kan de browser er niet mee overweg.

Cookies[brontekst bewerken]

Cookies zijn kleine bestandjes die, in opdracht van een opgevraagde pagina, op je computer opgeslagen worden. Een PC kan al gauw enkele honderden van die bestandjes hebben, die gewoon leesbare tekst bevatten, maar wel flink diep in de directory/folder structuur van je computer worden neergezet. De bestandsnaam is zoiets als xxx@nl.wikipedia[n].txt, waarbij xxx je gebruikersnaam van bijvoorbeeld Windows is en n meestal 1, maar soms een ander klein getal. In de cookie van het voorbeeld staat o.a. je gebruikersnaam in klare tekst en je wachtwoord in versleutelde vorm. De informatie die in de cookie is opgeslagen wordt meegestuurd met de request voor een pagina. Op die manier zijn bijvoorbeeld de wikimedia servers in staat je automatisch als geregistreerde gebruiker te herkennen en zullen dan een iets andere pagina terugsturen dan in het geval dat zo een cookie niet bestaat of juist informatie bevat dat je niet automatisch ingelogd wilt worden. Cookies zijn in principe ongevaarlijk, doen niets af aan de privacy en dienen het gemak van de gebruiker. Maar zoals met alles: er kan ook tot op zekere hoogte misbruik van worden gemaakt, maar dat valt buiten de scope van dit artikel.

Hoe komt de verbinding tot stand[brontekst bewerken]

Er is niet een direct draadje tussen je computer en de server van de NS. Integendeel er is een heel netwerk van verbindingen, te vergelijken met het wegenstelsel. Ook die verbindingen kennen snelwegen, lokale straten en alles wat daar tussen zit. En op elke hoek van een staat of knooppunt van een snelweg staat in plaats van een stoplicht een z.g. router. Dat is een apparaat dat het beste te vergelijken is met een zeer uitgebreide en intelligente ANWB wegwijzer. Alle verkeer wordt opgedeeld in kleine pakketjes en de router weet voortdurend welke richting hij een pakketje met een bepaalde bestemming moet opsturen, daarbij rekening houdend met wegafsluitingen en files. Elke router heeft daar echter wel even tijd voor nodig, dus hoe minder routers (hops in het internet jargon), hoe sneller het pakketje de bestemming bereikt.

Met een Windows PC kan je zelf bekijken hoe zo een route er uitziet. Open daartoe een z.g. DOS-box (via Start-Run/Uitvoeren en intypen van cmd (XP) of command (niet-XP). Type vervolgens tracert ns.nl en druk de Enter toets. Er komt dan een lijstje met de IP-nummers van alle knooppunten die gepasseerd worden alvorens de server van de NS bereikt wordt.

Een typisch voorbeeld van een route bijvoorbeeld vanaf een universiteit is : PC – een (vaak meerdere) routers in het netwerk van de universiteit – een (of twee) routers van Surfnet – een router van de AIX (Amsterdam Internet Exchange, het centrale knooppunt voor Nederland, maar ook voor gebieden daarbuiten, een of meerdere routers van de provider van de NS – misschien nog een router in het netwerk van de NS - webserver van de NS. Het lijkt heel wat, maar dat alles gebeurt in meestal minder dan 0,1 s. En terug gebeurt natuurlijk weer hetzelfde.

In dit voorbeeldje blijft het aantal hops redelijk beperkt (totaal 5-8 is vrij normaal). Als de informatie echter van verder weg gehaald moet worden, kan het wat meer worden. Maar een extra tijdvertragende factor kan ook een rol gaan spelen. Namelijk als het "draadje" tussen twee routers via een satelliet gaat. Dan duurt het al iets meer dan 0,2 s om een pakketje van aarde naar een andere plek op aarde te sturen, ook al gaat dat met de lichtsnelheid. Ook als het via een (zee)kabel gaat kan er extra vertraging optreden. Onderweg zitten dan een groot aantal z.g. repeaters, die het inmiddels afgezwakte signaal weer moeten oppeppen. En of dat nu koper of glasvezel is, ook dat geeft extra vertraging.

HTML en Databases[brontekst bewerken]

Je webbrowser kan (in principe) alleen een pagina weergeven als die in HTML code ontvangen is. Dat is net zoiets als wikicode, maar dan uitgebreider. Het kan ook zijn dat de webbrowser een gecodeerde pagina ontvangt en tegelijkertijd een bestandje waarin instructies staan hoe die code om te zetten is in HTML. Dat heet een script en de hiervoor gebezigde scripttaal is meestal JavaScript. Dan moet je computer dus nog even aan de slag om die omzetting te doen, maar zelfs voor een oude (en dus langzame) PC is dat meestal een fluitje van een cent. Er moet, ook zonder script, vaak nog veel meer, maar dat is voor dit verhaal niet zo relevant.

Ook aan de server zijde kan het zijn dat er het nodige moet gebeuren, alvorens de informatie verstuurd kan worden. Soms staat de pagina kant en klaar op de server, maar vaak zal er eerst informatie uit een database (een database is eigenlijk niets anders dan een verzameling van tabellen) gehaald moet worden die ook nog eens verwerkt moet worden alvorens de gevraagde informatie (bijvoorbeeld het reisadvies van Eindhoven naar Utrecht) beschikbaar is. Ook dat kost tijd, niet alleen omdat die servers niet snel genoeg zouden zijn, maar ook omdat de belasting van die machines verdeeld moet worden, zeker in het geval van een drukke site.

Cache[brontekst bewerken]

Zoals uit het voorafgaande blijkt, is snelheid een belangrijk punt van zorg bij het ontwerpen van een internet architectuur. Een van de manieren om een snelle response te realiseren tijdens het surfen op internet is het gebruik van een cache.

Een cache geheugen is niets anders dan een tijdelijke buffer van iets wat frequent gebruikt wordt of kan gaan worden. Een cache kan in het snelle interne geheugen van een computer zitten of op de harde schijf ervan opgeslagen zijn.

Zo onderhoud je browser een cache op de harde schijf van HTML en andere bestanden die voor het weergeven van een pagina noodzakelijk zijn. Als zo een bestand hergebruikt kan worden hoeft het niet van de server opgehaald te worden en dat bespaart tijd. Het systeem moet dan wel zo zijn ingericht dat het van tevoren controleert of het opgeslagen bestand nog steeds actueel is. Een treffend voorbeeld hiervan bij het bekijken van een Wikipedia pagina is het achtergrond plaatje. Dat is voor elk artikel hetzelfde en het is dus onnodig dat bij elk artikel opnieuw op te halen.

Een cache kan ook voorkomen in de webserver. Dat is vooral nuttig als het maken van de HTML pagina de nodige bewerkingen van de server vraagt, Door de HTML pagina in een cache te bewaren is dat vaak niet nodig, omdat de uitkomst van al die bewerkingen toch weer hetzelfde zou zijn. Het is dan sneller om de pagina gelijk vanuit die cache te sturen. Een cache geheugen is eindig van omvang. Het programma dat de cache beheert, houdt zelf automatisch bij welke informatie eruit verwijderd wordt als het geheugen vol raakt. Dat zal de informatie zijn die het langst geleden ooit vanuit het cache geheugen opgevraagd is.