HTTP Zelfstudie
Aan de slag met HTTP
Zoeken…
Opmerkingen
Hypertext Transfer Protocol (HTTP) maakt gebruik van een client-verzoek / server-antwoordmodel. HTTP is een stateless protocol, wat betekent dat de server geen informatie of status over elke gebruiker hoeft te bewaren voor de duur van meerdere aanvragen. Om prestatieredenen en om TCP-latentieproblemen te voorkomen, kunnen technieken zoals Persistent, Parallel of Pipelined-verbindingen worden gebruikt.
versies
Versie | Note (s) | Geschatte releasedatum |
---|---|---|
HTTP / 0.9 | "Zoals geïmplementeerd" | 1991-01-01 |
HTTP / 1.0 | Eerste versie van HTTP / 1.0, laatste versie die nog geen RFC is geworden | 1992-01-01 |
HTTP / 1.0 r1 | Eerste officiële RFC voor HTTP | 1996/05/01 |
HTTP / 1.1 | Verbeteringen in verbindingsverwerking, ondersteuning voor op naam gebaseerde virtuele hosts | 1997-01-01 |
HTTP / 1.1 r1 | Ondubbelzinnig gebruik van zoekwoorden opgeschoond, mogelijke problemen met het opstellen van berichten opgelost | 1999-06-01 |
HTTP / 1.1 r2 | Grote revisie | 2014-06-01 |
HTTP / 2 | Eerste specificatie voor HTTP / 2 | 2015/05/01 |
HTTP-verzoeken en antwoorden
HTTP beschrijft hoe een HTTP-client, zoals een webbrowser, een HTTP-aanvraag via een netwerk naar een HTTP-server verzendt, die vervolgens een HTTP-reactie terugstuurt naar de client.
Het HTTP-verzoek is meestal een verzoek om een online bron, zoals een webpagina of afbeelding, maar kan ook aanvullende informatie bevatten, zoals gegevens die op een formulier zijn ingevoerd. De HTTP-reactie is meestal een weergave van een online bron, zoals een webpagina of afbeelding.
HTTP / 1.0
HTTP / 1.0 werd beschreven in RFC 1945 .
HTTP / 1.0 heeft geen enkele functies die tegenwoordig de facto vereist zijn op het web, zoals de Host
voor virtuele hosts.
HTTP-clients en -servers verklaren echter soms nog steeds dat ze HTTP / 1.0 gebruiken als ze onvolledige implementatie van het HTTP / 1.1-protocol hebben (bijv. Zonder chunked transfercodering of pipelining), of compatibiliteit wordt belangrijker geacht dan prestaties (bijv. Bij verbinding met lokale proxy servers).
GET / HTTP/1.0
User-Agent: example/1
HTTP/1.0 200 OK
Content-Type: text/plain
Hello
HTTP / 1.1
HTTP / 1.1 is oorspronkelijk in 1999 gespecificeerd in RFC 2616 (protocol) en RFC 2617 (authenticatie), maar deze documenten zijn nu verouderd en mogen niet als referentie worden gebruikt:
Gebruik geen RFC2616. Verwijder het van uw harde schijven, bladwijzers en brand (of verantwoord recycleer) alle kopieën die worden afgedrukt.
De up-to-date specificatie van HTTP / 1.1, die overeenkomt met hoe HTTP vandaag wordt geïmplementeerd, staat in nieuwe RFC's 723x:
- RFC 7230: Message Syntax and Routing
- RFC 7231: Semantiek en inhoud
- RFC 7232: Voorwaardelijke verzoeken
- RFC 7233: Bereikverzoeken
- RFC 7234: Caching
- RFC 7235: Verificatie
HTTP / 1.1 toegevoegd, onder andere:
- gecodeerde overdrachtscodering, waarmee servers betrouwbaar antwoorden van onbekende grootte kunnen verzenden,
- persistente TCP / IP-verbindingen (die niet-standaard extensies waren in HTTP / 1.0),
- bereikverzoeken gebruikt voor het hervatten van downloads,
- cachecontrole.
HTTP / 1.1 probeerde pipelining te introduceren, waardoor HTTP-clients de latentie van verzoek-respons konden verminderen door meerdere aanvragen tegelijk te verzenden zonder te wachten op antwoorden. Helaas is deze functie nooit correct geïmplementeerd in sommige proxy's, waardoor pipelined-verbindingen uitvallen of reacties opnieuw ordenen.
GET / HTTP/1.0
User-Agent: example/1
Host: example.com
HTTP/1.0 200 OK
Content-Type: text/plain
Content-Length: 6
Connection: close
Hello
HTTP / 2
HTTP / 2 ( RFC 7540 ) veranderde het HTTP-formaat van een eenvoudige op tekst gebaseerde aanvraag- en antwoordkoptekst in een binair gegevensformaat verzonden in frames. HTTP / 2 ondersteunt compressie van de headers ( HPACK ).
Dit verminderde de overhead van aanvragen en maakte het mogelijk meerdere antwoorden tegelijkertijd te ontvangen via een enkele TCP / IP-verbinding.
Ondanks grote veranderingen in de gegevensindeling, gebruikt HTTP / 2 nog steeds HTTP-headers, en verzoeken en antwoorden kunnen nauwkeurig worden vertaald tussen HTTP / 1.1 en 2.
HTTP / 0.9
De eerste versie van HTTP die is ontstaan is 0.9, vaak aangeduid als " HTTP As Implemented ". Een veel voorkomende beschrijving van 0,9 is "een subsect van het volledige HTTP [ie 1.0] -protocol". Dit illustreert echter in hoge mate het verschil in mogelijkheden tussen 0,9 en 1,0.
Geen verzoeken of antwoorden in 0.9-headers. Verzoeken bestaan uit een enkele door CRLF beëindigde regel van GET
, gevolgd door een spatie, gevolgd door de gevraagde bron-URL. Verwacht wordt dat de antwoorden één HTML-document zijn. Het einde van dit document wordt gemarkeerd door de serverzijde te laten vallen. Er zijn geen voorzieningen om aan te geven of een operatie is geslaagd of mislukt. De enige interactieve eigenschap is de zoekreeks die nauw verbonden is met de HTML-tag <isindex>
.
Gebruik van HTTP / 0.9 is tegenwoordig uitzonderlijk zeldzaam. Het wordt af en toe op embedded systemen gezien als een alternatief voor tftp .