Hypertext Transfer Protocol

Uit Wikipedia, de vrije encyclopedie
Ga naar: navigatie, zoeken

Hypertext Transfer Protocol (HTTP) is het protocol voor de communicatie tussen een webclient (meestal een webbrowser) en een webserver. Dit protocol wordt niet alleen veel op het World Wide Web gebruikt, maar ook op lokale netwerken (we spreken dan van een intranet).

In HTTP is vastgelegd welke vragen (de Engelse term hiervoor is requests) een cliënt aan een server kan stellen en welke antwoorden (de Engelse term is responses) een webserver daarop kan teruggeven. Elke vraag bevat een URL die naar een webcomponent of een statisch object zoals een webpagina of plaatje verwijst.

HTTP-requests[bewerken]

Een HTTP-request bestaat uit de requestsoort, de URL, de headervelden (koptitelvelden) en eventueel een inhoud. Een overzicht van de HTTP-requestmethoden:

  • GET – Ontvang het document gespecificeerd door de URL.
  • HEAD – Ontvang alleen de headers van het op te vragen document.
  • POST – Zend gegevens naar de server.
  • PUT – Vervang het document op de server door de verzonden data.
  • DELETE – Verwijder het document.
  • OPTIONS – Vraag de mogelijkheden op dit niveau aan van de server.

De belangrijkste headervelden zijn:

  • Content-Length: Geeft de lengte van de inhoud aan.
  • Location: Indien de server de webbrowser naar een andere pagina doorverwijst wordt hierbij het benodigde pad gevoegd.
  • Server: Omvat een beknopte beschrijving van de serversoftware (bijvoorbeeld "Apache/2.2.9 (Win32) PHP/5.2.6").
  • User-Agent: Geeft informatie over het programma dat het vraagpakket verstuurde mee. Dit is meestal een webbrowser.
  • Date: De datum en het uur waarop het pakket verzonden is.
  • Host*: Omdat het pakket naar een IP-adres wordt gestuurd weet de server niet op welk domein men aan het surfen is. In HTTP 1.1 is het verplicht om met deze header het domein mee te delen.

* Bestaat enkel in HTTP 1.1

Een complete aanvraag inclusief de headervelden kan er als volgt uit zien:

GET /wiki/Hoofdpagina HTTP/1.1
Host: nl.wikipedia.org
Connection: close
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3
Accept: text/xml,text/html,text/plain,image/png,image/jpeg,image/gif
Accept-Charset: ISO-8859-1,utf-8

HTTP-responses[bewerken]

Nuvola single chevron right.svg Zie ook de Lijst van HTTP-statuscodes

Een HTTP-response bestaat uit een resultaatcode, headervelden en een body (de boodschap). De resultaatcode bestaat uit minimaal drie cijfers. Het eerste cijfer is het belangrijkste:

  • 1xx: een informele boodschap van de webserver die nog gevolgd zal worden door andere data
  • 2xx: een boodschap van de server dat de gevraagde actie succesvol is afgehandeld
  • 3xx: een "redirect" naar een andere locatie, om wat voor reden ook
  • 4xx: een foutboodschap die door de client veroorzaakt is, zoals het verkeerd typen van een URL
  • 5xx: een foutboodschap die door de server veroorzaakt is, zoals een fout in een CGI-script
  • 6xx: een proxy-fout is opgetreden

De meest voorkomende resultaatcodes zijn:

  • 200 OK – Het gevraagde document is succesvol opgevraagd.
  • 304 Not Modified – T.o.v. de versie in de cache is de pagina niet gewijzigd.
  • 403 Forbidden – Het opgevraagde document mag niet bekeken worden.
  • 404 Not Found – Het opgevraagde document bestaat niet.
  • 405 Not Allowed - De gebruiker is niet gerechtigd het gevraagde document te bekijken.
  • 500 Internal Server Error - De webserver heeft de gevraagde actie niet kunnen uitvoeren.
  • 503 Service Temporarily Unavailable - De webserver is tijdelijk in onderhoud.

Een reactie op bovenstaande aanvraag kan er dan als volgt uitzien:

HTTP/1.1 200 OK
Date: Thu, 08 Apr 2004 18:24:33 GMT
Server: Apache/1.3.29 (Unix) PHP/4.3.4
X-Powered-By: PHP/4.3.4
Content-Language: nl
Content-Type: text/html; charset=iso-8859-1
X-Cache: MISS from wikipedia.org
Connection: close
Content-Type: text/html
Content-Length: 49
<html>
<head>
</head>
<body>
</body>
</html>

Geschiedenis[bewerken]

De oorspronkelijke versie van HTTP staat bekend onder de naam HTTP 1.0 . In eerste instantie voldeed dit protocol goed, maar met de populariteitsexplosie van het internet kwam er ook een aantal tekortkomingen in dit protocol aan het licht. Deze zijn opgelost in de volgende versie, HTTP 1.1 . Vanaf circa 1997 is de standaard op het World Wide Web dan ook verschoven van HTTP 1.0 naar HTTP 1.1 .

Eén van de belangrijkste beperkingen van HTTP 1.0 was dat er op ieder IP-adres slechts 1 domein gehuisvest kon worden. Vanwege de enorme groei van het aantal WWW-domeinen, zou dit al gauw tot een tekort aan IP-adressen geleid hebben. HTTP 1.1 ondersteunt dan ook het huisvesten van meer dan 1 domein op hetzelfde IP-adres. Andere belangrijke toevoegingen in HTTP 1.1, die voornamelijk tot doel hebben de responsiesnelheid te verhogen, zijn:

  • ondersteuning van caching
  • niet meer per se na elke respons de verbinding verbreken (zogenoemde persistent connection), zoals in HTTP 1.0 wel gebeurde
  • de mogelijkheid om (dynamisch gegenereerde) pagina's in gedeeltes te verzenden. Hierdoor kan al met het verzenden van het eerste deel begonnen worden voordat de gehele pagina is gegenereerd, zelfs zonder dat bekend is hoe lang de pagina uiteindelijk zal gaan worden.

Technische details van HTTP staan beschreven in verschillende RFC's. HTTP versie 1.0 staat in het RFC met nummer 1945. Versie 1.1 van het protocol staat in RFC met nummer 2616.

Zie ook[bewerken]

Externe links[bewerken]