Wat is HTTP (Hypertext Transfer Protocol)?

Het protocol op de applicatielaag voor het uitwisselen van HTML, afbeeldingen en gegevens tussen onder meer webbrowsers en webservers. Een client verstuurt een verzoek dat bestaat uit een methode, een URL, headers en een body, en de server geeft een antwoord terug dat bestaat uit een statuscode, headers en een body. Als protocol is HTTP toestandsloos, dus een toestand zoals een login wordt bewaard met cookies en vergelijkbare middelen. HTTP/1.1 gebruikt een tekstformaat en persistente verbindingen, HTTP/2 multiplext meerdere streams over één TCP-verbinding, en HTTP/3 werkt met QUIC over UDP. HTTP die met TLS is beveiligd, heet HTTPS.

Japanse benaming: HTTP

“HTTP (Hypertext Transfer Protocol)” komt voor in 14 oefenvragen uit 2 onderwerpen, bijv. Basis van webtechnologie, Basis van computernetwerken.

Vakgebied: Basis van webtechnologie

Opbouw van verzoeken en antwoorden

Een verzoek bestaat achtereenvolgens uit een verzoekregel zoals „GET /index.html HTTP/1.1”, headers zoals Host en Accept, een lege regel en een body. Een antwoord bestaat uit een statusregel zoals „HTTP/1.1 200 OK”, headers zoals Content-Type en Cache-Control, en een body. Headers hebben de vorm „Naam: waarde” en geven onder meer het type van de body, de manier waarop het antwoord mag worden gecachet, authenticatiegegevens en de compressiemethode door.

Verschillen tussen de versies

In HTTP/1.1 zijn persistente verbindingen die één TCP-verbinding hergebruiken de standaard, maar over één verbinding worden antwoorden een voor een in volgorde ontvangen. HTTP/2 verdeelt berichten in binaire frames, multiplext meerdere verzoeken en antwoorden over één verbinding en comprimeert ook de headers. HTTP/3 gebruikt QUIC over UDP als transport, wat het probleem vermindert dat een pakketverlies niet-verwante streams stillegt, en het verlaagt ook het aantal rondgangen dat nodig is om een verbinding op te zetten.

Toestandsloosheid en het beheren van toestand

HTTP is een toestandsloos protocol dat elk verzoek onafhankelijk afhandelt. Omdat de server eerdere verzoeken niet hoeft te onthouden, is de belasting gemakkelijk over veel servers te verdelen. Een toestand zoals een login wordt aan de kant van de applicatie bewaard, bijvoorbeeld door een door de server uitgegeven sessie-ID in een cookie door te geven, of door een ondertekende waarde in de header Authorization te verzenden.

Nu oefenen: vragen over HTTP (Hypertext Transfer Protocol)

Wat wordt door HTTPS (HTTP beveiligd met TLS) beschermd?

  1. ADat de beheerder van de website waarmee verbinding wordt gemaakt een betrouwbare persoon of organisatie zonder kwade bedoelingen is
  2. BDat het feit dat er wordt gecommuniceerd en het IP-adres van de server waarmee verbinding wordt gemaakt onderweg niet te zien zijn
  3. CDat de inhoud onderweg niet kan worden meegelezen of gewijzigd, en dat de server waarmee verbinding wordt gemaakt de rechtmatige houder is van de domeinnaam in het certificaat
Antwoord en toelichting tonen

Antwoord: C. Dat de inhoud onderweg niet kan worden meegelezen of gewijzigd, en dat de server waarmee verbinding wordt gemaakt de rechtmatige houder is van de domeinnaam in het certificaat

TLS biedt drie dingen: versleuteling van de communicatie (vertrouwelijkheid), detectie van manipulatie (integriteit) en authenticatie van de server. De server toont een certificaat, en de browser controleert dat door de handtekeningen terug te volgen naar een certificaatautoriteit (CA) die hij vertrouwt, en controleert ook of het overeenkomt met de domeinnaam in de URL. Daarmee is echter alleen aangetoond dat je communiceert met de houder van die domeinnaam; of de beheerder van de site eerlijk is, blijkt er niet uit. Ook een oplichterssite kan een certificaat voor haar eigen domeinnaam krijgen. Bovendien wordt de IP-header niet versleuteld, dus met welk IP-adres, wanneer en hoeveel er wordt gecommuniceerd, is onderweg te zien.

Welke combinatie van elementen in de eerste regel van een HTTP/1.1-verzoek (de verzoekregel, request line) is juist?

  1. ADe methode, het doel van het verzoek (zoals een pad) en de HTTP-versie
  2. BDe HTTP-versie, de statuscode en een korte omschrijving van de reden (reason phrase)
  3. CHet IP-adres van de afzender, het poortnummer van de bestemming en de methode
Antwoord en toelichting tonen

Antwoord: A. De methode, het doel van het verzoek (zoals een pad) en de HTTP-versie

