HTTP (Hypertext Transfer Protocol)

Wat is HTTP?

HTTP (Hypertext Transfer Protocol) is het geheel van regels voor de overdracht van bestanden - zoals tekst, afbeeldingen, geluid, video en andere multimediabestanden - via het web. Zodra een gebruiker zijn web browser opent, maakt hij indirect gebruik van HTTP. HTTP is een applicatieprotocol dat bovenop de TCP/IP-protocolsuite loopt, die de basis vormt van het internet. De nieuwste versie van HTTP is HTTP/2, die in mei 2015 werd gepubliceerd. Het is een alternatief voor zijn voorganger, HTTP 1.1, maar maakt het niet overbodig.

Hoe HTTP werkt

Door middel van het HTTP-protocol worden via het internet bronnen uitgewisseld tussen client-apparaten en servers. Client-apparaten sturen verzoeken naar servers voor de middelen die nodig zijn om een webpagina te laden; de servers sturen antwoorden terug naar de client om aan de verzoeken te voldoen. Verzoeken en antwoorden delen subdocumenten -- zoals gegevens over afbeeldingen, tekst, tekstopmaak, enz.

Naast de webpaginabestanden die hij kan serveren, bevat een webserver een HTTP-daemon, een programma dat wacht op HTTP-verzoeken en deze afhandelt zodra ze binnenkomen. Een web browser is een HTTP client die verzoeken naar servers stuurt. Wanneer de browsergebruiker een bestandsverzoek invoert door een webbestand te "openen" door een URL in te typen of te klikken op een hypertext link, stelt de browser een HTTP-verzoek op en stuurt dit naar het Internet Protocol-adres (IP-adres) dat in de URL is aangegeven. De HTTP-daemon op de bestemmingsserver ontvangt het verzoek en stuurt het aangevraagde bestand of de aangevraagde bestanden terug.

diagram van http client, internet en servers Client-apparaten gebruiken HTTP om online te communiceren met servers en toegang te krijgen tot webpagina's.

Om dit voorbeeld uit te breiden: een gebruiker wil TechTarget.com bezoeken. De gebruiker typt het webadres in en de computer stuurt een "GET"-verzoek naar een server die dat adres host. Dat GET-verzoek wordt via HTTP verzonden en vertelt de TechTarget-server dat de gebruiker op zoek is naar de HTML-code (Hypertext Markup Language) die wordt gebruikt om de aanmeldingspagina te structureren en het uiterlijk en het gevoel ervan te geven. De tekst van die loginpagina is opgenomen in de HTML-respons, maar andere delen van de pagina -- met name de afbeeldingen en video's -- worden opgevraagd door afzonderlijke HTTP-verzoeken en antwoorden. Hoe meer verzoeken er worden gedaan - bijvoorbeeld om een pagina met veel afbeeldingen op te roepen - hoe langer het duurt voordat de server op deze verzoeken reageert en het systeem van de gebruiker de pagina heeft geladen.

Wanneer deze verzoek-/antwoordparen worden verzonden, maken zij gebruik van TCP/IP om de informatie te verkleinen en te transporteren in kleine pakketjes van binaire reeksen enen en nullen. Deze pakketjes worden fysiek verzonden via elektriciteitsdraden, glasvezelkabels en draadloze netwerken.

De verzoeken en antwoorden die servers en clients gebruiken om gegevens met elkaar uit te wisselen, bestaan uit ASCII-code. Verzoeken geven aan welke informatie de client van de server wil hebben; antwoorden bevatten code die de clientbrowser vertaalt in een webpagina.

HTTP vs. HTTPS

HTTPS is het gebruik van Secure Sockets Layer (SSL) of Transport Layer Security (TLS) als een sublayer onder de reguliere HTTP-toepassingslagen. HTTPS versleutelt en ontsleutelt HTTP-paginaverzoeken van gebruikers en de pagina's die door de webserver worden teruggezonden. Het beschermt ook tegen afluisteren en man-in-the-middle (MitM) aanvallen. HTTPS is ontwikkeld door Netscape. De overstap van HTTP naar HTTPS wordt als gunstig beschouwd, omdat het een extra laag beveiliging en vertrouwen biedt.

HTTP-verzoeken en -antwoorden

Elke interactie tussen de client en de server wordt een bericht genoemd. HTTP-berichten zijn verzoeken of antwoorden. Client-apparaten sturen HTTP-verzoeken naar servers, die antwoorden door HTTP-antwoorden terug te sturen naar de clients.

