De URL. Hoe werkt dat nou eigenlijk?
Je hebt de term ‘URL’ vast wel eens gehoord. Iedereen die wel eens op het internet surft maakt gebruik van deze standaard. Maar wat is een URL nou precies? Wat is het nut ervan en waarvoor wordt het gebruikt?
In dit artikel maken we kennis met de Uniform Resource Locator en kijken we naar het gebruik van URLs in populaire en belangrijke toepassingen.
Wat is een URL?
Kort gezegd, is een URL een stuk leesbare tekst die de locatie van een bron (resource) aangeeft en aanwijzingen geeft voor het gebruiken ervan. De ‘bron’ kan van alles zijn. De meest bekende toepassing van een URL is het verwijzen naar een webpagina op het internet, maar een URL kan ook verwijzen naar bijvoorbeeld:
- Een willekeurig bestand op uw computer, of op opslagmedia die daarmee verbonden is.
- Een database op een database-server.
- Een e-mailbestemming, met een adres en eventueel een vooraf bepaald onderwerp voor het bericht.
- Een bestand op een FTP-server, of een andere server voor bestandsdeling.
Door het gebruik van een URL is het duidelijk welke bron er opgevraagd moet worden, maar dus ook op welke manier deze gebruikt gaat worden en welke (communicatie)techniek er gebruikt moet worden om de bron te benaderen.
Laten we eens kijken naar een aantal URLs en hoe die alle informatie in zich opnemen. Hoe ziet een URL er uit en wat is de betekenis van de verschillende onderdelen?
Ontleden van URLs
Bij het surfen op het internet zijn URLs meestal verborgen achter een klikbare link. Die zijn dus niet direct te zien. Maar als we in de adresbalk van onze browser kijken, dan staat daar de werkelijke URL van de weergegeven pagina. De browser kan aan de hand van een URL precies uitvoeren wat de gebruiker verlangt.
In de afbeelding hieronder is de opbouw van een algemene URL weergegeven:
Laten we beginnen met een URL naar een webpagina die iedereen wel eens gebruikt:
http://www.google.nl:80/search?q=maxima
Misschien heb je deze URL wel eens gezien, misschien ook niet. Door ernaar te kijken, ook zonder veel te weten over de technologie, vallen al een aantal dingen op. We zien bijvoorbeeld direct een hele bekende naam staan: Google. Verder zien we het woord ‘search’ en iets verderop ‘maxima’. We gaan nu de URL uit elkaar trekken en alle onderdelen proberen te begrijpen.
Autoriteit/Domein (www.google.nl)
Omdat we het hier hebben over bronnen die zich bevinden op computers op bijvoorbeeld het internet, is het in ieder geval belangrijk om te weten op welke computer die bron zich bevindt. De locatie van een computer op het internet wordt bepaald aan de hand van een adres. Een computer op het internet heeft altijd een uniek numeriek adres: het IP-adres. Omdat het internet nogal groot is en IP-adressen lastig zijn om te onthouden, gebruiken we tegenwoordig domeinregistratie en DNS om computers te vinden.
In dit geval willen we dus dat onze browser een verbinding gaat maken met www.google.nl.
In de afbeelding hierboven wordt dit gedeelte de ‘autoriteit’ genoemd. Op dit moment zijn we vooral geïnterresseerd in het domein, maar we kijken straks naar de rest.
Padnaam (search)
Als de juiste computer gevonden is, kunnen we door het aangeven van een padnaam duidelijk maken welke bron we graag willen opvragen. In een padnaam staat de naam van een bron, met eventueel een mappenstructuur ervoor, gescheiden door ‘/’-tekens.
In onze URL zijn we op zoek naar ‘search’. Dit is waarschijnlijk de meest gebruikte bron die te vinden is bij www.google.nl. Deze speciale webpagina kan een zoekopdracht verwerken en resultaten tonen als een webpagina. De zoekopdracht zelf staat in het volgende onderdeel van de URL: de query string.
Query string (q=maxima)
De query string is een stuk tekst met een speciale indeling en wordt van de padnaam gescheiden met een ‘?’-teken. We hebben onze bron al te pakken, maar met de query string kunnen we informatie doorspelen aan die bron.
De informatie wordt doorgegeven in de vorm van naam/waarde-paren. In de query string die wij hebben gebruikt is ‘q’ een naam en ‘maxima’ is de waarde ervan. De bron kan aan de hand hiervan bijvoorbeeld zeggen: “Geef mij de waarde van de naam ‘q’.”. In ons voorbeeld zou de bron dan ‘maxima’ terugkrijgen en die tekst gebruiken om een zoekopdracht te doen.
In de query string kunnen natuurlijk nog meer naam/waarde-paren worden opgegeven. Bij een zoekopdracht bij Google kan onder anderen aangegeven worden welke taal de voorkeur moet krijgen bij het weergeven van resultaten.
Protocol (http)
Het protocol staat helemaal aan het begin van elke URL. We hebben het tot nu toe even overgeslagen, maar eigenlijk is dit een heel belangrijk onderdeel. Het protocol vertelt ons namelijk hoe we moeten communiceren met de ‘beheerder’ van de bron. Bovendien bepaalt het protocol hoe de rest van de URL geïnterpreteerd wordt. In ons geval is het protocol HTTP.
HTTP (Hypertext Transfer Protocol) is ontwikkeld om de communicatie met webservers te standaardiseren. Tegenwoordig ligt HTTP aan de basis van de communicatie op het World Wide Web. In een volgend artikel zullen we eens uitgebreid kijken naar HTTP en hoe dat precies werkt.
Voor nu is het belangrijk om te weten dat als we bij Google willen zoeken, dat we dan voor de communicatie met de servers van Google het protocol HTTP moeten gebruiken. Er zijn nog heel veel andere protocollen in gebruik, zoals:
- HTTPS, voor HTTP over een beveiligde verbinding.
- FTP, voor bestandsoverdracht.
- IMAP, voor het beheren van e-mail op een mailserver.
- MySQL, voor het verbinden met een MySQL database-server.
Poortnummer (80)
Ieder protocol heeft zijn eigen poortnummer. Computers in een netwerk zijn verbonden op elkaars IP-adres. Om ervoor te zorgen dat er meerdere vebindingen gelegd kunnen worden met een computer, zonder dat die extra adressen nodig heeft, wordt gebruik gemaakt van een poortnummer. Bij het leggen van de verbinding wordt direct een specifieke poort gebruikt.
Het poortnummer wordt meestal bepaald door het protocol wat gebruikt wordt. Voor HTTP is dat poort 80; dat is zo afgesproken. Het is mogelijk om een webserver zo in te stellen dat hij op een willekeurige andere poort ‘luistert’, bijvoorbeeld 8080. Zo is het dus ook mogelijk om twee gescheiden webservers te draaien op één computer.
Echter, als we een afwijkend poortnummer gebruiken voor de server, dan moeten we onze bezoekers daar wel van op de hoogte kunnen brengen. Door een poortnummer toe te voegen aan een URL is het altijd duidelijk op welke poort een verbinding gelegd moet worden. In onze URL is het poort nummer 80 aangegeven om het gebruik van een poortnummer te laten zien, maar eigelijk hadden we dat weg kunnen laten, omdat poort 80 de standaard poort is voor het gekozen protocol, HTTP.
Fragmentnaam
De fragmentnaam wordt gebruikt om een onderdeel binnen de bron aan te duiden. Dit wordt bij webpagina’s bijvoorbeeld gebruikt om in teksten te verwijzen naar een bepaald hoofdstuk, een afbeelding of een ander onderdeel dat zich op de huidige pagina bevindt.
In het geval van een zoekopdracht bij Google is de fragmentnaam niet zo interessant, maar als we naar dit blog kijken, helemaal onderaan rechts, dan zien we dat er een URL met fragmentnaam wordt gebruikt in de link ’to top’ om terug te gaan naar het begin van de pagina.
Authenticatiegegevens
Het komt vaak voor dat een bron niet openbaar is. Bronnen kunnen gevoelige of geheime informatie bevatten, die alleen beschikbaar mag zijn voor geauthentiseerde gebruikers. Ook deze behoefte aan authenticatie kan in een URL opgegeven worden.
Voor ons voorbeeld van een zoekopdracht bij Google is geen authenticatie vereist, maar in de bovenstaande afbeelding is te zien hoe er een gebruikersnaam en een wachtwoord opgegeven kan worden, direct in de URL. Dit kan bijvoorbeeld gebruikt worden voor het inloggen op een FTP-server of een MySQL-server:
- ftp://samy:dH4J7x1s@ftp.voorbeeld.com/vakantiefotos/img01.jpg
- mysql://samy:dH4J7x1s@sql.voorbeeld.nl/db1
De tweede URL kan in applicaties of programmeertalen gebruikt worden om bijvoorbeeld in één keer alle nodige informatie voor een database-verbinding te configureren.
Meer weten?
In dit artikel zijn we vrij uitgebreid ingegaan op wat URLs zijn en waarvoor ze gebruikt kunnen worden. Er is natuurlijk nog veel meer informatie beschikbaar over URLs, over verschillende soorten URLs en over wie deze handige standaard heeft bedacht. hieronder staan een aantal goede bronnen voor meer informatie. En hoe kunnen we beter verwijzen naar deze bronnen dan met een lijstje URLs?
- Wikipedia (Nederlands): http://nl.wikipedia.org/wiki/Uniform_Resource_Locator
- Wikipedia (Engels): http://en.wikipedia.org/wiki/Uniform_Resource_Locator
- RFC3986, officiele URI standaard: http://tools.ietf.org/html/rfc3986
We zijn aan het einde van ons eerste artikel in de categorie ‘Hoe werkt dat nou eigenlijk?’. In volgende artikelen zullen we ingaan op meer leuke technologieën en hoe zij ons digitale leven mogelijk maken. Laat ons weten wat je van het artikel vond door het achterlaten van een reactie! Zijn er andere technische onderwerpen waar je altijd al wat meer over wilde weten?