Een HTTP-verzoek bestaat achtereenvolgens uit de verzoekregel, de headers (één „Naam: waarde” per regel), een lege regel en de body. „GET /docs/index.html HTTP/1.1” is bijvoorbeeld een regel die met de methode GET om /docs/index.html vraagt. In HTTP/1.1 moet ook de Host-header worden meegestuurd, zodat de server kan zien voor welke site een verzoek bedoeld is, ook als er meerdere sites op hetzelfde IP-adres draaien. De eerste regel van een antwoord is de statusregel, met de versie, de statuscode en de reason phrase, zoals in „HTTP/1.1 200 OK”.

Veelgestelde vragen

Wat is het verschil tussen HTTP en HTTPS?

HTTPS versleutelt de HTTP-uitwisseling met TLS en voegt detectie van manipulatie en authenticatie van de server toe. Verzoeken en antwoorden hebben dezelfde vorm als bij HTTP, en de standaardpoortnummers zijn 80 voor HTTP en 443 voor HTTPS. Websites gebruiken in het algemeen HTTPS om wachtwoorden en cookies te beschermen.

Wanneer gebruik je GET en wanneer POST?

GET is de methode om een resource op te halen. Ze wordt als „veilig” beschouwd, wat betekent dat ze de toestand van de server niet verandert, zodat browsers en caches haar herhaaldelijk kunnen verzenden of het resultaat kunnen opslaan. POST wordt gebruikt als de server iets moet verwerken of gegevens moet registreren, zoals bij een bestelling of een bericht. De query van een GET-verzoek komt in de URL terecht en blijft achter in toegangslogs en de browsergeschiedenis, dus geheime informatie zoals wachtwoorden hoort daar niet in.

“HTTP (Hypertext Transfer Protocol)” in de toelichting

Vragen met “HTTP (Hypertext Transfer Protocol)” (14)

  1. Wat wordt door HTTPS (HTTP beveiligd met TLS) beschermd?
  2. Welke combinatie van elementen in de eerste regel van een HTTP/1.1-verzoek (de verzoekregel, request line) is juist?
  3. Welke koppeling van een statuscode aan zijn betekenis is bij HTTP juist?
  4. Welke beschrijving van HTTP/2 en HTTP/3 is juist?
  5. HTTP is een toestandsloos (stateless) protocol. Welke beschrijving van wat dit betekent en van de gebruikelijke manier waarop een website een gebruiker ingelogd houdt, is juist?
  6. De server van een webwinkel wil onmiddellijk weten wanneer een betaling bij een onlinebetaaldienst is voltooid. Welke beschrijving van de methode waarbij de betaaldienst een melding per HTTP (methode POST) verstuurt naar een URL die de winkel vooraf heeft geregistreerd (een webhook), is juist?
  7. 1,5 MB tekstgegevens worden met gzip tot een derde van de grootte gecomprimeerd en verzonden. De bandbreedte is 10 Mbit/s en de RTT is 100 ms, en voordat het verzenden van de gegevens begint, kosten de TCP-verbinding, de TLS-handshake en het HTTP-verzoek samen drie rondgangen. Neem 1 MB = 10^6 bytes en verwaarloos de tijd voor compressie en decompressie, de headers en het wachten door de congestiebeheersing van TCP. Welke waarde ligt het dichtst bij de tijd tot alle gegevens zijn ontvangen?
  8. Tot welke laag van het TCP/IP-model met vier lagen behoren TCP en UDP?
  9. Welke uitspraak over UDP is juist?
  10. Een client maakt een nieuwe HTTPS-verbinding (TLS 1.3 over TCP) met een webserver met een rondetijd (RTT) van 100 ms. Welke waarde ligt het dichtst bij de tijd tot het antwoord op het eerste verzoek begint binnen te komen? De DNS-naamresolutie is al gedaan; verwaarloos de verwerkingstijd van de server en de overdrachtstijd van de gegevens.
  11. Welke combinatie van protocollen en de poortnummers die hun servers standaard gebruiken, is juist?
  12. Van een webserver met een RTT van 40 ms worden één HTML-bestand en de vier afbeeldingen waarnaar het verwijst na elkaar opgehaald. Neem aan dat het opzetten van een TCP-verbinding één rondgang kost en elk verzoek met antwoord één rondgang, en verwaarloos de overdrachtstijd van de gegevens, de verwerkingstijd van de server, TLS en het afbreken van verbindingen. Wat is het verschil in totale tijd tussen het openen van een nieuwe TCP-verbinding voor elk object en het hergebruiken van één TCP-verbinding (een persistente verbinding)?
  13. Een chatapp moet nieuwe berichten onmiddellijk van de server naar de browser bezorgen. Welke beschrijving van WebSocket is juist?
  14. Een websysteem wordt opgebouwd uit drie lagen: een webserver, een applicatieserver en een databaseserver. Welke verwerking neemt de applicatieserver hoofdzakelijk voor zijn rekening?

Verwante termen

TLS (Transport Layer Security) DNS (Domain Name System) Poortnummer HTTP-statuscode Cookie (HTTP-cookie) OSI-referentiemodel Three-way handshake (drieweghandshake) SSH WebSocket CORS (cross-origin resource sharing)

Naar de woordenlijst