HTTP-verzoeken. Dit is wanneer een client-apparaat, zoals een internetbrowser, de server vraagt om de informatie die nodig is om de website te laden. Het verzoek voorziet de server van de gewenste informatie die hij nodig heeft om zijn antwoord op het client-apparaat af te stemmen. Elk HTTP-verzoek bevat gecodeerde gegevens, met informatie zoals:

  • De specifieke versie van HTTP die wordt gevolgd. HTTP en HTTP/2 zijn de twee versies.
  • Een URL. Deze verwijst naar de bron op het web.
  • Een HTTP-methode. Deze geeft aan welke specifieke actie het verzoek van de server verwacht in zijn antwoord.
  • HTTP-verzoekheaders.Dit bevat gegevens zoals welk type browser wordt gebruikt en welke gegevens het verzoek van de server vraagt. Het kan ook cookies bevatten, die informatie tonen die eerder is verzonden door de server die het verzoek behandelt.
  • Een HTTP-body. Dit is optionele informatie die de server nodig heeft van het verzoek, zoals gebruikersformulieren - gebruikersnaam/wachtwoord-logins, korte reacties en bestandsuploads - die worden ingediend bij de website.

HTTP-reacties. Het HTTP-antwoordbericht zijn de gegevens die een client-apparaat van de webserver ontvangt. Zoals de naam al aangeeft, is het antwoord van de server op een HTTP-verzoek. De informatie in een HTTP-antwoord is afgestemd op de context die de server van het verzoek heeft ontvangen. HTTP-antwoorden bevatten doorgaans de volgende gegevens:

  • HTTP-statuscode, die de status van het verzoek aan het clientapparaat aangeeft. Reacties kunnen succes, een informatief antwoord, een omleiding of fouten aan de server- of clientzijde aangeven.
  • HTTP-reactieheaders, die informatie over de server en de aangevraagde bronnen verzenden.
  • Een HTTP-body (optioneel). Als een verzoek succesvol is, bevat deze de gevraagde gegevens in de vorm van HTML-code, die door de clientbrowser wordt vertaald naar een webpagina.

HTTP-statuscodes

In antwoord op HTTP-verzoeken geven servers vaak responscodes, die aangeven dat het verzoek wordt verwerkt, dat er een fout in het verzoek is opgetreden of dat het verzoek wordt doorgestuurd. Veelgebruikte responscodes zijn:

  • 200 OK. Dit betekent dat het verzoek, zoals GET of POST, is gelukt en wordt uitgevoerd.
  • 300 Moved Permanently. Deze responscode betekent dat de URL van de aangevraagde bron permanent is gewijzigd.
  • 401 Unauthorized. De client, of gebruiker die het verzoek aan de server doet, is niet geauthenticeerd.
  • 403 Forbidden. De identiteit van de client is bekend, maar hij heeft geen toegangsmachtiging gekregen.
  • 404 Niet gevonden. Dit is de meest voorkomende foutcode. Dit betekent dat de URL niet wordt herkend of dat de bron op de locatie niet bestaat.
  • 500 Internal Server Error. De server is op een situatie gestuit die hij niet kan oplossen.

Proxies in HTTP

Proxies, of proxyservers, zijn de servers, computers of andere machines op de applicatielaag die tussen het client-apparaat en de server staan. Proxies geven HTTP-verzoeken en antwoorden door tussen de client en de server. Doorgaans zijn er een of meer proxies voor elke client-server interactie.

Proxies kunnen transparant of niet-transparant zijn. Transparante proxies wijzigen het verzoek van de client niet, maar sturen het in zijn oorspronkelijke vorm naar de server. Niet-transparante proxies zullen het verzoek van de cliënt op enigerlei wijze wijzigen. Niet-transparante proxies kunnen worden gebruikt voor aanvullende diensten, vaak om de opvraagsnelheid van de server te verhogen.

Webontwikkelaars kunnen proxies voor de volgende doeleinden gebruiken:

  • Caching.
  • Authenticatie. Cache-servers kunnen webpagina's of andere internetinhoud lokaal opslaan, zodat deze sneller kunnen worden opgehaald en er minder bandbreedte van de site nodig is.

Toegangsprivileges tot toepassingen en online-informatie. Controle van toegangsrechten tot toepassingen en online-informatie. Logging. The storage of historical data, such as the IP addresses of clients that sent requests to the server. Web filtering. Controlling access to web pages that can compromise security or include inappropriate content. Load balancing. Client requests to the server can be handled by multiple servers, rather than just one.

For more information on how proxies work and more types of proxies, click here.